[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help improve the theme.\ntitle: \"[BUG] \"\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is. **Please state this in the form of a problem, such as \"[BUG] The door will not unlock without the key.\"**\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Device information):**\n - Device [e.g. MacBook, iPhone, ...]\n - OS: [e.g. iOS]\n - Browser [e.g. chrome, safari]\n - Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: \"[FEATURE] \"\nlabels: ''\nassignees: ''\n\n---\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen. What problem does this solve, for whom, in what types of circumstances? What is the value of your idea?\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered. Screenshots or mockups are helpful.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n\n**Does it fit with Story's design?**\nTell us why your idea is a good fit for Story in particular, rather than generically being a good idea. Does it align well with Story's goals of simplicity, elegance? Is your idea targeted towards Story's intended audience and use case?\n"
  },
  {
    "path": ".gitignore",
    "content": "*.swp\n.DS_Store\npublic\n"
  },
  {
    "path": "LICENSE.md",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2018 Baron Schwartz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Story\n\nStory is a beautiful [Hugo theme](https://gohugo.io) for showcasing your writing\nand presentations. There's a robust demo site (which you can launch and browse with Hugo) where you can see its\nmany features in action, and learn more about how to use them. Story is no longer actively maintained. The original author, Baron Schwartz, encourages forking.\n\n![Story screenshot](https://raw.githubusercontent.com/xaprb/story/master/images/screenshot.png)\n\nStory is targeted to technical writers and\nspeakers: people such as software engineers and open source developers, who want a\nwebsite for their technical work, such as blogging about software\nengineering. It's a great way to share your writing and speaking with the world.\n\nIt has a lot of features for people who invest effort in their websites and blogs!\n\n- Beautiful, responsive typography for long-form content on screen and in print, including blogs, essays, and single pages.\n- Support for [RemarkJS slides](https://remarkjs.com/).\n- LaTeX math typesetting with [KaTeX](https://github.com/Khan/KaTeX)\n- A built-in search page with [LunrJS](https://github.com/olivernn/lunr.js).\n- Music notation typesetting with [abcjs](https://abcjs.net/).\n- Easy-to-use, backwards-compatible Markdown enhancements such as ways to control image behavior (size, float, etc) with CSS.\n\nThis is just a fraction of Story's feature set, see the demo site for much more\ndocumentation and screenshots.\n"
  },
  {
    "path": "archetypes/default.md",
    "content": "---\ntitle: '{{ replace .TranslationBaseName \"-\" \" \" | title }}'\ndate: \"{{ .Date }}\"\nurl: \"/{{ .Dir }}{{ .Name }}\"\ndescription: \"\"\ntldr: \"\"\nimage: \"\"\ncredit: \"\"\nthumbnail: \"\"\ncategories:\n- Uncategorized\n---\n"
  },
  {
    "path": "archetypes/slides.md",
    "content": "---\ntitle: {{ .Name | humanize | title }}\ndate: \"{{ .Date }}\"\nurl: \"/{{ .Dir }}\"\nimage: \"/slides/{{ .Name }}/cover.jpg\"\ndescription: \"\"\nratio: \"16:9\"\nthemes:\n- apron\n- adirondack\n- descartes\n---\nclass: title\nbackground-image: url(cover.jpg)\n\n# {{ .Name | humanize | title }}\n## Subtitle\n\n---\n# About Me\n\n- Slides are at {{ \"talks/\" | absURL }}\n- Ask questions anytime\n\n---\n# Slides and Contact Information\n\n.qrcode.db.fr.w-40pct.ml-4[]\n\nSlides are at {{ .Site.BaseURL }}talks/ or you can scan the QR code.\n\nContact:\n\n"
  },
  {
    "path": "archetypes/talks.md",
    "content": "---\ntitle: '{{ replace .TranslationBaseName \"-\" \" \" | title }}'\ndate: \"{{ .Date }}\"\nurl: \"/{{ .Dir }}{{ .Name }}/\"\nevent: \"\"\nlocation: \"\"\nsite: \"\"\nvideo: \"\"\nslides: \"/slides/{{ .Name }}/\"\nthumbnail: \"/slides/{{ .Name }}/thumbnail.jpg\"\nimage: \"/slides/{{ .Name }}/cover.jpg\"\ndescription: \"\"\n---\n"
  },
  {
    "path": "exampleSite/config.toml",
    "content": "# Site settings\nbaseurl = \"https://example.com/\"\ntitle = \"Hugo Story Theme\"\npaginate = 5\nbuildFuture = true\n\n[[menu.social]]\n  name = \"GitHub\"\n  title = \"fab fa-github-square\"\n  url = \"https://github.com/xaprb/story/\"\n\n[[menu.main]]\n  name = \"Talks\"\n  title = \"Talks\"\n  url = \"/talks/\"\n\n[[menu.main]]\n  name = \"Slides\"\n  title = \"Slides\"\n  url = \"/slides/\"\n\n[[menu.main]]\n  name = \"Archives\"\n  title = \"Archives\"\n  url = \"/archives/\"\n\n[params]\n  author = \"Jane Smith\"\n  twitter = \"sometwitteruser\"\n  classes = []\n\n[outputs]\n  home = [\"HTML\", \"JSON\", \"RSS\"]\n  page = [\"HTML\"]\n  section = [\"HTML\", \"RSS\"]\n  taxonomy = [\"HTML\", \"RSS\"]\n  taxonomyTerm = [\"HTML\", \"RSS\"]\n"
  },
  {
    "path": "exampleSite/content/_index.md",
    "content": "---\ntitle: Story Hugo Theme Demo Site\nsubtitle: \"Showcase Your Work\"\n---\n[![Jane Smith](/img/jane-square.png)](https://www.example.com)\n\nJane is an example of an author for this website.\n"
  },
  {
    "path": "exampleSite/content/about-story.md",
    "content": "---\ntitle: The Story Hugo Theme\ndate: \"2018-09-03\"\nurl: \"/about-story\"\ndescription: \"Story is a beautiful responsive Hugo blog theme with many extra features including presentations, math typesetting, and search.\"\ntldr: \"Story is a beautiful responsive Hugo blog theme with powerful extra features out-of-the-box. It's targeted to people who want to showcase their technical work online.\"\ncredit: \"https://unsplash.com/photos/o-ubWHV29Uk\"\nimage: \"img/unsplash-photos-o-ubWHV29Uk.jpg\"\nthumbnail: img/unsplash-photos-o-ubWHV29Uk.tn-500x500.jpg\ncategories:\n- Demo\n---\nStory is a beautiful Hugo theme.  [Hugo](https://gohugo.io) is a static website\ngenerator, which builds websites by rendering\n[Markdown](https://commonmark.org/help/) content into templates from themes like\nStory. The resulting site is fast, secure, and easy to build and maintain.\n\nStory is a responsive theme that supports blogs, with many extra features such\nas presentations, math and music typesetting, and search.  The Story design\nphilosophy prioritizes simplicity and elegance, so it can be sophisticated\nand powerful at the same time.\n\n<!--more-->\n\nStory is easy to use, making it a great way to share your writing and speaking\nwith the world.  Story is targeted to technical writers and speakers: people\nsuch as software engineers and open source developers, who want a website for\ntheir technical work and side projects---for example, those who write and speak\nabout software engineering.\n\n\nStory is deceptively simple, while offering the features you need:\n\n- Beautiful, responsive typography for long-form content on screen and in print, including blogs and single pages.\n- Support for Remark in-browser slideshows, written in simple Markdown.\n- LaTeX math equation typesetting.\n- Sheet music rendering from ABC music notation.\n- Built-in site search.\n\nStory has many more features than this.\nExplore Story and learn all the ways it can help you showcase your work!\n\nRead next: [Story's features](/theme-features).\n"
  },
  {
    "path": "exampleSite/content/archives/_index.md",
    "content": "---\nlayout: archives\nurl: /archives/\ntitle: Archives\nclasses:\n- feature-nosubtitle\n- feature-nohdr\n- feature-depth\n---\n"
  },
  {
    "path": "exampleSite/content/author-pages.md",
    "content": "---\nauthor: Elvis Presley\ntitle: Story's Author Profiles\nurl: /author-profiles\ndate: \"2018-08-29\"\ndescription: \"With Story, you can define global and per-item author profiles/biographies.\"\nimage: \"img/unsplash-photos-TzMi5Ov7QeM.jpg\"\ncredit: \"https://unsplash.com/photos/TzMi5Ov7QeM\"\nthumbnail: \"img/unsplash-photos-TzMi5Ov7QeM.tn-500x500.jpg\"\ncategories:\n- Demo\n---\nStory supports author profiles, so you can highlight your bio.\nIt's possible to set this globally for the entire site, or individually for each\npiece of content. Or you can set a global default and override it on individual\npieces of content.\nScroll to the bottom of any page on this site to see how author profiles are\nstyled.\n<!--more-->\n\nStory's author profile system is a slightly simplified (incomplete)\nimplementation of the ideas laid out in [Netlify's how-to\ndocument](https://www.netlify.com/blog/2018/07/24/hugo-tips-how-to-create-author-pages/).\nIt allows only one author per piece of content, and doesn't require Hugo to\ncreate the authors taxonomy.  Because it's incomplete, it's a) missing a few of the\nfeatures Netlify describes, and b) easier to set up.\n\n### Global And Per-Content Authors\n\nIf you want to specify an author in the front matter of each post, it's\nsimply specified like this (YAML example):\n\n```\n---\nauthor: \"Elvis Presley\"\n---\n```\n\nIf you want to set a global author parameter for the entire site, which will serve as\nthe default in case any pieces of content don't specify their own, use your\nconfig file's `params` array:\n\n```\nparams:\n   author: \"Jane Smith\"\n```\n\nThat's exactly what this sample site you're reading right now does: Jane is the\nauthor by default, but Elvis is the author of _this_ content you're reading now.\n\n### Creating Author Profiles\n\nTo create author profiles, you need to create the author hierarchy under\n`content`, and a slugified directory for each author. Then, place an `_index.md`\nfile into each of those directories, and give it the content needed to describe\nthe author.\n\nFor example:\n\n```\n└── content/\n    └── authors/\n        ├── elvis-presley/\n        │   └── _index.md\n        ├── aretha-franklin/\n        │   └── _index.md\n        └── stevie-wonder/\n            └── _index.md\n```\n\nYou can put any content you want in the file, but Story has CSS to nicely format\na square image followed by a paragraph of text. This page you're viewing right\nnow has \"Elvis Presley\" as its author, and the content of\n`content/authors/elvis-presley/_index.md` is:\n\n```\n---\n---\n![Elvis](/img/elvis.jpg)\n\nElvis Aaron Presley (January 8, 1935 – August 16, 1977) was an American singer\nand actor. Regarded as one of the most significant cultural icons of the 20th\ncentury, he is often referred to as the \"King of Rock and Roll\" or simply \"the\nKing\".\n```\n\n### Global Fallback Content\n\nEven if you don't have an author directory and a specific author's file as\ndescribed above, you can create content that will serve as a fallback across the\nwhole site. If Story doesn't find a specific author's profile page, it'll look\nfor the default `_index.md` content for the section it's currently rendering.\nThe top-level default for the whole site is `content/_index.md`, which this demo\nsite uses to provide Jane Smith's author information. This information will\nappear on all pages _other than_ the current page, which is authored by Elvis\nPresley. This fallback information from `content/_index.md` looks like the\nfollowing:\n\n```\n[![Jane Smith](/img/jane-smith.jpg)](https://www.example.com)\n\nJane Smith's biography goes here; markdown is supported.\n```\n\nThis content is a (non-author-specific) fallback for the entire site.\nYou can see it on all the other pages of this site.\n\nRead next: [Story's figures, captions, and tables](/figures/).\n"
  },
  {
    "path": "exampleSite/content/authors/elvis-presley/_index.md",
    "content": "---\n---\n![Elvis](/img/elvis.jpg)\n\nElvis Aaron Presley (January 8, 1935 – August 16, 1977) was an American singer\nand actor. Regarded as one of the most significant cultural icons of the 20th\ncentury, he is often referred to as the \"King of Rock and Roll\" or simply \"the\nKing\".\n"
  },
  {
    "path": "exampleSite/content/cooleys.abc",
    "content": "X: 1\nT: Cooley's\nM: 4/4\nL: 1/8\nK: Emin\n|:D2|EB{c}BA B2 EB|~B2 AB dBAG|FDAD BDAD|FDAD dAFD|\nEBBA B2 EB|B2 AB defg|afe^c dBAF|DEFD E2:|\n|:gf|eB B2 efge|eB B2 gedB|A2 FA DAFA|A2 FA defg|\neB B2 eBgB|eB B2 defg|afe^c dBAF|DEFD E2:|\n"
  },
  {
    "path": "exampleSite/content/features.md",
    "content": "---\ntitle: Story's Feature Flags\ndate: \"2018-08-30\"\nurl: \"/features\"\ndescription: \"Story comes with a lot of power, but it's all configurable: almost every extra feature is optional.\"\ncredit: \"https://unsplash.com/photos/QRkew0KwXSM\"\nimage: \"img/unsplash-photos-QRkew0KwXSM.jpg\"\nthumbnail: img/unsplash-photos-QRkew0KwXSM.tn-500x500.jpg\nclasses:\ncategories:\n- Demo\n---\nFeature flags, which are called _classes_ in the markup, control many of Story's features.\nYou can enable and disable them in your site config, or in an individual post's front matter.\nThis article documents Story's feature flags.\n<!--more-->\n\n### Enabling Feature Flags\n\nFeature flags can be enabled globally or locally, and the combination of these determines content behavior.\nThis lets you enable them for the entire site, or for an individual post.\nThe combined list of features that applies to a piece of content is the union of the two lists.\n\nHere's how to enable the \"example\" feature for the entire site, in your site's `config.yaml` file:\n\n```yaml\nparams:\n   classes:\n   - feature-example\n```\n\nHere's how to enable the \"misc\" feature in an individual piece of content, via its YAML front matter:\n\n```yaml\n---\nclasses:\n- feature-misc\n---\n```\n\nThe contents of both feature lists are combined and put into the `<body>` tag's `class` attribute, verbatim:\n\n```html\n<body class=\"feature-example feature-misc\">...</body>\n```\n\nIf you're using TOML, then the syntax in `config.toml` looks like this:\n\n```toml\n[params]\n  classes = [\"feature-example\", \"feature-misc\"]\n```\n\n### Disabling Features\n\nMany features can be _negated_ by prefixing the feature name with `no`, like this:\n\n```yaml\n---\nclasses:\n- feature-noexample\n---\n```\n\nIf a feature is enabled globally and negated in a single piece of content's front matter, both the positive and negative form will appear in the CSS classes.\nFeatures in Story are inside of code that checks not only whether flags are enabled, but also whether they're overridden with a negation.\nOne consequence of this is that if you disable a feature globally in `config.yaml`, you can't enable it locally in a single piece of content.\nYou can only enable globally and disable locally, not the other way around.\n\nThere's nothing special about a feature flag, and you can put arbitrary values into the configuration arrays.\nStory only recognizes and supports specific values; it ignores others.\nYou can take advantage of this to add any values into the arrays that you want, if they're useful for your other purposes.\nFor example, you can use this ability to set any desired CSS class, for selection either with your custom CSS, or to work with something off-the-shelf that happens to look for a specific class.\n\n### List Of Features\n\nFeatures have varying implementations.\nSome affect how Hugo processes content, some affect CSS presentation, and some are implemented in unobtrusive JavaScript after the page finishes loading.\n\nHere's a list of all of Story's features and how they're implemented.\nThe first column links to a demo of those features.\nFor brevity, the `feature-` prefix is omitted, but all of Story's classes have that prefix to avoid naming conflicts.\n\n| Feature            | Explanation                                                                                 | Implementation |\n|--------------------|---------------------------------------------------------------------------------------------|----------------|\n| [3dbook-covers](/images)       | Styles images to resemble a hardcover book                                                  | JS + CSS       |\n| [figcaption](/figures)         | Transforms images into captioned figures                                                    | JS + CSS       |\n| [figcaption-hidden](/figures)  | Hides figure captions, revealing them on mouseover                                          | CSS            |\n| [figcaption-visible](/figures) | Formats figure captions visibly                                                             | CSS            |\n| [figlink](/figures)            | Links text like \"Figure/Table 3\" to the corresponding figure or table                       | JS             |\n| [fignum](/figures)             | Auto-numbers figures and tables                                                             | CSS            |\n| [h3-cl](/typography)           | Adds CSS `clear: left` to all `<h3>` tags                                                   | CSS            |\n| [h3-cr](/typography)           | Adds CSS `clear: right` to all `<h3>` tags                                                  | CSS            |\n| [h3-cb](/typography)           | Adds CSS `clear: both` to all `<h3>` tags                                                   | CSS            |\n| [highlight](/typography)       | Applies syntax highlighting to code blocks, using HighlightJS                               | JS + CSS       |\n| [hrdinkus](/typography)        | Styles `<hr>` elements as a dinkus (three asterisks)                                        | CSS            |\n| [hrfleuron](/typography)       | Styles `<hr>` elements as a fleuron (&#10086;)                                              | CSS            |\n| [hyphenate](/typography)       | Enables line-breaks and hyphenation of text via the browser                                 | CSS            |\n| [justify](/typography)         | Aligns text with full-justification                                                         | CSS            |\n| [math](/math)                  | Enables LaTeX math typesetting using KaTeX                                                  | JS             |\n| [music](/music)                | Enables rendering abc notation as sheet music with abcjs                                    | JS             |\n| [nohdr](/images/)              | Disables header images locally; when applied globally, disables preview thumbnails in lists | Hugo           |\n| [subtitle](/typography)        | Enabled by default; disable to hide page subtitles                                          | CSS            |\n| [tablefig](/figures)           | Styles tables similar to scientific papers                                                  | JS + CSS       |\n| [tablefw](/figures)            | Sets table cells in a font with fixed-width numerals                                        | CSS            |\n| titlecase                      | Not enabled by default; Transforms All Content Titles to Titlecase                          | Hugo           |\n| [tweetquote](/typography)      | Renders a blockquote in a simplistic tweet style, if it follows conventions                 | JS + CSS       |\n\nRead next: [Story's author biographies](/author-profiles/).\n"
  },
  {
    "path": "exampleSite/content/figures.md",
    "content": "---\ntitle: Story's Figures, Captions, and Tables\ndate: \"2018-08-22\"\nurl: \"/figures\"\ndescription: \"This article shows you how to enhance your images and tables with features such as captions and alternative stylings.\"\ncredit: \"https://unsplash.com/photos/vHnVtLK8rCc\"\nimage: \"img/unsplash-photos-vHnVtLK8rCc.jpg\"\nthumbnail: img/unsplash-photos-vHnVtLK8rCc.tn-500x500.jpg\nclasses:\n- feature-figcaption\n- feature-figcaption-hidden\n- feature-figlink\n- feature-fignum\n- feature-tablecaption\ncategories:\n- Demo\n---\nStory can automatically transform images into figures with captions. \nIt can also add captions to tables.\nAnd it adds features and styling to both images and tables.\nThis article is a demo of Story's features for figures, tables, and captions.\n<!--more-->\n\n### Image Captions and Figures\n\nIf the `feature-figcaption` flag is set (and not negated), Story will transform\nyour images into figures, and add a caption. There are several ways this can be done. Story tries\neach method, in the following order.\n\nFirst, if an image is followed immediately by an `<em>` _in the same paragraph_, Story treats\nthe content of the `<em>` as the image caption. To enable this, the image and\nthe text must not have a blank line between them. Example:\n\n```md\n![Water Lily](/img/unsplash-photos-vHnVtLK8rCc.jpg)\n_Water lily photo by Zoltan Tasi on Unsplash_\n```\n\nThis markup results in a `<p><img...><em...></p>` markup that Story converts into a captioned figure.\nHover your mouse over the picture to see the caption:\n\n![Water Lily](/img/unsplash-photos-vHnVtLK8rCc.jpg)\n_Water lily photo by Zoltan Tasi on Unsplash_\n\nIf there's no `<em>` to use, Story uses the image's `title` attribute as a fallback:\n\n```md\n![Water Lily](/img/unsplash-photos-vHnVtLK8rCc.jpg \"A water lily\")\n```\n\n![Water Lily](/img/unsplash-photos-vHnVtLK8rCc.jpg \"A water lily\")\n\nFinally, Story falls back to the `alt` attribute:\n\n```md\n![Water Lily](/img/unsplash-photos-vHnVtLK8rCc.jpg)\n```\n\n![Water Lily](/img/unsplash-photos-vHnVtLK8rCc.jpg)\n\n### Table Styling\n\nStory has multiple built-in table styles that you can apply with feature flags.\nThe default is similar to GitHub's table styling:\n\n| Command | Description |\n| --- | --- |\n| `git status` | List all *new or modified* files |\n| `git diff` | Show file differences that **haven't been** staged |\n| `git commit` | Record changes to the repository |\n| `git branch` | List, create, or delete branches |\n\nThere is _also_ a style designed for tables that are part of an\narticle with figures, resembling scientific papers or other more formal use\ncases. This is enabled with `feature-tablefig`. Click <a\nid=\"tablefig\">here</a> to toggle.\n\n| Item                                      | Estimated | Positive and Significant | Negative and Significant |\n|-------------------------------------------|:---------:|:------------------------:|:------------------------:|\n| Demographic Variables for Head            |           |                          |                          |\n| Male                                      |     85    |            74            |            11            |\n| Age                                       |     85    |            85            |             0            |\n| Age Squared                               |     85    |             0            |            85            |\n| Head's Education                          |           |                          |                          |\n| Completed primary or incomplete secondary |     76    |            76            |             0            |\n| Completed secondary or higher             |     60    |            60            |             0            |\n| Completed secondary                       |     19    |            19            |             0            |\n| Higher                                    |     20    |            20            |             0            |\n| Unknown                                   |     12    |            12            |             0            |\n\nTables with columns of right-aligned numbers are more readable with fixed-width numerals; click to toggle <a id=\"tablefw\">`feature-tablefw`</a>. Observe the table below and see how its columns are easier to read with fixed-width numerals. This is noticeable with Github-style table formatting, but not with academic-style.\n\nDate          | Inclination, deg. | Longitude, Asc. Node, deg. | Mean Distance, au |  Eccentricity | Mean  Longitude, deg. |\n--------------|------------------:|---------------------------:|------------------:|--------------:|----------------------:|\nJan.&nbsp;28  |            7.0052 |                     48.486 |          0.387097 |      0.205644 |              355.3943 |\nMar.&nbsp;9   |            7.0052 |                     48.487 |          0.387098 |      0.205646 |              159.0899 |\nApr.&nbsp;18  |            7.0052 |                     48.489 |          0.387097 |      0.205649 |              322.7854 |\nMay&nbsp;28   |            7.0052 |                     48.490 |          0.387097 |      0.205650 |              126.4812 |\nJuly&nbsp;7   |            7.0052 |                     48.492 |          0.387098 |      0.205645 |              290.1771 |\nAug.&nbsp;16  |            7.0052 |                     48.493 |          0.387098 |      0.205645 |               93.8725 |\nSept.&nbsp;25 |            7.0052 |                     48.494 |          0.387098 |      0.205642 |              257.5683 |\nNov.&nbsp;4   |            7.0052 |                     48.495 |          0.387099 |      0.205635 |               61.2628 |\nDec.&nbsp;14  |            7.0052 |                     48.497 |          0.387099 |      0.205635 |              224.9579 |\nDec.&nbsp;54  |            7.0052 |                     48.498 |          0.387098 |      0.205633 |               28.6524 |\n    \n_Mercury's Heliocentric Osculating Orbital Elements Referred to the Mean Equinox and Ecliptic of Date for 2013_\n\n### Caption Styling And Linking\n\nStory uses JavaScript and CSS to make figures and tables more beautiful and\nfunctional.\n\n- Figures and tables get sequentially numbered `ID` attributes of `#fig-1` and so on, so\n  you can link to them.\n- The `feature-figlink` feature flag searches the article for text such as\n  Figure 1 and automatically links it to the appropriate figure.\n- If the `feature-fignum` feature is enabled, the text of the caption is\n  prepended with the figure number. Click here to <a id=\"fignum\">toggle this\n  feature</a>, then inspect the captions again to see the effect.\n- The `feature-figcaption-hidden` feature makes the captions hidden until you\n  move the mouse over them. The `feature-figcaption-visible` feature flag\n  overrides this and makes the captions visible immediately below the image.\n  Click here to <a id=\"figvisible\">toggle this feature</a>.\n\n### Table Captions\n\nStory doesn't convert tables to figures, but it can add captions to tables.\nSee Table 3, which is followed by a paragraph whose entire content is inside an `<em>` tag.\nIf the `feature-tablecaption` feature is enabled, Story will use unobtrusive JavaScript to move that paragraph's text into the table's `<caption>` element.\n\nTables can be autolinked and table captions can be numbered, similar to images.\nThese features are controlled by the same `feature-figlink` and `feature-fignum` flags that control image captioning and linking, so they'll be consistently applied.\n\n<script type=\"text/javascript\">\n$( \"#fignum\" ).click(function() {\n\t$(\"body\").toggleClass(\"feature-fignum\");\n});\n$( \"#figvisible\" ).click(function() {\n   $(\"body\").toggleClass(\"feature-figcaption-visible\");\n});\n$( \"#tablefig\" ).click(function() {\n   $(\"body\").toggleClass(\"feature-tablefig\");\n});\n$( \"#tablefw\" ).click(function() {\n   $(\"body\").toggleClass(\"feature-tablefw\");\n});\n</script>\n\nRead next: [Story's image formatting features](/images/).\n"
  },
  {
    "path": "exampleSite/content/images.md",
    "content": "---\ntitle: Story's Image Formatting Controls\ndate: \"2018-08-21\"\nurl: \"/images\"\ndescription: \"Story gives you extra control over image formatting using only Markdown syntax.\"\nclasses:\n- feature-figcaption\n- feature-figcaption-hidden\n- feature-3dbook-covers\n- feature-tablecaption\n- feature-depth\ncategories:\n- Demo\n---\nThis article is a demo of Story's image-related features (other than [figure captions](/figures)).\nStory can apply a variety of stylistic and layout transformations to your images.\nThese features are enabled by unobtrusive, accessibility-friendly tricks that give you more control over images than Markdown typically provides.\nStory also has out-of-the-box support for header and preview images, for a visually stunning site.\n<!--more-->\n\n### Shrinking Large Images\n\nStory's CSS automatically shrinks images to fit into the width of the article.\n\n![Default header image](/img/default-header-img.jpg)\n\nThe image above is much wider than the content region, but it's sized to fit.\n\n### Control Over Image Formatting\n\nStory uses URL fragment techniques to\ngive you control over image styling.\nImages that use this technique don't get converted into [figures with captions](/figures).\n\n![Small Lily](/img/lily.jpg# fr)\n\nFor example, you can float an image right with the `fr` URL fragment:\n\n```md\n![Small Lily](/img/lily.jpg# fr)\n```\n\nThere's a selection of these pseudo-classes built into Story via the Descartes\nCSS file; inspect the CSS or LESS source to see what styles you can attach to\nimages.\n\nIf floated images interfere with headings, you can use [heading clear feature flags](/features) to fix this.\n\n### Book Cover Mockups\n\n[![Small Lily](/img/lily.jpg# 3dbook)](https://unsplash.com/photos/vHnVtLK8rCc)\n\nA book cover image that's inside an `<a>` link can be floated right and given\na 3d look with the `3dbook` URL fragment pseudo-class. \n\n```\n[![Small Lily](/img/lily.jpg# 3dbook)](https://unsplash.com/photos/vHnVtLK8rCc)\n```\n\n### Header Images\n\nStory is designed for visual impact, with a featured image for each piece of content.\nUse the `image` property in the article's front-matter to set the image.\nUse the `credit` to give credit to the image's creator if you wish; Story will put a small camera icon in the header if it finds that parameter.\nUse the `thumbnail` property to supply a smaller version of the image in list views.\n\nA typical piece of content will have front matter like the following:\n\n```yaml\nimage: \"/img/unsplash-photos-QRkew0KwXSM.jpg\"\nthumbnail: /img/unsplash-photos-QRkew0KwXSM.tn-500x500.jpg\ncredit: \"https://unsplash.com/photos/QRkew0KwXSM\"\n```\n\nIf there's no thumbnail, Story falls back to the full-size image.\nIf there's no article-specific image, Story uses its default, `/img/default-header-img.jpg`, or the thumbnail equivalent, `/img/default-header-img.tn-500x500.jpg`.\nThis page doesn't supply its own header image, so Story is using the default.\n\nYou can supply your own default header image by simply putting an image with the same name in your *site's* `/static/img` directory.\nIf Hugo finds that you've added an image of your own, it will take precedence.\n\nYou can also override section-specific header images in list\n(non-individual-page) views with parameters in the `_index.md` content file in\nthat section.  (The `title` and `subtitle` parameters in those files can also\noverride what's shown in list page headers.)\n\n### Imageless Layout Options\n\nIf you don't want header images or preview thumbnails in list views, you can set\nthe `feature-nohdr` feature. Set locally in a piece of content, it will display\nno header/banner image. Here's an example of what a page looks like with and\nwithout the header image:\n\n![A page in Story, with and without the header](/img/page-header-formatting.png)\n\nSet globally for the whole site, it will make the site simply ignore all header\nand preview images:\n\n![A site in Story, with and without header and preview images](/img/site-header-formatting.png)\n\nTo illustrate this feature, the [search page](/search) has this feature set, so\nit has a plain, bannerless layout.\n\n### Adding Depth To Headers\n\nArticles (but not list pages) can be given a bit of extra depth with the\n`feature-depth` class, which is negatable with `feature-nodepth`. This article\nis an example: notice how the content is shifted up slightly to overlap the\nheader image a bit, with rounded corners and a shadow around it.\n\nThe `feature-depth` class can be set globally in your `config.yaml` or similar,\nand overridden as you wish on individual pages.\n\nRead next: [Story's built-in search features](/search-page/).\n"
  },
  {
    "path": "exampleSite/content/mailchimp/_index.md",
    "content": "---\nskip: true\nlayout: mailchimp\noutputs:\n- rss\n- html\n---\n"
  },
  {
    "path": "exampleSite/content/mailchimp-features.md",
    "content": "---\ntitle: \"Story's MailChimp Integration Features\"\ndate: \"2018-08-18\"\nurl: \"/mailchimp-features\"\ndescription: \"Story makes it easy to grow a MailChimp subscriber list and send beautifully formatted emails to them automatically.\"\nimage: \"img/jessy-hoffmann-720198-unsplash.jpg\"\ncredit: \"https://unsplash.com/photos/EsNkWAv6Vmw/\"\nthumbnail: \"img/jessy-hoffmann-720198-unsplash.tn-500x500.jpg\"\ncategories:\n- Demo\n---\nIf you're a blogger, you might use MailChimp to build a subscriber list, and\nStory makes that easy. MailChimp also has the ability to automatically send your\nnew content to the list from an RSS feed, and guess what---Story helps you\ncreate an RSS feed customized just for that if you like, too.\n<!--more-->\n\nFirst, MailChimp subscriber forms. If you want to add a subscription form at the\nbottom of each page, just add your MailChimp URL as a parameter in your\nconfiguration file. Here's a YAML example for `config.yaml`:\n\n```yaml\nparams:\n- mailchimp: \"your URL here\"\n```\n\nAnd here's an example for `config.toml`:\n\n```toml\n[params]\n  mailchimp = \"your URL here\"\n```\n\nYou can copy the URL from the address bar of your MailChimp subscriber form. It\nbecomes the `action` of the form, which will appear at the bottom of each page\nnear your author biography.\n\nNext, an RSS feed. Story has an RSS layout customized to create summaries of\nyour content's title, description, featured image, and summary content. The\nsummary content is either delimited explicitly by the `<!--more-->` comment in\nyour Markdown source, or generated automatically by Hugo. (Read more\n[here](https://gohugo.io/content-management/summaries/).)\n\nThe default content of the RSS feed entries is generated from the page's\n`description` front matter and `.Summary` content, but you can provide your own\nto override this.  Simply add an excerpt in the `tldr` front matter property.\n\nTo enable the RSS feed, you need to create a special `.md` file that won't\nappear as regular content, but will render an extra RSS feed file. Its content\nis ignored, and only its front matter is important. For example, you could\ncreate it as `content/mailchimp/_index.md` with the following contents, using YAML\nfront matter:\n\n```yaml\n---\nlayout: mailchimp\noutputs:\n- rss\n---\n```\n\nNow Hugo will build an extra feed at\n[`/mailchimp/index.xml`](/mailchimp/index.xml), and you can use it to create\n[RSS campaigns in\nMailChimp](https://mailchimp.com/help/share-your-blog-posts-with-mailchimp/). Of\ncourse, you can also use your normal RSS feed, but Story's default is to put\nfull content into that, so it might be more than you want.\n\nRead next: [Story's 'talks' feature for presentations](/talks/adirondack/).\n"
  },
  {
    "path": "exampleSite/content/math.md",
    "content": "---\ntitle: Story's Mathematical Equation Typesetting\ndate: \"2018-08-20\"\nurl: \"/math\"\ndescription: \"If you ever write equations or mathematical formulas, Story has the features you need.\"\ncredit: \"https://unsplash.com/photos/5mZ_M06Fc9g/download\"\nimage: \"img/unsplash-photos-5mZ_M06Fc9g.jpg\"\nthumbnail: img/unsplash-photos-5mZ_M06Fc9g.tn-500x500.jpg\nclasses:\n- feature-math\ncategories:\n- Demo\n---\nThis article is a demo of Story's ability to typeset mathematical equations,\nboth inline and in block form.\n<!--more-->\n\nStory uses the [KaTeX](https://khan.github.io/KaTeX/) library to typeset\nmathematical formulae in {{< math >}}\\LaTeX{{< /math >}} notation. KaTeX is\nsimilar to MathJax, but simpler and faster. It provides most of the features\nneeded for typesetting equations, both inline and in block form.\n\nStory provides a `math` Hugo shortcode to help avoid problems that result from\nMarkdown processing. Here's an example of using the shortcode for inline math:\n\n<pre><code>The quadratic equation is &#123;{< math >}}x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}&#123;{< /math >}}.</code></pre>\n\nThe quadratic equation is {{< math >}}x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}{{< /math >}}.\n\nAnd in equation mode,\n\n<pre><code>&#123;{< math >}}\nx = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\n&#123;{< /math >}}</code></pre>\n\n{{< math >}}\nx = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\n{{< /math >}}\n\nYou don't have to use the shortcode, but it saves you from needing to\nbackslash-escape special characters, and fixes problems like backslashes and\nspaces at the end of the line, which Hugo's Markdown processor will otherwise\nmangle. This enables frustration-free typesetting of more advanced equations\nsuch as the following:\n\n{{< math >}}\n\\left\\{\n\\begin{array}{c}\na_1x+b_1y+c_1z=d_1 \\\\\na_2x+b_2y+c_2z=d_2 \\\\\na_3x+b_3y+c_3z=d_3\n\\end{array}\n\\right.\n{{< /math >}}\n\nMath typesetting is controlled with the `feature-[no]math` flag.\n\nRead next: [Story's music notation](/music/).\n"
  },
  {
    "path": "exampleSite/content/music.md",
    "content": "---\ntitle: Story's Music Notation\ndate: \"2018-08-20 04:00:00\"\nurl: \"/music\"\ndescription: \"Story can render music notation in your website.\"\ncredit: \"https://unsplash.com/photos/UpdR5OaUJl0\"\nimage: \"img/jordan-mixson-372435-unsplash.jpg\"\nthumbnail: img/jordan-mixson-372435-unsplash.tn-500x500.jpg\nclasses:\n- feature-music\ncategories:\n- Demo\n---\nStory uses the [abcjs](https://github.com/paulrosen/abcjs) library to transform\n[abc](https://www.abcnotation.com) music notation into \"sheet music\" dynamically.\nThis works well for displaying a wide variety of music notation in a web\nbrowser conveniently, without embedding images or PDFs or the like.\n<!--more-->\n\nTo generate sheet music within a page, enter it in a code listing with the language `abc`, like this:\n\n    ```abc\n    [ABC music notation goes here]\n    ```\n\nIf you enable music notation rendering with the `feature-[no]music` flag, then Story's\nJavaScript, which runs when the page loads, will search for every `abc` code listing and transform it.\nHere's an example:\n\n```abc\nX: 76\nT:Mazurka\nC:F. Chopin\nT: Op.33 No.1\nM:3/4\nL:1/4\nQ:\"Mesto\"\nK:B\n%%staves {(RH1 RH2) (LH1 LH2)}\nV: RH1 clef=treble name=\"Piano\"\nV: RH2 clef=treble\nV: LH1 clef=bass\nV: LH2 clef=bass\n%\n[V: RH1] (!p!LD | E/>D/ [^^CGB][^C^^FA] | G2-) (G/A/ | B/c/ d {/f}e | (d/g//)) z// (Ld2 |\n[V: RH2] x  | x      x      x      | z [B,D] z  | x    x     x | x            z [G-B-]| \n[V: LH1] x  | x      x      x      | z [D,G,] x | x3           | x3 |\n[V: LH2] z  | z      z      (D,,   | G,,2)   z  | z3           | z            z [G,-D-]|\n%\n[V: RH1] d/>c/ e      d) | {/c}(B/>A/ [EGc][DGB]) | (E/>D/ [^^CGB][^C^^FA] | G2 B | d/>c/e  d) |\n[V: RH2] [GB]  [GA] [GB] | x3                     | x3 | z [B,D][B,D]            | z [GA] [GB] |\n[V: LH1] x3 | x3 | x3 | z [D,G,] [D,G,] | x3 |\n[V: LH2] [G,D] ([C,C] [G,,G,]) | z ([C,C,,] [G,,,G,,]) | z z (D,, | G,,2) x | z ([C,C] [G,,G,])\n```\n\nStory also has a `music` shortcode, which simply takes the name of an abc file as an argument, e.g. the following example code and the resulting music notation. This enables you to store your music files separately from your content and include them easily.\n\n<pre><code>&#123;{< music \"/cooleys.abc\" >}}</code></pre>\n\n{{< music \"/cooleys.abc\" >}}\n\nRead next: [Story's beautiful typography](/typography/).\n"
  },
  {
    "path": "exampleSite/content/other-features.md",
    "content": "---\ntitle: Story's Theme Features\nurl: /theme-features\ndate: \"2018-09-01\"\ndescription: \"This page is a tour of Story's features, so you can take full advantage of its power.\"\nimage: \"img/unsplash-photos-nehfi_SfqtU.jpg\"\ncredit: \"https://unsplash.com/photos/nehfi_SfqtU\"\nthumbnail: \"img/unsplash-photos-nehfi_SfqtU.tn-500x500.jpg\"\ncategories:\n- Demo\n---\nStory has a lot of features, but most are optional and have smart defaults!\nThis page is an introduction to Story, with links to further pages that go into\nmore details. There's also a listing of features that either don't need\na separate documentation page, or just don't have full documentation yet.\n<!--more-->\n\n- [Gorgeous, responsive typography on all devices and in print](/typography)\n- [Beautiful featured images and thumbnails](/images/) (optional)\n- [Multiple layouts](/images/)\n- [Flexibility via feature toggles](/features)\n- [Author profile pages](/author-profiles)\n- [Remark browser-based presentation support](/slides/), including CSS themes and multiple aspect ratios\n- [Automatic table and image enhancements](/figures)\n- [Advanced image styling features](/images)\n- [Mathematical equation typesetting](/math)\n- [Formatting ABC music notation as sheet music](/music)\n- [Built-in search](/search-page)\n- [MailChimp subscribe forms and RSS feeds](/mailchimp-features)\n\nStory also has support for the following, which aren't extensively documented:\n\n- Code syntax highlighting\n- Google Analytics\n- Categories\n- All types of blogs; Story isn't opinionated about what you call them (you\n  can put your content under `/posts/`, `/blog/`, `/articles/`, or whatever)\n- A section for \"talks,\" which is different from slideshows; a talks page is a\n  place to put information about your presentations, including links to videos,\n  the location, slides, and so on. `/talks/` and `/slides/` are the only two\n  content types for which Story has special formatting and archetypes.\n- An archive listing page, which uses the `archives` layout analogously to the [search](/search-page) feature\n- 404 error page\n- Social-media meta tags to make your content look great when shared on social\n  media sites\n- Using `skip` to hide content from default lists, but generating HTML pages for it\n- Meta keywords\n- Font Awesome icon fonts\n- Custom header meta tags with any content you want\n- Custom footer content with any HTML, JS, or CSS you want; useful for adding\n  custom features from third-parties that provide script blocks to paste into\n  your site\n- Custom CSS classes in the `<body>` tag\n- Custom content and social link menus with any content you want (not limited to predefined)\n\nRead next: [Story's feature flags](/features/).\n"
  },
  {
    "path": "exampleSite/content/search/_index.md",
    "content": "---\nlayout: search\nurl: /search/\ntitle: Search\nclasses:\n- feature-nosubtitle\n- feature-nohdr\n- feature-depth\n---\n"
  },
  {
    "path": "exampleSite/content/search-page.md",
    "content": "---\ntitle: Story's JavaScript Search\ndate: \"2018-08-21\"\nurl: \"/search-page\"\ndescription: \"With Story, your site will have built-in search with no external dependencies.\"\nimage: \"img/unsplash-photos-4zxSWESyZio.jpg\"\ncredit: \"https://unsplash.com/photos/4zxSWESyZio\"\nthumbnail: \"img/unsplash-photos-4zxSWESyZio.tn-500x500.jpg\"\ncategories:\n- Demo\n---\nThis article documents Story's built-in search features, which don't rely on external search engines.\nStory uses the [LunrJS](https://lunrjs.com/) library to provide fast browser-based search.\nThis page first explains how search setup works, and then provides copy-paste\nready code samples for you to use.\n<!--more-->\n\nTo get Story's search to work, you need to take a couple of steps:\n\n1. Create a piece of content with the URL you want. Story assumes you want\n\t`/search/` and adds an icon for that in the top menu automatically. So you\n\tcan simply create `content/search/_index.md` and that should work.\n2. Give this content the `search` layout, and a title.\n\nThere doesn't need to be any Markdown content; the `search` layout ignores it.\n\nThis will create the search page, but you also need to tell Hugo that it should\nbuild the JSON index of the content in the site, which LunrJS uses. To do this,\nconfigure the `home` output type to include JSON, which isn't included by\ndefault. This will override the default output settings, so you'll need to\nexplicitly specify the defaults in addition. Here's a YAML config file section\nfor your `config.yaml` file to enable this:\n\n```\noutputs:\n   home:\n      - HTML\n      - JSON\n      - RSS\n   page:\n      - HTML\n   section:\n      - HTML\n      - RSS\n   taxonomy:\n      - HTML\n      - RSS\n   taxonomyTerm:\n      - HTML\n      - RSS\n```\n\nIf you use TOML, use this:\n\n```\n[outputs]\n  home = [\"HTML\", \"JSON\", \"RSS\"]\n  page = [\"HTML\"]\n  section = [\"HTML\", \"RSS\"]\n  taxonomy = [\"HTML\", \"RSS\"]\n  taxonomyTerm = [\"HTML\", \"RSS\"]\n```\n\nThere's more you can do. If you want to create a full-featured search page easily, just paste the following code into `content/search/_index.md`\n\n```\n---\nlayout: search\nurl: /search/\ntitle: Search\nclasses:\n- feature-nosubtitle\n- feature-nohdr\n---\n```\n\nThis illustrates an additional layout feature in Story:\ndisplaying it without a header image.\n\nRead next: [Story's mathematical equation typesetting features](/math/).\n"
  },
  {
    "path": "exampleSite/content/slides/adirondack/index.md",
    "content": "---\ntitle: 'Creating Beautiful Presentations with Story'\ndate: \"2018-04-25T09:50:00-07:00\"\nurl: \"slides/adirondack/\"\nimage: \"slides/adirondack/leo-serrat-533922-unsplash.jpg\"\nthumbnail: slides/adirondack/thumbnail.jpg\ndescription: \"Story's Remark frameworks help you create sophisticated slides with simple, clean Markdown. There are predefined layouts for most presentation needs, beautiful typography and colors, precise image control, and a simple modular way to create custom layouts.\"\nratio: \"16:9\"\nthemes:\n- apron\n- descartes\n- adirondack\nclasses:\n- feature-math\n- feature-qrcode\n- feature-nohighlight\n- feature-music\n---\nclass: title, smokescreen, shelf, no-footer\nbackground-image: url(leo-serrat-533922-unsplash.jpg)\n\n# Creating Beautiful Presentations\n### With Remark, Apron, Adirondack, and Descartes\n\n---\n# The Story Remark Themes\n\n[Story](https://github.com/xaprb/story) offers helper themes for creating\nbeautiful presentations with [Remark](https://remarkjs.com/), using simple\nMarkdown to create slide layouts.\n\n- Apron defines the layouts' structure and size.\n- Adirondack adds typography, theme colors, and helpful features.\n- Descartes provides element and image positioning and colors.\n\nStory has a design goal of clean, simple Markdown content. Avoiding \"raw\" HTML\nand Remark's Markdown extensions makes things easier.\nView the source of this page to see the Markdown that creates it.\n\nThese characteristics make it easy to build gorgeous slideshows. They're also\na great foundation for creating your own themes. \n\n---\n# What is Remark?\n\nRemark (sometimes called RemarkJS) is a browser-based slideshow system. It's\nsimple but surprisingly powerful:\n\n- You write slides in simple Markdown\n- It supports a presenter mode, slide notes, and dual monitors\n- It supports slide layouts, templates, and incremental slides\n- It's easy to extend and customize with simple CSS\n\nStory integrates Remark into Hugo, creating a live-reload editing experience,\nand a permanent home for your slides on your own website!\n\nView this page's source to see how easily you can compose slideshows\nwith Remark.\n\n---\nname: getting-started\n# Getting Started\n\nTo get started, use `hugo new slides/my-presentation.md` and ensure that the\nfollowing `themes` are in the front matter, for example:\n\n```yaml\n---\ntitle: 'Creating Beautiful Presentations with Story'\ndate: \"2018-04-25T09:50:00-07:00\"\nurl: \"/slides/adirondack/\"\nratio: \"16:9\"\nthemes:\n- apron\n- descartes\n- adirondack\n```\n\n---\nclass: compact\n\n# Apron's Slide Layouts\n\nIt's easy to create common slide layouts with Remark's slide classes.\n\n![Slide Layouts](slide-layouts.svg# maxw-70pct center)\n\n---\nclass: img-right\n\n# Heading, Content, and Image\n\n![Yosemite](leo-serrat-533922-unsplash.jpg)\n\nThis is the `img-right` slide class. The content consists simply of a\nheader, an image, and this text. \n\n* The image's aspect ratio and cropping are not altered.\n* All content after the image goes in the lefthand column.\n\nAlthough this text is in the lefthand column, the image comes _first_ in the\nmarkdown source.\n\n---\nclass: img-left\n\n# Heading, Image, and Content\n\n![Yosemite](leo-serrat-533922-unsplash.jpg)\n\nThis is the `img-left` slide class. The content is structured in just the same\nway as the `img-right` slide class.\n\n- All content after the image goes in the right-hand column.\n\n--\n- These columns require no wrapper `<div>`, just plain Markdown.\n- This avoids interference with Remark features.\n\n--\n- Incremental builds with `--` work fine, for example.\n\n---\nclass: img-right-full\n\n![](kari-shea-272383-unsplash.jpg)\n\n# Content and Image\n\nThis is the `img-right-full` class.  The content is simply an image and text\n(including a header in this case).\n\nThe image is 2x larger than the visible area and its position is set to `left`.\nThis lets you pair this layout with the following one.\n\n- A red flare silhouetted the jagged edge of a wing.\n- Almost before we knew it, we had left the ground.\n\n---\nclass: img-left-full\n\n![](kari-shea-272383-unsplash.jpg)\n\n# The Other Side of the Coin\n\nThis slide's class is `img-left-full`. Like the previous slide, it's just an\nimage and some content. The image is exactly the same as the previous slide, but\nit's positioned to reveal the other half.\n\n- All their equipment and instruments are alive.\n- I watched the storm, so beautiful yet terrific.\n- Almost before we knew it, we had left the ground.\n\n---\nclass: img-caption\n![Image](will-turner-508747-unsplash.jpg)\n\nThis slide's class is `img-caption`. Its content is simply an image and this\ntext.\n\n---\nclass: col-2\n\n# Two-Column Layouts\n\nThis is a two-column layout, created with `class: col-2`.\nThere's no columnar markup (no DIVs, for example) in the content.\n\n![](leo-serrat-533922-unsplash.jpg# mw-90 center)\n\nThe columns are created natively in CSS. The first H1 spans all columns.\n\n> Relaxing in the Adirondack chair, I felt the gathering dusk creep on kitten\nfeet.  It came to me, then, that a day lived in this paradise was better than a\nlifetime anywhere else.\n\n- I watched the storm, so beautiful yet terrific.\n\n---\nclass: col-3\n\n# Three-Column Layouts\n\nThis is a three-column layout, created with `class: col-3`.\n\nAs with `col-2`, Apron assumes the slide begins with an H1 header.\n\nMist enveloped the ship three hours out from port.\n\n![](tanya-nevidoma-632010-unsplash.jpg# mw-90)\n\n- My two natures had memory in common.\n- The face of the moon was in shadow.\n\nCall me Ishmael. Some years ago---never mind how long precisely---having little or\nno money in my purse, and nothing particular to interest me on shore, I thought\nI would sail about a little and see the watery part of the world. \n\n---\n# Apron's Layout Classes\n\nHere are the Apron slide layouts classes and how to use them:\n\n| Class                         | Content structuring guidelines                  |\n|-------------------------------|-------------------------------------------------|\n| title                         | Add a background-image, H1, and optional H2/H3. |\n| img-caption                   | Add an image and optional caption text.         |\n| img-right, img-left           | Add a header, image, and content.               |\n| img-right-full, img-left-full | Add an image, _then_ headers and content.       |\n| col-2, col-3                  | Add a header, then any content desired.         |\n\n---\nclass: compact\n\n# A Compact Slide\n\nThis slide's class is `compact`, which reduces font sizes, line heights, and\nslide padding.  This makes it possible to fit more content on the slide, which\ncan be useful.\n\n- I watched the storm, so beautiful yet terrific.\n- Almost before we knew it, we had left the ground.\n\n```javascript\nfunction $initHighlight(block, cls) {\n\tif (cls.search(/\\bno\\-highlight\\b/) != -1)\n\t\treturn process(block, true, 0x0F) + ` class=\"${cls}\"`;\n\tfor (var i = 0 / 2; i < classes.length; i++) {\n\t\tif (checkCondition(classes[i]) === undefined)\n\t\t\tconsole.log('undefined');\n\t}\n}\n```\n\n---\nclass: compact, col-3\n\n# Compact Three-Column Layout\n\nThis is a three-column layout,\ncreated with `class: col-3, compact`.\n\nThe `compact` class works well three columns, which have less room.\n\n![](tanya-nevidoma-632010-unsplash.jpg# maxw-90pct)\n\nA shining crescent far beneath the flying vessel.\n\n- It was going to be a lonely trip back.\n- Mist enveloped the ship three hours out from port.\n- My two natures had memory in common.\n- Silver mist suffused the deck of the ship.\n- The face of the moon was in shadow.\n\nCall me Ishmael. Some years ago---never mind how long precisely---having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world. \n\n---\nclass: roomy\n# A Roomy Slide\n\nThis slide doesn't have as much content, so I gave it the class `roomy` to let\nits content stretch out a bit for readability.\n\n- A red flare silhouetted the jagged edge of a wing.\n- I watched the storm, so beautiful yet terrific.\n- Almost before we knew it, we had left the ground.\n- All their equipment and instruments are alive.\n\n---\nclass: roomy, col-2\n# Room For Two Columns\n\nThis roomy slide has two columns: `class: roomy, col-2`. Bulleted lists\nshouldn't break across columns.\n\n- A red flare silhouetted the jagged edge of a wing.\n- I watched the storm, so beautiful yet terrific.\n- Almost before we knew it, we had left the ground.\n- All their equipment and instruments are alive.\n\n---\nclass: compact\n# Apron's Auxiliary Classes\n\nApron offers the following additional slide classes:\n\n| Class      | Applies To | Content structuring guidelines                                                     |\n|------------|------------|------------------------------------------------------------------------------------|\n| top        | title      | Moves the title and subtitle to the top of the slide.                              |\n| bottom     | title      | Moves the title and subtitle to the bottom.                                        |\n| shelf      | title      | Extends the title's background and locates the subtitle above it.                  |\n| compact    | (all)      | Reduces text size and margins to fit more content.                                 |\n| roomy      | (all)      | Increases text size to fill more space.                                            |\n| fullbleed  | (all)      | Removes margins from the slide and its text.                                       |\n| no-footer  | (all)      | Hides the footer (including slide number).                                         |\n| debug      | (all)      | Outlines elements in gold to make formatting visible. Variants: -white and -black. |\n| debug-grid | (all)      | Displays a layout grid. Variants: -8, -16, -solid, and combinations of these.      |\n\n---\nclass: title, fogscreen\nbackground-image: url(tanya-nevidoma-632010-unsplash.jpg)\n# Adirondack's Typography and Features\n\n---\n# Adirondack\n\nAdirondack is built on top of Apron, and adds beautiful typography, colors, and\nextra features. This section is a demo and documentation of those features.\n\n# Heading Level 1\n## Heading Level 2\n### Heading Level 3\n\nText with _italics_, __bold__, ~~strikethrough~~, `<code>`,\n[link](https://www.wikipedia.org/).\n\n---\nclass: col-2\n\n# Bulleted Lists Demo\n\nThis column illustrates bulleted lists.\n\n* A bulleted list.\n* Another bullet.\n  * Nested bullets.\n  * Another.\n     * Deeply nested.\n* Back to the top-level again.\n\nThis column has numbered lists.\n\n2. Another bullet.\n3. The last bullet.\n  1. Nested numbered lists.\n  2. Another.\n      3. Deeper.\n1. Top-level again.\n\n---\n# Code Typography Demo\n\nRemark offers [HighlightJS](https://highlightjs.org/) code syntax highlighting.\nStory enables/disables this with [feature flags](/features/).\n\n```javascript\nfunction $initHighlight(block, cls) {\n\tif (cls.search(/\\bno\\-highlight\\b/) != -1)\n\t\treturn process(block, true, 0x0F) + ` class=\"${cls}\"`;\n\tfor (var i = 0 / 2; i < classes.length; i++) {\n\t\tif (checkCondition(classes[i]) === undefined)\n\t\t\tconsole.log('undefined');\n\t}\n}\n```\n\n---\nclass: col-2\n# Math Typesetting\n\nStory supports math equation typesetting using the KaTeX library,\nif [`feature-math`](/math/) is enabled.\n\n\\\\[\n\\left( \\beta mc^2 + c \\left ( \\sum_{n=1}^3 \\alpha_n p\\_n \\right ) \\right) \\psi(x,t) = i \\hbar \\frac{\\partial \\psi(x,t) }{\\partial t}\n\\\\]\n\nThe coherence is the \\\\(\\kappa\\\\) coefficient of \\\\(n^2\\\\),\nwhich is \\\\(e^{i\\pi}-1=0\\\\).\n\n\\\\[\nx = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\n\\\\]\n\n![Universal Scalability Law](linear3.svg)\n\nYou can also display equations inline, such as the quadratic equation, which is\n\\\\(x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\\\\)\n\n---\nclass: compact\n# Music Notation and Sheet Music\n\nStory supports [formatting sheet music from ABC](/music).\n\n```abc\nX: 1\nT: Cooley's\nM: 4/4\nL: 1/8\nK: Emin\n|:D2|EB{c}BA B2 EB|~B2 AB dBAG|FDAD BDAD|FDAD dAFD|\nEBBA B2 EB|B2 AB defg|afe^c dBAF|DEFD E2:|\n```\n\n---\nclass: fit-h1, roomy\n# This Slide Has A Very Long Multi-Line Heading That Has Been Shrunk\n\nThe `fit-h1` slide class will automatically shrink the first H1 heading until it\nfits on a single line.\n\nThis doesn't work on title slides.\n\nStory also applies 6'2\" tall \"smartypants\" processing to replace 'straight\nquotes,' en- and em-dashes (boil for 12--15 minutes---longer if needed),\nand ellipses with their nicer typographical equivalents... isn't that nice?\n\n---\n# Share Your Slides With QR Codes\n\n.qrcode.db.fr.w-40pct.ml-4[]\n\nAdirondack has built-in support for QR codes to share your slides easily. No\nmore emailing links or files! Your audience can simply snap a picture of the\nscreen.\n\nJust enable the `feature-qrcode` [flag](/features/) and add markup like the\nfollowing to your slide:\n\n```\n.qrcode.db.fr.w-40pct.ml-4[]\n```\n\nThe `qrcode` class is important but the rest is up to you.\n\n---\n# Export Your Slides To PDFs\n\nRemark has support for printing slides to a PDF, using Google Chrome's print\ndialog (not the native system dialog).\n\nThere are some bugs in it... but Story implements workarounds so you don't even\nneed to think about it.\n\nJust print with Chrome and save to a PDF file.\n\nThis works for both 16:9 and 4:3 ratio slides. Speaking of which, you select\nthat with the `ratio` in the front matter, as shown on the [getting\nstarted](#getting-started) slide.\n\n---\nlayout: true\n\n.footer[\n- @exampletwittername\n- ![logo](company-logo-web.svg)\n]\n\n---\nclass: compact\n# Footer Content\n\nThis slide builds on content from the previous (hidden, layout) slide, whose\ncontent is:\n\n```\n---\nlayout: true\n.footer[\n- @exampletwittername\n- ![logo](company-logo-web.svg)\n]\n```\n\nThis content uses Adirondack's built-in `footer` css styling to define footer\nelements. You can see them at the bottom of this slide. In the next section,\nyou'll learn Descartes classes you can add\nto the div to style it, e.g. `.footer.bt.bc-cornflower[...]`.\n\nYou can hide both the Remark and custom footer on any slide with `class: no-footer`.\n\n---\nlayout: false\n# Adirondack’s Slide Classes\n\nHere are Adirondack's slide classes:\n\n| Class         | Notes                                                                |\n|---------------|----------------------------------------------------------------------|\n| `smokescreen` | Creates a dark shaded semi-transparent background on `title` slides. |\n| `fogscreen`   | Similar to `smokescreen`, but uses a white shading.                  |\n| `fit-h1`      | Shrinks the H1 heading's font-size to fit on a single line.          |\n\n---\nclass: title, smokescreen, shelf\nbackground-image: url(will-turner-508747-unsplash.jpg)\n\n# Positioning Images And Elements\n## Using Descartes To Create Intricate Layouts\n\n---\n# Descartes' Styling Functionality\n\nDescartes is an add-on that gives lots of power over image and element formatting with\nMarkdown.  It uses composable, functional pseudo-classes in the image's URL\nfragment (the part after the `#` character). For example, this image will be 33% width,\ndisplay as block, 2rem right margin, and float left: \n\n```\n![Image](tom-barrett-364228-unsplash.jpg# w-33pct db fl mr-4)\n```\n\n![Image](tom-barrett-364228-unsplash.jpg# w-33pct db fl mr-4)\n\nThat URL has four \"words\" in the fragment, delimited by whitespace. The\nwhitespace is important!\n\nImage classes are also available for `<div>`s.\n\n---\nclass: center\n\nThis image collage has no \"raw\" markup or Remark `<div>` extensions. The next\nslide illustrates Descartes's grid of 12ths.\n\n![](kari-shea-272383-unsplash.jpg# l-0 t-20pct w-two-thirds h-80pct ofv absolute)\n![](leo-serrat-533922-unsplash.jpg# w-third h-40pct t-20pct r-0 ofv absolute)\n![](will-turner-508747-unsplash.jpg# w-third h-40pct t-60pct r-0 ofv absolute)\n\n---\nclass: fullbleed\nbackground-color: black\n\n![](kari-shea-272383-unsplash.jpg# absolute ofv w-9-12th h-7-12th)\n![](leo-serrat-533922-unsplash.jpg# absolute ofv w-3-12th h-3-12th t-0 l-9-12th)\n![](nasa-53884-unsplash.jpg# absolute ofv w-2-12th h-9-12th t-3-12th l-9-12th)\n![](tom-barrett-364228-unsplash.jpg# absolute ofv w-1-12th h-5-12th t-3-12th l-11-12th)\n![](will-turner-508747-unsplash.jpg# absolute ofv w-1-12th h-4-12th t-8-12th l-11-12th opr)\n![](tanya-nevidoma-632010-unsplash.jpg# absolute ofv w-5-12th h-5-12th t-7-12th l-0)\n![](tom-barrett-364228-unsplash.jpg# absolute ofv w-4-12th h-3-12th t-7-12th l-5-12th)\n![](will-turner-508747-unsplash.jpg# absolute ofv w-4-12th h-2-12th t-10-12th l-5-12th)\n\n.absolute.w-7-12th.pa-3.l-1-12th.t-20pct.ba.bw-4.br-4.bg-white-60pct[\nThis slide is composed only of simple Markdown markup, no raw HTML.\n]\n\n---\n# Using Descartes' Coordinate Grids\n\nDescartes offers several length scales for element sizes and positions. For\neach, a class naming convention selects the value:\n\n- rems, from 1 rem (-1) to 96rem (-9)\n- tenths, in 10% increments from -10pct to -100pct, plus -33pct, -34pct, and -75pct\n- twelfths, in 1/12th increments from -1-12th to -11-12th\n- thirds, as -third and -two-thirds\n\nThere's always a prefix that specifies what the item is, and a suffix that\nselects the units.  So for example, if you want an element to have a width of\n50%, you can give it a class of `w-50pct`, and if you want it to be 25% width\nyou can use `w-3-12th`.\n\n---\nclass: col-2\n# Descartes' Coordinate Selectors\n\nYou can apply the length scales from the previous slide to a variety of element\nproperties (see right). The X can be any of the suffixes discussed on the\nprevious slide.\n\nThese can be applied as classes to a DIV, or image pseudo-classes:\n\n```\n.w-50pct.h-1-12th.t-0.l-50pct[....]\n![img](pic.jpg# w-50pct h-1-12th t-0 l-50pct)\n```\n\n- w-X: width\n- maxw-X: max-width\n- minw-X: min-width\n- h-X: height\n- maxh-X: max-height\n- minh-X: min-height\n- t-X: top\n- r-X: right\n- b-X: bottom\n- l-X: left\n\n---\n# Descartes' Other Features\n\nDescartes also has classes to control color (text, border, background,\ntransparency), opacity, borders (sides, width, radius), spacing (padding,\nmargin), centering, display types, floats, clearfix, position types, background\nimage fitting and positioning, and box shadows.\n\nFor many of these, there's a set of units and sizing scales.\n\nThese cannot be documented fully in this slideshow, but hopefully it gives you a\nsense of what's possible. You should read the `.less` files; they are short and\neasy to understand.\n\n---\n# Where Did The Names Come From?\n\nFor some reason, I named my Remark slideshow layouts after iconic chair designs\n(Monobloc, Adirondack, etc).\n\n![Chair parts](chair-parts.png# fr ml-2)\n\nThe apron is the part of the chair upon which everything rests, so I gave the\nunderlying \"supporting\" set of CSS that name. I named Descartes after the famous\ninventor of the Cartesian coordinate system.\n\nCredit: http://www.props.eric-hart.com/\n"
  },
  {
    "path": "exampleSite/content/talks/a-future-talk.md",
    "content": "---\ntitle: \"A Future Talk\"\ndate: 2025-01-01\nevent: \"FutureConf 2025\"\ncredit: \"https://unsplash.com/photos/ZGKqdnfbOWo\"\nimage: \"/talks/tim-van-der-kuip-769737-unsplash.jpg\"\nslides: \"/talks/pdf-slides.pdf\"\ndescription: \"Story's talks pages can highlight upcoming appearances, promoting your talks before you present.\"\n---\nStory's talks pages can highlight upcoming appearances, promoting your talks\nbefore you present. This is a dummy page illustrating this capability.\n\nYou'll have to add `buildFuture: true` to your site's `config.yaml` to enable\nthis setting.  Talks pages that are in the future won't appear on the homepage\nor in your RSS feeds; they'll only appear in the `/talks/` list page of your\nsite.\n\nThis page also illustrates that you can use PDF slides. Story uses PDF.js to embed a slide viewer.\nSo you don't have to build slides in RemarkJS, you can host them yourself, like Slideshare (but better).\n<!--more-->\n"
  },
  {
    "path": "exampleSite/content/talks/adirondack.md",
    "content": "---\ntitle: \"Creating Beautiful Presentations with Story\"\ndate: 2018-05-08T16:00:00-05:00\nevent: \"RemarkConf 2018\"\nlocation: \"Mount Remarkable, 6346+F7 Wilmington, South Australia, Australia\"\nsite: \"https://www.environment.sa.gov.au/parks/find-a-park/Browse_by_region/flinders-ranges-outback/mount-remarkable-national-park\"\nslides: slides/adirondack/\nvideo: \"https://www.youtube.com/watch?v=aVS4W7GZSq0\"\nimage: \"slides/adirondack/leo-serrat-533922-unsplash.jpg\"\ndescription: \"Story's Remark frameworks help you create sophisticated slides with simple, clean Markdown. There are predefined layouts for most presentation needs, beautiful typography and colors, precise image control, and a simple modular way to create custom layouts.\"\nthumbnail: slides/adirondack/thumbnail.jpg\n---\nThis is a \"talk\" page in Story, which is the permanent homepage for a talk\nyou've given at a specific event. It's designed to showcase your appearance by\nbringing together information about the event, along with your slides and extra\ninformation like a video of your talk. In this way you can build a portfolio of\nyour speaking history.\n<!--more-->\n\nTalks are designed to go together with slides. I (the author of Story)\ncreate a talk page for every speaking appearance.\n\nYou can reuse slides between talks, so multiple talks pages link to the same\nslides. You also can feature the cover image from the slides as the talks page's\nfeatured image.\n\nI normally put the speaking proposal / abstract into the body of the talks\npage's content, where this text you're reading right now is stored.\n\n> In case you missed that, this page normally wouldn't have an article.\n> It'd have a talk abstract.\n\nTalks are included in RSS feeds and in the homepage listing of the site, but\nslides aren't. This way people find out about your speaking, but they see no\nduplicate content.\n\nYou can create a screenshot of the first slide (title and all) and store it\nin the slides directory, and use it as the `thumbnail` of the talks page. That's\nwhat I've done on this page; its preview image on the [talks listing\npage](/talks/) is different from the banner at the top of this page.\n\nFront-matter content for a talks page can have quite a few items. Here's a\nrundown, assuming YAML front matter:\n\n```yaml\n---\ntitle: \"Creating Beautiful Presentations with Story\"\ndate: \"Date of the presentation\"\nevent: \"name of the event, such as RemarkConf 2018\"\nlocation: \"<physical address of the event>\"\nsite: \"<url to the homepage of the talk, for example the session page on a conference website>\"\nslides: \"<usually /path/to/slides/in/the/slides/section/, but could be any link>\"\nimage: \"<usually something like /slides/my-slides/first-slide-background.jpg>\"\ndescription: \"A description that will appear in social media shares\"\nthumbnail: \"<usually something like /path/to/slides/thumbnail.jpg/>\"\nvideo: \"a youtube or other video link\"\n---\n```\n\nBecause talks and slides are designed to link so tightly together, their\narchetypes (Hugo template files) work in lockstep, so you can create a pair of\ntalks and slides content items by running the `hugo new` command once, then\nediting it and running again:\n\n```sh\n$ hugo new talks/my-exciting-talk.md\n$ hugo new slides/my-exciting-talk/index.md\n```\n\nIf you look at the content that results from those commands, most of the\ndefaults are basically prepopulated for you, such as links between them.\n\nStory supports \"future talks,\" meaning that you can post a talk with a future\ndate, and it'll appear only in the right places at the right times. Story also\nsupports PDF slides; you can host your own PDFs embedded with PDF.js. See [future\ntalks](/talks/a-future-talk/) for more on these topics.\n\nRead next: [Story's amazing Markdown-based presentation engine](/slides/adirondack/).\n"
  },
  {
    "path": "exampleSite/content/typography.md",
    "content": "---\ntitle: Story's Typography\ndate: \"2018-08-19\"\nurl: \"/typography\"\ndescription: \"Story uses gorgeous typefaces and is optimized for a pleasant reading experience on any device.\"\ncredit: \"https://unsplash.com/photos/h-M3O25tyvI\"\nimage: \"img/unsplash-photos-h-M3O25tyvI.jpg\"\nthumbnail: img/unsplash-photos-h-M3O25tyvI.tn-500x500.jpg\nclasses:\n- feature-hyphenate\n- feature-justify\n- feature-highlight\n- feature-tweetquote\ncategories:\n- Demo\n---\nThis article is a demo of Story's beautiful typography.\n\nStory is designed to showcase long-form content such as essays and technical\nblog posts.  It is built for readability and grace in both screen and print\nmedia at all sizes.  \n<!--more-->\n\nTry opening your print dialog and saving this page as a\nPDF. Now try viewing this page on a cellphone.\n\nStory supports text justification and hyphenation. Click here to toggle <a\nid=\"hyph\">hyphenation</a> and <a id=\"just\">justification</a>. These features can\nbe enabled or disabled with the `feature-[no]hyphenate` and\n`feature-[no]justify` feature flags.\n\n### Moby-Dick; Or, The Whale: Heading Level 3\n\nStory reserves H1 and H2 for its own use, and assumes you'll use H3 in your content.\nTo hide subtitles, use the `feature-nosubtitle` feature.\n\nFloated images occasionally interfere with content, usually headings.\nStory provides [feature flags](/features) to add clears (left, right, and both) to `<h3>` elements.\n\nCall me Ishmael. Some years ago---never mind how long precisely---having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world. It is a way I have of driving off the spleen and regulating the circulation. Whenever I find myself growing grim about the mouth; whenever it is a damp, drizzly November in my soul; whenever I find myself involuntarily pausing before coffin warehouses, and bringing up the rear of every funeral I meet; and especially whenever my hypos get such an upper hand of me, that it requires a strong moral principle to prevent me from deliberately stepping into the street, and methodically knocking people’s hats off---then, I account it high time to get to sea as soon as I can.\n\n#### Fleuron and Dinkus: Heading Level 4\n\nAn `<hr>` tag can be rendered as a fleuron, with the `feature-hrfleuron` flag. It\ncan also be a dinkus if you like; use the `feature-hrdinkus` flag. Both are\nnegatable and implemented in CSS. Here's a demo. You can toggle these features\nwith <a id=\"fleuron\">feature-hrfleuron</a> and <a id=\"dinkus\">feature-hrdinkus</a>.\n\n----\n\nCall me Ishmael. Some years ago---never mind how long precisely---having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world. It is a way I have of driving off the spleen and regulating the circulation.\n\nStory has support for syntax highlighting inside of code blocks. It uses\n[highlight.js](https://highlightjs.org/) for this. This feature is controlled with the `feature-[no]highlight` flag.\n\n```javascript\nfunction $initHighlight(block, cls) {\n  try {\n    if (cls.search(/\\bno\\-highlight\\b/) != -1)\n      return process(block, true, 0x0F) +\n             ` class=\"${cls}\"`;\n  } catch (e) {\n    /* handle exception */\n  }\n  for (var i = 0 / 2; i < classes.length; i++) {\n    if (checkCondition(classes[i]) === undefined)\n      console.log('undefined');\n  }\n}\n\nexport  $initHighlight;\n```\n\nHere is text with _emphasis_ and **boldness**; ~~strikethrough~~.^[A footnote]\n\n> This is a blockquote. I thought I would sail about the unimaginative incomprehensibilities of the watery part of the world. It is a way I have of driving off the spleen and regulating the circulation. (This quote is a demo of justification and hyphenation.)\n>\n>> Blockquotes can nest.\n\nHere is an unordered list:\n\n- Item one\n- Item two\n- Item three is longer. I thought I would sail about a little and see the unimaginative incomprehensibilities of the watery part of the world. It is a way I have of driving off the spleen and regulating the circulation. (This is a justification and hyphenation demo.)\n\nAnd an ordered list:\n\n1. Item one\n1. Item two\n1. Item three is longer. I thought I would sail about a little and see the unimaginative incomprehensibilities of the watery part of the world. It is a way I have of driving off the spleen and regulating the circulation. (This is a justification and hyphenation demo.)\n\n### Quotes That Link To Tweets\n\nIf you don't like embedding tweets, Story has a cleaner way to quote and link to a tweet. Just blockquote the content and begin it with a link containing the author's name and the tweet's permalink, and enable the `feature-tweetquote` flag. Story will transform the quote to resemble a simplistic tweet styling. If the flag isn't enabled, normal blockquote styling applies.\n\n> [Jane Sm​mith](https://twitter.com/username/status/0123456789)\n>\n> Text of quoted tweet goes here.\n\n<script type=\"text/javascript\">\n$( \"#hyph\" ).click(function() {\n   $(\"body\").toggleClass(\"feature-hyphenate\");\n});\n$( \"#just\" ).click(function() {\n   $(\"body\").toggleClass(\"feature-justify\");\n});\n$( \"#fleuron\" ).click(function() {\n   $(\"body\").toggleClass(\"feature-hrfleuron\");\n});\n$( \"#dinkus\" ).click(function() {\n   $(\"body\").toggleClass(\"feature-hrdinkus\");\n});\n</script>\n\nRead next: [Story's MailChimp subscribe forms and RSS feeds](/mailchimp-features).\n"
  },
  {
    "path": "layouts/404.html",
    "content": "{{ define \"title\" }}Error 404 Not Found{{ end }}\n{{ define \"main\" }}\n\n\t<div class=\"pa3 pa4-ns w-100 w-70-ns center\">\n\t\t<section class=\"w-100 mw8\">\n\t\t\t<h1>What is the sound of one page missing?</h1>\n\t\t\t<p>That page doesn't exist. Perhaps you'd like to <a href=\"{{ \"search/\" | absURL }}\">search</a> this site or start at the homepage.</p>\n\t\t</section>\n\t</div>\n\n{{ end }}\n"
  },
  {
    "path": "layouts/_default/archives.html",
    "content": "{{ define \"title\" }}Archives &bullet; {{ .Site.Title }}{{ end }}\n\n{{ define \"main\" }}\n<section class=\"center bg-white br-3 pv1 ph4 nested-copy-line-height lh-copy f4 nested-links mw-100 measure-wide\">\n  {{- range $i, $p := .Site.RegularPages -}}\n  {{- $thisYear := $p.Date.Format \"2006\" }}\n  {{- $lastPage := $i | add -1 | index .Site.RegularPages }}\n  {{- if or (eq $i 0) ( ne ($lastPage.Date.Format \"2006\") $thisYear ) }}\n    <h3 class=\"archive-year\">{{ $thisYear }}</h3>\n  {{- end }}\n  \n  <div>\n    {{ $p.Date.Format \"01-02\" }}\n    <a href=\"{{ $p.Permalink }}\" class=\"no-underline dim link\">\n      {{- cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) -}}\n    </a>\n  </div>\n  {{- end -}}\n</section>\n{{ end }}\n\n{{ define \"pagination\" }}\n<br>\n{{ end }}"
  },
  {
    "path": "layouts/_default/baseof.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n\t\t<title>{{ block \"title\" . }}{{ .Site.Title }}{{ end }}</title>\n\t\t<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"{{ \"index.xml\" | absURL }}\">\n\t\t<link rel=\"canonical\" href=\"{{ .Permalink }}\">\n\t\t<!-- the Story logo is a square with rounded corners interlocked with a section symbol in Bodoni 72 Book font -->\n\t\t<link rel=\"shortcut icon\" type=\"image/png\" href=\"{{ \"apple-touch-icon-precomposed.png\" | absURL }}\">\n\t\t{{ with .Description }}<meta name=\"description\" content=\"{{. | markdownify }}\">{{ end }}\n\t\t{{ with .Keywords }}<meta name=\"keywords\" content=\"{{.}}\">{{ end }}\n\t\t{{ .Hugo.Generator }}\n\n\t\t{{ block \"social\" . }}\n\t\t{{ end }}\n\n\t\t{{ block \"layout\" . }}\n\t\t<link rel=\"stylesheet\" href=\"{{ \"css/tachyons.min.css\" | absURL }}\" />\n\t\t{{- if .Site.Params.less -}}\n\t\t<link rel=\"stylesheet/less\" type=\"text/css\" href=\"{{ \"css/story.less\" | absURL }}\" />\n\t\t<link rel=\"stylesheet/less\" type=\"text/css\" href=\"{{ \"css/descartes.less\" | absURL }}\" />\n\t\t<script type=\"text/javascript\" src=\"{{ \"js/less.min.js\" | absURL }}\"></script>\n\t\t{{ else }}\n\t\t<link rel=\"stylesheet\" href=\"{{ \"css/story.css\" | absURL }}\" />\n\t\t<link rel=\"stylesheet\" href=\"{{ \"css/descartes.css\" | absURL }}\" />\n\t\t{{ end }}\n\t\t<link rel=\"stylesheet\" href=\"https://use.fontawesome.com/releases/v5.3.1/css/all.css\" integrity=\"sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU\" crossorigin=\"anonymous\">\n\t\t<link href=\"https://fonts.googleapis.com/css?family=Quattrocento+Sans:400,400i,700,700i|Quattrocento:400,700|Spectral:400,400i,700,700i&amp;subset=latin-ext\" rel=\"stylesheet\">\n\t\t{{ end }}\n\n\t\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js\"></script>\n\t\t{{ if or (in .Site.Params.classes \"feature-highlight\") (in .Params.classes \"feature-highlight\") -}}\n\t\t\t{{- if not (or (in .Site.Params.classes \"feature-nohighlight\") (in .Params.classes \"feature-nohighlight\") ) -}}\n\t\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js\"></script>\n\t\t\t{{- end -}}\n\t\t{{- end -}}\n\t\t{{ if or (in .Site.Params.classes \"feature-math\") (in .Params.classes \"feature-math\") -}}\n\t\t\t{{- if not (or (in .Site.Params.classes \"feature-nomath\") (in .Params.classes \"feature-nomath\") ) -}}\n\t\t<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.9.0/dist/katex.min.css\" integrity=\"sha384-TEMocfGvRuD1rIAacqrknm5BQZ7W7uWitoih+jMNFXQIbNl16bO8OZmylH/Vi/Ei\" crossorigin=\"anonymous\">\n\t\t<script src=\"https://cdn.jsdelivr.net/npm/katex@0.9.0/dist/katex.min.js\" integrity=\"sha384-jmxIlussZWB7qCuB+PgKG1uLjjxbVVIayPJwi6cG6Zb4YKq0JIw+OMnkkEC7kYCq\" crossorigin=\"anonymous\"></script>\n\t\t<script src=\"{{ \"js/auto-render.min.js\" | absURL }}\"></script> <!-- for KaTeX -->\n\t\t\t{{- end -}}\n\t\t{{- end -}}\n\t\t{{ if or (in .Site.Params.classes \"feature-music\") (in .Params.classes \"feature-music\") -}}\n\t\t\t{{- if not (or (in .Site.Params.classes \"feature-nomusic\") (in .Params.classes \"feature-nomusic\") ) -}}\n\t\t<script src=\"{{ \"js/abcjs_basic_5.6.3-min.js\" | absURL }}\"></script>\n\t\t\t{{- end -}}\n\t\t{{- end -}}\n\t\t{{ with .Site.Params.head }}{{ range . }}\n\t\t{{ . | safeHTML }}{{ end }}{{ end }}\n\t\t<script src=\"{{ \"js/story.js\" | absURL }}\"></script>\n\n\t</head>\n\t<body class=\"ma0 bg-white {{ with .Section }}section-{{ . }}{{ end }} page-kind-{{ .Kind }} is-page-{{ .IsPage }} {{ with .Site.Params.classes }}{{ range . }} {{ . }}{{ end }}{{ end }}{{ with .Params.classes }}{{ range . }} {{ . }}{{ end }}{{ end }}\">\n\t\t{{ block \"header\" . }}\n\t\t<!--\n\t\tYou can set the title and header image in the \"title/image\" parameters of\n\t\tthe _index.md for the section.  For a post, you can set the header image\n\t\twith the \"image\" parameter in front matter. You can disable these\n\t\tbehaviors with the feature-nohdr class in the site config file or front\n\t\tmatter of an individual post.\n\t\t-->\n\t\t{{- $hdr := cond (or (in .Site.Params.classes \"feature-nohdr\") (in .Params.classes \"feature-nohdr\")) false true -}}\n\t\t<header class=\"cover bg-top\" {{ if $hdr }}style=\"background-image: url('{{ absURL (default \"img/default-header-img.jpg\" .Params.image) }}'); background-position: center;\"{{ end }}>\n\t\t\t<div class=\"{{ cond $hdr \"bg-black-30 bb bt\" \"\" }}\">\n\n\t\t\t\t<nav class=\"hide-print sans-serif {{ cond $hdr \"\" \"bg-black\" }} border-box pa3 ph5-l\">\n\t\t\t\t\t<a href=\"{{ .Site.BaseURL }}\" title=\"Home\">\n\t\t\t\t\t\t<img src=\"{{ \"img/logo.jpg\" | absURL }}\" class=\"w2 h2 br-100\" alt=\"{{ .Site.Title }}\" />\n\t\t\t\t\t</a>\n\t\t\t\t\t<div class=\"fr h2 pv2 tr\">\n\t\t\t\t\t\t{{- range .Site.Menus.main }}\n\t\t\t\t\t\t<a class=\"link f5 ml2 dim near-white\" href=\"{{ .URL }}\">{{ .Name }}</a>\n\t\t\t\t\t\t{{- end }}\n\t\t\t\t\t\t{{- range .Site.Menus.social }}\n\t\t\t\t\t\t<a class=\"link f5 ml2 dim near-white\" href=\"{{ .URL }}\"><i class=\"{{ .Title }}\"></i></a>\n\t\t\t\t\t\t{{- end }}\n\t\t\t\t\t\t<a class=\"link f5 ml2 dim near-white fas fa-rss-square\" href=\"{{ \"index.xml\" | absURL }}\" title=\"RSS Feed\"></a>\n\t\t\t\t\t\t<a class=\"link f5 ml2 dim near-white fas fa-search\" href=\"{{ \"search/\" | absURL }}\" role=\"search\" title=\"Search\"></a>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>\n\n\t\t\t\t<div id=\"hdr\" class=\"tc-l {{ cond $hdr \"pv4-ns pv5-l\" \"\" }} pv2 ph3 ph4-ns\">\n\t\t\t\t\t<h1 class=\"{{ cond $hdr \"near-white mt1-ns\" \"\" }} f2 fw3 mb0 mt0 lh-title\">{{ cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) }}</h1>\n\t\t\t\t\t<h2 class=\"{{ cond $hdr \"near-white mt3-l mb4-l\" \"\" }} fw1 f6 f3-l measure-wide-l center lh-copy mt2 mb3\">\n\t\t\t\t\t\t<!-- You can put a subtitle here in _index.md parameters, or it'll get\n\t\t\t\t\t\tfilled in with date and categories if it's a post -->\n\t\t\t\t\t\t{{ if .IsPage }}\n\t\t\t\t\t\t\t{{ if eq .Section \"talks\" }}\n\t\t\t\t\t\t\t\tPresented\n\t\t\t\t\t\t\t\t<time datetime=\"{{ .Date.Format \"2006-01-02T15:04:05Z07:00\" }}\">\n\t\t\t\t\t\t\t\t\t{{- .Date.Format \"January 2, 2006\" -}}\n\t\t\t\t\t\t\t\t</time>\n\t\t\t\t\t\t\t\tat <a class=\"no-underline category {{ cond $hdr \"near-white dim\" \"black hover-gray\" }}\" href=\"{{ .Params.site }}\">{{ .Params.event }}</a>\n\t\t\t\t\t\t\t{{ else }}\n\t\t\t\t\t\t\t\tPublished\n\t\t\t\t\t\t\t\t<time datetime=\"{{ .Date.Format \"2006-01-02T15:04:05Z07:00\" }}\">\n\t\t\t\t\t\t\t\t\t{{- .Date.Format \"Jan 2, 2006\" -}}\n\t\t\t\t\t\t\t\t</time>\n\t\t\t\t\t\t\t\t<span class=\"display-print\">by {{ .Params.author | default .Site.Params.author }}</span>\n\t\t\t\t\t\t\t\t{{ range $idx, $cat := .Params.categories }}{{ if gt $idx 0 }}, {{ end }}{{ if eq $idx 0 }} in {{ end }}<a href=\"{{ \"categories\" | absURL }}/{{ . | urlize }}\" class=\"no-underline category {{ cond $hdr \"near-white dim\" \"black hover-gray\" }}\">{{ . | title }}</a>{{ end }}\n\t\t\t\t\t\t\t\t<span class=\"display-print\">at {{ .Permalink }}</span>\n\t\t\t\t\t\t\t{{ end }}\n\t\t\t\t\t\t{{ else }}\n\t\t\t\t\t\t\t{{ with .Params.subtitle }}{{ . | markdownify }}{{ end }}\n\t\t\t\t\t\t{{ end }}\n\t\t\t\t\t</h2>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- if there's a \"credits\" parameter in front matter there'll be a camera icon here -->\n\t\t\t\t{{ if $hdr }}\n\t\t\t\t{{ with .Params.credit }}\n\t\t\t\t<div class=\"w-100 cf hide-print\">\n\t\t\t\t\t<a class=\"fr f6 ma0 pa2 link white-50 dim fas fa-camera\" href=\"{{ . }}\" title=\"Photo Credit\"></a>\n\t\t\t\t</div>\n\t\t\t\t{{ end }}\n\t\t\t\t{{ end }}\n\n\t\t\t</div>\n\t\t</header>\n\t\t{{ end }}\n\t\t<main role=\"main\">\n\t\t{{ block \"main\" . }}\n\t\t{{ end }}\n\t\t</main>\n\t\t{{ block \"about\" . }}\n\t\t\t{{ partial \"about.html\" . }}\n\t\t{{ end }}\n\t\t{{ block \"pagination\" . }}{{ end }}\n\t\t{{ block \"footer\" . }}\n\t\t<footer class=\"hide-print sans-serif f6 fw1 bg-black near-white bottom-0 w-100 pa3\" role=\"contentinfo\">\n\t\t\t<p class=\"w-50 fr tr\">\n\t\t\t<a class=\"no-underline near-white\" href=\"https://github.com/xaprb/story\"><img class=\"dib\" title=\"Made with Hugo and Story\" alt=\"Story logo\" src=\"{{ \"img/story-logo-white.svg\" | absURL }}\" style=\"width: 1.5rem; height: 1.5rem\" /></a>\n\t\t\t</p>\n\t\t\t<p class=\"w-50 near-white\">\n\t\t\t\t&copy; {{ now.Format \"2006\" }} {{ with .Site.Params.author }}{{ . }}{{ end }}\n\t\t\t</p>\n\t\t</footer>\n\t\t{{ end }}\n\t{{ template \"_internal/google_analytics_async.html\" . }}\n\t{{ with .Site.Params.foot }}{{ range . }}\n\t{{ . | safeHTML }}{{ end }}{{ end }}\n\t</body>\n</html>\n"
  },
  {
    "path": "layouts/_default/index.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n\t<channel>\n\t\t<title>{{ .Site.Title }} </title>\n\t\t<link>{{ .Permalink }}</link>\n\t\t<generator>Hugo -- gohugo.io</generator>\n\t\t<language>en-us</language>\n\t\t<author>{{ .Site.Params.Author }}</author>\n\t\t<rights>Copyright (c) {{ .Site.LastChange.Year }}</rights>\n\t\t<updated>{{ .Date }}</updated>\n\t\t{{ range where (where (where .Data.Pages \"Section\" \"ne\" \"slides\") \".Params.skip\" \"ne\" \"true\") \".Date.Unix\" \"<\" now.Unix }}\n\t\t<item>\n\t\t\t<title>{{ cond (eq .Site.Params.titlecase true) (.Title | title) (.Title) }}</title>\n\t\t\t<link>{{ .Permalink }}</link>\n\t\t\t<pubDate>{{ .Date.Format \"Mon, 02 Jan 2006 15:04:05 MST\" }}</pubDate>\n\t\t\t<author>{{ .Site.Params.Author }}</author>\n\t\t\t<guid>{{ .Permalink }}</guid>\n\t\t\t<media:content xmlns:media=\"http://search.yahoo.com/mrss/\" url=\"{{ (absURL (default (default \"img/default-header-img.tn-500x500.jpg\" .Params.image) .Params.thumbnail)) }}\" medium=\"image\" type=\"image/jpg\" width=\"100\" height=\"100\" />\n\t\t\t<description>{{ .Content | html }}</description>\n\t\t</item>\n\t\t{{ end }}\n\t</channel>\n</rss>\n"
  },
  {
    "path": "layouts/_default/list.html",
    "content": "{{ define \"title\" }}{{ .Section | title }} &bullet; {{ .Site.Title }}{{ end }}\n{{ define \"main\" }}\n<div class=\"pa3 pa4-ns w-100 w-70-ns center\">\n  <section class=\"w-100 mw8\">\n  <!-- list all talks; list non-future slides; else list things that are not future and not slides -->\n  {{ $pages := where .Paginator.Pages \".Params.skip\" \"ne\" \"true\" }}\n  {{ if eq .Section \"talks\" }}\n    {{ range $pages }}\n      {{ partial \"li.html\" . }}\n    {{ end }}\n  {{ else if eq .Section \"slides\" }}\n    {{ range where $pages \".Date.Unix\" \"<\" now.Unix }}\n      {{ partial \"li.html\" . }}\n    {{ end }}\n  {{ else }}\n    {{ range where (where $pages \".Date.Unix\" \"<\" now.Unix) \"Section\" \"ne\" \"slides\" }}\n      {{ partial \"li.html\" . }}\n    {{ end }}\n  {{ end }}\n  </section>\n</div>\n{{ end }}\n\n{{ define \"pagination\" }}\n<footer class=\"w-100 sans-serif\" role=\"contentinfo\">\n\t<nav class=\"w-third-l pb3 f6 center db\" role=\"navigation\">\n\t\t{{- template \"_internal/pagination.html\" . -}}\n\t</nav>\n</footer>\n{{ end }}\n"
  },
  {
    "path": "layouts/_default/mailchimp.html",
    "content": "{{ define \"title\" }}{{ .Section | title }} &bullet; {{ .Site.Title }}{{ end }}\n{{ define \"main\" }}\n<div class=\"pa3 pa4-ns w-100 w-70-ns center\">\n  <section class=\"w-100 mw8\">\n  {{- $hdr := cond (or (in .Site.Params.classes \"feature-nohdr\") (in .Params.classes \"feature-nohdr\")) false true -}}\n  {{ range first 20 (where (where (where .Site.RegularPages \"Section\" \"ne\" \"slides\") \".Params.skip\" \"ne\" \"true\") \".Date.Unix\" \"<\" now.Unix) }}\n  <div class=\"relative w-100\">\n      <article>\n          <div class=\"db pv4 {{ cond $hdr \"ph3\" \"\" }} ph0-l no-underline dark-gray\">\n              <div class=\"flex flex-column flex-row-ns\">\n                  {{ if $hdr }}\n                  <div class=\"mb4 mb0-ns w-100 h4 h4-m w4-m h5-ns w5-ns br3 cover {{ if lt .Date.Unix now.Unix }}hide-child{{ end }}\" style=\"background-image: url('{{ absURL (default \"img/default-header-img.tn-500x500.jpg\" (default .Params.image .Params.thumbnail)) }}'); background-position: center;\">\n                      <a href=\"{{ .Permalink }}\" class=\"sans-serif db child w-100 h-100 f7 lh-copy white no-underline br3 ph3 pt4 pt5-l ttu tc bg-black-60\">\n                          <i class=\"mt3 mt5-l child far {{ cond (gt .Date.Unix now.Unix) \"fa-hourglass\" \"fa-calendar-alt\" }}\"></i> {{ .Date.Format \"Jan 2, 2006\" }}\n                      </a>\n                  </div>\n                  {{ end }}\n                  <div class=\"w-100 w6-ns pl3-ns\">\n                      <h1 class=\"f3 fw1 mt0 lh-title\"><a href=\"{{ .Permalink }}\" class=\"color-inherit dim link\">\n                      {{- cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) -}}\n                      </a></h1>\n                      <div class=\"f6 f5-l lh-copy nested-copy-line-height nested-links\">\n                              {{ with .Params.tldr }}{{ . | markdownify }}{{ else }}{{ (printf \"%s<br>%s\" (.Params.description | markdownify) .Summary) }}{{ end }}\n                      </div>\n                  </div>\n              </div>\n          </div>\n      </article>\n  </div>\n  \n  {{ end }}\n  </section>\n</div>\n{{ end }}\n\n{{ define \"pagination\" }}\n<br>\n{{ end }}"
  },
  {
    "path": "layouts/_default/mailchimp.xml",
    "content": "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n\t<channel>\n\t\t<title>{{ .Site.Title }} </title>\n\t\t<link>{{ .Permalink }}</link>\n\t\t<generator>Hugo -- gohugo.io</generator>\n\t\t<language>en-us</language>\n\t\t<author>{{ .Site.Params.Author }}</author>\n\t\t<rights>Copyright (c) {{ .Site.LastChange.Year }}</rights>\n\t\t<updated>{{ .Date }}</updated>\n\t\t{{ range first 20 (where (where (where .Site.RegularPages \"Section\" \"ne\" \"slides\") \".Params.skip\" \"ne\" \"true\") \".Date.Unix\" \"<\" now.Unix) }}\n\t\t<item>\n\t\t\t<title>{{ cond (eq .Site.Params.titlecase true) (.Title | title) (.Title) }}</title>\n\t\t\t<link>{{ .Permalink }}</link>\n\t\t\t<pubDate>{{ .Date.Format \"Mon, 02 Jan 2006 15:04:05 MST\" }}</pubDate>\n\t\t\t<author>{{ .Site.Params.Author }}</author>\n\t\t\t<guid>{{ .Permalink }}</guid>\n\t\t\t<media:content xmlns:media=\"http://search.yahoo.com/mrss/\" url=\"{{ (absURL (default (default \"img/default-header-img.tn-500x500.jpg\" .Params.image) .Params.thumbnail)) }}\" medium=\"image\" type=\"image/jpg\" width=\"100\" height=\"100\" />\n\t\t\t<description>{{ with .Params.tldr }}{{ . | markdownify | html }}{{ else }}{{ (printf \"%s<br>%s\" .Params.description .Summary) | markdownify | html }}{{ end }}</description>\n\t\t</item>\n\t\t{{ end }}\n\t</channel>\n</rss>\n"
  },
  {
    "path": "layouts/_default/search.html",
    "content": "{{ define \"title\" }}Search{{ end }}\n{{ define \"main\" }}\n\n<article class=\"center ph3 nested-copy-line-height lh-copy f4 nested-links mw-100 measure-wide pt4 min-vh-100\">\n   {{ .Content }}\n   <input id=\"search\" type=\"text\" placeholder=\"Search...\" class=\"pa2 br3 ba bw1 b--gray lh-title f3 sans-serif w-100\">\n   <p>Type a search above to see results below:</p>\n   <ul id=\"results\" class=\"\"></ul>\n</article>\n\n\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/lunr.js/2.2.1/lunr.min.js\"></script>\n    <script type=\"text/javascript\">\n    var lunrIndex, $results, pagesIndex;\n    function getQueryVariable(variable) {\n        var query = window.location.search.substring(1);\n        var vars = query.split('&');\n\n        for (var i = 0; i < vars.length; i++) {\n            var pair = vars[i].split('=');\n\n            if (pair[0] === variable) {\n                return decodeURIComponent(pair[1].replace(/\\+/g, '%20'));\n            }\n        }\n    }\n\n    var searchTerm = getQueryVariable('query');\n\n    // Initialize lunrjs using our generated index file\n    function initLunr() {\n        // First retrieve the index file\n\t\t\t $.getJSON(\"{{ \"index.json\" | absURL }}\")\n            .done(function(index) {\n                pagesIndex = index;\n                // console.log(\"index:\", pagesIndex);\n                lunrIndex = lunr(function() {\n                    this.field(\"title\", { boost: 10 });\n                    this.field(\"categories\", { boost: 5 });\n                    this.field(\"keywords\");\n                    this.field(\"content\");\n                    this.field(\"uri\");\n                    this.ref(\"uri\");\n\n                    pagesIndex.forEach(function (page) {\n                        this.add(page)\n                    }, this)\n                });\n            })\n            .fail(function(jqxhr, textStatus, error) {\n                var err = textStatus + \", \" + error;\n                console.error(\"Error fetching Hugo search index JSON file:\", err);\n            });\n    }\n\n    // Nothing crazy here, just hook up a listener on the input field\n    function initUI() {\n        $results = $(\"#results\");\n        $(\"#search\").keyup(function() {\n            $results.empty();\n\n            // Only trigger a search when 2 chars. at least have been provided\n            var query = $(this).val();\n            if (query.length < 2) {\n                return;\n            }\n\n            var results = search(query);\n\n            renderResults(results);\n        });\n    }\n\n    /**\n     * Trigger a search in lunr and transform the result\n     *\n     * @param  {String} query\n     * @return {Array}  results\n     */\n    function search(query) {\n        return lunrIndex.search(query).map(function(result) {\n                return pagesIndex.filter(function(page) {\n                    return page.uri === result.ref;\n                })[0];\n            });\n    }\n\n    /**\n     * Display the 10 first results\n     *\n     * @param  {Array} results to display\n     */\n    function renderResults(results) {\n        if (!results.length) {\n            return;\n        }\n\n        // Only show the first results\n        results.slice(0, 20).forEach(function(result) {\n            var $result = $(\"<li>\");\n                $result.append($('<a>', {\n                class: 'no-underline dim link',\n                href: result.uri,\n                text: result.title\n            }));\n            $results.append($result);\n        });\n    }\n\n    // Let's get started\n    $(document).ready(function() {\n       initLunr();\n       initUI();\n    });\n    </script>\n{{ end }}\n"
  },
  {
    "path": "layouts/_default/single.html",
    "content": "{{ define \"title\" }}{{ cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) }}{{ end }}\n\n{{ define \"main\" }}\n<article class=\"center bg-white br-3 pv1 ph4 lh-copy f5 nested-links mw7\">\n\t{{ .Content }}\n</article>\n{{ end }}\n\n{{ define \"social\" }}\n\t\t<meta property=\"og:title\" content=\"{{ cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) }}\" />\n\t\t<meta property=\"og:type\" content=\"article\" />\n\t\t<meta property=\"og:image\" content=\"{{ default \"img/default-header-img.jpg\" .Params.image | absURL }}\" />\n\t\t<meta property=\"og:description\" content=\"{{ .Description | markdownify }}\" />\n\t\t<meta property=\"og:url\" content=\"{{ .Permalink }}\" />\n\t\t<meta property=\"og:site_name\" content=\"{{ cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) }}\" />\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" />\n\t\t<meta name=\"twitter:site\" content=\"@{{ .Site.Params.twitter }}\" />\n{{ end }}\n"
  },
  {
    "path": "layouts/index.html",
    "content": "{{ define \"main\" }}\n\t<div class=\"pa3 pa4-ns w-100 w-70-ns center\">\n\t\t<section class=\"w-100 mw8\">\n\t\t{{ $pages := where .Paginator.Pages \".Params.skip\" \"ne\" \"true\" }}\n\t\t{{ range where (where $pages \".Date.Unix\" \"<\" now.Unix) \"Section\" \"ne\" \"slides\" }}\n\t\t\t{{ partial \"li.html\" . }}\n\t\t{{ end }}\n\t\t</section>\n\t</div>\n{{ end }}\n\n{{ define \"pagination\" }}\n<footer class=\"w-100 sans-serif\" role=\"contentinfo\">\n\t<nav class=\"w-third-l pb3 f6 center db\" role=\"navigation\">\n\t\t{{- template \"_internal/pagination.html\" . -}}\n\t</nav>\n</footer>\n{{ end }}\n"
  },
  {
    "path": "layouts/index.json",
    "content": "{{- $.Scratch.Add \"index\" slice -}}\n{{- range where .Site.Pages \".Params.skip\" \"ne\" \"true\" -}}\n{{- $.Scratch.Add \"index\" (dict \"uri\" .Permalink \"title\" (cond (eq .Site.Params.titlecase true) (.Title | title | markdownify | htmlUnescape) (.Title | markdownify | htmlUnescape)) \"categories\" .Params.categories \"keywords\" .Params.keywords \"content\"  (.Summary | plainify | htmlUnescape )) -}}\n{{- end -}}\n{{- $.Scratch.Get \"index\" | jsonify -}}\n"
  },
  {
    "path": "layouts/partials/about.html",
    "content": "\t<div class=\"hide-print sans-serif f6 f5-l mt5 ph3 pb6 center nested-copy-line-height lh-copy nested-links mw-100 measure-wide\">\n\t\t<div class=\"about-the-author\">\n\t\t{{ if .IsPage }}\n\t\t\t{{ $author := (printf \"/authors/%s\" (default .Site.Params.author (default \"Unknown\" .Params.author) | urlize)) }}\n\t\t\t{{ with .Site.GetPage $author }}\n\t\t\t\t{{ if gt .Content \"\" }}\n\t\t\t\t\t{{ .Content }}\n\t\t\t\t{{ end }}\n\t\t\t{{ else }}\n\t\t\t\t{{ with .Site.GetPage \"/\" }}\n\t\t\t\t\t{{ .Content }}\n\t\t\t\t{{ end }}\n\t\t\t{{ end }}\n\t\t{{ else if gt .Content \"\" }}\n\t\t\t{{ .Content }}\n\t\t{{ else }}\n\t\t\t{{ with .Site.GetPage \"/\" }}\n\t\t\t\t{{ .Content }}\n\t\t\t{{ end }}\n\t\t{{ end }}\n\t\t</div>\n\t\t{{ with .Site.Params.mailchimp }}\n\t\t<div class=\"subscribe-form cb w-100 pt3\">\n\t\t\t<form action=\"{{ . }}\" method=\"post\" id=\"mc-embedded-subscribe-form\" name=\"mc-embedded-subscribe-form\" target=\"_blank\" novalidate>\n\t\t\t\t<input class=\"w-50 dib ph3 pv2 ba b--silver br2 sans-serif f6 f5-l mr2\" type=\"email\" placeholder=\"Subscribe for email updates!\" name=\"EMAIL\" id=\"mce-EMAIL\">\n\t\t\t\t<input class=\"w-40 dib ph3 pv2 ba b--silver br2 sans-serif f6 f5-l white bg-mid-gray\" type=\"submit\" value=\"Subscribe\" name=\"subscribe\" id=\"mc-embedded-subscribe\">\n\t\t\t</form>\n\t\t</div>\n\t\t{{ end }}\n\t</div>\n"
  },
  {
    "path": "layouts/partials/li.html",
    "content": "{{- $hdr := cond (or (in .Site.Params.classes \"feature-nohdr\") (in .Params.classes \"feature-nohdr\")) false true -}}\n<div class=\"relative w-100\">\n\t<article>\n\t\t<div class=\"db pv4 {{ cond $hdr \"ph3\" \"\" }} ph0-l no-underline dark-gray\">\n\t\t\t<div class=\"flex flex-column flex-row-ns\">\n\t\t\t\t{{ if $hdr }}\n\t\t\t\t<div class=\"mb4 mb0-ns w-100 h4 h4-m w4-m h5-ns w5-ns br3 cover {{ if lt .Date.Unix now.Unix }}hide-child{{ end }}\" style=\"background-image: url('{{ absURL (default \"img/default-header-img.tn-500x500.jpg\" (default .Params.image .Params.thumbnail)) }}'); background-position: center;\">\n\t\t\t\t\t<a href=\"{{ .Permalink }}\" class=\"sans-serif db child w-100 h-100 f7 lh-copy white no-underline br3 ph3 pt4 pt5-l ttu tc bg-black-60\">\n\t\t\t\t\t\t<i class=\"mt3 mt5-l child far {{ cond (gt .Date.Unix now.Unix) \"fa-hourglass\" \"fa-calendar-alt\" }}\"></i> {{ .Date.Format \"Jan 2, 2006\" }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t\t{{ end }}\n\t\t\t\t<div class=\"w-100 w6-ns pl3-ns\">\n\t\t\t\t\t<h1 class=\"f3 fw1 mt0 lh-title\"><a href=\"{{ .Permalink }}\" class=\"color-inherit dim link\">\n\t\t\t\t\t{{- if eq .Section \"talks\" }}{{ .Params.event }}: {{ end -}}\n\t\t\t\t\t{{- cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) -}}\n\t\t\t\t\t</a></h1>\n\t\t\t\t\t<div class=\"f6 f5-l lh-copy nested-copy-line-height nested-links\">\n\t\t\t\t\t\t{{ if eq .Section \"slides\" }}\n\t\t\t\t\t\t\t{{ .Description | markdownify }}\n\t\t\t\t\t\t\t<p class=\"pa0 sans-serif f7\"><a class=\"ba br3 pa2 link\" href=\"{{ .Permalink }}\">View Slideshow <i class=\"fas fa-chevron-circle-right\"></i></a></p>\n\t\t\t\t\t\t{{ else if eq .Section \"talks\" }}\n\t\t\t\t\t\t\t{{ .Summary }}\n\t\t\t\t\t\t\t<p class=\"pa0 sans-serif f7\"><a class=\"ba br3 pa2 link\" href=\"{{ .Permalink }}\">Talk Details <i class=\"fas fa-chevron-circle-right\"></i></a></p>\n\t\t\t\t\t\t{{ else }}\n\t\t\t\t\t\t\t{{ .Summary }}\n\t\t\t\t\t\t\t<p class=\"pa0 sans-serif f7\"><a class=\"ba br3 pa2 link\" href=\"{{ .Permalink }}\">Continue Reading <i class=\"fas fa-chevron-circle-right\"></i></a></p>\n\t\t\t\t\t\t{{ end }}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</article>\n</div>\n"
  },
  {
    "path": "layouts/shortcodes/math.html",
    "content": "{{ if or (hasPrefix .Inner \"\\n\") (hasPrefix .Inner \"<p>\") }}\n<div class=\"math\">\\[\n    {{- $inner := replace .Inner \"\\\\<br />\\n\" \"\\\\\\\\\" -}}\n    {{- $inner := replace $inner \"<p>\" \"<p>\\\\[\" -}}\n    {{- $inner := replace $inner \"</p>\" \"\\\\]<p>\" -}}\n    {{ trim $inner \"\\n\" }}\n\\]</div>\n{{- else -}}<span class=\"math\">\\( {{ trim .Inner \"\\n\" }} \\)</span>{{- end -}}\n"
  },
  {
    "path": "layouts/shortcodes/music.html",
    "content": "<pre><code class=\"language-abc\">{{ .Get 0 | readFile}}</code></pre>"
  },
  {
    "path": "layouts/slides/single.html",
    "content": "{{ define \"title\" }}{{ cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) }}{{ end }}\n\n{{ define \"layout\" }}\n\t\t{{- if .Site.Params.less -}}\n\t\t\t{{- with .Params.themes -}}\n\t\t\t\t{{- range . }}\n\t\t\t\t\t<link rel=\"stylesheet/less\" type=\"text/css\" href=\"{{ \"css/\" | absURL }}{{ . }}.less\"></style>\n\t\t\t\t{{- end -}}\n\t\t\t\t<script type=\"text/javascript\" src=\"{{ \"js/less.min.js\" | absURL }}\"></script>\n\t\t\t{{- end }}\n\t\t{{ else }}\n\t\t\t{{- with .Params.themes -}}\n\t\t\t\t{{- range . }}\n\t\t\t\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"{{ \"css/\" | absURL }}{{ . }}.css\"></style>\n\t\t\t\t{{- end -}}\n\t\t\t{{- else }}\n\t\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"{{ \"css/\" | absURL }}{{ .Params.theme }}.css\"></style>\n\t\t\t{{- end }}\n\t\t{{- end -}}\n\t\t<style type=\"text/css\">\n\t\t/* Fixes a RemarkJS print-to-PDF bug; assumes 16:9 or 4:3 ratio */\n\t\t@page {\n\t\t\t\t  size: {{ if eq \"16:9\" .Params.ratio }} 1216px 684px; {{ else }} 912px 684px; {{ end }}\n\t\t\t\t  margin: 0;\n\t\t}\n\t\t</style>\n\t\t<link rel=\"stylesheet\" href=\"https://use.fontawesome.com/releases/v5.3.1/css/all.css\" integrity=\"sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU\" crossorigin=\"anonymous\">\n\t\t<link href=\"https://fonts.googleapis.com/css?family=Quattrocento+Sans:400,400i,700,700i|Quattrocento:400,700|Spectral:400,400i,700,700i&amp;subset=latin-ext\" rel=\"stylesheet\">\n{{ end }}\n\n{{ define \"header\" }}\n  <!-- simply override the \"header\" from baseof.html to make it empty -->\n{{ end }}\n\n{{ define \"main\" }}\n    <textarea id=\"source\">\n\t\t\t{{- .RawContent -}}\n    </textarea>\n    <script type=\"text/javascript\" src=\"{{ \"js/qrcode.js\" | absURL }}\"></script>\n    <script src=\"{{ \"js/remark.js\" | absURL }}\"></script>\n    <script>\n      var slideshow = remark.create({\n         {{ with .Params.ratio }} ratio: \"{{ . }}\", {{ end }}\n         navigation: {\n            scroll: false\n         },\n         countIncrementalSlides: false,\n         slideNumberFormat: '%current%',\n\t\t\thighlightLanguage: \"xaprb\",\n\t\t\tplaceholder: \"dummy value to end the list without a comma\"\n      });\n\n\t\t// Shrink headers until they fit. (They have to be momentarily made\n\t\t// visible first.)\n\t\t$(\".remark-slide-content.fit-h1 h1\").each(function(i, e) {\n\t\t\tvar $e = $(e);\n\t\t\tvar $p = $e.closest('div.remark-slide-container');\n\t\t\tvar needsToggle = !$p.hasClass('remark-visible');\n\t\t\tif ( needsToggle ) $p.toggleClass('remark-visible');\n\t\t\twhile (e.scrollHeight > e.clientHeight + 1 && $e.css('font-size') != '1px') {\n\t\t\t\t$e.css('font-size', (parseInt($e.css('font-size')) - 1) + \"px\");\n\t\t\t\t// console.log($e.css('font-size') + \"sh:\" + e.scrollHeight + \"ch:\" +\n\t\t\t\t// \te.clientHeight);\n\t\t\t}\n\t\t\tif ( needsToggle ) $p.toggleClass('remark-visible');\n\t\t});\n\n\t\t$( function() {\n\t\t\tif ( $( \"body.feature-qrcode:not(.feature-noqrcode)\" ).length ) {\n\t\t\t\tif ( $( \".qrcode\" ).length ) {\n\t\t\t\t\tnew QRCode($(\".qrcode\")[0], {\n\t\t\t\t\t\t\"useSVG\": true,\n\t\t\t\t\t\t\"text\": window.location.href.replace(/#\\d*$/, \"\")\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n    </script>\n{{ end }}\n\n{{ define \"social\" }}\n\t\t<meta property=\"og:title\" content=\"{{ cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) }}\" />\n\t\t<meta property=\"og:type\" content=\"article\" />\n\t\t<meta property=\"og:image\" content=\"{{ default .Params.image .Params.thumbnail | absURL }}\" />\n\t\t<meta property=\"og:description\" content=\"{{ .Description | markdownify }}\" />\n\t\t<meta property=\"og:url\" content=\"{{ .Permalink }}\" />\n\t\t<meta property=\"og:site_name\" content=\"{{ cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) }}\" />\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" />\n\t\t<meta name=\"twitter:site\" content=\"@{{ .Site.Params.twitter }}\" />\n{{ end }}\n\n{{ define \"about\" }}\n  <!-- simply override the \"header\" from baseof.html to make it empty -->\n{{ end }}\n{{ define \"footer\" }}\n  <!-- simply override the \"header\" from baseof.html to make it empty -->\n{{ end }}\n"
  },
  {
    "path": "layouts/talks/single.html",
    "content": "{{ define \"title\" }}{{ cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) }} &bullet; {{ .Params.event }}{{ end }}\n{{ define \"main\" }}\n<article class=\"center bg-white br-3 pv1 ph4 nested-copy-line-height lh-copy f4 nested-links mw-100 measure-wide\">\n\t\t{{ with .Params.slides }}\n\t\t<p><a id=\"slides_link\" class=\"ba black br-3 bw1 dib no-underline ph2 pv1\" href=\"{{ . | absURL }}\">Slides</a>\n\t\t{{ end }}\n\t\t{{ with .Params.video }}\n\t\t<a id=\"video_link\" class=\"ba black br-3 bw1 dib no-underline ph2 pv1\" href=\"{{ . }}\">Video</a>\n\t\t{{ end }}\n\t\t{{ with .Params.site }}\n\t\t<a class=\"ba black br-3 bw1 dib no-underline ph2 pv1\" href=\"{{ . }}\">Website</a>\n\t\t{{ end }}\n\t\t{{ with .Params.location }}\n\t\t<a class=\"ba black br-3 bw1 dib no-underline ph2 pv1\" href=\"https://www.google.com/maps/place/{{ . }}\">Venue</a>\n\t\t{{ end }}\n\t\t{{ .Content }}\n\t</article>\n<script type=\"text/javascript\">\n// Add event handlers to slide and video links, to open them in an iframe popup.\n$( function() {\n\tif ( $( \"#slides_link\" ).length ) {\n\t\t$(\"#slides_link\").click(function(eventObject) {\n\t\t\teventObject.preventDefault();\n\t\t\tvar elem = $( this );\n\t\t\telem.parent().next(\"iframe\").remove();\n\t\t\tvar href = elem.attr(\"href\");\n\t\t\tswitch(true) {\n\t\t\tcase /\\.pdf$/.test(href):\n\t\t\t\telem.parent().after($(\"<iframe frameborder=0 class='ba h5 w-100' src='/js/pdfjs/web/viewer.html?file=\" + href + \"'></iframe>\"));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\telem.parent().after($(\"<iframe frameborder=0 class='ba h5 w-100' src='\" + elem.attr(\"href\") + \"'></iframe>\"));\n\t\t\t\t// default is just to iframe in the slides page.\n\t\t\t}\n\t\t\tvar width = elem.parent().next(\"iframe\").width();\n\t\t\tvar height = Math.round(width * 9 / 16);\n\t\t\telem.parent().next(\"iframe\").height(height);\n\t\t});\n\t}\n\tif ( $( \"#video_link\" ).length ) {\n\t\t$(\"#video_link\").click(function(eventObject) {\n\t\t\tvar elem = $( this );\n\t\t\telem.parent().next(\"iframe\").remove();\n\t\t\tvar href = elem.attr(\"href\");\n\t\t\tswitch(true) {\n\t\t\tcase /youtube.com/.test(href):\n\t\t\t\teventObject.preventDefault();\n\t\t\t\thref = href.replace(\"watch?v=\", \"embed/\");\n\t\t\t\telem.parent().after($(\"<iframe frameborder=0 class='ba h5 w-100' src='\" + href + \"' allow='accelerometer; encrypted-media; gyroscope; picture-in-picture' allowfullscreen></iframe>\"));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// default is just to follow the link.\n\t\t\t\t// TODO: add a vimeo embedder here? If you're reading this source code, please submit a PR\n\t\t\t\t// for other video sources you want to be supported here.\n\t\t\t}\n\t\t\tvar width = elem.parent().next(\"iframe\").width();\n\t\t\tvar height = Math.round(width * 9 / 16);\n\t\t\telem.parent().next(\"iframe\").height(height);\n\t\t});\n\t}\n});\n\n</script>\n{{ end }}\n\n{{ define \"social\" }}\n\t\t<meta property=\"og:title\" content=\"{{ cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) }}\" />\n\t\t<meta property=\"og:type\" content=\"article\" />\n\t\t<meta property=\"og:image\" content=\"{{ default (default \"img/default-header-img.jpg\" .Params.image) .Params.thumbnail | absURL }}\" />\n\t\t<meta property=\"og:description\" content=\"{{ .Description | markdownify }}\" />\n\t\t<meta property=\"og:url\" content=\"{{ .Permalink }}\" />\n\t\t<meta property=\"og:site_name\" content=\"{{ cond (eq .Site.Params.titlecase true) (.Title | title | markdownify) (.Title | markdownify) }}\" />\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" />\n\t\t<meta name=\"twitter:site\" content=\"@{{ .Site.Params.twitter }}\" />\n{{ end }}\n"
  },
  {
    "path": "netlify.toml",
    "content": "[context.production.environment]\nHUGO_VERSION = \"0.47.1\"\n"
  },
  {
    "path": "start",
    "content": "#!/bin/sh\nset -e\nset -x\nhugo -c exampleSite/content --config exampleSite/config.toml server\n"
  },
  {
    "path": "static/_headers",
    "content": "/*\n X-Frame-Options: SAMEORIGIN\n X-XSS-Protection: 1; mode=block\n Referrer-Policy: no-referrer\n X-Content-Type-Options: nosniff\n"
  },
  {
    "path": "static/css/adirondack.css",
    "content": ".remark-slide-content {\n  font-family: 'Quattrocento Sans', -apple-system, BlinkMacSystemFont, 'avenir next', avenir, 'helvetica neue', helvetica, arial, sans-serif;\n}\n.remark-slide-content pre,\n.remark-slide-content code,\n.remark-slide-content kbd,\n.remark-slide-content tt,\n.remark-slide-content samp {\n  font-family: Monaco, \"Lucida Sans Typewriter\", \"Lucida Console\", \"Andale Mono\", \"Consolas\", monospace;\n}\n.remark-slide-content h1,\n.remark-slide-content h2,\n.remark-slide-content h3 {\n  font-family: Quattrocento, \"Goudy Old Style\", \"Big Caslon\", Palatino, serif;\n  font-weight: bold;\n}\n.remark-slide-content table {\n  border-spacing: 0;\n  border-collapse: collapse;\n  display: block;\n  width: 100%;\n  overflow: auto;\n}\n.remark-slide-content table tr:nth-child(2n) {\n  background-color: #f6f8fa;\n}\n.remark-slide-content table th,\n.remark-slide-content table td {\n  display: table-cell;\n  vertical-align: inherit;\n  padding: 0.15em 0.3em;\n  border: 1px solid #dfe2e5;\n}\n.remark-slide-content table th {\n  font-weight: bold;\n}\n.remark-slide-content pre {\n  overflow: auto;\n}\n.remark-slide-content pre > code {\n  border-radius: 0.4em;\n  padding: 0.5em;\n  background-color: #f6f8fa;\n}\n.remark-slide-content p > code,\n.remark-slide-content li > code,\n.remark-slide-content a > code {\n  background-color: #f6f8fa;\n  margin: 0;\n  border-radius: 0.2em;\n  padding: 0.15em 0.25em;\n}\n.remark-slide-content blockquote {\n  margin: 0;\n  padding: 0 0.5em;\n  color: #6a737d;\n  border-left: 0.125em solid #dfe2e5;\n}\n.remark-slide-content .remark-slide-number,\n.remark-slide-content .footer li {\n  background-color: rgba(255, 255, 255, 0.5);\n  opacity: 0.5;\n}\n.remark-slide-content.smokescreen > h1,\n.remark-slide-content img[src~=smokescreen] {\n  background-color: rgba(0, 0, 0, 0.7);\n}\n.remark-slide-content.smokescreen > h1,\n.remark-slide-content.smokescreen > h2,\n.remark-slide-content.smokescreen > h3 {\n  color: white;\n  text-shadow: 4px 4px 12px rgba(0, 0, 0, 0.8), 8px 8px 20px rgba(0, 0, 0, 0.9);\n}\n@media print {\n  .remark-slide-content.smokescreen {\n    -webkit-print-color-adjust: exact;\n    -webkit-filter: opacity(1);\n  }\n}\n.remark-slide-content.fogscreen > h1 {\n  background-color: rgba(255, 255, 255, 0.7);\n}\n.remark-slide-content.fogscreen > h1,\n.remark-slide-content.fogscreen > h2,\n.remark-slide-content.fogscreen > h3 {\n  color: black;\n  text-shadow: 4px 4px 12px rgba(0, 0, 0, 0.5), 8px 8px 20px rgba(0, 0, 0, 0.2);\n}\n@media print {\n  .remark-slide-content.fogscreen {\n    -webkit-print-color-adjust: exact;\n    -webkit-filter: opacity(1);\n  }\n}\n.remark-slide-content.fit-h1 h1 {\n  height: 1.25em;\n  overflow: hidden;\n}\n"
  },
  {
    "path": "static/css/adirondack.less",
    "content": "@adirondack-colors: {\n\tmuted-text: #6a737d;\n\tshaded-bg: #f6f8fa;\n\tborder: #dfe2e5;\n}\n\n.remark-slide-content {\n\tfont-family: 'Quattrocento Sans',-apple-system, BlinkMacSystemFont,\n\t\t'avenir next', avenir, 'helvetica neue', helvetica,\n\t\tarial, sans-serif;\n\tpre, code, kbd, tt, samp {\n\t\tfont-family: Monaco, \"Lucida Sans Typewriter\", \"Lucida Console\",\n\t\t\t\"Andale Mono\", \"Consolas\", monospace;\n\t}\n\th1, h2, h3 {\n\t\tfont-family: Quattrocento, \"Goudy Old Style\", \"Big Caslon\", Palatino, serif;\n\t\tfont-weight: bold;\n\t}\n\n\ttable {\n\t\tborder-spacing: 0;\n\t\tborder-collapse: collapse;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\toverflow: auto;\n\t}\n\ttable tr:nth-child(2n) {\n\t\tbackground-color: @adirondack-colors[shaded-bg];\n\t}\n\ttable th, table td {\n\t\tdisplay: table-cell;\n\t\tvertical-align: inherit;\n\t\tpadding: 0.15em 0.30em;\n\t\tborder: 1px solid @adirondack-colors[border];\n\t}\n\ttable th {\n\t\tfont-weight: bold;\n\t}\n\tpre {\n\t\toverflow: auto;\n\t}\n\tpre > code {\n\t\tborder-radius: 0.4em;\n\t\tpadding: 0.5em;\n\t\tbackground-color: @adirondack-colors[shaded-bg];\n\t}\n\tp>code, li>code, a>code {\n\t\tbackground-color: @adirondack-colors[shaded-bg];\n\t\tmargin: 0;\n\t\tborder-radius: 0.2em;\n\t\tpadding: 0.15em 0.25em;\n\t}\n\tblockquote {\n\t\tmargin: 0;\n\t\tpadding: 0 0.5em;\n\t\tcolor: @adirondack-colors[muted-text];\n\t\tborder-left: 0.125em solid @adirondack-colors[border];\n\t}\n\n\t.remark-slide-number, .footer li {\n\t\tbackground-color: rgba(255, 255, 255, .5);\n\t\topacity: .5;\n\t}\n\n\t// Smokescreen and fogscreen for the title layout\n\t&.smokescreen>h1, img[src~=smokescreen] {\n\t\tbackground-color: rgba(0, 0, 0, 0.7);\n\t}\n\t&.smokescreen {\n\t\t>h1, >h2, >h3 {\n\t\t\tcolor: white;\n\t\t\ttext-shadow: 4px 4px 12px rgba(0, 0, 0, 0.8),\n\t\t\t\t\t\t8px 8px 20px rgba(0, 0, 0, 0.9);\n\t\t}\n\t\t@media print {\n\t\t\t-webkit-print-color-adjust: exact;\n\t\t\t-webkit-filter: opacity(1);\n\t\t}\n\t}\n\t&.fogscreen {\n\t\t>h1 {\n\t\t\tbackground-color: rgba(255, 255, 255, 0.7);\n\t\t}\n\t\t>h1, >h2, >h3 {\n\t\t\tcolor: black;\n\t\t\ttext-shadow: 4px 4px 12px rgba(0, 0, 0, 0.5),\n\t\t\t\t\t8px 8px 20px rgba(0, 0, 0, 0.2);\n\t\t}\n\t\t@media print {\n\t\t\t-webkit-print-color-adjust: exact;\n\t\t\t-webkit-filter: opacity(1);\n\t\t}\n\t}\n\t&.fit-h1 h1 {\n\t\theight: 1.25em;\n\t\toverflow: hidden;\n\t}\n}\n"
  },
  {
    "path": "static/css/apron.css",
    "content": "html {\n  font-size: 16px;\n}\n.remark-slide {\n  display: block;\n  box-sizing: border-box;\n  margin: 0px;\n  padding: 0px;\n}\n@media print {\n  .remark-slide-scaler {\n    width: 100% !important;\n    height: 100% !important;\n    transform: scale(1) !important;\n    top: 0 !important;\n    left: 0 !important;\n  }\n}\n.remark-slide-content {\n  display: block;\n  box-sizing: border-box;\n  height: 100%;\n  line-height: 1.25;\n  padding: 20px 80px 0 80px;\n  font-size: 2rem;\n}\n.remark-slide-content * {\n  box-sizing: border-box;\n}\n.remark-slide-content.debug * {\n  outline: 1px solid gold;\n}\n.remark-slide-content.debug-white * {\n  outline: 1px solid white;\n}\n.remark-slide-content.debug-black * {\n  outline: 1px solid black;\n}\n.remark-slide-content.debug-grid {\n  background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAFElEQVR4AWPAC97/9x0eCsAEPgwAVLshdpENIxcAAAAASUVORK5CYII= ) repeat top left;\n}\n.remark-slide-content.debug-grid-16 {\n  background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMklEQVR4AWOgCLz/b0epAa6UGuBOqQHOQHLUgFEDnAbcBZ4UGwDOkiCnkIhdgNgNxAYAiYlD+8sEuo8AAAAASUVORK5CYII= ) repeat top left;\n}\n.remark-slide-content.debug-grid-8-solid {\n  background: white url(data:image/gif;base64,R0lGODdhCAAIAPEAAADw/wDx/////wAAACwAAAAACAAIAAACDZQvgaeb/lxbAIKA8y0AOw== ) repeat top left;\n}\n.remark-slide-content.debug-grid-16-solid {\n  background: white url(data:image/gif;base64,R0lGODdhEAAQAPEAAADw/wDx/xXy/////ywAAAAAEAAQAAACIZyPKckYDQFsb6ZqD85jZ2+BkwiRFKehhqQCQgDHcgwEBQA7 ) repeat top left;\n}\n.remark-slide-content h1 {\n  font-size: 3rem;\n}\n.remark-slide-content h2 {\n  font-size: 2.75rem;\n}\n.remark-slide-content h3 {\n  font-size: 2.5rem;\n}\n.remark-slide-content pre,\n.remark-slide-content code,\n.remark-slide-content kbd,\n.remark-slide-content tt,\n.remark-slide-content samp {\n  font-size: 1.5rem;\n  line-height: 1.5;\n}\n.remark-slide-content.compact {\n  padding: 20px 40px 0 40px;\n  font-size: 1.75rem;\n}\n.remark-slide-content.compact h1 {\n  font-size: 2.75rem;\n}\n.remark-slide-content.compact h2 {\n  font-size: 2.5rem;\n}\n.remark-slide-content.compact h3 {\n  font-size: 2.25rem;\n}\n.remark-slide-content.compact pre,\n.remark-slide-content.compact code,\n.remark-slide-content.compact kbd,\n.remark-slide-content.compact tt,\n.remark-slide-content.compact samp {\n  font-size: 1.25rem;\n}\n.remark-slide-content.roomy {\n  padding: 20px 80px 0 80px;\n  font-size: 2.25rem;\n}\n.remark-slide-content.roomy h1 {\n  font-size: 4rem;\n}\n.remark-slide-content.roomy h2 {\n  font-size: 3rem;\n}\n.remark-slide-content.roomy h3 {\n  font-size: 2.75rem;\n}\n.remark-slide-content.roomy pre,\n.remark-slide-content.roomy code,\n.remark-slide-content.roomy kbd,\n.remark-slide-content.roomy tt,\n.remark-slide-content.roomy samp {\n  font-size: 1.75rem;\n}\n.remark-slide-content.title h1 {\n  font-size: 4rem;\n}\n.remark-slide-content.title h2 {\n  font-size: 3rem;\n}\n.remark-slide-content.title h3 {\n  font-size: 2.25rem;\n}\n.remark-slide-content img {\n  max-width: 100%;\n}\n.remark-slide-content h1,\n.remark-slide-content h2,\n.remark-slide-content h3 {\n  margin-top: 0.5em;\n  margin-bottom: 0.5em;\n}\n.remark-slide-content table,\n.remark-slide-content .katex {\n  font-size: 85%;\n}\n.remark-slide-content.fullbleed,\n.remark-slide-content.fullbleed > p {\n  margin: 0;\n  padding: 0;\n}\n.remark-slide-content.title {\n  text-align: center;\n  background-size: cover;\n}\n.remark-slide-content.title h1,\n.remark-slide-content.title h2,\n.remark-slide-content.title h3 {\n  position: absolute;\n  width: 100%;\n  left: 0;\n  margin: 0;\n  padding: 1em 0;\n  font-weight: normal;\n}\n.remark-slide-content.title h1 {\n  top: calc(50% - 2.5em);\n}\n.remark-slide-content.title h2 {\n  top: calc(50% - 1em);\n}\n.remark-slide-content.title h3 {\n  top: calc(50% - 0.5em);\n}\n.remark-slide-content.title.top h1 {\n  top: calc(681px * 0.3 - 2.5em);\n}\n.remark-slide-content.title.top h2 {\n  top: calc(681px * 0.3 - 1em);\n}\n.remark-slide-content.title.top h3 {\n  top: calc(681px * 0.3 - 0.5em);\n}\n.remark-slide-content.title.bottom h1 {\n  top: calc(681px * 3/4 - 2.5em);\n}\n.remark-slide-content.title.bottom h2 {\n  top: calc(681px * 3/4 - 1em);\n}\n.remark-slide-content.title.bottom h3 {\n  top: calc(681px * 3/4 - 0.5em);\n}\n.remark-slide-content.title.shelf > h1 {\n  padding-bottom: 2.25em;\n  margin-bottom: -1.75em;\n}\n.remark-slide-content.img-caption {\n  text-align: center;\n  padding-top: 544.8px;\n}\n.remark-slide-content.img-caption > p:first-of-type {\n  padding: 0px;\n  margin: 0px;\n}\n.remark-slide-content.img-caption > p:first-of-type > img {\n  position: absolute;\n  top: 0px;\n  left: 0px;\n  width: 100%;\n  height: 80%;\n  object-fit: cover;\n}\n.remark-slide-content.img-right > p:first-of-type {\n  height: 100%;\n  float: right;\n  width: calc(50% - 1rem);\n  margin-left: 2rem;\n  margin-top: 0px;\n  padding: 0px;\n}\n.remark-slide-content.img-left > p:first-of-type {\n  height: 100%;\n  float: left;\n  width: calc(50% - 1rem);\n  margin-right: 2rem;\n  margin-top: 0px;\n  padding: 0px;\n}\n.remark-slide-content.img-left > ul,\n.remark-slide-content.img-left > ol,\n.remark-slide-content.img-left > blockquote {\n  overflow: auto;\n}\n.remark-slide-content.img-right-full {\n  padding-right: calc(40% + 2rem);\n}\n.remark-slide-content.img-right-full > p:first-of-type {\n  margin: 0px;\n  padding: 0px;\n}\n.remark-slide-content.img-right-full > p:first-of-type > img {\n  position: absolute;\n  top: 0px;\n  right: 0px;\n  height: 100%;\n  width: 40%;\n  object-fit: cover;\n  object-position: left;\n}\n.remark-slide-content.img-left-full {\n  padding-left: calc(40% + 2rem);\n}\n.remark-slide-content.img-left-full > p:first-of-type {\n  margin: 0px;\n  padding: 0px;\n}\n.remark-slide-content.img-left-full > p:first-of-type > img {\n  position: absolute;\n  top: 0px;\n  left: 0px;\n  height: 100%;\n  width: 40%;\n  object-fit: cover;\n  object-position: right;\n}\n.remark-slide-content.col-2 {\n  columns: 2;\n  padding-top: 136px;\n  column-gap: 1.5em;\n}\n.remark-slide-content.col-2 > h1:first-of-type {\n  position: absolute;\n  margin-top: 0px;\n  top: 44px;\n  left: 80px;\n}\n.remark-slide-content.col-2.compact {\n  padding-top: 136px;\n}\n.remark-slide-content.col-2.compact > h1:first-of-type {\n  top: 42px;\n  left: 40px;\n}\n.remark-slide-content.col-2.roomy {\n  padding-top: 168px;\n}\n.remark-slide-content.col-2.roomy > h1:first-of-type {\n  top: 52px;\n  left: 80px;\n}\n.remark-slide-content.col-2 *:nth-child(2) {\n  margin-top: 0px;\n}\n.remark-slide-content.col-2 > ul,\n.remark-slide-content.col-2 > ol {\n  break-inside: avoid;\n  page-break-inside: avoid;\n}\n.remark-slide-content.col-3 {\n  columns: 3;\n  padding-top: 136px;\n  column-gap: 1.5em;\n}\n.remark-slide-content.col-3 > h1:first-of-type {\n  position: absolute;\n  margin-top: 0px;\n  top: 44px;\n  left: 80px;\n}\n.remark-slide-content.col-3.compact {\n  padding-top: 136px;\n}\n.remark-slide-content.col-3.compact > h1:first-of-type {\n  top: 42px;\n  left: 40px;\n}\n.remark-slide-content.col-3.roomy {\n  padding-top: 168px;\n}\n.remark-slide-content.col-3.roomy > h1:first-of-type {\n  top: 52px;\n  left: 80px;\n}\n.remark-slide-content.col-3 *:nth-child(2) {\n  margin-top: 0px;\n}\n.remark-slide-content.col-3 > ul,\n.remark-slide-content.col-3 > ol {\n  break-inside: avoid;\n  page-break-inside: avoid;\n}\n.remark-slide-content .remark-slide-number,\n.remark-slide-content .footer li {\n  font-size: 1.25rem;\n  display: block;\n  list-style: none;\n  position: absolute;\n  bottom: 12px;\n  height: 30px;\n  margin: 0px;\n  padding: 2px 5px;\n  border-radius: 3px;\n  border: 1px solid rgba(0, 0, 0, 0);\n}\n.remark-slide-content .footer,\n.remark-slide-content .footer ul {\n  position: absolute;\n  bottom: 0px;\n  right: 0px;\n  left: 0px;\n  height: 50px;\n  margin: 0px;\n  padding: 0px;\n}\n.remark-slide-content .footer li:nth-child(1) {\n  left: 20px;\n}\n.remark-slide-content .footer li:nth-child(2) {\n  left: 50%;\n  margin-left: -50px;\n}\n.remark-slide-content .footer li img {\n  display: block;\n  max-height: 100%;\n  margin-left: auto;\n  margin-right: auto;\n}\n.remark-slide-content.no-footer .remark-slide-number,\n.remark-slide-content.no-footer .footer {\n  display: none;\n}\n"
  },
  {
    "path": "static/css/apron.less",
    "content": "// Global variables.\n@slide-height: 681px;\n@abs-offsets: {\n\t@default: {\n\t\tleft: 80px;\n\t\ttop: 20px;\n\t\theader-top: 44px;\n\t\tcontent-top: 136px;\n\t}\n\t@compact: {\n\t\tleft: 40px;\n\t\ttop: 20px;\n\t\theader-top: 42px;\n\t\tcontent-top: 136px;\n\t}\n\t@roomy: {\n\t\tleft: 80px;\n\t\ttop: 20px;\n\t\theader-top: 52px;\n\t\tcontent-top: 168px;\n\t}\n}\n@type-scale: {\n\t@default: {\n\t\th1: 3rem;\n\t\th2: 2.75rem;\n\t\th3: 2.5rem;\n\t\tdefault: 2rem;\n\t\tcode: 1.5rem;\n\t}\n\t@compact: {\n\t\th1: 2.75rem;\n\t\th2: 2.5rem;\n\t\th3: 2.25rem;\n\t\tdefault: 1.75rem;\n\t\tcode: 1.25rem;\n\t}\n\t@roomy: {\n\t\th1: 4rem;\n\t\th2: 3rem;\n\t\th3: 2.75rem;\n\t\tdefault: 2.25rem;\n\t\tcode: 1.75rem;\n\t}\n\t@title: {\n\t\th1: 4rem;\n\t\th2: 3rem;\n\t\th3: 2.25rem;\n\t}\n}\n\n// Counters the user's possible changes to default font sizes.\nhtml {\n  font-size: 16px;\n}\n\n// Globals, resets, and fixes. Remark sets display:table and display:table-cell,\n// apparently to make things like vertical-align:middle work. But those\n// mess with a bunch of other things, and make them hard/impossible. An example\n// is using column-count, which won't work except inside a display:block\n// element. So I reset these things to undo what I consider Remark's hacks.\n.remark-slide {\n\tdisplay: block;\n\tbox-sizing: border-box;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n// This fixes a RemarkJS print-to-pdf bug\n@media print {\n\t.remark-slide-scaler {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t\ttransform: scale(1) !important;\n\t\ttop: 0 !important;\n\t\tleft: 0 !important;\n\t}\n}\n\n.remark-slide-content {\n\tdisplay: block;\n\tbox-sizing: border-box;\n\theight: 100%;\n\t* {\n\t\tbox-sizing: border-box;\n\t}\n\n\t// Debug and debug grid, for help figuring out layouts and bugs.\n\t&.debug * {\n\t\toutline: 1px solid gold;\n\t}\n\t&.debug-white * {\n\t\toutline: 1px solid white;\n\t}\n\t&.debug-black * {\n\t\toutline: 1px solid black;\n\t}\n\t&.debug-grid {\n\t\tbackground: transparent url( data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAFElEQVR4AWPAC97/9x0eCsAEPgwAVLshdpENIxcAAAAASUVORK5CYII= ) repeat top left;\n\t}\n\t&.debug-grid-16 {\n\t\tbackground: transparent url( data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMklEQVR4AWOgCLz/b0epAa6UGuBOqQHOQHLUgFEDnAbcBZ4UGwDOkiCnkIhdgNgNxAYAiYlD+8sEuo8AAAAASUVORK5CYII= ) repeat top left;\n\t}\n\t&.debug-grid-8-solid {\n\t\tbackground: white url( data:image/gif;base64,R0lGODdhCAAIAPEAAADw/wDx/////wAAACwAAAAACAAIAAACDZQvgaeb/lxbAIKA8y0AOw== ) repeat top left;\n\t}\n\t&.debug-grid-16-solid {\n\t\tbackground: white url( data:image/gif;base64,R0lGODdhEAAQAPEAAADw/wDx/xXy/////ywAAAAAEAAQAAACIZyPKckYDQFsb6ZqD85jZ2+BkwiRFKehhqQCQgDHcgwEBQA7 ) repeat top left;\n\t}\n\n\t// Type scale (font-size, line-height, etc) and slide sizing.\n\tline-height: 1.25;\n\tpadding: @abs-offsets[@default][top] @abs-offsets[@default][left] 0 @abs-offsets[@default][left];\n\tfont-size: @type-scale[@default][default];\n\th1 { font-size: @type-scale[@default][h1]; }\n\th2 { font-size: @type-scale[@default][h2]; }\n\th3 { font-size: @type-scale[@default][h3]; }\n\tpre, code, kbd, tt, samp {\n\t\tfont-size: @type-scale[@default][code];\n\t\tline-height: 1.5;\n\t}\n\n\t&.compact {\n\t\tpadding: @abs-offsets[@compact][top] @abs-offsets[@compact][left] 0 @abs-offsets[@compact][left];\n\t\tfont-size: @type-scale[@compact][default];\n\t\th1 { font-size: @type-scale[@compact][h1]; }\n\t\th2 { font-size: @type-scale[@compact][h2]; }\n\t\th3 { font-size: @type-scale[@compact][h3]; }\n\t\tpre, code, kbd, tt, samp {\n\t\t\tfont-size: @type-scale[@compact][code];\n\t\t}\n\t}\n\n\t&.roomy {\n\t\tpadding: @abs-offsets[@roomy][top] @abs-offsets[@roomy][left] 0 @abs-offsets[@roomy][left];\n\t\tfont-size: @type-scale[@roomy][default];\n\t\th1 { font-size: @type-scale[@roomy][h1]; }\n\t\th2 { font-size: @type-scale[@roomy][h2]; }\n\t\th3 { font-size: @type-scale[@roomy][h3]; }\n\t\tpre, code, kbd, tt, samp {\n\t\t\tfont-size: @type-scale[@roomy][code];\n\t\t}\n\t}\n\n\t&.title {\n\t\th1 { font-size: @type-scale[@title][h1]; }\n\t\th2 { font-size: @type-scale[@title][h2]; }\n\t\th3 { font-size: @type-scale[@title][h3]; }\n\t}\n\n\t// Element styling\n\timg {\n\t\tmax-width: 100%; // Images should never be bigger than their container.\n\t}\n\n\th1, h2, h3 {\n\t\tmargin-top: 0.5em;\n\t\tmargin-bottom: 0.5em;\n\t}\n\n\ttable, .katex {\n\t\tfont-size: 85%;\n\t}\n\n\t// Layout Classes\n\n\t// Layout: fullbleed. Simply removes Remark's built-in padding and margins.\n\t&.fullbleed, &.fullbleed>p {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t// Layout: title, plus top/bottom variations, and shelf sizing.\n\t// Designed for H1, plus optional H2 or H3 (but not both).\n\t&.title {\n\t\ttext-align: center;\n\t\tbackground-size: cover;\n\t\th1, h2, h3 {\n\t\t\tposition: absolute;\n\t\t\twidth: 100%;\n\t\t\tleft: 0;\n\t\t\tmargin: 0;\n\t\t\tpadding: 1em 0;\n\t\t\tfont-weight: normal;\n\t\t}\n\t\th1 { top: calc(50% - 2.5em); }\n\t\th2 { top: calc(50% - 1.0em); }\n\t\th3 { top: calc(50% - 0.5em); }\n\t\t&.top {\n\t\t\th1 { top: calc(@slide-height * 0.3 - 2.5em); }\n\t\t\th2 { top: calc(@slide-height * 0.3 - 1.0em); }\n\t\t\th3 { top: calc(@slide-height * 0.3 - 0.5em); }\n\t\t}\n\t\t&.bottom {\n\t\t\th1 { top: calc(@slide-height * 3/4 - 2.5em); }\n\t\t\th2 { top: calc(@slide-height * 3/4 - 1.0em); }\n\t\t\th3 { top: calc(@slide-height * 3/4 - 0.5em); }\n\t\t}\n\t\t&.shelf>h1 {\n\t\t\t// The \"shelf\" class makes the H1 extend down far enough to form the background for\n\t\t\t// the H2 or H3, with a negative bottom margin to extend beneath the H2/H3. This is\n\t\t\t// better than giving each element a background color and placing them next to each\n\t\t\t// other; that will let a thin slice of the slide background show through.\n\t\t\tpadding-bottom: 2.25em;\n\t\t\tmargin-bottom: -1.75em;\n\t\t}\n\t}\n\n\t// Layout: img-caption. Content must begin with an image.\n\t&.img-caption {\n\t\ttext-align: center;\n\t\tpadding-top: @slide-height * 0.8;\n\t\t&>p:first-of-type {\n\t\t\tpadding: 0px;\n\t\t\tmargin: 0px;\n\t\t\t&>img {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 0px;\n\t\t\t\tleft: 0px;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 80%;\n\t\t\t\tobject-fit: cover;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Layout: img-right. The first image begins \"columns.\"\n\t&.img-right>p:first-of-type {\n\t\theight: 100%;\n\t\tfloat: right;\n\t\twidth: calc(50% - 1rem);\n\t\tmargin-left: 2rem;\n\t\tmargin-top: 0px;\n\t\tpadding: 0px;\n\t}\n\n\t// Layout: img-left. The first image begins \"columns.\"\n\t&.img-left {\n\t\t&>p:first-of-type {\n\t\t\theight: 100%;\n\t\t\tfloat: left;\n\t\t\twidth: calc(50% - 1rem);\n\t\t\tmargin-right: 2rem;\n\t\t\tmargin-top: 0px;\n\t\t\tpadding: 0px;\n\t\t}\n\t\t&>ul, &>ol, &>blockquote {\n\t\t\t// Ensures bullets are indented.\n\t\t\toverflow: auto;\n\t\t}\n\t}\n\n\t// Layout: img-right-full. The first p>img fills the side of the slide.\n\t// If you have \"layout\" content, ensure it has no <p> elements.\n\t&.img-right-full {\n\t\tpadding-right: calc(40% + 2rem);\n\t\t&>p:first-of-type {\n\t\t\tmargin: 0px;\n\t\t\tpadding: 0px;\n\t\t\t&>img {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 0px;\n\t\t\t\tright: 0px;\n\t\t\t\theight: 100%;\n\t\t\t\twidth: 40%;\n\t\t\t\tobject-fit: cover;\n\t\t\t\tobject-position: left;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Layout: img-left-full. The first p>img fills the side of the slide.\n\t// If you have \"layout\" content, ensure it has no <p> elements.\n\t&.img-left-full {\n\t\tpadding-left: calc(40% + 2rem);\n\t\t&>p:first-of-type {\n\t\t\tmargin: 0px;\n\t\t\tpadding: 0px;\n\t\t\t&>img {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 0px;\n\t\t\t\tleft: 0px;\n\t\t\t\theight: 100%;\n\t\t\t\twidth: 40%;\n\t\t\t\tobject-fit: cover;\n\t\t\t\tobject-position: right;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Layout: col-2 and col-3. Designed for use with an H1 heading.\n\t.col() {\n\t\t// If Firefox supported column-span: all I'd use that for the heading H1.\n\t\t// I use a workaround instead: push the content down and put the H1 above it.\n\t\tpadding-top: @abs-offsets[@default][content-top];\n\t\t&>h1:first-of-type {\n\t\t\tposition: absolute;\n\t\t\tmargin-top: 0px;\n\t\t\ttop: @abs-offsets[@default][header-top];\n\t\t\tleft: @abs-offsets[@default][left];\n\t\t}\n\t\t&.compact {\n\t\t\tpadding-top: @abs-offsets[@compact][content-top];\n\t\t}\n\t\t&.compact>h1:first-of-type {\n\t\t\ttop: @abs-offsets[@compact][header-top];\n\t\t\tleft: @abs-offsets[@compact][left];\n\t\t}\n\t\t&.roomy {\n\t\t\tpadding-top: @abs-offsets[@roomy][content-top];\n\t\t}\n\t\t&.roomy>h1:first-of-type {\n\t\t\ttop: @abs-offsets[@roomy][header-top];\n\t\t\tleft: @abs-offsets[@roomy][left];\n\t\t}\n\t\t// If the first columnized content has margin-top, vertical alignment is messy.\n\t\t*:nth-child(2) {\n\t\t\tmargin-top: 0px;\n\t\t}\n\t\t&>ul, &>ol {\n\t\t\tbreak-inside: avoid;\n\t\t\tpage-break-inside: avoid;\n\t\t}\n\t\tcolumn-gap: 1.5em; // Deliberately a relative measure\n\t}\n\t&.col-2 {\n\t\tcolumns: 2;\n\t\t.col();\n\t}\n\t&.col-3 {\n\t\tcolumns: 3;\n\t\t.col();\n\t}\n\n\t// Footer layout and positioning. TODO make the UL full width so it can have border.\n\t// TODO make the UL possible to place at the top of the slide.\n\t.remark-slide-number, .footer li {\n\t\tfont-size: 1.25rem;\n\t\tdisplay: block;\n\t\tlist-style: none;\n\t\tposition: absolute;\n\t\tbottom: 12px;\n\t\theight: 30px;\n\t\tmargin: 0px;\n\t\tpadding: 2px 5px;\n\t\tborder-radius: 3px;\n\t\tborder: 1px solid rgba(0, 0, 0, 0);\n\t}\n\t.footer {\n\t\t&, & ul {\n\t\t\tposition: absolute;\n\t\t\tbottom: 0px;\n\t\t\tright: 0px;\n\t\t\tleft: 0px;\n\t\t\theight: 50px;\n\t\t\tmargin: 0px;\n\t\t\tpadding: 0px;\n\t\t}\n\t\tli:nth-child(1) {\n\t\t\tleft: 20px;\n\t\t}\n\t\tli:nth-child(2) {\n\t\t\tleft: 50%;\n\t\t\tmargin-left: -50px; // assume the logo/content is about 100px\n\t\t}\n\t\tli img {\n\t\t\tdisplay: block;\n\t\t\tmax-height: 100%;\n\t\t\tmargin-left: auto;\n\t\t\tmargin-right: auto;\n\t\t}\n\t}\n\t&.no-footer {\n\t\t.remark-slide-number, .footer {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "static/css/descartes.css",
    "content": ".color-transparent,\nimg[src~=color-transparent] {\n  color: transparent;\n}\n.bg-transparent,\nimg[src~=bg-transparent] {\n  background-color: transparent;\n}\n.bc-transparent,\nimg[src~=bc-transparent] {\n  border-color: transparent;\n}\n.color-aliceblue,\nimg[src~=\"color-aliceblue\"] {\n  color: #F0F8FF;\n}\n.color-aliceblue-20pct,\nimg[src~=\"color-aliceblue\"] {\n  color: rgba(240, 248, 255, 0.2);\n}\n.color-aliceblue-40pct,\nimg[src~=\"color-aliceblue\"] {\n  color: rgba(240, 248, 255, 0.4);\n}\n.color-aliceblue-60pct,\nimg[src~=\"color-aliceblue\"] {\n  color: rgba(240, 248, 255, 0.6);\n}\n.color-aliceblue-80pct,\nimg[src~=\"color-aliceblue\"] {\n  color: rgba(240, 248, 255, 0.8);\n}\n.bg-aliceblue,\nimg[src~=\"bg-aliceblue\"] {\n  background-color: #F0F8FF;\n}\n.bg-aliceblue-20pct,\nimg[src~=\"bg-aliceblue\"] {\n  background-color: rgba(240, 248, 255, 0.2);\n}\n.bg-aliceblue-40pct,\nimg[src~=\"bg-aliceblue\"] {\n  background-color: rgba(240, 248, 255, 0.4);\n}\n.bg-aliceblue-60pct,\nimg[src~=\"bg-aliceblue\"] {\n  background-color: rgba(240, 248, 255, 0.6);\n}\n.bg-aliceblue-80pct,\nimg[src~=\"bg-aliceblue\"] {\n  background-color: rgba(240, 248, 255, 0.8);\n}\n.bc-aliceblue,\nimg[src~=\"bc-aliceblue\"] {\n  border-color: #F0F8FF;\n}\n.bc-aliceblue-20pct,\nimg[src~=\"bc-aliceblue\"] {\n  border-color: rgba(240, 248, 255, 0.2);\n}\n.bc-aliceblue-40pct,\nimg[src~=\"bc-aliceblue\"] {\n  border-color: rgba(240, 248, 255, 0.4);\n}\n.bc-aliceblue-60pct,\nimg[src~=\"bc-aliceblue\"] {\n  border-color: rgba(240, 248, 255, 0.6);\n}\n.bc-aliceblue-80pct,\nimg[src~=\"bc-aliceblue\"] {\n  border-color: rgba(240, 248, 255, 0.8);\n}\n.color-antiquewhite,\nimg[src~=\"color-antiquewhite\"] {\n  color: #FAEBD7;\n}\n.color-antiquewhite-20pct,\nimg[src~=\"color-antiquewhite\"] {\n  color: rgba(250, 235, 215, 0.2);\n}\n.color-antiquewhite-40pct,\nimg[src~=\"color-antiquewhite\"] {\n  color: rgba(250, 235, 215, 0.4);\n}\n.color-antiquewhite-60pct,\nimg[src~=\"color-antiquewhite\"] {\n  color: rgba(250, 235, 215, 0.6);\n}\n.color-antiquewhite-80pct,\nimg[src~=\"color-antiquewhite\"] {\n  color: rgba(250, 235, 215, 0.8);\n}\n.bg-antiquewhite,\nimg[src~=\"bg-antiquewhite\"] {\n  background-color: #FAEBD7;\n}\n.bg-antiquewhite-20pct,\nimg[src~=\"bg-antiquewhite\"] {\n  background-color: rgba(250, 235, 215, 0.2);\n}\n.bg-antiquewhite-40pct,\nimg[src~=\"bg-antiquewhite\"] {\n  background-color: rgba(250, 235, 215, 0.4);\n}\n.bg-antiquewhite-60pct,\nimg[src~=\"bg-antiquewhite\"] {\n  background-color: rgba(250, 235, 215, 0.6);\n}\n.bg-antiquewhite-80pct,\nimg[src~=\"bg-antiquewhite\"] {\n  background-color: rgba(250, 235, 215, 0.8);\n}\n.bc-antiquewhite,\nimg[src~=\"bc-antiquewhite\"] {\n  border-color: #FAEBD7;\n}\n.bc-antiquewhite-20pct,\nimg[src~=\"bc-antiquewhite\"] {\n  border-color: rgba(250, 235, 215, 0.2);\n}\n.bc-antiquewhite-40pct,\nimg[src~=\"bc-antiquewhite\"] {\n  border-color: rgba(250, 235, 215, 0.4);\n}\n.bc-antiquewhite-60pct,\nimg[src~=\"bc-antiquewhite\"] {\n  border-color: rgba(250, 235, 215, 0.6);\n}\n.bc-antiquewhite-80pct,\nimg[src~=\"bc-antiquewhite\"] {\n  border-color: rgba(250, 235, 215, 0.8);\n}\n.color-aqua,\nimg[src~=\"color-aqua\"] {\n  color: #00FFFF;\n}\n.color-aqua-20pct,\nimg[src~=\"color-aqua\"] {\n  color: rgba(0, 255, 255, 0.2);\n}\n.color-aqua-40pct,\nimg[src~=\"color-aqua\"] {\n  color: rgba(0, 255, 255, 0.4);\n}\n.color-aqua-60pct,\nimg[src~=\"color-aqua\"] {\n  color: rgba(0, 255, 255, 0.6);\n}\n.color-aqua-80pct,\nimg[src~=\"color-aqua\"] {\n  color: rgba(0, 255, 255, 0.8);\n}\n.bg-aqua,\nimg[src~=\"bg-aqua\"] {\n  background-color: #00FFFF;\n}\n.bg-aqua-20pct,\nimg[src~=\"bg-aqua\"] {\n  background-color: rgba(0, 255, 255, 0.2);\n}\n.bg-aqua-40pct,\nimg[src~=\"bg-aqua\"] {\n  background-color: rgba(0, 255, 255, 0.4);\n}\n.bg-aqua-60pct,\nimg[src~=\"bg-aqua\"] {\n  background-color: rgba(0, 255, 255, 0.6);\n}\n.bg-aqua-80pct,\nimg[src~=\"bg-aqua\"] {\n  background-color: rgba(0, 255, 255, 0.8);\n}\n.bc-aqua,\nimg[src~=\"bc-aqua\"] {\n  border-color: #00FFFF;\n}\n.bc-aqua-20pct,\nimg[src~=\"bc-aqua\"] {\n  border-color: rgba(0, 255, 255, 0.2);\n}\n.bc-aqua-40pct,\nimg[src~=\"bc-aqua\"] {\n  border-color: rgba(0, 255, 255, 0.4);\n}\n.bc-aqua-60pct,\nimg[src~=\"bc-aqua\"] {\n  border-color: rgba(0, 255, 255, 0.6);\n}\n.bc-aqua-80pct,\nimg[src~=\"bc-aqua\"] {\n  border-color: rgba(0, 255, 255, 0.8);\n}\n.color-aquamarine,\nimg[src~=\"color-aquamarine\"] {\n  color: #7FFFD4;\n}\n.color-aquamarine-20pct,\nimg[src~=\"color-aquamarine\"] {\n  color: rgba(127, 255, 212, 0.2);\n}\n.color-aquamarine-40pct,\nimg[src~=\"color-aquamarine\"] {\n  color: rgba(127, 255, 212, 0.4);\n}\n.color-aquamarine-60pct,\nimg[src~=\"color-aquamarine\"] {\n  color: rgba(127, 255, 212, 0.6);\n}\n.color-aquamarine-80pct,\nimg[src~=\"color-aquamarine\"] {\n  color: rgba(127, 255, 212, 0.8);\n}\n.bg-aquamarine,\nimg[src~=\"bg-aquamarine\"] {\n  background-color: #7FFFD4;\n}\n.bg-aquamarine-20pct,\nimg[src~=\"bg-aquamarine\"] {\n  background-color: rgba(127, 255, 212, 0.2);\n}\n.bg-aquamarine-40pct,\nimg[src~=\"bg-aquamarine\"] {\n  background-color: rgba(127, 255, 212, 0.4);\n}\n.bg-aquamarine-60pct,\nimg[src~=\"bg-aquamarine\"] {\n  background-color: rgba(127, 255, 212, 0.6);\n}\n.bg-aquamarine-80pct,\nimg[src~=\"bg-aquamarine\"] {\n  background-color: rgba(127, 255, 212, 0.8);\n}\n.bc-aquamarine,\nimg[src~=\"bc-aquamarine\"] {\n  border-color: #7FFFD4;\n}\n.bc-aquamarine-20pct,\nimg[src~=\"bc-aquamarine\"] {\n  border-color: rgba(127, 255, 212, 0.2);\n}\n.bc-aquamarine-40pct,\nimg[src~=\"bc-aquamarine\"] {\n  border-color: rgba(127, 255, 212, 0.4);\n}\n.bc-aquamarine-60pct,\nimg[src~=\"bc-aquamarine\"] {\n  border-color: rgba(127, 255, 212, 0.6);\n}\n.bc-aquamarine-80pct,\nimg[src~=\"bc-aquamarine\"] {\n  border-color: rgba(127, 255, 212, 0.8);\n}\n.color-azure,\nimg[src~=\"color-azure\"] {\n  color: #F0FFFF;\n}\n.color-azure-20pct,\nimg[src~=\"color-azure\"] {\n  color: rgba(240, 255, 255, 0.2);\n}\n.color-azure-40pct,\nimg[src~=\"color-azure\"] {\n  color: rgba(240, 255, 255, 0.4);\n}\n.color-azure-60pct,\nimg[src~=\"color-azure\"] {\n  color: rgba(240, 255, 255, 0.6);\n}\n.color-azure-80pct,\nimg[src~=\"color-azure\"] {\n  color: rgba(240, 255, 255, 0.8);\n}\n.bg-azure,\nimg[src~=\"bg-azure\"] {\n  background-color: #F0FFFF;\n}\n.bg-azure-20pct,\nimg[src~=\"bg-azure\"] {\n  background-color: rgba(240, 255, 255, 0.2);\n}\n.bg-azure-40pct,\nimg[src~=\"bg-azure\"] {\n  background-color: rgba(240, 255, 255, 0.4);\n}\n.bg-azure-60pct,\nimg[src~=\"bg-azure\"] {\n  background-color: rgba(240, 255, 255, 0.6);\n}\n.bg-azure-80pct,\nimg[src~=\"bg-azure\"] {\n  background-color: rgba(240, 255, 255, 0.8);\n}\n.bc-azure,\nimg[src~=\"bc-azure\"] {\n  border-color: #F0FFFF;\n}\n.bc-azure-20pct,\nimg[src~=\"bc-azure\"] {\n  border-color: rgba(240, 255, 255, 0.2);\n}\n.bc-azure-40pct,\nimg[src~=\"bc-azure\"] {\n  border-color: rgba(240, 255, 255, 0.4);\n}\n.bc-azure-60pct,\nimg[src~=\"bc-azure\"] {\n  border-color: rgba(240, 255, 255, 0.6);\n}\n.bc-azure-80pct,\nimg[src~=\"bc-azure\"] {\n  border-color: rgba(240, 255, 255, 0.8);\n}\n.color-beige,\nimg[src~=\"color-beige\"] {\n  color: #F5F5DC;\n}\n.color-beige-20pct,\nimg[src~=\"color-beige\"] {\n  color: rgba(245, 245, 220, 0.2);\n}\n.color-beige-40pct,\nimg[src~=\"color-beige\"] {\n  color: rgba(245, 245, 220, 0.4);\n}\n.color-beige-60pct,\nimg[src~=\"color-beige\"] {\n  color: rgba(245, 245, 220, 0.6);\n}\n.color-beige-80pct,\nimg[src~=\"color-beige\"] {\n  color: rgba(245, 245, 220, 0.8);\n}\n.bg-beige,\nimg[src~=\"bg-beige\"] {\n  background-color: #F5F5DC;\n}\n.bg-beige-20pct,\nimg[src~=\"bg-beige\"] {\n  background-color: rgba(245, 245, 220, 0.2);\n}\n.bg-beige-40pct,\nimg[src~=\"bg-beige\"] {\n  background-color: rgba(245, 245, 220, 0.4);\n}\n.bg-beige-60pct,\nimg[src~=\"bg-beige\"] {\n  background-color: rgba(245, 245, 220, 0.6);\n}\n.bg-beige-80pct,\nimg[src~=\"bg-beige\"] {\n  background-color: rgba(245, 245, 220, 0.8);\n}\n.bc-beige,\nimg[src~=\"bc-beige\"] {\n  border-color: #F5F5DC;\n}\n.bc-beige-20pct,\nimg[src~=\"bc-beige\"] {\n  border-color: rgba(245, 245, 220, 0.2);\n}\n.bc-beige-40pct,\nimg[src~=\"bc-beige\"] {\n  border-color: rgba(245, 245, 220, 0.4);\n}\n.bc-beige-60pct,\nimg[src~=\"bc-beige\"] {\n  border-color: rgba(245, 245, 220, 0.6);\n}\n.bc-beige-80pct,\nimg[src~=\"bc-beige\"] {\n  border-color: rgba(245, 245, 220, 0.8);\n}\n.color-bisque,\nimg[src~=\"color-bisque\"] {\n  color: #FFE4C4;\n}\n.color-bisque-20pct,\nimg[src~=\"color-bisque\"] {\n  color: rgba(255, 228, 196, 0.2);\n}\n.color-bisque-40pct,\nimg[src~=\"color-bisque\"] {\n  color: rgba(255, 228, 196, 0.4);\n}\n.color-bisque-60pct,\nimg[src~=\"color-bisque\"] {\n  color: rgba(255, 228, 196, 0.6);\n}\n.color-bisque-80pct,\nimg[src~=\"color-bisque\"] {\n  color: rgba(255, 228, 196, 0.8);\n}\n.bg-bisque,\nimg[src~=\"bg-bisque\"] {\n  background-color: #FFE4C4;\n}\n.bg-bisque-20pct,\nimg[src~=\"bg-bisque\"] {\n  background-color: rgba(255, 228, 196, 0.2);\n}\n.bg-bisque-40pct,\nimg[src~=\"bg-bisque\"] {\n  background-color: rgba(255, 228, 196, 0.4);\n}\n.bg-bisque-60pct,\nimg[src~=\"bg-bisque\"] {\n  background-color: rgba(255, 228, 196, 0.6);\n}\n.bg-bisque-80pct,\nimg[src~=\"bg-bisque\"] {\n  background-color: rgba(255, 228, 196, 0.8);\n}\n.bc-bisque,\nimg[src~=\"bc-bisque\"] {\n  border-color: #FFE4C4;\n}\n.bc-bisque-20pct,\nimg[src~=\"bc-bisque\"] {\n  border-color: rgba(255, 228, 196, 0.2);\n}\n.bc-bisque-40pct,\nimg[src~=\"bc-bisque\"] {\n  border-color: rgba(255, 228, 196, 0.4);\n}\n.bc-bisque-60pct,\nimg[src~=\"bc-bisque\"] {\n  border-color: rgba(255, 228, 196, 0.6);\n}\n.bc-bisque-80pct,\nimg[src~=\"bc-bisque\"] {\n  border-color: rgba(255, 228, 196, 0.8);\n}\n.color-black,\nimg[src~=\"color-black\"] {\n  color: #000000;\n}\n.color-black-20pct,\nimg[src~=\"color-black\"] {\n  color: rgba(0, 0, 0, 0.2);\n}\n.color-black-40pct,\nimg[src~=\"color-black\"] {\n  color: rgba(0, 0, 0, 0.4);\n}\n.color-black-60pct,\nimg[src~=\"color-black\"] {\n  color: rgba(0, 0, 0, 0.6);\n}\n.color-black-80pct,\nimg[src~=\"color-black\"] {\n  color: rgba(0, 0, 0, 0.8);\n}\n.bg-black,\nimg[src~=\"bg-black\"] {\n  background-color: #000000;\n}\n.bg-black-20pct,\nimg[src~=\"bg-black\"] {\n  background-color: rgba(0, 0, 0, 0.2);\n}\n.bg-black-40pct,\nimg[src~=\"bg-black\"] {\n  background-color: rgba(0, 0, 0, 0.4);\n}\n.bg-black-60pct,\nimg[src~=\"bg-black\"] {\n  background-color: rgba(0, 0, 0, 0.6);\n}\n.bg-black-80pct,\nimg[src~=\"bg-black\"] {\n  background-color: rgba(0, 0, 0, 0.8);\n}\n.bc-black,\nimg[src~=\"bc-black\"] {\n  border-color: #000000;\n}\n.bc-black-20pct,\nimg[src~=\"bc-black\"] {\n  border-color: rgba(0, 0, 0, 0.2);\n}\n.bc-black-40pct,\nimg[src~=\"bc-black\"] {\n  border-color: rgba(0, 0, 0, 0.4);\n}\n.bc-black-60pct,\nimg[src~=\"bc-black\"] {\n  border-color: rgba(0, 0, 0, 0.6);\n}\n.bc-black-80pct,\nimg[src~=\"bc-black\"] {\n  border-color: rgba(0, 0, 0, 0.8);\n}\n.color-blanchedalmond,\nimg[src~=\"color-blanchedalmond\"] {\n  color: #FFEBCD;\n}\n.color-blanchedalmond-20pct,\nimg[src~=\"color-blanchedalmond\"] {\n  color: rgba(255, 235, 205, 0.2);\n}\n.color-blanchedalmond-40pct,\nimg[src~=\"color-blanchedalmond\"] {\n  color: rgba(255, 235, 205, 0.4);\n}\n.color-blanchedalmond-60pct,\nimg[src~=\"color-blanchedalmond\"] {\n  color: rgba(255, 235, 205, 0.6);\n}\n.color-blanchedalmond-80pct,\nimg[src~=\"color-blanchedalmond\"] {\n  color: rgba(255, 235, 205, 0.8);\n}\n.bg-blanchedalmond,\nimg[src~=\"bg-blanchedalmond\"] {\n  background-color: #FFEBCD;\n}\n.bg-blanchedalmond-20pct,\nimg[src~=\"bg-blanchedalmond\"] {\n  background-color: rgba(255, 235, 205, 0.2);\n}\n.bg-blanchedalmond-40pct,\nimg[src~=\"bg-blanchedalmond\"] {\n  background-color: rgba(255, 235, 205, 0.4);\n}\n.bg-blanchedalmond-60pct,\nimg[src~=\"bg-blanchedalmond\"] {\n  background-color: rgba(255, 235, 205, 0.6);\n}\n.bg-blanchedalmond-80pct,\nimg[src~=\"bg-blanchedalmond\"] {\n  background-color: rgba(255, 235, 205, 0.8);\n}\n.bc-blanchedalmond,\nimg[src~=\"bc-blanchedalmond\"] {\n  border-color: #FFEBCD;\n}\n.bc-blanchedalmond-20pct,\nimg[src~=\"bc-blanchedalmond\"] {\n  border-color: rgba(255, 235, 205, 0.2);\n}\n.bc-blanchedalmond-40pct,\nimg[src~=\"bc-blanchedalmond\"] {\n  border-color: rgba(255, 235, 205, 0.4);\n}\n.bc-blanchedalmond-60pct,\nimg[src~=\"bc-blanchedalmond\"] {\n  border-color: rgba(255, 235, 205, 0.6);\n}\n.bc-blanchedalmond-80pct,\nimg[src~=\"bc-blanchedalmond\"] {\n  border-color: rgba(255, 235, 205, 0.8);\n}\n.color-blue,\nimg[src~=\"color-blue\"] {\n  color: #0000FF;\n}\n.color-blue-20pct,\nimg[src~=\"color-blue\"] {\n  color: rgba(0, 0, 255, 0.2);\n}\n.color-blue-40pct,\nimg[src~=\"color-blue\"] {\n  color: rgba(0, 0, 255, 0.4);\n}\n.color-blue-60pct,\nimg[src~=\"color-blue\"] {\n  color: rgba(0, 0, 255, 0.6);\n}\n.color-blue-80pct,\nimg[src~=\"color-blue\"] {\n  color: rgba(0, 0, 255, 0.8);\n}\n.bg-blue,\nimg[src~=\"bg-blue\"] {\n  background-color: #0000FF;\n}\n.bg-blue-20pct,\nimg[src~=\"bg-blue\"] {\n  background-color: rgba(0, 0, 255, 0.2);\n}\n.bg-blue-40pct,\nimg[src~=\"bg-blue\"] {\n  background-color: rgba(0, 0, 255, 0.4);\n}\n.bg-blue-60pct,\nimg[src~=\"bg-blue\"] {\n  background-color: rgba(0, 0, 255, 0.6);\n}\n.bg-blue-80pct,\nimg[src~=\"bg-blue\"] {\n  background-color: rgba(0, 0, 255, 0.8);\n}\n.bc-blue,\nimg[src~=\"bc-blue\"] {\n  border-color: #0000FF;\n}\n.bc-blue-20pct,\nimg[src~=\"bc-blue\"] {\n  border-color: rgba(0, 0, 255, 0.2);\n}\n.bc-blue-40pct,\nimg[src~=\"bc-blue\"] {\n  border-color: rgba(0, 0, 255, 0.4);\n}\n.bc-blue-60pct,\nimg[src~=\"bc-blue\"] {\n  border-color: rgba(0, 0, 255, 0.6);\n}\n.bc-blue-80pct,\nimg[src~=\"bc-blue\"] {\n  border-color: rgba(0, 0, 255, 0.8);\n}\n.color-blueviolet,\nimg[src~=\"color-blueviolet\"] {\n  color: #8A2BE2;\n}\n.color-blueviolet-20pct,\nimg[src~=\"color-blueviolet\"] {\n  color: rgba(138, 43, 226, 0.2);\n}\n.color-blueviolet-40pct,\nimg[src~=\"color-blueviolet\"] {\n  color: rgba(138, 43, 226, 0.4);\n}\n.color-blueviolet-60pct,\nimg[src~=\"color-blueviolet\"] {\n  color: rgba(138, 43, 226, 0.6);\n}\n.color-blueviolet-80pct,\nimg[src~=\"color-blueviolet\"] {\n  color: rgba(138, 43, 226, 0.8);\n}\n.bg-blueviolet,\nimg[src~=\"bg-blueviolet\"] {\n  background-color: #8A2BE2;\n}\n.bg-blueviolet-20pct,\nimg[src~=\"bg-blueviolet\"] {\n  background-color: rgba(138, 43, 226, 0.2);\n}\n.bg-blueviolet-40pct,\nimg[src~=\"bg-blueviolet\"] {\n  background-color: rgba(138, 43, 226, 0.4);\n}\n.bg-blueviolet-60pct,\nimg[src~=\"bg-blueviolet\"] {\n  background-color: rgba(138, 43, 226, 0.6);\n}\n.bg-blueviolet-80pct,\nimg[src~=\"bg-blueviolet\"] {\n  background-color: rgba(138, 43, 226, 0.8);\n}\n.bc-blueviolet,\nimg[src~=\"bc-blueviolet\"] {\n  border-color: #8A2BE2;\n}\n.bc-blueviolet-20pct,\nimg[src~=\"bc-blueviolet\"] {\n  border-color: rgba(138, 43, 226, 0.2);\n}\n.bc-blueviolet-40pct,\nimg[src~=\"bc-blueviolet\"] {\n  border-color: rgba(138, 43, 226, 0.4);\n}\n.bc-blueviolet-60pct,\nimg[src~=\"bc-blueviolet\"] {\n  border-color: rgba(138, 43, 226, 0.6);\n}\n.bc-blueviolet-80pct,\nimg[src~=\"bc-blueviolet\"] {\n  border-color: rgba(138, 43, 226, 0.8);\n}\n.color-brown,\nimg[src~=\"color-brown\"] {\n  color: #A52A2A;\n}\n.color-brown-20pct,\nimg[src~=\"color-brown\"] {\n  color: rgba(165, 42, 42, 0.2);\n}\n.color-brown-40pct,\nimg[src~=\"color-brown\"] {\n  color: rgba(165, 42, 42, 0.4);\n}\n.color-brown-60pct,\nimg[src~=\"color-brown\"] {\n  color: rgba(165, 42, 42, 0.6);\n}\n.color-brown-80pct,\nimg[src~=\"color-brown\"] {\n  color: rgba(165, 42, 42, 0.8);\n}\n.bg-brown,\nimg[src~=\"bg-brown\"] {\n  background-color: #A52A2A;\n}\n.bg-brown-20pct,\nimg[src~=\"bg-brown\"] {\n  background-color: rgba(165, 42, 42, 0.2);\n}\n.bg-brown-40pct,\nimg[src~=\"bg-brown\"] {\n  background-color: rgba(165, 42, 42, 0.4);\n}\n.bg-brown-60pct,\nimg[src~=\"bg-brown\"] {\n  background-color: rgba(165, 42, 42, 0.6);\n}\n.bg-brown-80pct,\nimg[src~=\"bg-brown\"] {\n  background-color: rgba(165, 42, 42, 0.8);\n}\n.bc-brown,\nimg[src~=\"bc-brown\"] {\n  border-color: #A52A2A;\n}\n.bc-brown-20pct,\nimg[src~=\"bc-brown\"] {\n  border-color: rgba(165, 42, 42, 0.2);\n}\n.bc-brown-40pct,\nimg[src~=\"bc-brown\"] {\n  border-color: rgba(165, 42, 42, 0.4);\n}\n.bc-brown-60pct,\nimg[src~=\"bc-brown\"] {\n  border-color: rgba(165, 42, 42, 0.6);\n}\n.bc-brown-80pct,\nimg[src~=\"bc-brown\"] {\n  border-color: rgba(165, 42, 42, 0.8);\n}\n.color-burlywood,\nimg[src~=\"color-burlywood\"] {\n  color: #DEB887;\n}\n.color-burlywood-20pct,\nimg[src~=\"color-burlywood\"] {\n  color: rgba(222, 184, 135, 0.2);\n}\n.color-burlywood-40pct,\nimg[src~=\"color-burlywood\"] {\n  color: rgba(222, 184, 135, 0.4);\n}\n.color-burlywood-60pct,\nimg[src~=\"color-burlywood\"] {\n  color: rgba(222, 184, 135, 0.6);\n}\n.color-burlywood-80pct,\nimg[src~=\"color-burlywood\"] {\n  color: rgba(222, 184, 135, 0.8);\n}\n.bg-burlywood,\nimg[src~=\"bg-burlywood\"] {\n  background-color: #DEB887;\n}\n.bg-burlywood-20pct,\nimg[src~=\"bg-burlywood\"] {\n  background-color: rgba(222, 184, 135, 0.2);\n}\n.bg-burlywood-40pct,\nimg[src~=\"bg-burlywood\"] {\n  background-color: rgba(222, 184, 135, 0.4);\n}\n.bg-burlywood-60pct,\nimg[src~=\"bg-burlywood\"] {\n  background-color: rgba(222, 184, 135, 0.6);\n}\n.bg-burlywood-80pct,\nimg[src~=\"bg-burlywood\"] {\n  background-color: rgba(222, 184, 135, 0.8);\n}\n.bc-burlywood,\nimg[src~=\"bc-burlywood\"] {\n  border-color: #DEB887;\n}\n.bc-burlywood-20pct,\nimg[src~=\"bc-burlywood\"] {\n  border-color: rgba(222, 184, 135, 0.2);\n}\n.bc-burlywood-40pct,\nimg[src~=\"bc-burlywood\"] {\n  border-color: rgba(222, 184, 135, 0.4);\n}\n.bc-burlywood-60pct,\nimg[src~=\"bc-burlywood\"] {\n  border-color: rgba(222, 184, 135, 0.6);\n}\n.bc-burlywood-80pct,\nimg[src~=\"bc-burlywood\"] {\n  border-color: rgba(222, 184, 135, 0.8);\n}\n.color-cadetblue,\nimg[src~=\"color-cadetblue\"] {\n  color: #5F9EA0;\n}\n.color-cadetblue-20pct,\nimg[src~=\"color-cadetblue\"] {\n  color: rgba(95, 158, 160, 0.2);\n}\n.color-cadetblue-40pct,\nimg[src~=\"color-cadetblue\"] {\n  color: rgba(95, 158, 160, 0.4);\n}\n.color-cadetblue-60pct,\nimg[src~=\"color-cadetblue\"] {\n  color: rgba(95, 158, 160, 0.6);\n}\n.color-cadetblue-80pct,\nimg[src~=\"color-cadetblue\"] {\n  color: rgba(95, 158, 160, 0.8);\n}\n.bg-cadetblue,\nimg[src~=\"bg-cadetblue\"] {\n  background-color: #5F9EA0;\n}\n.bg-cadetblue-20pct,\nimg[src~=\"bg-cadetblue\"] {\n  background-color: rgba(95, 158, 160, 0.2);\n}\n.bg-cadetblue-40pct,\nimg[src~=\"bg-cadetblue\"] {\n  background-color: rgba(95, 158, 160, 0.4);\n}\n.bg-cadetblue-60pct,\nimg[src~=\"bg-cadetblue\"] {\n  background-color: rgba(95, 158, 160, 0.6);\n}\n.bg-cadetblue-80pct,\nimg[src~=\"bg-cadetblue\"] {\n  background-color: rgba(95, 158, 160, 0.8);\n}\n.bc-cadetblue,\nimg[src~=\"bc-cadetblue\"] {\n  border-color: #5F9EA0;\n}\n.bc-cadetblue-20pct,\nimg[src~=\"bc-cadetblue\"] {\n  border-color: rgba(95, 158, 160, 0.2);\n}\n.bc-cadetblue-40pct,\nimg[src~=\"bc-cadetblue\"] {\n  border-color: rgba(95, 158, 160, 0.4);\n}\n.bc-cadetblue-60pct,\nimg[src~=\"bc-cadetblue\"] {\n  border-color: rgba(95, 158, 160, 0.6);\n}\n.bc-cadetblue-80pct,\nimg[src~=\"bc-cadetblue\"] {\n  border-color: rgba(95, 158, 160, 0.8);\n}\n.color-chartreuse,\nimg[src~=\"color-chartreuse\"] {\n  color: #7FFF00;\n}\n.color-chartreuse-20pct,\nimg[src~=\"color-chartreuse\"] {\n  color: rgba(127, 255, 0, 0.2);\n}\n.color-chartreuse-40pct,\nimg[src~=\"color-chartreuse\"] {\n  color: rgba(127, 255, 0, 0.4);\n}\n.color-chartreuse-60pct,\nimg[src~=\"color-chartreuse\"] {\n  color: rgba(127, 255, 0, 0.6);\n}\n.color-chartreuse-80pct,\nimg[src~=\"color-chartreuse\"] {\n  color: rgba(127, 255, 0, 0.8);\n}\n.bg-chartreuse,\nimg[src~=\"bg-chartreuse\"] {\n  background-color: #7FFF00;\n}\n.bg-chartreuse-20pct,\nimg[src~=\"bg-chartreuse\"] {\n  background-color: rgba(127, 255, 0, 0.2);\n}\n.bg-chartreuse-40pct,\nimg[src~=\"bg-chartreuse\"] {\n  background-color: rgba(127, 255, 0, 0.4);\n}\n.bg-chartreuse-60pct,\nimg[src~=\"bg-chartreuse\"] {\n  background-color: rgba(127, 255, 0, 0.6);\n}\n.bg-chartreuse-80pct,\nimg[src~=\"bg-chartreuse\"] {\n  background-color: rgba(127, 255, 0, 0.8);\n}\n.bc-chartreuse,\nimg[src~=\"bc-chartreuse\"] {\n  border-color: #7FFF00;\n}\n.bc-chartreuse-20pct,\nimg[src~=\"bc-chartreuse\"] {\n  border-color: rgba(127, 255, 0, 0.2);\n}\n.bc-chartreuse-40pct,\nimg[src~=\"bc-chartreuse\"] {\n  border-color: rgba(127, 255, 0, 0.4);\n}\n.bc-chartreuse-60pct,\nimg[src~=\"bc-chartreuse\"] {\n  border-color: rgba(127, 255, 0, 0.6);\n}\n.bc-chartreuse-80pct,\nimg[src~=\"bc-chartreuse\"] {\n  border-color: rgba(127, 255, 0, 0.8);\n}\n.color-chocolate,\nimg[src~=\"color-chocolate\"] {\n  color: #D2691E;\n}\n.color-chocolate-20pct,\nimg[src~=\"color-chocolate\"] {\n  color: rgba(210, 105, 30, 0.2);\n}\n.color-chocolate-40pct,\nimg[src~=\"color-chocolate\"] {\n  color: rgba(210, 105, 30, 0.4);\n}\n.color-chocolate-60pct,\nimg[src~=\"color-chocolate\"] {\n  color: rgba(210, 105, 30, 0.6);\n}\n.color-chocolate-80pct,\nimg[src~=\"color-chocolate\"] {\n  color: rgba(210, 105, 30, 0.8);\n}\n.bg-chocolate,\nimg[src~=\"bg-chocolate\"] {\n  background-color: #D2691E;\n}\n.bg-chocolate-20pct,\nimg[src~=\"bg-chocolate\"] {\n  background-color: rgba(210, 105, 30, 0.2);\n}\n.bg-chocolate-40pct,\nimg[src~=\"bg-chocolate\"] {\n  background-color: rgba(210, 105, 30, 0.4);\n}\n.bg-chocolate-60pct,\nimg[src~=\"bg-chocolate\"] {\n  background-color: rgba(210, 105, 30, 0.6);\n}\n.bg-chocolate-80pct,\nimg[src~=\"bg-chocolate\"] {\n  background-color: rgba(210, 105, 30, 0.8);\n}\n.bc-chocolate,\nimg[src~=\"bc-chocolate\"] {\n  border-color: #D2691E;\n}\n.bc-chocolate-20pct,\nimg[src~=\"bc-chocolate\"] {\n  border-color: rgba(210, 105, 30, 0.2);\n}\n.bc-chocolate-40pct,\nimg[src~=\"bc-chocolate\"] {\n  border-color: rgba(210, 105, 30, 0.4);\n}\n.bc-chocolate-60pct,\nimg[src~=\"bc-chocolate\"] {\n  border-color: rgba(210, 105, 30, 0.6);\n}\n.bc-chocolate-80pct,\nimg[src~=\"bc-chocolate\"] {\n  border-color: rgba(210, 105, 30, 0.8);\n}\n.color-coral,\nimg[src~=\"color-coral\"] {\n  color: #FF7F50;\n}\n.color-coral-20pct,\nimg[src~=\"color-coral\"] {\n  color: rgba(255, 127, 80, 0.2);\n}\n.color-coral-40pct,\nimg[src~=\"color-coral\"] {\n  color: rgba(255, 127, 80, 0.4);\n}\n.color-coral-60pct,\nimg[src~=\"color-coral\"] {\n  color: rgba(255, 127, 80, 0.6);\n}\n.color-coral-80pct,\nimg[src~=\"color-coral\"] {\n  color: rgba(255, 127, 80, 0.8);\n}\n.bg-coral,\nimg[src~=\"bg-coral\"] {\n  background-color: #FF7F50;\n}\n.bg-coral-20pct,\nimg[src~=\"bg-coral\"] {\n  background-color: rgba(255, 127, 80, 0.2);\n}\n.bg-coral-40pct,\nimg[src~=\"bg-coral\"] {\n  background-color: rgba(255, 127, 80, 0.4);\n}\n.bg-coral-60pct,\nimg[src~=\"bg-coral\"] {\n  background-color: rgba(255, 127, 80, 0.6);\n}\n.bg-coral-80pct,\nimg[src~=\"bg-coral\"] {\n  background-color: rgba(255, 127, 80, 0.8);\n}\n.bc-coral,\nimg[src~=\"bc-coral\"] {\n  border-color: #FF7F50;\n}\n.bc-coral-20pct,\nimg[src~=\"bc-coral\"] {\n  border-color: rgba(255, 127, 80, 0.2);\n}\n.bc-coral-40pct,\nimg[src~=\"bc-coral\"] {\n  border-color: rgba(255, 127, 80, 0.4);\n}\n.bc-coral-60pct,\nimg[src~=\"bc-coral\"] {\n  border-color: rgba(255, 127, 80, 0.6);\n}\n.bc-coral-80pct,\nimg[src~=\"bc-coral\"] {\n  border-color: rgba(255, 127, 80, 0.8);\n}\n.color-cornflowerblue,\nimg[src~=\"color-cornflowerblue\"] {\n  color: #6495ED;\n}\n.color-cornflowerblue-20pct,\nimg[src~=\"color-cornflowerblue\"] {\n  color: rgba(100, 149, 237, 0.2);\n}\n.color-cornflowerblue-40pct,\nimg[src~=\"color-cornflowerblue\"] {\n  color: rgba(100, 149, 237, 0.4);\n}\n.color-cornflowerblue-60pct,\nimg[src~=\"color-cornflowerblue\"] {\n  color: rgba(100, 149, 237, 0.6);\n}\n.color-cornflowerblue-80pct,\nimg[src~=\"color-cornflowerblue\"] {\n  color: rgba(100, 149, 237, 0.8);\n}\n.bg-cornflowerblue,\nimg[src~=\"bg-cornflowerblue\"] {\n  background-color: #6495ED;\n}\n.bg-cornflowerblue-20pct,\nimg[src~=\"bg-cornflowerblue\"] {\n  background-color: rgba(100, 149, 237, 0.2);\n}\n.bg-cornflowerblue-40pct,\nimg[src~=\"bg-cornflowerblue\"] {\n  background-color: rgba(100, 149, 237, 0.4);\n}\n.bg-cornflowerblue-60pct,\nimg[src~=\"bg-cornflowerblue\"] {\n  background-color: rgba(100, 149, 237, 0.6);\n}\n.bg-cornflowerblue-80pct,\nimg[src~=\"bg-cornflowerblue\"] {\n  background-color: rgba(100, 149, 237, 0.8);\n}\n.bc-cornflowerblue,\nimg[src~=\"bc-cornflowerblue\"] {\n  border-color: #6495ED;\n}\n.bc-cornflowerblue-20pct,\nimg[src~=\"bc-cornflowerblue\"] {\n  border-color: rgba(100, 149, 237, 0.2);\n}\n.bc-cornflowerblue-40pct,\nimg[src~=\"bc-cornflowerblue\"] {\n  border-color: rgba(100, 149, 237, 0.4);\n}\n.bc-cornflowerblue-60pct,\nimg[src~=\"bc-cornflowerblue\"] {\n  border-color: rgba(100, 149, 237, 0.6);\n}\n.bc-cornflowerblue-80pct,\nimg[src~=\"bc-cornflowerblue\"] {\n  border-color: rgba(100, 149, 237, 0.8);\n}\n.color-cornsilk,\nimg[src~=\"color-cornsilk\"] {\n  color: #FFF8DC;\n}\n.color-cornsilk-20pct,\nimg[src~=\"color-cornsilk\"] {\n  color: rgba(255, 248, 220, 0.2);\n}\n.color-cornsilk-40pct,\nimg[src~=\"color-cornsilk\"] {\n  color: rgba(255, 248, 220, 0.4);\n}\n.color-cornsilk-60pct,\nimg[src~=\"color-cornsilk\"] {\n  color: rgba(255, 248, 220, 0.6);\n}\n.color-cornsilk-80pct,\nimg[src~=\"color-cornsilk\"] {\n  color: rgba(255, 248, 220, 0.8);\n}\n.bg-cornsilk,\nimg[src~=\"bg-cornsilk\"] {\n  background-color: #FFF8DC;\n}\n.bg-cornsilk-20pct,\nimg[src~=\"bg-cornsilk\"] {\n  background-color: rgba(255, 248, 220, 0.2);\n}\n.bg-cornsilk-40pct,\nimg[src~=\"bg-cornsilk\"] {\n  background-color: rgba(255, 248, 220, 0.4);\n}\n.bg-cornsilk-60pct,\nimg[src~=\"bg-cornsilk\"] {\n  background-color: rgba(255, 248, 220, 0.6);\n}\n.bg-cornsilk-80pct,\nimg[src~=\"bg-cornsilk\"] {\n  background-color: rgba(255, 248, 220, 0.8);\n}\n.bc-cornsilk,\nimg[src~=\"bc-cornsilk\"] {\n  border-color: #FFF8DC;\n}\n.bc-cornsilk-20pct,\nimg[src~=\"bc-cornsilk\"] {\n  border-color: rgba(255, 248, 220, 0.2);\n}\n.bc-cornsilk-40pct,\nimg[src~=\"bc-cornsilk\"] {\n  border-color: rgba(255, 248, 220, 0.4);\n}\n.bc-cornsilk-60pct,\nimg[src~=\"bc-cornsilk\"] {\n  border-color: rgba(255, 248, 220, 0.6);\n}\n.bc-cornsilk-80pct,\nimg[src~=\"bc-cornsilk\"] {\n  border-color: rgba(255, 248, 220, 0.8);\n}\n.color-crimson,\nimg[src~=\"color-crimson\"] {\n  color: #DC143C;\n}\n.color-crimson-20pct,\nimg[src~=\"color-crimson\"] {\n  color: rgba(220, 20, 60, 0.2);\n}\n.color-crimson-40pct,\nimg[src~=\"color-crimson\"] {\n  color: rgba(220, 20, 60, 0.4);\n}\n.color-crimson-60pct,\nimg[src~=\"color-crimson\"] {\n  color: rgba(220, 20, 60, 0.6);\n}\n.color-crimson-80pct,\nimg[src~=\"color-crimson\"] {\n  color: rgba(220, 20, 60, 0.8);\n}\n.bg-crimson,\nimg[src~=\"bg-crimson\"] {\n  background-color: #DC143C;\n}\n.bg-crimson-20pct,\nimg[src~=\"bg-crimson\"] {\n  background-color: rgba(220, 20, 60, 0.2);\n}\n.bg-crimson-40pct,\nimg[src~=\"bg-crimson\"] {\n  background-color: rgba(220, 20, 60, 0.4);\n}\n.bg-crimson-60pct,\nimg[src~=\"bg-crimson\"] {\n  background-color: rgba(220, 20, 60, 0.6);\n}\n.bg-crimson-80pct,\nimg[src~=\"bg-crimson\"] {\n  background-color: rgba(220, 20, 60, 0.8);\n}\n.bc-crimson,\nimg[src~=\"bc-crimson\"] {\n  border-color: #DC143C;\n}\n.bc-crimson-20pct,\nimg[src~=\"bc-crimson\"] {\n  border-color: rgba(220, 20, 60, 0.2);\n}\n.bc-crimson-40pct,\nimg[src~=\"bc-crimson\"] {\n  border-color: rgba(220, 20, 60, 0.4);\n}\n.bc-crimson-60pct,\nimg[src~=\"bc-crimson\"] {\n  border-color: rgba(220, 20, 60, 0.6);\n}\n.bc-crimson-80pct,\nimg[src~=\"bc-crimson\"] {\n  border-color: rgba(220, 20, 60, 0.8);\n}\n.color-cyan,\nimg[src~=\"color-cyan\"] {\n  color: #00FFFF;\n}\n.color-cyan-20pct,\nimg[src~=\"color-cyan\"] {\n  color: rgba(0, 255, 255, 0.2);\n}\n.color-cyan-40pct,\nimg[src~=\"color-cyan\"] {\n  color: rgba(0, 255, 255, 0.4);\n}\n.color-cyan-60pct,\nimg[src~=\"color-cyan\"] {\n  color: rgba(0, 255, 255, 0.6);\n}\n.color-cyan-80pct,\nimg[src~=\"color-cyan\"] {\n  color: rgba(0, 255, 255, 0.8);\n}\n.bg-cyan,\nimg[src~=\"bg-cyan\"] {\n  background-color: #00FFFF;\n}\n.bg-cyan-20pct,\nimg[src~=\"bg-cyan\"] {\n  background-color: rgba(0, 255, 255, 0.2);\n}\n.bg-cyan-40pct,\nimg[src~=\"bg-cyan\"] {\n  background-color: rgba(0, 255, 255, 0.4);\n}\n.bg-cyan-60pct,\nimg[src~=\"bg-cyan\"] {\n  background-color: rgba(0, 255, 255, 0.6);\n}\n.bg-cyan-80pct,\nimg[src~=\"bg-cyan\"] {\n  background-color: rgba(0, 255, 255, 0.8);\n}\n.bc-cyan,\nimg[src~=\"bc-cyan\"] {\n  border-color: #00FFFF;\n}\n.bc-cyan-20pct,\nimg[src~=\"bc-cyan\"] {\n  border-color: rgba(0, 255, 255, 0.2);\n}\n.bc-cyan-40pct,\nimg[src~=\"bc-cyan\"] {\n  border-color: rgba(0, 255, 255, 0.4);\n}\n.bc-cyan-60pct,\nimg[src~=\"bc-cyan\"] {\n  border-color: rgba(0, 255, 255, 0.6);\n}\n.bc-cyan-80pct,\nimg[src~=\"bc-cyan\"] {\n  border-color: rgba(0, 255, 255, 0.8);\n}\n.color-darkblue,\nimg[src~=\"color-darkblue\"] {\n  color: #00008B;\n}\n.color-darkblue-20pct,\nimg[src~=\"color-darkblue\"] {\n  color: rgba(0, 0, 139, 0.2);\n}\n.color-darkblue-40pct,\nimg[src~=\"color-darkblue\"] {\n  color: rgba(0, 0, 139, 0.4);\n}\n.color-darkblue-60pct,\nimg[src~=\"color-darkblue\"] {\n  color: rgba(0, 0, 139, 0.6);\n}\n.color-darkblue-80pct,\nimg[src~=\"color-darkblue\"] {\n  color: rgba(0, 0, 139, 0.8);\n}\n.bg-darkblue,\nimg[src~=\"bg-darkblue\"] {\n  background-color: #00008B;\n}\n.bg-darkblue-20pct,\nimg[src~=\"bg-darkblue\"] {\n  background-color: rgba(0, 0, 139, 0.2);\n}\n.bg-darkblue-40pct,\nimg[src~=\"bg-darkblue\"] {\n  background-color: rgba(0, 0, 139, 0.4);\n}\n.bg-darkblue-60pct,\nimg[src~=\"bg-darkblue\"] {\n  background-color: rgba(0, 0, 139, 0.6);\n}\n.bg-darkblue-80pct,\nimg[src~=\"bg-darkblue\"] {\n  background-color: rgba(0, 0, 139, 0.8);\n}\n.bc-darkblue,\nimg[src~=\"bc-darkblue\"] {\n  border-color: #00008B;\n}\n.bc-darkblue-20pct,\nimg[src~=\"bc-darkblue\"] {\n  border-color: rgba(0, 0, 139, 0.2);\n}\n.bc-darkblue-40pct,\nimg[src~=\"bc-darkblue\"] {\n  border-color: rgba(0, 0, 139, 0.4);\n}\n.bc-darkblue-60pct,\nimg[src~=\"bc-darkblue\"] {\n  border-color: rgba(0, 0, 139, 0.6);\n}\n.bc-darkblue-80pct,\nimg[src~=\"bc-darkblue\"] {\n  border-color: rgba(0, 0, 139, 0.8);\n}\n.color-darkcyan,\nimg[src~=\"color-darkcyan\"] {\n  color: #008B8B;\n}\n.color-darkcyan-20pct,\nimg[src~=\"color-darkcyan\"] {\n  color: rgba(0, 139, 139, 0.2);\n}\n.color-darkcyan-40pct,\nimg[src~=\"color-darkcyan\"] {\n  color: rgba(0, 139, 139, 0.4);\n}\n.color-darkcyan-60pct,\nimg[src~=\"color-darkcyan\"] {\n  color: rgba(0, 139, 139, 0.6);\n}\n.color-darkcyan-80pct,\nimg[src~=\"color-darkcyan\"] {\n  color: rgba(0, 139, 139, 0.8);\n}\n.bg-darkcyan,\nimg[src~=\"bg-darkcyan\"] {\n  background-color: #008B8B;\n}\n.bg-darkcyan-20pct,\nimg[src~=\"bg-darkcyan\"] {\n  background-color: rgba(0, 139, 139, 0.2);\n}\n.bg-darkcyan-40pct,\nimg[src~=\"bg-darkcyan\"] {\n  background-color: rgba(0, 139, 139, 0.4);\n}\n.bg-darkcyan-60pct,\nimg[src~=\"bg-darkcyan\"] {\n  background-color: rgba(0, 139, 139, 0.6);\n}\n.bg-darkcyan-80pct,\nimg[src~=\"bg-darkcyan\"] {\n  background-color: rgba(0, 139, 139, 0.8);\n}\n.bc-darkcyan,\nimg[src~=\"bc-darkcyan\"] {\n  border-color: #008B8B;\n}\n.bc-darkcyan-20pct,\nimg[src~=\"bc-darkcyan\"] {\n  border-color: rgba(0, 139, 139, 0.2);\n}\n.bc-darkcyan-40pct,\nimg[src~=\"bc-darkcyan\"] {\n  border-color: rgba(0, 139, 139, 0.4);\n}\n.bc-darkcyan-60pct,\nimg[src~=\"bc-darkcyan\"] {\n  border-color: rgba(0, 139, 139, 0.6);\n}\n.bc-darkcyan-80pct,\nimg[src~=\"bc-darkcyan\"] {\n  border-color: rgba(0, 139, 139, 0.8);\n}\n.color-darkgoldenrod,\nimg[src~=\"color-darkgoldenrod\"] {\n  color: #B8860B;\n}\n.color-darkgoldenrod-20pct,\nimg[src~=\"color-darkgoldenrod\"] {\n  color: rgba(184, 134, 11, 0.2);\n}\n.color-darkgoldenrod-40pct,\nimg[src~=\"color-darkgoldenrod\"] {\n  color: rgba(184, 134, 11, 0.4);\n}\n.color-darkgoldenrod-60pct,\nimg[src~=\"color-darkgoldenrod\"] {\n  color: rgba(184, 134, 11, 0.6);\n}\n.color-darkgoldenrod-80pct,\nimg[src~=\"color-darkgoldenrod\"] {\n  color: rgba(184, 134, 11, 0.8);\n}\n.bg-darkgoldenrod,\nimg[src~=\"bg-darkgoldenrod\"] {\n  background-color: #B8860B;\n}\n.bg-darkgoldenrod-20pct,\nimg[src~=\"bg-darkgoldenrod\"] {\n  background-color: rgba(184, 134, 11, 0.2);\n}\n.bg-darkgoldenrod-40pct,\nimg[src~=\"bg-darkgoldenrod\"] {\n  background-color: rgba(184, 134, 11, 0.4);\n}\n.bg-darkgoldenrod-60pct,\nimg[src~=\"bg-darkgoldenrod\"] {\n  background-color: rgba(184, 134, 11, 0.6);\n}\n.bg-darkgoldenrod-80pct,\nimg[src~=\"bg-darkgoldenrod\"] {\n  background-color: rgba(184, 134, 11, 0.8);\n}\n.bc-darkgoldenrod,\nimg[src~=\"bc-darkgoldenrod\"] {\n  border-color: #B8860B;\n}\n.bc-darkgoldenrod-20pct,\nimg[src~=\"bc-darkgoldenrod\"] {\n  border-color: rgba(184, 134, 11, 0.2);\n}\n.bc-darkgoldenrod-40pct,\nimg[src~=\"bc-darkgoldenrod\"] {\n  border-color: rgba(184, 134, 11, 0.4);\n}\n.bc-darkgoldenrod-60pct,\nimg[src~=\"bc-darkgoldenrod\"] {\n  border-color: rgba(184, 134, 11, 0.6);\n}\n.bc-darkgoldenrod-80pct,\nimg[src~=\"bc-darkgoldenrod\"] {\n  border-color: rgba(184, 134, 11, 0.8);\n}\n.color-darkgray,\nimg[src~=\"color-darkgray\"] {\n  color: #A9A9A9;\n}\n.color-darkgray-20pct,\nimg[src~=\"color-darkgray\"] {\n  color: rgba(169, 169, 169, 0.2);\n}\n.color-darkgray-40pct,\nimg[src~=\"color-darkgray\"] {\n  color: rgba(169, 169, 169, 0.4);\n}\n.color-darkgray-60pct,\nimg[src~=\"color-darkgray\"] {\n  color: rgba(169, 169, 169, 0.6);\n}\n.color-darkgray-80pct,\nimg[src~=\"color-darkgray\"] {\n  color: rgba(169, 169, 169, 0.8);\n}\n.bg-darkgray,\nimg[src~=\"bg-darkgray\"] {\n  background-color: #A9A9A9;\n}\n.bg-darkgray-20pct,\nimg[src~=\"bg-darkgray\"] {\n  background-color: rgba(169, 169, 169, 0.2);\n}\n.bg-darkgray-40pct,\nimg[src~=\"bg-darkgray\"] {\n  background-color: rgba(169, 169, 169, 0.4);\n}\n.bg-darkgray-60pct,\nimg[src~=\"bg-darkgray\"] {\n  background-color: rgba(169, 169, 169, 0.6);\n}\n.bg-darkgray-80pct,\nimg[src~=\"bg-darkgray\"] {\n  background-color: rgba(169, 169, 169, 0.8);\n}\n.bc-darkgray,\nimg[src~=\"bc-darkgray\"] {\n  border-color: #A9A9A9;\n}\n.bc-darkgray-20pct,\nimg[src~=\"bc-darkgray\"] {\n  border-color: rgba(169, 169, 169, 0.2);\n}\n.bc-darkgray-40pct,\nimg[src~=\"bc-darkgray\"] {\n  border-color: rgba(169, 169, 169, 0.4);\n}\n.bc-darkgray-60pct,\nimg[src~=\"bc-darkgray\"] {\n  border-color: rgba(169, 169, 169, 0.6);\n}\n.bc-darkgray-80pct,\nimg[src~=\"bc-darkgray\"] {\n  border-color: rgba(169, 169, 169, 0.8);\n}\n.color-darkgreen,\nimg[src~=\"color-darkgreen\"] {\n  color: #006400;\n}\n.color-darkgreen-20pct,\nimg[src~=\"color-darkgreen\"] {\n  color: rgba(0, 100, 0, 0.2);\n}\n.color-darkgreen-40pct,\nimg[src~=\"color-darkgreen\"] {\n  color: rgba(0, 100, 0, 0.4);\n}\n.color-darkgreen-60pct,\nimg[src~=\"color-darkgreen\"] {\n  color: rgba(0, 100, 0, 0.6);\n}\n.color-darkgreen-80pct,\nimg[src~=\"color-darkgreen\"] {\n  color: rgba(0, 100, 0, 0.8);\n}\n.bg-darkgreen,\nimg[src~=\"bg-darkgreen\"] {\n  background-color: #006400;\n}\n.bg-darkgreen-20pct,\nimg[src~=\"bg-darkgreen\"] {\n  background-color: rgba(0, 100, 0, 0.2);\n}\n.bg-darkgreen-40pct,\nimg[src~=\"bg-darkgreen\"] {\n  background-color: rgba(0, 100, 0, 0.4);\n}\n.bg-darkgreen-60pct,\nimg[src~=\"bg-darkgreen\"] {\n  background-color: rgba(0, 100, 0, 0.6);\n}\n.bg-darkgreen-80pct,\nimg[src~=\"bg-darkgreen\"] {\n  background-color: rgba(0, 100, 0, 0.8);\n}\n.bc-darkgreen,\nimg[src~=\"bc-darkgreen\"] {\n  border-color: #006400;\n}\n.bc-darkgreen-20pct,\nimg[src~=\"bc-darkgreen\"] {\n  border-color: rgba(0, 100, 0, 0.2);\n}\n.bc-darkgreen-40pct,\nimg[src~=\"bc-darkgreen\"] {\n  border-color: rgba(0, 100, 0, 0.4);\n}\n.bc-darkgreen-60pct,\nimg[src~=\"bc-darkgreen\"] {\n  border-color: rgba(0, 100, 0, 0.6);\n}\n.bc-darkgreen-80pct,\nimg[src~=\"bc-darkgreen\"] {\n  border-color: rgba(0, 100, 0, 0.8);\n}\n.color-darkgrey,\nimg[src~=\"color-darkgrey\"] {\n  color: #A9A9A9;\n}\n.color-darkgrey-20pct,\nimg[src~=\"color-darkgrey\"] {\n  color: rgba(169, 169, 169, 0.2);\n}\n.color-darkgrey-40pct,\nimg[src~=\"color-darkgrey\"] {\n  color: rgba(169, 169, 169, 0.4);\n}\n.color-darkgrey-60pct,\nimg[src~=\"color-darkgrey\"] {\n  color: rgba(169, 169, 169, 0.6);\n}\n.color-darkgrey-80pct,\nimg[src~=\"color-darkgrey\"] {\n  color: rgba(169, 169, 169, 0.8);\n}\n.bg-darkgrey,\nimg[src~=\"bg-darkgrey\"] {\n  background-color: #A9A9A9;\n}\n.bg-darkgrey-20pct,\nimg[src~=\"bg-darkgrey\"] {\n  background-color: rgba(169, 169, 169, 0.2);\n}\n.bg-darkgrey-40pct,\nimg[src~=\"bg-darkgrey\"] {\n  background-color: rgba(169, 169, 169, 0.4);\n}\n.bg-darkgrey-60pct,\nimg[src~=\"bg-darkgrey\"] {\n  background-color: rgba(169, 169, 169, 0.6);\n}\n.bg-darkgrey-80pct,\nimg[src~=\"bg-darkgrey\"] {\n  background-color: rgba(169, 169, 169, 0.8);\n}\n.bc-darkgrey,\nimg[src~=\"bc-darkgrey\"] {\n  border-color: #A9A9A9;\n}\n.bc-darkgrey-20pct,\nimg[src~=\"bc-darkgrey\"] {\n  border-color: rgba(169, 169, 169, 0.2);\n}\n.bc-darkgrey-40pct,\nimg[src~=\"bc-darkgrey\"] {\n  border-color: rgba(169, 169, 169, 0.4);\n}\n.bc-darkgrey-60pct,\nimg[src~=\"bc-darkgrey\"] {\n  border-color: rgba(169, 169, 169, 0.6);\n}\n.bc-darkgrey-80pct,\nimg[src~=\"bc-darkgrey\"] {\n  border-color: rgba(169, 169, 169, 0.8);\n}\n.color-darkkhaki,\nimg[src~=\"color-darkkhaki\"] {\n  color: #BDB76B;\n}\n.color-darkkhaki-20pct,\nimg[src~=\"color-darkkhaki\"] {\n  color: rgba(189, 183, 107, 0.2);\n}\n.color-darkkhaki-40pct,\nimg[src~=\"color-darkkhaki\"] {\n  color: rgba(189, 183, 107, 0.4);\n}\n.color-darkkhaki-60pct,\nimg[src~=\"color-darkkhaki\"] {\n  color: rgba(189, 183, 107, 0.6);\n}\n.color-darkkhaki-80pct,\nimg[src~=\"color-darkkhaki\"] {\n  color: rgba(189, 183, 107, 0.8);\n}\n.bg-darkkhaki,\nimg[src~=\"bg-darkkhaki\"] {\n  background-color: #BDB76B;\n}\n.bg-darkkhaki-20pct,\nimg[src~=\"bg-darkkhaki\"] {\n  background-color: rgba(189, 183, 107, 0.2);\n}\n.bg-darkkhaki-40pct,\nimg[src~=\"bg-darkkhaki\"] {\n  background-color: rgba(189, 183, 107, 0.4);\n}\n.bg-darkkhaki-60pct,\nimg[src~=\"bg-darkkhaki\"] {\n  background-color: rgba(189, 183, 107, 0.6);\n}\n.bg-darkkhaki-80pct,\nimg[src~=\"bg-darkkhaki\"] {\n  background-color: rgba(189, 183, 107, 0.8);\n}\n.bc-darkkhaki,\nimg[src~=\"bc-darkkhaki\"] {\n  border-color: #BDB76B;\n}\n.bc-darkkhaki-20pct,\nimg[src~=\"bc-darkkhaki\"] {\n  border-color: rgba(189, 183, 107, 0.2);\n}\n.bc-darkkhaki-40pct,\nimg[src~=\"bc-darkkhaki\"] {\n  border-color: rgba(189, 183, 107, 0.4);\n}\n.bc-darkkhaki-60pct,\nimg[src~=\"bc-darkkhaki\"] {\n  border-color: rgba(189, 183, 107, 0.6);\n}\n.bc-darkkhaki-80pct,\nimg[src~=\"bc-darkkhaki\"] {\n  border-color: rgba(189, 183, 107, 0.8);\n}\n.color-darkmagenta,\nimg[src~=\"color-darkmagenta\"] {\n  color: #8B008B;\n}\n.color-darkmagenta-20pct,\nimg[src~=\"color-darkmagenta\"] {\n  color: rgba(139, 0, 139, 0.2);\n}\n.color-darkmagenta-40pct,\nimg[src~=\"color-darkmagenta\"] {\n  color: rgba(139, 0, 139, 0.4);\n}\n.color-darkmagenta-60pct,\nimg[src~=\"color-darkmagenta\"] {\n  color: rgba(139, 0, 139, 0.6);\n}\n.color-darkmagenta-80pct,\nimg[src~=\"color-darkmagenta\"] {\n  color: rgba(139, 0, 139, 0.8);\n}\n.bg-darkmagenta,\nimg[src~=\"bg-darkmagenta\"] {\n  background-color: #8B008B;\n}\n.bg-darkmagenta-20pct,\nimg[src~=\"bg-darkmagenta\"] {\n  background-color: rgba(139, 0, 139, 0.2);\n}\n.bg-darkmagenta-40pct,\nimg[src~=\"bg-darkmagenta\"] {\n  background-color: rgba(139, 0, 139, 0.4);\n}\n.bg-darkmagenta-60pct,\nimg[src~=\"bg-darkmagenta\"] {\n  background-color: rgba(139, 0, 139, 0.6);\n}\n.bg-darkmagenta-80pct,\nimg[src~=\"bg-darkmagenta\"] {\n  background-color: rgba(139, 0, 139, 0.8);\n}\n.bc-darkmagenta,\nimg[src~=\"bc-darkmagenta\"] {\n  border-color: #8B008B;\n}\n.bc-darkmagenta-20pct,\nimg[src~=\"bc-darkmagenta\"] {\n  border-color: rgba(139, 0, 139, 0.2);\n}\n.bc-darkmagenta-40pct,\nimg[src~=\"bc-darkmagenta\"] {\n  border-color: rgba(139, 0, 139, 0.4);\n}\n.bc-darkmagenta-60pct,\nimg[src~=\"bc-darkmagenta\"] {\n  border-color: rgba(139, 0, 139, 0.6);\n}\n.bc-darkmagenta-80pct,\nimg[src~=\"bc-darkmagenta\"] {\n  border-color: rgba(139, 0, 139, 0.8);\n}\n.color-darkolivegreen,\nimg[src~=\"color-darkolivegreen\"] {\n  color: #556B2F;\n}\n.color-darkolivegreen-20pct,\nimg[src~=\"color-darkolivegreen\"] {\n  color: rgba(85, 107, 47, 0.2);\n}\n.color-darkolivegreen-40pct,\nimg[src~=\"color-darkolivegreen\"] {\n  color: rgba(85, 107, 47, 0.4);\n}\n.color-darkolivegreen-60pct,\nimg[src~=\"color-darkolivegreen\"] {\n  color: rgba(85, 107, 47, 0.6);\n}\n.color-darkolivegreen-80pct,\nimg[src~=\"color-darkolivegreen\"] {\n  color: rgba(85, 107, 47, 0.8);\n}\n.bg-darkolivegreen,\nimg[src~=\"bg-darkolivegreen\"] {\n  background-color: #556B2F;\n}\n.bg-darkolivegreen-20pct,\nimg[src~=\"bg-darkolivegreen\"] {\n  background-color: rgba(85, 107, 47, 0.2);\n}\n.bg-darkolivegreen-40pct,\nimg[src~=\"bg-darkolivegreen\"] {\n  background-color: rgba(85, 107, 47, 0.4);\n}\n.bg-darkolivegreen-60pct,\nimg[src~=\"bg-darkolivegreen\"] {\n  background-color: rgba(85, 107, 47, 0.6);\n}\n.bg-darkolivegreen-80pct,\nimg[src~=\"bg-darkolivegreen\"] {\n  background-color: rgba(85, 107, 47, 0.8);\n}\n.bc-darkolivegreen,\nimg[src~=\"bc-darkolivegreen\"] {\n  border-color: #556B2F;\n}\n.bc-darkolivegreen-20pct,\nimg[src~=\"bc-darkolivegreen\"] {\n  border-color: rgba(85, 107, 47, 0.2);\n}\n.bc-darkolivegreen-40pct,\nimg[src~=\"bc-darkolivegreen\"] {\n  border-color: rgba(85, 107, 47, 0.4);\n}\n.bc-darkolivegreen-60pct,\nimg[src~=\"bc-darkolivegreen\"] {\n  border-color: rgba(85, 107, 47, 0.6);\n}\n.bc-darkolivegreen-80pct,\nimg[src~=\"bc-darkolivegreen\"] {\n  border-color: rgba(85, 107, 47, 0.8);\n}\n.color-darkorange,\nimg[src~=\"color-darkorange\"] {\n  color: #FF8C00;\n}\n.color-darkorange-20pct,\nimg[src~=\"color-darkorange\"] {\n  color: rgba(255, 140, 0, 0.2);\n}\n.color-darkorange-40pct,\nimg[src~=\"color-darkorange\"] {\n  color: rgba(255, 140, 0, 0.4);\n}\n.color-darkorange-60pct,\nimg[src~=\"color-darkorange\"] {\n  color: rgba(255, 140, 0, 0.6);\n}\n.color-darkorange-80pct,\nimg[src~=\"color-darkorange\"] {\n  color: rgba(255, 140, 0, 0.8);\n}\n.bg-darkorange,\nimg[src~=\"bg-darkorange\"] {\n  background-color: #FF8C00;\n}\n.bg-darkorange-20pct,\nimg[src~=\"bg-darkorange\"] {\n  background-color: rgba(255, 140, 0, 0.2);\n}\n.bg-darkorange-40pct,\nimg[src~=\"bg-darkorange\"] {\n  background-color: rgba(255, 140, 0, 0.4);\n}\n.bg-darkorange-60pct,\nimg[src~=\"bg-darkorange\"] {\n  background-color: rgba(255, 140, 0, 0.6);\n}\n.bg-darkorange-80pct,\nimg[src~=\"bg-darkorange\"] {\n  background-color: rgba(255, 140, 0, 0.8);\n}\n.bc-darkorange,\nimg[src~=\"bc-darkorange\"] {\n  border-color: #FF8C00;\n}\n.bc-darkorange-20pct,\nimg[src~=\"bc-darkorange\"] {\n  border-color: rgba(255, 140, 0, 0.2);\n}\n.bc-darkorange-40pct,\nimg[src~=\"bc-darkorange\"] {\n  border-color: rgba(255, 140, 0, 0.4);\n}\n.bc-darkorange-60pct,\nimg[src~=\"bc-darkorange\"] {\n  border-color: rgba(255, 140, 0, 0.6);\n}\n.bc-darkorange-80pct,\nimg[src~=\"bc-darkorange\"] {\n  border-color: rgba(255, 140, 0, 0.8);\n}\n.color-darkorchid,\nimg[src~=\"color-darkorchid\"] {\n  color: #9932CC;\n}\n.color-darkorchid-20pct,\nimg[src~=\"color-darkorchid\"] {\n  color: rgba(153, 50, 204, 0.2);\n}\n.color-darkorchid-40pct,\nimg[src~=\"color-darkorchid\"] {\n  color: rgba(153, 50, 204, 0.4);\n}\n.color-darkorchid-60pct,\nimg[src~=\"color-darkorchid\"] {\n  color: rgba(153, 50, 204, 0.6);\n}\n.color-darkorchid-80pct,\nimg[src~=\"color-darkorchid\"] {\n  color: rgba(153, 50, 204, 0.8);\n}\n.bg-darkorchid,\nimg[src~=\"bg-darkorchid\"] {\n  background-color: #9932CC;\n}\n.bg-darkorchid-20pct,\nimg[src~=\"bg-darkorchid\"] {\n  background-color: rgba(153, 50, 204, 0.2);\n}\n.bg-darkorchid-40pct,\nimg[src~=\"bg-darkorchid\"] {\n  background-color: rgba(153, 50, 204, 0.4);\n}\n.bg-darkorchid-60pct,\nimg[src~=\"bg-darkorchid\"] {\n  background-color: rgba(153, 50, 204, 0.6);\n}\n.bg-darkorchid-80pct,\nimg[src~=\"bg-darkorchid\"] {\n  background-color: rgba(153, 50, 204, 0.8);\n}\n.bc-darkorchid,\nimg[src~=\"bc-darkorchid\"] {\n  border-color: #9932CC;\n}\n.bc-darkorchid-20pct,\nimg[src~=\"bc-darkorchid\"] {\n  border-color: rgba(153, 50, 204, 0.2);\n}\n.bc-darkorchid-40pct,\nimg[src~=\"bc-darkorchid\"] {\n  border-color: rgba(153, 50, 204, 0.4);\n}\n.bc-darkorchid-60pct,\nimg[src~=\"bc-darkorchid\"] {\n  border-color: rgba(153, 50, 204, 0.6);\n}\n.bc-darkorchid-80pct,\nimg[src~=\"bc-darkorchid\"] {\n  border-color: rgba(153, 50, 204, 0.8);\n}\n.color-darkred,\nimg[src~=\"color-darkred\"] {\n  color: #8B0000;\n}\n.color-darkred-20pct,\nimg[src~=\"color-darkred\"] {\n  color: rgba(139, 0, 0, 0.2);\n}\n.color-darkred-40pct,\nimg[src~=\"color-darkred\"] {\n  color: rgba(139, 0, 0, 0.4);\n}\n.color-darkred-60pct,\nimg[src~=\"color-darkred\"] {\n  color: rgba(139, 0, 0, 0.6);\n}\n.color-darkred-80pct,\nimg[src~=\"color-darkred\"] {\n  color: rgba(139, 0, 0, 0.8);\n}\n.bg-darkred,\nimg[src~=\"bg-darkred\"] {\n  background-color: #8B0000;\n}\n.bg-darkred-20pct,\nimg[src~=\"bg-darkred\"] {\n  background-color: rgba(139, 0, 0, 0.2);\n}\n.bg-darkred-40pct,\nimg[src~=\"bg-darkred\"] {\n  background-color: rgba(139, 0, 0, 0.4);\n}\n.bg-darkred-60pct,\nimg[src~=\"bg-darkred\"] {\n  background-color: rgba(139, 0, 0, 0.6);\n}\n.bg-darkred-80pct,\nimg[src~=\"bg-darkred\"] {\n  background-color: rgba(139, 0, 0, 0.8);\n}\n.bc-darkred,\nimg[src~=\"bc-darkred\"] {\n  border-color: #8B0000;\n}\n.bc-darkred-20pct,\nimg[src~=\"bc-darkred\"] {\n  border-color: rgba(139, 0, 0, 0.2);\n}\n.bc-darkred-40pct,\nimg[src~=\"bc-darkred\"] {\n  border-color: rgba(139, 0, 0, 0.4);\n}\n.bc-darkred-60pct,\nimg[src~=\"bc-darkred\"] {\n  border-color: rgba(139, 0, 0, 0.6);\n}\n.bc-darkred-80pct,\nimg[src~=\"bc-darkred\"] {\n  border-color: rgba(139, 0, 0, 0.8);\n}\n.color-darksalmon,\nimg[src~=\"color-darksalmon\"] {\n  color: #E9967A;\n}\n.color-darksalmon-20pct,\nimg[src~=\"color-darksalmon\"] {\n  color: rgba(233, 150, 122, 0.2);\n}\n.color-darksalmon-40pct,\nimg[src~=\"color-darksalmon\"] {\n  color: rgba(233, 150, 122, 0.4);\n}\n.color-darksalmon-60pct,\nimg[src~=\"color-darksalmon\"] {\n  color: rgba(233, 150, 122, 0.6);\n}\n.color-darksalmon-80pct,\nimg[src~=\"color-darksalmon\"] {\n  color: rgba(233, 150, 122, 0.8);\n}\n.bg-darksalmon,\nimg[src~=\"bg-darksalmon\"] {\n  background-color: #E9967A;\n}\n.bg-darksalmon-20pct,\nimg[src~=\"bg-darksalmon\"] {\n  background-color: rgba(233, 150, 122, 0.2);\n}\n.bg-darksalmon-40pct,\nimg[src~=\"bg-darksalmon\"] {\n  background-color: rgba(233, 150, 122, 0.4);\n}\n.bg-darksalmon-60pct,\nimg[src~=\"bg-darksalmon\"] {\n  background-color: rgba(233, 150, 122, 0.6);\n}\n.bg-darksalmon-80pct,\nimg[src~=\"bg-darksalmon\"] {\n  background-color: rgba(233, 150, 122, 0.8);\n}\n.bc-darksalmon,\nimg[src~=\"bc-darksalmon\"] {\n  border-color: #E9967A;\n}\n.bc-darksalmon-20pct,\nimg[src~=\"bc-darksalmon\"] {\n  border-color: rgba(233, 150, 122, 0.2);\n}\n.bc-darksalmon-40pct,\nimg[src~=\"bc-darksalmon\"] {\n  border-color: rgba(233, 150, 122, 0.4);\n}\n.bc-darksalmon-60pct,\nimg[src~=\"bc-darksalmon\"] {\n  border-color: rgba(233, 150, 122, 0.6);\n}\n.bc-darksalmon-80pct,\nimg[src~=\"bc-darksalmon\"] {\n  border-color: rgba(233, 150, 122, 0.8);\n}\n.color-darkseagreen,\nimg[src~=\"color-darkseagreen\"] {\n  color: #8FBC8F;\n}\n.color-darkseagreen-20pct,\nimg[src~=\"color-darkseagreen\"] {\n  color: rgba(143, 188, 143, 0.2);\n}\n.color-darkseagreen-40pct,\nimg[src~=\"color-darkseagreen\"] {\n  color: rgba(143, 188, 143, 0.4);\n}\n.color-darkseagreen-60pct,\nimg[src~=\"color-darkseagreen\"] {\n  color: rgba(143, 188, 143, 0.6);\n}\n.color-darkseagreen-80pct,\nimg[src~=\"color-darkseagreen\"] {\n  color: rgba(143, 188, 143, 0.8);\n}\n.bg-darkseagreen,\nimg[src~=\"bg-darkseagreen\"] {\n  background-color: #8FBC8F;\n}\n.bg-darkseagreen-20pct,\nimg[src~=\"bg-darkseagreen\"] {\n  background-color: rgba(143, 188, 143, 0.2);\n}\n.bg-darkseagreen-40pct,\nimg[src~=\"bg-darkseagreen\"] {\n  background-color: rgba(143, 188, 143, 0.4);\n}\n.bg-darkseagreen-60pct,\nimg[src~=\"bg-darkseagreen\"] {\n  background-color: rgba(143, 188, 143, 0.6);\n}\n.bg-darkseagreen-80pct,\nimg[src~=\"bg-darkseagreen\"] {\n  background-color: rgba(143, 188, 143, 0.8);\n}\n.bc-darkseagreen,\nimg[src~=\"bc-darkseagreen\"] {\n  border-color: #8FBC8F;\n}\n.bc-darkseagreen-20pct,\nimg[src~=\"bc-darkseagreen\"] {\n  border-color: rgba(143, 188, 143, 0.2);\n}\n.bc-darkseagreen-40pct,\nimg[src~=\"bc-darkseagreen\"] {\n  border-color: rgba(143, 188, 143, 0.4);\n}\n.bc-darkseagreen-60pct,\nimg[src~=\"bc-darkseagreen\"] {\n  border-color: rgba(143, 188, 143, 0.6);\n}\n.bc-darkseagreen-80pct,\nimg[src~=\"bc-darkseagreen\"] {\n  border-color: rgba(143, 188, 143, 0.8);\n}\n.color-darkslateblue,\nimg[src~=\"color-darkslateblue\"] {\n  color: #483D8B;\n}\n.color-darkslateblue-20pct,\nimg[src~=\"color-darkslateblue\"] {\n  color: rgba(72, 61, 139, 0.2);\n}\n.color-darkslateblue-40pct,\nimg[src~=\"color-darkslateblue\"] {\n  color: rgba(72, 61, 139, 0.4);\n}\n.color-darkslateblue-60pct,\nimg[src~=\"color-darkslateblue\"] {\n  color: rgba(72, 61, 139, 0.6);\n}\n.color-darkslateblue-80pct,\nimg[src~=\"color-darkslateblue\"] {\n  color: rgba(72, 61, 139, 0.8);\n}\n.bg-darkslateblue,\nimg[src~=\"bg-darkslateblue\"] {\n  background-color: #483D8B;\n}\n.bg-darkslateblue-20pct,\nimg[src~=\"bg-darkslateblue\"] {\n  background-color: rgba(72, 61, 139, 0.2);\n}\n.bg-darkslateblue-40pct,\nimg[src~=\"bg-darkslateblue\"] {\n  background-color: rgba(72, 61, 139, 0.4);\n}\n.bg-darkslateblue-60pct,\nimg[src~=\"bg-darkslateblue\"] {\n  background-color: rgba(72, 61, 139, 0.6);\n}\n.bg-darkslateblue-80pct,\nimg[src~=\"bg-darkslateblue\"] {\n  background-color: rgba(72, 61, 139, 0.8);\n}\n.bc-darkslateblue,\nimg[src~=\"bc-darkslateblue\"] {\n  border-color: #483D8B;\n}\n.bc-darkslateblue-20pct,\nimg[src~=\"bc-darkslateblue\"] {\n  border-color: rgba(72, 61, 139, 0.2);\n}\n.bc-darkslateblue-40pct,\nimg[src~=\"bc-darkslateblue\"] {\n  border-color: rgba(72, 61, 139, 0.4);\n}\n.bc-darkslateblue-60pct,\nimg[src~=\"bc-darkslateblue\"] {\n  border-color: rgba(72, 61, 139, 0.6);\n}\n.bc-darkslateblue-80pct,\nimg[src~=\"bc-darkslateblue\"] {\n  border-color: rgba(72, 61, 139, 0.8);\n}\n.color-darkslategray,\nimg[src~=\"color-darkslategray\"] {\n  color: #2F4F4F;\n}\n.color-darkslategray-20pct,\nimg[src~=\"color-darkslategray\"] {\n  color: rgba(47, 79, 79, 0.2);\n}\n.color-darkslategray-40pct,\nimg[src~=\"color-darkslategray\"] {\n  color: rgba(47, 79, 79, 0.4);\n}\n.color-darkslategray-60pct,\nimg[src~=\"color-darkslategray\"] {\n  color: rgba(47, 79, 79, 0.6);\n}\n.color-darkslategray-80pct,\nimg[src~=\"color-darkslategray\"] {\n  color: rgba(47, 79, 79, 0.8);\n}\n.bg-darkslategray,\nimg[src~=\"bg-darkslategray\"] {\n  background-color: #2F4F4F;\n}\n.bg-darkslategray-20pct,\nimg[src~=\"bg-darkslategray\"] {\n  background-color: rgba(47, 79, 79, 0.2);\n}\n.bg-darkslategray-40pct,\nimg[src~=\"bg-darkslategray\"] {\n  background-color: rgba(47, 79, 79, 0.4);\n}\n.bg-darkslategray-60pct,\nimg[src~=\"bg-darkslategray\"] {\n  background-color: rgba(47, 79, 79, 0.6);\n}\n.bg-darkslategray-80pct,\nimg[src~=\"bg-darkslategray\"] {\n  background-color: rgba(47, 79, 79, 0.8);\n}\n.bc-darkslategray,\nimg[src~=\"bc-darkslategray\"] {\n  border-color: #2F4F4F;\n}\n.bc-darkslategray-20pct,\nimg[src~=\"bc-darkslategray\"] {\n  border-color: rgba(47, 79, 79, 0.2);\n}\n.bc-darkslategray-40pct,\nimg[src~=\"bc-darkslategray\"] {\n  border-color: rgba(47, 79, 79, 0.4);\n}\n.bc-darkslategray-60pct,\nimg[src~=\"bc-darkslategray\"] {\n  border-color: rgba(47, 79, 79, 0.6);\n}\n.bc-darkslategray-80pct,\nimg[src~=\"bc-darkslategray\"] {\n  border-color: rgba(47, 79, 79, 0.8);\n}\n.color-darkslategrey,\nimg[src~=\"color-darkslategrey\"] {\n  color: #2F4F4F;\n}\n.color-darkslategrey-20pct,\nimg[src~=\"color-darkslategrey\"] {\n  color: rgba(47, 79, 79, 0.2);\n}\n.color-darkslategrey-40pct,\nimg[src~=\"color-darkslategrey\"] {\n  color: rgba(47, 79, 79, 0.4);\n}\n.color-darkslategrey-60pct,\nimg[src~=\"color-darkslategrey\"] {\n  color: rgba(47, 79, 79, 0.6);\n}\n.color-darkslategrey-80pct,\nimg[src~=\"color-darkslategrey\"] {\n  color: rgba(47, 79, 79, 0.8);\n}\n.bg-darkslategrey,\nimg[src~=\"bg-darkslategrey\"] {\n  background-color: #2F4F4F;\n}\n.bg-darkslategrey-20pct,\nimg[src~=\"bg-darkslategrey\"] {\n  background-color: rgba(47, 79, 79, 0.2);\n}\n.bg-darkslategrey-40pct,\nimg[src~=\"bg-darkslategrey\"] {\n  background-color: rgba(47, 79, 79, 0.4);\n}\n.bg-darkslategrey-60pct,\nimg[src~=\"bg-darkslategrey\"] {\n  background-color: rgba(47, 79, 79, 0.6);\n}\n.bg-darkslategrey-80pct,\nimg[src~=\"bg-darkslategrey\"] {\n  background-color: rgba(47, 79, 79, 0.8);\n}\n.bc-darkslategrey,\nimg[src~=\"bc-darkslategrey\"] {\n  border-color: #2F4F4F;\n}\n.bc-darkslategrey-20pct,\nimg[src~=\"bc-darkslategrey\"] {\n  border-color: rgba(47, 79, 79, 0.2);\n}\n.bc-darkslategrey-40pct,\nimg[src~=\"bc-darkslategrey\"] {\n  border-color: rgba(47, 79, 79, 0.4);\n}\n.bc-darkslategrey-60pct,\nimg[src~=\"bc-darkslategrey\"] {\n  border-color: rgba(47, 79, 79, 0.6);\n}\n.bc-darkslategrey-80pct,\nimg[src~=\"bc-darkslategrey\"] {\n  border-color: rgba(47, 79, 79, 0.8);\n}\n.color-darkturquoise,\nimg[src~=\"color-darkturquoise\"] {\n  color: #00CED1;\n}\n.color-darkturquoise-20pct,\nimg[src~=\"color-darkturquoise\"] {\n  color: rgba(0, 206, 209, 0.2);\n}\n.color-darkturquoise-40pct,\nimg[src~=\"color-darkturquoise\"] {\n  color: rgba(0, 206, 209, 0.4);\n}\n.color-darkturquoise-60pct,\nimg[src~=\"color-darkturquoise\"] {\n  color: rgba(0, 206, 209, 0.6);\n}\n.color-darkturquoise-80pct,\nimg[src~=\"color-darkturquoise\"] {\n  color: rgba(0, 206, 209, 0.8);\n}\n.bg-darkturquoise,\nimg[src~=\"bg-darkturquoise\"] {\n  background-color: #00CED1;\n}\n.bg-darkturquoise-20pct,\nimg[src~=\"bg-darkturquoise\"] {\n  background-color: rgba(0, 206, 209, 0.2);\n}\n.bg-darkturquoise-40pct,\nimg[src~=\"bg-darkturquoise\"] {\n  background-color: rgba(0, 206, 209, 0.4);\n}\n.bg-darkturquoise-60pct,\nimg[src~=\"bg-darkturquoise\"] {\n  background-color: rgba(0, 206, 209, 0.6);\n}\n.bg-darkturquoise-80pct,\nimg[src~=\"bg-darkturquoise\"] {\n  background-color: rgba(0, 206, 209, 0.8);\n}\n.bc-darkturquoise,\nimg[src~=\"bc-darkturquoise\"] {\n  border-color: #00CED1;\n}\n.bc-darkturquoise-20pct,\nimg[src~=\"bc-darkturquoise\"] {\n  border-color: rgba(0, 206, 209, 0.2);\n}\n.bc-darkturquoise-40pct,\nimg[src~=\"bc-darkturquoise\"] {\n  border-color: rgba(0, 206, 209, 0.4);\n}\n.bc-darkturquoise-60pct,\nimg[src~=\"bc-darkturquoise\"] {\n  border-color: rgba(0, 206, 209, 0.6);\n}\n.bc-darkturquoise-80pct,\nimg[src~=\"bc-darkturquoise\"] {\n  border-color: rgba(0, 206, 209, 0.8);\n}\n.color-darkviolet,\nimg[src~=\"color-darkviolet\"] {\n  color: #9400D3;\n}\n.color-darkviolet-20pct,\nimg[src~=\"color-darkviolet\"] {\n  color: rgba(148, 0, 211, 0.2);\n}\n.color-darkviolet-40pct,\nimg[src~=\"color-darkviolet\"] {\n  color: rgba(148, 0, 211, 0.4);\n}\n.color-darkviolet-60pct,\nimg[src~=\"color-darkviolet\"] {\n  color: rgba(148, 0, 211, 0.6);\n}\n.color-darkviolet-80pct,\nimg[src~=\"color-darkviolet\"] {\n  color: rgba(148, 0, 211, 0.8);\n}\n.bg-darkviolet,\nimg[src~=\"bg-darkviolet\"] {\n  background-color: #9400D3;\n}\n.bg-darkviolet-20pct,\nimg[src~=\"bg-darkviolet\"] {\n  background-color: rgba(148, 0, 211, 0.2);\n}\n.bg-darkviolet-40pct,\nimg[src~=\"bg-darkviolet\"] {\n  background-color: rgba(148, 0, 211, 0.4);\n}\n.bg-darkviolet-60pct,\nimg[src~=\"bg-darkviolet\"] {\n  background-color: rgba(148, 0, 211, 0.6);\n}\n.bg-darkviolet-80pct,\nimg[src~=\"bg-darkviolet\"] {\n  background-color: rgba(148, 0, 211, 0.8);\n}\n.bc-darkviolet,\nimg[src~=\"bc-darkviolet\"] {\n  border-color: #9400D3;\n}\n.bc-darkviolet-20pct,\nimg[src~=\"bc-darkviolet\"] {\n  border-color: rgba(148, 0, 211, 0.2);\n}\n.bc-darkviolet-40pct,\nimg[src~=\"bc-darkviolet\"] {\n  border-color: rgba(148, 0, 211, 0.4);\n}\n.bc-darkviolet-60pct,\nimg[src~=\"bc-darkviolet\"] {\n  border-color: rgba(148, 0, 211, 0.6);\n}\n.bc-darkviolet-80pct,\nimg[src~=\"bc-darkviolet\"] {\n  border-color: rgba(148, 0, 211, 0.8);\n}\n.color-deeppink,\nimg[src~=\"color-deeppink\"] {\n  color: #FF1493;\n}\n.color-deeppink-20pct,\nimg[src~=\"color-deeppink\"] {\n  color: rgba(255, 20, 147, 0.2);\n}\n.color-deeppink-40pct,\nimg[src~=\"color-deeppink\"] {\n  color: rgba(255, 20, 147, 0.4);\n}\n.color-deeppink-60pct,\nimg[src~=\"color-deeppink\"] {\n  color: rgba(255, 20, 147, 0.6);\n}\n.color-deeppink-80pct,\nimg[src~=\"color-deeppink\"] {\n  color: rgba(255, 20, 147, 0.8);\n}\n.bg-deeppink,\nimg[src~=\"bg-deeppink\"] {\n  background-color: #FF1493;\n}\n.bg-deeppink-20pct,\nimg[src~=\"bg-deeppink\"] {\n  background-color: rgba(255, 20, 147, 0.2);\n}\n.bg-deeppink-40pct,\nimg[src~=\"bg-deeppink\"] {\n  background-color: rgba(255, 20, 147, 0.4);\n}\n.bg-deeppink-60pct,\nimg[src~=\"bg-deeppink\"] {\n  background-color: rgba(255, 20, 147, 0.6);\n}\n.bg-deeppink-80pct,\nimg[src~=\"bg-deeppink\"] {\n  background-color: rgba(255, 20, 147, 0.8);\n}\n.bc-deeppink,\nimg[src~=\"bc-deeppink\"] {\n  border-color: #FF1493;\n}\n.bc-deeppink-20pct,\nimg[src~=\"bc-deeppink\"] {\n  border-color: rgba(255, 20, 147, 0.2);\n}\n.bc-deeppink-40pct,\nimg[src~=\"bc-deeppink\"] {\n  border-color: rgba(255, 20, 147, 0.4);\n}\n.bc-deeppink-60pct,\nimg[src~=\"bc-deeppink\"] {\n  border-color: rgba(255, 20, 147, 0.6);\n}\n.bc-deeppink-80pct,\nimg[src~=\"bc-deeppink\"] {\n  border-color: rgba(255, 20, 147, 0.8);\n}\n.color-deepskyblue,\nimg[src~=\"color-deepskyblue\"] {\n  color: #00BFFF;\n}\n.color-deepskyblue-20pct,\nimg[src~=\"color-deepskyblue\"] {\n  color: rgba(0, 191, 255, 0.2);\n}\n.color-deepskyblue-40pct,\nimg[src~=\"color-deepskyblue\"] {\n  color: rgba(0, 191, 255, 0.4);\n}\n.color-deepskyblue-60pct,\nimg[src~=\"color-deepskyblue\"] {\n  color: rgba(0, 191, 255, 0.6);\n}\n.color-deepskyblue-80pct,\nimg[src~=\"color-deepskyblue\"] {\n  color: rgba(0, 191, 255, 0.8);\n}\n.bg-deepskyblue,\nimg[src~=\"bg-deepskyblue\"] {\n  background-color: #00BFFF;\n}\n.bg-deepskyblue-20pct,\nimg[src~=\"bg-deepskyblue\"] {\n  background-color: rgba(0, 191, 255, 0.2);\n}\n.bg-deepskyblue-40pct,\nimg[src~=\"bg-deepskyblue\"] {\n  background-color: rgba(0, 191, 255, 0.4);\n}\n.bg-deepskyblue-60pct,\nimg[src~=\"bg-deepskyblue\"] {\n  background-color: rgba(0, 191, 255, 0.6);\n}\n.bg-deepskyblue-80pct,\nimg[src~=\"bg-deepskyblue\"] {\n  background-color: rgba(0, 191, 255, 0.8);\n}\n.bc-deepskyblue,\nimg[src~=\"bc-deepskyblue\"] {\n  border-color: #00BFFF;\n}\n.bc-deepskyblue-20pct,\nimg[src~=\"bc-deepskyblue\"] {\n  border-color: rgba(0, 191, 255, 0.2);\n}\n.bc-deepskyblue-40pct,\nimg[src~=\"bc-deepskyblue\"] {\n  border-color: rgba(0, 191, 255, 0.4);\n}\n.bc-deepskyblue-60pct,\nimg[src~=\"bc-deepskyblue\"] {\n  border-color: rgba(0, 191, 255, 0.6);\n}\n.bc-deepskyblue-80pct,\nimg[src~=\"bc-deepskyblue\"] {\n  border-color: rgba(0, 191, 255, 0.8);\n}\n.color-dimgray,\nimg[src~=\"color-dimgray\"] {\n  color: #696969;\n}\n.color-dimgray-20pct,\nimg[src~=\"color-dimgray\"] {\n  color: rgba(105, 105, 105, 0.2);\n}\n.color-dimgray-40pct,\nimg[src~=\"color-dimgray\"] {\n  color: rgba(105, 105, 105, 0.4);\n}\n.color-dimgray-60pct,\nimg[src~=\"color-dimgray\"] {\n  color: rgba(105, 105, 105, 0.6);\n}\n.color-dimgray-80pct,\nimg[src~=\"color-dimgray\"] {\n  color: rgba(105, 105, 105, 0.8);\n}\n.bg-dimgray,\nimg[src~=\"bg-dimgray\"] {\n  background-color: #696969;\n}\n.bg-dimgray-20pct,\nimg[src~=\"bg-dimgray\"] {\n  background-color: rgba(105, 105, 105, 0.2);\n}\n.bg-dimgray-40pct,\nimg[src~=\"bg-dimgray\"] {\n  background-color: rgba(105, 105, 105, 0.4);\n}\n.bg-dimgray-60pct,\nimg[src~=\"bg-dimgray\"] {\n  background-color: rgba(105, 105, 105, 0.6);\n}\n.bg-dimgray-80pct,\nimg[src~=\"bg-dimgray\"] {\n  background-color: rgba(105, 105, 105, 0.8);\n}\n.bc-dimgray,\nimg[src~=\"bc-dimgray\"] {\n  border-color: #696969;\n}\n.bc-dimgray-20pct,\nimg[src~=\"bc-dimgray\"] {\n  border-color: rgba(105, 105, 105, 0.2);\n}\n.bc-dimgray-40pct,\nimg[src~=\"bc-dimgray\"] {\n  border-color: rgba(105, 105, 105, 0.4);\n}\n.bc-dimgray-60pct,\nimg[src~=\"bc-dimgray\"] {\n  border-color: rgba(105, 105, 105, 0.6);\n}\n.bc-dimgray-80pct,\nimg[src~=\"bc-dimgray\"] {\n  border-color: rgba(105, 105, 105, 0.8);\n}\n.color-dimgrey,\nimg[src~=\"color-dimgrey\"] {\n  color: #696969;\n}\n.color-dimgrey-20pct,\nimg[src~=\"color-dimgrey\"] {\n  color: rgba(105, 105, 105, 0.2);\n}\n.color-dimgrey-40pct,\nimg[src~=\"color-dimgrey\"] {\n  color: rgba(105, 105, 105, 0.4);\n}\n.color-dimgrey-60pct,\nimg[src~=\"color-dimgrey\"] {\n  color: rgba(105, 105, 105, 0.6);\n}\n.color-dimgrey-80pct,\nimg[src~=\"color-dimgrey\"] {\n  color: rgba(105, 105, 105, 0.8);\n}\n.bg-dimgrey,\nimg[src~=\"bg-dimgrey\"] {\n  background-color: #696969;\n}\n.bg-dimgrey-20pct,\nimg[src~=\"bg-dimgrey\"] {\n  background-color: rgba(105, 105, 105, 0.2);\n}\n.bg-dimgrey-40pct,\nimg[src~=\"bg-dimgrey\"] {\n  background-color: rgba(105, 105, 105, 0.4);\n}\n.bg-dimgrey-60pct,\nimg[src~=\"bg-dimgrey\"] {\n  background-color: rgba(105, 105, 105, 0.6);\n}\n.bg-dimgrey-80pct,\nimg[src~=\"bg-dimgrey\"] {\n  background-color: rgba(105, 105, 105, 0.8);\n}\n.bc-dimgrey,\nimg[src~=\"bc-dimgrey\"] {\n  border-color: #696969;\n}\n.bc-dimgrey-20pct,\nimg[src~=\"bc-dimgrey\"] {\n  border-color: rgba(105, 105, 105, 0.2);\n}\n.bc-dimgrey-40pct,\nimg[src~=\"bc-dimgrey\"] {\n  border-color: rgba(105, 105, 105, 0.4);\n}\n.bc-dimgrey-60pct,\nimg[src~=\"bc-dimgrey\"] {\n  border-color: rgba(105, 105, 105, 0.6);\n}\n.bc-dimgrey-80pct,\nimg[src~=\"bc-dimgrey\"] {\n  border-color: rgba(105, 105, 105, 0.8);\n}\n.color-dodgerblue,\nimg[src~=\"color-dodgerblue\"] {\n  color: #1E90FF;\n}\n.color-dodgerblue-20pct,\nimg[src~=\"color-dodgerblue\"] {\n  color: rgba(30, 144, 255, 0.2);\n}\n.color-dodgerblue-40pct,\nimg[src~=\"color-dodgerblue\"] {\n  color: rgba(30, 144, 255, 0.4);\n}\n.color-dodgerblue-60pct,\nimg[src~=\"color-dodgerblue\"] {\n  color: rgba(30, 144, 255, 0.6);\n}\n.color-dodgerblue-80pct,\nimg[src~=\"color-dodgerblue\"] {\n  color: rgba(30, 144, 255, 0.8);\n}\n.bg-dodgerblue,\nimg[src~=\"bg-dodgerblue\"] {\n  background-color: #1E90FF;\n}\n.bg-dodgerblue-20pct,\nimg[src~=\"bg-dodgerblue\"] {\n  background-color: rgba(30, 144, 255, 0.2);\n}\n.bg-dodgerblue-40pct,\nimg[src~=\"bg-dodgerblue\"] {\n  background-color: rgba(30, 144, 255, 0.4);\n}\n.bg-dodgerblue-60pct,\nimg[src~=\"bg-dodgerblue\"] {\n  background-color: rgba(30, 144, 255, 0.6);\n}\n.bg-dodgerblue-80pct,\nimg[src~=\"bg-dodgerblue\"] {\n  background-color: rgba(30, 144, 255, 0.8);\n}\n.bc-dodgerblue,\nimg[src~=\"bc-dodgerblue\"] {\n  border-color: #1E90FF;\n}\n.bc-dodgerblue-20pct,\nimg[src~=\"bc-dodgerblue\"] {\n  border-color: rgba(30, 144, 255, 0.2);\n}\n.bc-dodgerblue-40pct,\nimg[src~=\"bc-dodgerblue\"] {\n  border-color: rgba(30, 144, 255, 0.4);\n}\n.bc-dodgerblue-60pct,\nimg[src~=\"bc-dodgerblue\"] {\n  border-color: rgba(30, 144, 255, 0.6);\n}\n.bc-dodgerblue-80pct,\nimg[src~=\"bc-dodgerblue\"] {\n  border-color: rgba(30, 144, 255, 0.8);\n}\n.color-firebrick,\nimg[src~=\"color-firebrick\"] {\n  color: #B22222;\n}\n.color-firebrick-20pct,\nimg[src~=\"color-firebrick\"] {\n  color: rgba(178, 34, 34, 0.2);\n}\n.color-firebrick-40pct,\nimg[src~=\"color-firebrick\"] {\n  color: rgba(178, 34, 34, 0.4);\n}\n.color-firebrick-60pct,\nimg[src~=\"color-firebrick\"] {\n  color: rgba(178, 34, 34, 0.6);\n}\n.color-firebrick-80pct,\nimg[src~=\"color-firebrick\"] {\n  color: rgba(178, 34, 34, 0.8);\n}\n.bg-firebrick,\nimg[src~=\"bg-firebrick\"] {\n  background-color: #B22222;\n}\n.bg-firebrick-20pct,\nimg[src~=\"bg-firebrick\"] {\n  background-color: rgba(178, 34, 34, 0.2);\n}\n.bg-firebrick-40pct,\nimg[src~=\"bg-firebrick\"] {\n  background-color: rgba(178, 34, 34, 0.4);\n}\n.bg-firebrick-60pct,\nimg[src~=\"bg-firebrick\"] {\n  background-color: rgba(178, 34, 34, 0.6);\n}\n.bg-firebrick-80pct,\nimg[src~=\"bg-firebrick\"] {\n  background-color: rgba(178, 34, 34, 0.8);\n}\n.bc-firebrick,\nimg[src~=\"bc-firebrick\"] {\n  border-color: #B22222;\n}\n.bc-firebrick-20pct,\nimg[src~=\"bc-firebrick\"] {\n  border-color: rgba(178, 34, 34, 0.2);\n}\n.bc-firebrick-40pct,\nimg[src~=\"bc-firebrick\"] {\n  border-color: rgba(178, 34, 34, 0.4);\n}\n.bc-firebrick-60pct,\nimg[src~=\"bc-firebrick\"] {\n  border-color: rgba(178, 34, 34, 0.6);\n}\n.bc-firebrick-80pct,\nimg[src~=\"bc-firebrick\"] {\n  border-color: rgba(178, 34, 34, 0.8);\n}\n.color-floralwhite,\nimg[src~=\"color-floralwhite\"] {\n  color: #FFFAF0;\n}\n.color-floralwhite-20pct,\nimg[src~=\"color-floralwhite\"] {\n  color: rgba(255, 250, 240, 0.2);\n}\n.color-floralwhite-40pct,\nimg[src~=\"color-floralwhite\"] {\n  color: rgba(255, 250, 240, 0.4);\n}\n.color-floralwhite-60pct,\nimg[src~=\"color-floralwhite\"] {\n  color: rgba(255, 250, 240, 0.6);\n}\n.color-floralwhite-80pct,\nimg[src~=\"color-floralwhite\"] {\n  color: rgba(255, 250, 240, 0.8);\n}\n.bg-floralwhite,\nimg[src~=\"bg-floralwhite\"] {\n  background-color: #FFFAF0;\n}\n.bg-floralwhite-20pct,\nimg[src~=\"bg-floralwhite\"] {\n  background-color: rgba(255, 250, 240, 0.2);\n}\n.bg-floralwhite-40pct,\nimg[src~=\"bg-floralwhite\"] {\n  background-color: rgba(255, 250, 240, 0.4);\n}\n.bg-floralwhite-60pct,\nimg[src~=\"bg-floralwhite\"] {\n  background-color: rgba(255, 250, 240, 0.6);\n}\n.bg-floralwhite-80pct,\nimg[src~=\"bg-floralwhite\"] {\n  background-color: rgba(255, 250, 240, 0.8);\n}\n.bc-floralwhite,\nimg[src~=\"bc-floralwhite\"] {\n  border-color: #FFFAF0;\n}\n.bc-floralwhite-20pct,\nimg[src~=\"bc-floralwhite\"] {\n  border-color: rgba(255, 250, 240, 0.2);\n}\n.bc-floralwhite-40pct,\nimg[src~=\"bc-floralwhite\"] {\n  border-color: rgba(255, 250, 240, 0.4);\n}\n.bc-floralwhite-60pct,\nimg[src~=\"bc-floralwhite\"] {\n  border-color: rgba(255, 250, 240, 0.6);\n}\n.bc-floralwhite-80pct,\nimg[src~=\"bc-floralwhite\"] {\n  border-color: rgba(255, 250, 240, 0.8);\n}\n.color-forestgreen,\nimg[src~=\"color-forestgreen\"] {\n  color: #228B22;\n}\n.color-forestgreen-20pct,\nimg[src~=\"color-forestgreen\"] {\n  color: rgba(34, 139, 34, 0.2);\n}\n.color-forestgreen-40pct,\nimg[src~=\"color-forestgreen\"] {\n  color: rgba(34, 139, 34, 0.4);\n}\n.color-forestgreen-60pct,\nimg[src~=\"color-forestgreen\"] {\n  color: rgba(34, 139, 34, 0.6);\n}\n.color-forestgreen-80pct,\nimg[src~=\"color-forestgreen\"] {\n  color: rgba(34, 139, 34, 0.8);\n}\n.bg-forestgreen,\nimg[src~=\"bg-forestgreen\"] {\n  background-color: #228B22;\n}\n.bg-forestgreen-20pct,\nimg[src~=\"bg-forestgreen\"] {\n  background-color: rgba(34, 139, 34, 0.2);\n}\n.bg-forestgreen-40pct,\nimg[src~=\"bg-forestgreen\"] {\n  background-color: rgba(34, 139, 34, 0.4);\n}\n.bg-forestgreen-60pct,\nimg[src~=\"bg-forestgreen\"] {\n  background-color: rgba(34, 139, 34, 0.6);\n}\n.bg-forestgreen-80pct,\nimg[src~=\"bg-forestgreen\"] {\n  background-color: rgba(34, 139, 34, 0.8);\n}\n.bc-forestgreen,\nimg[src~=\"bc-forestgreen\"] {\n  border-color: #228B22;\n}\n.bc-forestgreen-20pct,\nimg[src~=\"bc-forestgreen\"] {\n  border-color: rgba(34, 139, 34, 0.2);\n}\n.bc-forestgreen-40pct,\nimg[src~=\"bc-forestgreen\"] {\n  border-color: rgba(34, 139, 34, 0.4);\n}\n.bc-forestgreen-60pct,\nimg[src~=\"bc-forestgreen\"] {\n  border-color: rgba(34, 139, 34, 0.6);\n}\n.bc-forestgreen-80pct,\nimg[src~=\"bc-forestgreen\"] {\n  border-color: rgba(34, 139, 34, 0.8);\n}\n.color-fuchsia,\nimg[src~=\"color-fuchsia\"] {\n  color: #FF00FF;\n}\n.color-fuchsia-20pct,\nimg[src~=\"color-fuchsia\"] {\n  color: rgba(255, 0, 255, 0.2);\n}\n.color-fuchsia-40pct,\nimg[src~=\"color-fuchsia\"] {\n  color: rgba(255, 0, 255, 0.4);\n}\n.color-fuchsia-60pct,\nimg[src~=\"color-fuchsia\"] {\n  color: rgba(255, 0, 255, 0.6);\n}\n.color-fuchsia-80pct,\nimg[src~=\"color-fuchsia\"] {\n  color: rgba(255, 0, 255, 0.8);\n}\n.bg-fuchsia,\nimg[src~=\"bg-fuchsia\"] {\n  background-color: #FF00FF;\n}\n.bg-fuchsia-20pct,\nimg[src~=\"bg-fuchsia\"] {\n  background-color: rgba(255, 0, 255, 0.2);\n}\n.bg-fuchsia-40pct,\nimg[src~=\"bg-fuchsia\"] {\n  background-color: rgba(255, 0, 255, 0.4);\n}\n.bg-fuchsia-60pct,\nimg[src~=\"bg-fuchsia\"] {\n  background-color: rgba(255, 0, 255, 0.6);\n}\n.bg-fuchsia-80pct,\nimg[src~=\"bg-fuchsia\"] {\n  background-color: rgba(255, 0, 255, 0.8);\n}\n.bc-fuchsia,\nimg[src~=\"bc-fuchsia\"] {\n  border-color: #FF00FF;\n}\n.bc-fuchsia-20pct,\nimg[src~=\"bc-fuchsia\"] {\n  border-color: rgba(255, 0, 255, 0.2);\n}\n.bc-fuchsia-40pct,\nimg[src~=\"bc-fuchsia\"] {\n  border-color: rgba(255, 0, 255, 0.4);\n}\n.bc-fuchsia-60pct,\nimg[src~=\"bc-fuchsia\"] {\n  border-color: rgba(255, 0, 255, 0.6);\n}\n.bc-fuchsia-80pct,\nimg[src~=\"bc-fuchsia\"] {\n  border-color: rgba(255, 0, 255, 0.8);\n}\n.color-gainsboro,\nimg[src~=\"color-gainsboro\"] {\n  color: #DCDCDC;\n}\n.color-gainsboro-20pct,\nimg[src~=\"color-gainsboro\"] {\n  color: rgba(220, 220, 220, 0.2);\n}\n.color-gainsboro-40pct,\nimg[src~=\"color-gainsboro\"] {\n  color: rgba(220, 220, 220, 0.4);\n}\n.color-gainsboro-60pct,\nimg[src~=\"color-gainsboro\"] {\n  color: rgba(220, 220, 220, 0.6);\n}\n.color-gainsboro-80pct,\nimg[src~=\"color-gainsboro\"] {\n  color: rgba(220, 220, 220, 0.8);\n}\n.bg-gainsboro,\nimg[src~=\"bg-gainsboro\"] {\n  background-color: #DCDCDC;\n}\n.bg-gainsboro-20pct,\nimg[src~=\"bg-gainsboro\"] {\n  background-color: rgba(220, 220, 220, 0.2);\n}\n.bg-gainsboro-40pct,\nimg[src~=\"bg-gainsboro\"] {\n  background-color: rgba(220, 220, 220, 0.4);\n}\n.bg-gainsboro-60pct,\nimg[src~=\"bg-gainsboro\"] {\n  background-color: rgba(220, 220, 220, 0.6);\n}\n.bg-gainsboro-80pct,\nimg[src~=\"bg-gainsboro\"] {\n  background-color: rgba(220, 220, 220, 0.8);\n}\n.bc-gainsboro,\nimg[src~=\"bc-gainsboro\"] {\n  border-color: #DCDCDC;\n}\n.bc-gainsboro-20pct,\nimg[src~=\"bc-gainsboro\"] {\n  border-color: rgba(220, 220, 220, 0.2);\n}\n.bc-gainsboro-40pct,\nimg[src~=\"bc-gainsboro\"] {\n  border-color: rgba(220, 220, 220, 0.4);\n}\n.bc-gainsboro-60pct,\nimg[src~=\"bc-gainsboro\"] {\n  border-color: rgba(220, 220, 220, 0.6);\n}\n.bc-gainsboro-80pct,\nimg[src~=\"bc-gainsboro\"] {\n  border-color: rgba(220, 220, 220, 0.8);\n}\n.color-ghostwhite,\nimg[src~=\"color-ghostwhite\"] {\n  color: #F8F8FF;\n}\n.color-ghostwhite-20pct,\nimg[src~=\"color-ghostwhite\"] {\n  color: rgba(248, 248, 255, 0.2);\n}\n.color-ghostwhite-40pct,\nimg[src~=\"color-ghostwhite\"] {\n  color: rgba(248, 248, 255, 0.4);\n}\n.color-ghostwhite-60pct,\nimg[src~=\"color-ghostwhite\"] {\n  color: rgba(248, 248, 255, 0.6);\n}\n.color-ghostwhite-80pct,\nimg[src~=\"color-ghostwhite\"] {\n  color: rgba(248, 248, 255, 0.8);\n}\n.bg-ghostwhite,\nimg[src~=\"bg-ghostwhite\"] {\n  background-color: #F8F8FF;\n}\n.bg-ghostwhite-20pct,\nimg[src~=\"bg-ghostwhite\"] {\n  background-color: rgba(248, 248, 255, 0.2);\n}\n.bg-ghostwhite-40pct,\nimg[src~=\"bg-ghostwhite\"] {\n  background-color: rgba(248, 248, 255, 0.4);\n}\n.bg-ghostwhite-60pct,\nimg[src~=\"bg-ghostwhite\"] {\n  background-color: rgba(248, 248, 255, 0.6);\n}\n.bg-ghostwhite-80pct,\nimg[src~=\"bg-ghostwhite\"] {\n  background-color: rgba(248, 248, 255, 0.8);\n}\n.bc-ghostwhite,\nimg[src~=\"bc-ghostwhite\"] {\n  border-color: #F8F8FF;\n}\n.bc-ghostwhite-20pct,\nimg[src~=\"bc-ghostwhite\"] {\n  border-color: rgba(248, 248, 255, 0.2);\n}\n.bc-ghostwhite-40pct,\nimg[src~=\"bc-ghostwhite\"] {\n  border-color: rgba(248, 248, 255, 0.4);\n}\n.bc-ghostwhite-60pct,\nimg[src~=\"bc-ghostwhite\"] {\n  border-color: rgba(248, 248, 255, 0.6);\n}\n.bc-ghostwhite-80pct,\nimg[src~=\"bc-ghostwhite\"] {\n  border-color: rgba(248, 248, 255, 0.8);\n}\n.color-gold,\nimg[src~=\"color-gold\"] {\n  color: #FFD700;\n}\n.color-gold-20pct,\nimg[src~=\"color-gold\"] {\n  color: rgba(255, 215, 0, 0.2);\n}\n.color-gold-40pct,\nimg[src~=\"color-gold\"] {\n  color: rgba(255, 215, 0, 0.4);\n}\n.color-gold-60pct,\nimg[src~=\"color-gold\"] {\n  color: rgba(255, 215, 0, 0.6);\n}\n.color-gold-80pct,\nimg[src~=\"color-gold\"] {\n  color: rgba(255, 215, 0, 0.8);\n}\n.bg-gold,\nimg[src~=\"bg-gold\"] {\n  background-color: #FFD700;\n}\n.bg-gold-20pct,\nimg[src~=\"bg-gold\"] {\n  background-color: rgba(255, 215, 0, 0.2);\n}\n.bg-gold-40pct,\nimg[src~=\"bg-gold\"] {\n  background-color: rgba(255, 215, 0, 0.4);\n}\n.bg-gold-60pct,\nimg[src~=\"bg-gold\"] {\n  background-color: rgba(255, 215, 0, 0.6);\n}\n.bg-gold-80pct,\nimg[src~=\"bg-gold\"] {\n  background-color: rgba(255, 215, 0, 0.8);\n}\n.bc-gold,\nimg[src~=\"bc-gold\"] {\n  border-color: #FFD700;\n}\n.bc-gold-20pct,\nimg[src~=\"bc-gold\"] {\n  border-color: rgba(255, 215, 0, 0.2);\n}\n.bc-gold-40pct,\nimg[src~=\"bc-gold\"] {\n  border-color: rgba(255, 215, 0, 0.4);\n}\n.bc-gold-60pct,\nimg[src~=\"bc-gold\"] {\n  border-color: rgba(255, 215, 0, 0.6);\n}\n.bc-gold-80pct,\nimg[src~=\"bc-gold\"] {\n  border-color: rgba(255, 215, 0, 0.8);\n}\n.color-goldenrod,\nimg[src~=\"color-goldenrod\"] {\n  color: #DAA520;\n}\n.color-goldenrod-20pct,\nimg[src~=\"color-goldenrod\"] {\n  color: rgba(218, 165, 32, 0.2);\n}\n.color-goldenrod-40pct,\nimg[src~=\"color-goldenrod\"] {\n  color: rgba(218, 165, 32, 0.4);\n}\n.color-goldenrod-60pct,\nimg[src~=\"color-goldenrod\"] {\n  color: rgba(218, 165, 32, 0.6);\n}\n.color-goldenrod-80pct,\nimg[src~=\"color-goldenrod\"] {\n  color: rgba(218, 165, 32, 0.8);\n}\n.bg-goldenrod,\nimg[src~=\"bg-goldenrod\"] {\n  background-color: #DAA520;\n}\n.bg-goldenrod-20pct,\nimg[src~=\"bg-goldenrod\"] {\n  background-color: rgba(218, 165, 32, 0.2);\n}\n.bg-goldenrod-40pct,\nimg[src~=\"bg-goldenrod\"] {\n  background-color: rgba(218, 165, 32, 0.4);\n}\n.bg-goldenrod-60pct,\nimg[src~=\"bg-goldenrod\"] {\n  background-color: rgba(218, 165, 32, 0.6);\n}\n.bg-goldenrod-80pct,\nimg[src~=\"bg-goldenrod\"] {\n  background-color: rgba(218, 165, 32, 0.8);\n}\n.bc-goldenrod,\nimg[src~=\"bc-goldenrod\"] {\n  border-color: #DAA520;\n}\n.bc-goldenrod-20pct,\nimg[src~=\"bc-goldenrod\"] {\n  border-color: rgba(218, 165, 32, 0.2);\n}\n.bc-goldenrod-40pct,\nimg[src~=\"bc-goldenrod\"] {\n  border-color: rgba(218, 165, 32, 0.4);\n}\n.bc-goldenrod-60pct,\nimg[src~=\"bc-goldenrod\"] {\n  border-color: rgba(218, 165, 32, 0.6);\n}\n.bc-goldenrod-80pct,\nimg[src~=\"bc-goldenrod\"] {\n  border-color: rgba(218, 165, 32, 0.8);\n}\n.color-gray,\nimg[src~=\"color-gray\"] {\n  color: #808080;\n}\n.color-gray-20pct,\nimg[src~=\"color-gray\"] {\n  color: rgba(128, 128, 128, 0.2);\n}\n.color-gray-40pct,\nimg[src~=\"color-gray\"] {\n  color: rgba(128, 128, 128, 0.4);\n}\n.color-gray-60pct,\nimg[src~=\"color-gray\"] {\n  color: rgba(128, 128, 128, 0.6);\n}\n.color-gray-80pct,\nimg[src~=\"color-gray\"] {\n  color: rgba(128, 128, 128, 0.8);\n}\n.bg-gray,\nimg[src~=\"bg-gray\"] {\n  background-color: #808080;\n}\n.bg-gray-20pct,\nimg[src~=\"bg-gray\"] {\n  background-color: rgba(128, 128, 128, 0.2);\n}\n.bg-gray-40pct,\nimg[src~=\"bg-gray\"] {\n  background-color: rgba(128, 128, 128, 0.4);\n}\n.bg-gray-60pct,\nimg[src~=\"bg-gray\"] {\n  background-color: rgba(128, 128, 128, 0.6);\n}\n.bg-gray-80pct,\nimg[src~=\"bg-gray\"] {\n  background-color: rgba(128, 128, 128, 0.8);\n}\n.bc-gray,\nimg[src~=\"bc-gray\"] {\n  border-color: #808080;\n}\n.bc-gray-20pct,\nimg[src~=\"bc-gray\"] {\n  border-color: rgba(128, 128, 128, 0.2);\n}\n.bc-gray-40pct,\nimg[src~=\"bc-gray\"] {\n  border-color: rgba(128, 128, 128, 0.4);\n}\n.bc-gray-60pct,\nimg[src~=\"bc-gray\"] {\n  border-color: rgba(128, 128, 128, 0.6);\n}\n.bc-gray-80pct,\nimg[src~=\"bc-gray\"] {\n  border-color: rgba(128, 128, 128, 0.8);\n}\n.color-green,\nimg[src~=\"color-green\"] {\n  color: #008000;\n}\n.color-green-20pct,\nimg[src~=\"color-green\"] {\n  color: rgba(0, 128, 0, 0.2);\n}\n.color-green-40pct,\nimg[src~=\"color-green\"] {\n  color: rgba(0, 128, 0, 0.4);\n}\n.color-green-60pct,\nimg[src~=\"color-green\"] {\n  color: rgba(0, 128, 0, 0.6);\n}\n.color-green-80pct,\nimg[src~=\"color-green\"] {\n  color: rgba(0, 128, 0, 0.8);\n}\n.bg-green,\nimg[src~=\"bg-green\"] {\n  background-color: #008000;\n}\n.bg-green-20pct,\nimg[src~=\"bg-green\"] {\n  background-color: rgba(0, 128, 0, 0.2);\n}\n.bg-green-40pct,\nimg[src~=\"bg-green\"] {\n  background-color: rgba(0, 128, 0, 0.4);\n}\n.bg-green-60pct,\nimg[src~=\"bg-green\"] {\n  background-color: rgba(0, 128, 0, 0.6);\n}\n.bg-green-80pct,\nimg[src~=\"bg-green\"] {\n  background-color: rgba(0, 128, 0, 0.8);\n}\n.bc-green,\nimg[src~=\"bc-green\"] {\n  border-color: #008000;\n}\n.bc-green-20pct,\nimg[src~=\"bc-green\"] {\n  border-color: rgba(0, 128, 0, 0.2);\n}\n.bc-green-40pct,\nimg[src~=\"bc-green\"] {\n  border-color: rgba(0, 128, 0, 0.4);\n}\n.bc-green-60pct,\nimg[src~=\"bc-green\"] {\n  border-color: rgba(0, 128, 0, 0.6);\n}\n.bc-green-80pct,\nimg[src~=\"bc-green\"] {\n  border-color: rgba(0, 128, 0, 0.8);\n}\n.color-greenyellow,\nimg[src~=\"color-greenyellow\"] {\n  color: #ADFF2F;\n}\n.color-greenyellow-20pct,\nimg[src~=\"color-greenyellow\"] {\n  color: rgba(173, 255, 47, 0.2);\n}\n.color-greenyellow-40pct,\nimg[src~=\"color-greenyellow\"] {\n  color: rgba(173, 255, 47, 0.4);\n}\n.color-greenyellow-60pct,\nimg[src~=\"color-greenyellow\"] {\n  color: rgba(173, 255, 47, 0.6);\n}\n.color-greenyellow-80pct,\nimg[src~=\"color-greenyellow\"] {\n  color: rgba(173, 255, 47, 0.8);\n}\n.bg-greenyellow,\nimg[src~=\"bg-greenyellow\"] {\n  background-color: #ADFF2F;\n}\n.bg-greenyellow-20pct,\nimg[src~=\"bg-greenyellow\"] {\n  background-color: rgba(173, 255, 47, 0.2);\n}\n.bg-greenyellow-40pct,\nimg[src~=\"bg-greenyellow\"] {\n  background-color: rgba(173, 255, 47, 0.4);\n}\n.bg-greenyellow-60pct,\nimg[src~=\"bg-greenyellow\"] {\n  background-color: rgba(173, 255, 47, 0.6);\n}\n.bg-greenyellow-80pct,\nimg[src~=\"bg-greenyellow\"] {\n  background-color: rgba(173, 255, 47, 0.8);\n}\n.bc-greenyellow,\nimg[src~=\"bc-greenyellow\"] {\n  border-color: #ADFF2F;\n}\n.bc-greenyellow-20pct,\nimg[src~=\"bc-greenyellow\"] {\n  border-color: rgba(173, 255, 47, 0.2);\n}\n.bc-greenyellow-40pct,\nimg[src~=\"bc-greenyellow\"] {\n  border-color: rgba(173, 255, 47, 0.4);\n}\n.bc-greenyellow-60pct,\nimg[src~=\"bc-greenyellow\"] {\n  border-color: rgba(173, 255, 47, 0.6);\n}\n.bc-greenyellow-80pct,\nimg[src~=\"bc-greenyellow\"] {\n  border-color: rgba(173, 255, 47, 0.8);\n}\n.color-grey,\nimg[src~=\"color-grey\"] {\n  color: #808080;\n}\n.color-grey-20pct,\nimg[src~=\"color-grey\"] {\n  color: rgba(128, 128, 128, 0.2);\n}\n.color-grey-40pct,\nimg[src~=\"color-grey\"] {\n  color: rgba(128, 128, 128, 0.4);\n}\n.color-grey-60pct,\nimg[src~=\"color-grey\"] {\n  color: rgba(128, 128, 128, 0.6);\n}\n.color-grey-80pct,\nimg[src~=\"color-grey\"] {\n  color: rgba(128, 128, 128, 0.8);\n}\n.bg-grey,\nimg[src~=\"bg-grey\"] {\n  background-color: #808080;\n}\n.bg-grey-20pct,\nimg[src~=\"bg-grey\"] {\n  background-color: rgba(128, 128, 128, 0.2);\n}\n.bg-grey-40pct,\nimg[src~=\"bg-grey\"] {\n  background-color: rgba(128, 128, 128, 0.4);\n}\n.bg-grey-60pct,\nimg[src~=\"bg-grey\"] {\n  background-color: rgba(128, 128, 128, 0.6);\n}\n.bg-grey-80pct,\nimg[src~=\"bg-grey\"] {\n  background-color: rgba(128, 128, 128, 0.8);\n}\n.bc-grey,\nimg[src~=\"bc-grey\"] {\n  border-color: #808080;\n}\n.bc-grey-20pct,\nimg[src~=\"bc-grey\"] {\n  border-color: rgba(128, 128, 128, 0.2);\n}\n.bc-grey-40pct,\nimg[src~=\"bc-grey\"] {\n  border-color: rgba(128, 128, 128, 0.4);\n}\n.bc-grey-60pct,\nimg[src~=\"bc-grey\"] {\n  border-color: rgba(128, 128, 128, 0.6);\n}\n.bc-grey-80pct,\nimg[src~=\"bc-grey\"] {\n  border-color: rgba(128, 128, 128, 0.8);\n}\n.color-honeydew,\nimg[src~=\"color-honeydew\"] {\n  color: #F0FFF0;\n}\n.color-honeydew-20pct,\nimg[src~=\"color-honeydew\"] {\n  color: rgba(240, 255, 240, 0.2);\n}\n.color-honeydew-40pct,\nimg[src~=\"color-honeydew\"] {\n  color: rgba(240, 255, 240, 0.4);\n}\n.color-honeydew-60pct,\nimg[src~=\"color-honeydew\"] {\n  color: rgba(240, 255, 240, 0.6);\n}\n.color-honeydew-80pct,\nimg[src~=\"color-honeydew\"] {\n  color: rgba(240, 255, 240, 0.8);\n}\n.bg-honeydew,\nimg[src~=\"bg-honeydew\"] {\n  background-color: #F0FFF0;\n}\n.bg-honeydew-20pct,\nimg[src~=\"bg-honeydew\"] {\n  background-color: rgba(240, 255, 240, 0.2);\n}\n.bg-honeydew-40pct,\nimg[src~=\"bg-honeydew\"] {\n  background-color: rgba(240, 255, 240, 0.4);\n}\n.bg-honeydew-60pct,\nimg[src~=\"bg-honeydew\"] {\n  background-color: rgba(240, 255, 240, 0.6);\n}\n.bg-honeydew-80pct,\nimg[src~=\"bg-honeydew\"] {\n  background-color: rgba(240, 255, 240, 0.8);\n}\n.bc-honeydew,\nimg[src~=\"bc-honeydew\"] {\n  border-color: #F0FFF0;\n}\n.bc-honeydew-20pct,\nimg[src~=\"bc-honeydew\"] {\n  border-color: rgba(240, 255, 240, 0.2);\n}\n.bc-honeydew-40pct,\nimg[src~=\"bc-honeydew\"] {\n  border-color: rgba(240, 255, 240, 0.4);\n}\n.bc-honeydew-60pct,\nimg[src~=\"bc-honeydew\"] {\n  border-color: rgba(240, 255, 240, 0.6);\n}\n.bc-honeydew-80pct,\nimg[src~=\"bc-honeydew\"] {\n  border-color: rgba(240, 255, 240, 0.8);\n}\n.color-hotpink,\nimg[src~=\"color-hotpink\"] {\n  color: #FF69B4;\n}\n.color-hotpink-20pct,\nimg[src~=\"color-hotpink\"] {\n  color: rgba(255, 105, 180, 0.2);\n}\n.color-hotpink-40pct,\nimg[src~=\"color-hotpink\"] {\n  color: rgba(255, 105, 180, 0.4);\n}\n.color-hotpink-60pct,\nimg[src~=\"color-hotpink\"] {\n  color: rgba(255, 105, 180, 0.6);\n}\n.color-hotpink-80pct,\nimg[src~=\"color-hotpink\"] {\n  color: rgba(255, 105, 180, 0.8);\n}\n.bg-hotpink,\nimg[src~=\"bg-hotpink\"] {\n  background-color: #FF69B4;\n}\n.bg-hotpink-20pct,\nimg[src~=\"bg-hotpink\"] {\n  background-color: rgba(255, 105, 180, 0.2);\n}\n.bg-hotpink-40pct,\nimg[src~=\"bg-hotpink\"] {\n  background-color: rgba(255, 105, 180, 0.4);\n}\n.bg-hotpink-60pct,\nimg[src~=\"bg-hotpink\"] {\n  background-color: rgba(255, 105, 180, 0.6);\n}\n.bg-hotpink-80pct,\nimg[src~=\"bg-hotpink\"] {\n  background-color: rgba(255, 105, 180, 0.8);\n}\n.bc-hotpink,\nimg[src~=\"bc-hotpink\"] {\n  border-color: #FF69B4;\n}\n.bc-hotpink-20pct,\nimg[src~=\"bc-hotpink\"] {\n  border-color: rgba(255, 105, 180, 0.2);\n}\n.bc-hotpink-40pct,\nimg[src~=\"bc-hotpink\"] {\n  border-color: rgba(255, 105, 180, 0.4);\n}\n.bc-hotpink-60pct,\nimg[src~=\"bc-hotpink\"] {\n  border-color: rgba(255, 105, 180, 0.6);\n}\n.bc-hotpink-80pct,\nimg[src~=\"bc-hotpink\"] {\n  border-color: rgba(255, 105, 180, 0.8);\n}\n.color-indianred,\nimg[src~=\"color-indianred\"] {\n  color: #CD5C5C;\n}\n.color-indianred-20pct,\nimg[src~=\"color-indianred\"] {\n  color: rgba(205, 92, 92, 0.2);\n}\n.color-indianred-40pct,\nimg[src~=\"color-indianred\"] {\n  color: rgba(205, 92, 92, 0.4);\n}\n.color-indianred-60pct,\nimg[src~=\"color-indianred\"] {\n  color: rgba(205, 92, 92, 0.6);\n}\n.color-indianred-80pct,\nimg[src~=\"color-indianred\"] {\n  color: rgba(205, 92, 92, 0.8);\n}\n.bg-indianred,\nimg[src~=\"bg-indianred\"] {\n  background-color: #CD5C5C;\n}\n.bg-indianred-20pct,\nimg[src~=\"bg-indianred\"] {\n  background-color: rgba(205, 92, 92, 0.2);\n}\n.bg-indianred-40pct,\nimg[src~=\"bg-indianred\"] {\n  background-color: rgba(205, 92, 92, 0.4);\n}\n.bg-indianred-60pct,\nimg[src~=\"bg-indianred\"] {\n  background-color: rgba(205, 92, 92, 0.6);\n}\n.bg-indianred-80pct,\nimg[src~=\"bg-indianred\"] {\n  background-color: rgba(205, 92, 92, 0.8);\n}\n.bc-indianred,\nimg[src~=\"bc-indianred\"] {\n  border-color: #CD5C5C;\n}\n.bc-indianred-20pct,\nimg[src~=\"bc-indianred\"] {\n  border-color: rgba(205, 92, 92, 0.2);\n}\n.bc-indianred-40pct,\nimg[src~=\"bc-indianred\"] {\n  border-color: rgba(205, 92, 92, 0.4);\n}\n.bc-indianred-60pct,\nimg[src~=\"bc-indianred\"] {\n  border-color: rgba(205, 92, 92, 0.6);\n}\n.bc-indianred-80pct,\nimg[src~=\"bc-indianred\"] {\n  border-color: rgba(205, 92, 92, 0.8);\n}\n.color-indigo,\nimg[src~=\"color-indigo\"] {\n  color: #4B0082;\n}\n.color-indigo-20pct,\nimg[src~=\"color-indigo\"] {\n  color: rgba(75, 0, 130, 0.2);\n}\n.color-indigo-40pct,\nimg[src~=\"color-indigo\"] {\n  color: rgba(75, 0, 130, 0.4);\n}\n.color-indigo-60pct,\nimg[src~=\"color-indigo\"] {\n  color: rgba(75, 0, 130, 0.6);\n}\n.color-indigo-80pct,\nimg[src~=\"color-indigo\"] {\n  color: rgba(75, 0, 130, 0.8);\n}\n.bg-indigo,\nimg[src~=\"bg-indigo\"] {\n  background-color: #4B0082;\n}\n.bg-indigo-20pct,\nimg[src~=\"bg-indigo\"] {\n  background-color: rgba(75, 0, 130, 0.2);\n}\n.bg-indigo-40pct,\nimg[src~=\"bg-indigo\"] {\n  background-color: rgba(75, 0, 130, 0.4);\n}\n.bg-indigo-60pct,\nimg[src~=\"bg-indigo\"] {\n  background-color: rgba(75, 0, 130, 0.6);\n}\n.bg-indigo-80pct,\nimg[src~=\"bg-indigo\"] {\n  background-color: rgba(75, 0, 130, 0.8);\n}\n.bc-indigo,\nimg[src~=\"bc-indigo\"] {\n  border-color: #4B0082;\n}\n.bc-indigo-20pct,\nimg[src~=\"bc-indigo\"] {\n  border-color: rgba(75, 0, 130, 0.2);\n}\n.bc-indigo-40pct,\nimg[src~=\"bc-indigo\"] {\n  border-color: rgba(75, 0, 130, 0.4);\n}\n.bc-indigo-60pct,\nimg[src~=\"bc-indigo\"] {\n  border-color: rgba(75, 0, 130, 0.6);\n}\n.bc-indigo-80pct,\nimg[src~=\"bc-indigo\"] {\n  border-color: rgba(75, 0, 130, 0.8);\n}\n.color-ivory,\nimg[src~=\"color-ivory\"] {\n  color: #FFFFF0;\n}\n.color-ivory-20pct,\nimg[src~=\"color-ivory\"] {\n  color: rgba(255, 255, 240, 0.2);\n}\n.color-ivory-40pct,\nimg[src~=\"color-ivory\"] {\n  color: rgba(255, 255, 240, 0.4);\n}\n.color-ivory-60pct,\nimg[src~=\"color-ivory\"] {\n  color: rgba(255, 255, 240, 0.6);\n}\n.color-ivory-80pct,\nimg[src~=\"color-ivory\"] {\n  color: rgba(255, 255, 240, 0.8);\n}\n.bg-ivory,\nimg[src~=\"bg-ivory\"] {\n  background-color: #FFFFF0;\n}\n.bg-ivory-20pct,\nimg[src~=\"bg-ivory\"] {\n  background-color: rgba(255, 255, 240, 0.2);\n}\n.bg-ivory-40pct,\nimg[src~=\"bg-ivory\"] {\n  background-color: rgba(255, 255, 240, 0.4);\n}\n.bg-ivory-60pct,\nimg[src~=\"bg-ivory\"] {\n  background-color: rgba(255, 255, 240, 0.6);\n}\n.bg-ivory-80pct,\nimg[src~=\"bg-ivory\"] {\n  background-color: rgba(255, 255, 240, 0.8);\n}\n.bc-ivory,\nimg[src~=\"bc-ivory\"] {\n  border-color: #FFFFF0;\n}\n.bc-ivory-20pct,\nimg[src~=\"bc-ivory\"] {\n  border-color: rgba(255, 255, 240, 0.2);\n}\n.bc-ivory-40pct,\nimg[src~=\"bc-ivory\"] {\n  border-color: rgba(255, 255, 240, 0.4);\n}\n.bc-ivory-60pct,\nimg[src~=\"bc-ivory\"] {\n  border-color: rgba(255, 255, 240, 0.6);\n}\n.bc-ivory-80pct,\nimg[src~=\"bc-ivory\"] {\n  border-color: rgba(255, 255, 240, 0.8);\n}\n.color-khaki,\nimg[src~=\"color-khaki\"] {\n  color: #F0E68C;\n}\n.color-khaki-20pct,\nimg[src~=\"color-khaki\"] {\n  color: rgba(240, 230, 140, 0.2);\n}\n.color-khaki-40pct,\nimg[src~=\"color-khaki\"] {\n  color: rgba(240, 230, 140, 0.4);\n}\n.color-khaki-60pct,\nimg[src~=\"color-khaki\"] {\n  color: rgba(240, 230, 140, 0.6);\n}\n.color-khaki-80pct,\nimg[src~=\"color-khaki\"] {\n  color: rgba(240, 230, 140, 0.8);\n}\n.bg-khaki,\nimg[src~=\"bg-khaki\"] {\n  background-color: #F0E68C;\n}\n.bg-khaki-20pct,\nimg[src~=\"bg-khaki\"] {\n  background-color: rgba(240, 230, 140, 0.2);\n}\n.bg-khaki-40pct,\nimg[src~=\"bg-khaki\"] {\n  background-color: rgba(240, 230, 140, 0.4);\n}\n.bg-khaki-60pct,\nimg[src~=\"bg-khaki\"] {\n  background-color: rgba(240, 230, 140, 0.6);\n}\n.bg-khaki-80pct,\nimg[src~=\"bg-khaki\"] {\n  background-color: rgba(240, 230, 140, 0.8);\n}\n.bc-khaki,\nimg[src~=\"bc-khaki\"] {\n  border-color: #F0E68C;\n}\n.bc-khaki-20pct,\nimg[src~=\"bc-khaki\"] {\n  border-color: rgba(240, 230, 140, 0.2);\n}\n.bc-khaki-40pct,\nimg[src~=\"bc-khaki\"] {\n  border-color: rgba(240, 230, 140, 0.4);\n}\n.bc-khaki-60pct,\nimg[src~=\"bc-khaki\"] {\n  border-color: rgba(240, 230, 140, 0.6);\n}\n.bc-khaki-80pct,\nimg[src~=\"bc-khaki\"] {\n  border-color: rgba(240, 230, 140, 0.8);\n}\n.color-lavender,\nimg[src~=\"color-lavender\"] {\n  color: #E6E6FA;\n}\n.color-lavender-20pct,\nimg[src~=\"color-lavender\"] {\n  color: rgba(230, 230, 250, 0.2);\n}\n.color-lavender-40pct,\nimg[src~=\"color-lavender\"] {\n  color: rgba(230, 230, 250, 0.4);\n}\n.color-lavender-60pct,\nimg[src~=\"color-lavender\"] {\n  color: rgba(230, 230, 250, 0.6);\n}\n.color-lavender-80pct,\nimg[src~=\"color-lavender\"] {\n  color: rgba(230, 230, 250, 0.8);\n}\n.bg-lavender,\nimg[src~=\"bg-lavender\"] {\n  background-color: #E6E6FA;\n}\n.bg-lavender-20pct,\nimg[src~=\"bg-lavender\"] {\n  background-color: rgba(230, 230, 250, 0.2);\n}\n.bg-lavender-40pct,\nimg[src~=\"bg-lavender\"] {\n  background-color: rgba(230, 230, 250, 0.4);\n}\n.bg-lavender-60pct,\nimg[src~=\"bg-lavender\"] {\n  background-color: rgba(230, 230, 250, 0.6);\n}\n.bg-lavender-80pct,\nimg[src~=\"bg-lavender\"] {\n  background-color: rgba(230, 230, 250, 0.8);\n}\n.bc-lavender,\nimg[src~=\"bc-lavender\"] {\n  border-color: #E6E6FA;\n}\n.bc-lavender-20pct,\nimg[src~=\"bc-lavender\"] {\n  border-color: rgba(230, 230, 250, 0.2);\n}\n.bc-lavender-40pct,\nimg[src~=\"bc-lavender\"] {\n  border-color: rgba(230, 230, 250, 0.4);\n}\n.bc-lavender-60pct,\nimg[src~=\"bc-lavender\"] {\n  border-color: rgba(230, 230, 250, 0.6);\n}\n.bc-lavender-80pct,\nimg[src~=\"bc-lavender\"] {\n  border-color: rgba(230, 230, 250, 0.8);\n}\n.color-lavenderblush,\nimg[src~=\"color-lavenderblush\"] {\n  color: #FFF0F5;\n}\n.color-lavenderblush-20pct,\nimg[src~=\"color-lavenderblush\"] {\n  color: rgba(255, 240, 245, 0.2);\n}\n.color-lavenderblush-40pct,\nimg[src~=\"color-lavenderblush\"] {\n  color: rgba(255, 240, 245, 0.4);\n}\n.color-lavenderblush-60pct,\nimg[src~=\"color-lavenderblush\"] {\n  color: rgba(255, 240, 245, 0.6);\n}\n.color-lavenderblush-80pct,\nimg[src~=\"color-lavenderblush\"] {\n  color: rgba(255, 240, 245, 0.8);\n}\n.bg-lavenderblush,\nimg[src~=\"bg-lavenderblush\"] {\n  background-color: #FFF0F5;\n}\n.bg-lavenderblush-20pct,\nimg[src~=\"bg-lavenderblush\"] {\n  background-color: rgba(255, 240, 245, 0.2);\n}\n.bg-lavenderblush-40pct,\nimg[src~=\"bg-lavenderblush\"] {\n  background-color: rgba(255, 240, 245, 0.4);\n}\n.bg-lavenderblush-60pct,\nimg[src~=\"bg-lavenderblush\"] {\n  background-color: rgba(255, 240, 245, 0.6);\n}\n.bg-lavenderblush-80pct,\nimg[src~=\"bg-lavenderblush\"] {\n  background-color: rgba(255, 240, 245, 0.8);\n}\n.bc-lavenderblush,\nimg[src~=\"bc-lavenderblush\"] {\n  border-color: #FFF0F5;\n}\n.bc-lavenderblush-20pct,\nimg[src~=\"bc-lavenderblush\"] {\n  border-color: rgba(255, 240, 245, 0.2);\n}\n.bc-lavenderblush-40pct,\nimg[src~=\"bc-lavenderblush\"] {\n  border-color: rgba(255, 240, 245, 0.4);\n}\n.bc-lavenderblush-60pct,\nimg[src~=\"bc-lavenderblush\"] {\n  border-color: rgba(255, 240, 245, 0.6);\n}\n.bc-lavenderblush-80pct,\nimg[src~=\"bc-lavenderblush\"] {\n  border-color: rgba(255, 240, 245, 0.8);\n}\n.color-lawngreen,\nimg[src~=\"color-lawngreen\"] {\n  color: #7CFC00;\n}\n.color-lawngreen-20pct,\nimg[src~=\"color-lawngreen\"] {\n  color: rgba(124, 252, 0, 0.2);\n}\n.color-lawngreen-40pct,\nimg[src~=\"color-lawngreen\"] {\n  color: rgba(124, 252, 0, 0.4);\n}\n.color-lawngreen-60pct,\nimg[src~=\"color-lawngreen\"] {\n  color: rgba(124, 252, 0, 0.6);\n}\n.color-lawngreen-80pct,\nimg[src~=\"color-lawngreen\"] {\n  color: rgba(124, 252, 0, 0.8);\n}\n.bg-lawngreen,\nimg[src~=\"bg-lawngreen\"] {\n  background-color: #7CFC00;\n}\n.bg-lawngreen-20pct,\nimg[src~=\"bg-lawngreen\"] {\n  background-color: rgba(124, 252, 0, 0.2);\n}\n.bg-lawngreen-40pct,\nimg[src~=\"bg-lawngreen\"] {\n  background-color: rgba(124, 252, 0, 0.4);\n}\n.bg-lawngreen-60pct,\nimg[src~=\"bg-lawngreen\"] {\n  background-color: rgba(124, 252, 0, 0.6);\n}\n.bg-lawngreen-80pct,\nimg[src~=\"bg-lawngreen\"] {\n  background-color: rgba(124, 252, 0, 0.8);\n}\n.bc-lawngreen,\nimg[src~=\"bc-lawngreen\"] {\n  border-color: #7CFC00;\n}\n.bc-lawngreen-20pct,\nimg[src~=\"bc-lawngreen\"] {\n  border-color: rgba(124, 252, 0, 0.2);\n}\n.bc-lawngreen-40pct,\nimg[src~=\"bc-lawngreen\"] {\n  border-color: rgba(124, 252, 0, 0.4);\n}\n.bc-lawngreen-60pct,\nimg[src~=\"bc-lawngreen\"] {\n  border-color: rgba(124, 252, 0, 0.6);\n}\n.bc-lawngreen-80pct,\nimg[src~=\"bc-lawngreen\"] {\n  border-color: rgba(124, 252, 0, 0.8);\n}\n.color-lemonchiffon,\nimg[src~=\"color-lemonchiffon\"] {\n  color: #FFFACD;\n}\n.color-lemonchiffon-20pct,\nimg[src~=\"color-lemonchiffon\"] {\n  color: rgba(255, 250, 205, 0.2);\n}\n.color-lemonchiffon-40pct,\nimg[src~=\"color-lemonchiffon\"] {\n  color: rgba(255, 250, 205, 0.4);\n}\n.color-lemonchiffon-60pct,\nimg[src~=\"color-lemonchiffon\"] {\n  color: rgba(255, 250, 205, 0.6);\n}\n.color-lemonchiffon-80pct,\nimg[src~=\"color-lemonchiffon\"] {\n  color: rgba(255, 250, 205, 0.8);\n}\n.bg-lemonchiffon,\nimg[src~=\"bg-lemonchiffon\"] {\n  background-color: #FFFACD;\n}\n.bg-lemonchiffon-20pct,\nimg[src~=\"bg-lemonchiffon\"] {\n  background-color: rgba(255, 250, 205, 0.2);\n}\n.bg-lemonchiffon-40pct,\nimg[src~=\"bg-lemonchiffon\"] {\n  background-color: rgba(255, 250, 205, 0.4);\n}\n.bg-lemonchiffon-60pct,\nimg[src~=\"bg-lemonchiffon\"] {\n  background-color: rgba(255, 250, 205, 0.6);\n}\n.bg-lemonchiffon-80pct,\nimg[src~=\"bg-lemonchiffon\"] {\n  background-color: rgba(255, 250, 205, 0.8);\n}\n.bc-lemonchiffon,\nimg[src~=\"bc-lemonchiffon\"] {\n  border-color: #FFFACD;\n}\n.bc-lemonchiffon-20pct,\nimg[src~=\"bc-lemonchiffon\"] {\n  border-color: rgba(255, 250, 205, 0.2);\n}\n.bc-lemonchiffon-40pct,\nimg[src~=\"bc-lemonchiffon\"] {\n  border-color: rgba(255, 250, 205, 0.4);\n}\n.bc-lemonchiffon-60pct,\nimg[src~=\"bc-lemonchiffon\"] {\n  border-color: rgba(255, 250, 205, 0.6);\n}\n.bc-lemonchiffon-80pct,\nimg[src~=\"bc-lemonchiffon\"] {\n  border-color: rgba(255, 250, 205, 0.8);\n}\n.color-lightblue,\nimg[src~=\"color-lightblue\"] {\n  color: #ADD8E6;\n}\n.color-lightblue-20pct,\nimg[src~=\"color-lightblue\"] {\n  color: rgba(173, 216, 230, 0.2);\n}\n.color-lightblue-40pct,\nimg[src~=\"color-lightblue\"] {\n  color: rgba(173, 216, 230, 0.4);\n}\n.color-lightblue-60pct,\nimg[src~=\"color-lightblue\"] {\n  color: rgba(173, 216, 230, 0.6);\n}\n.color-lightblue-80pct,\nimg[src~=\"color-lightblue\"] {\n  color: rgba(173, 216, 230, 0.8);\n}\n.bg-lightblue,\nimg[src~=\"bg-lightblue\"] {\n  background-color: #ADD8E6;\n}\n.bg-lightblue-20pct,\nimg[src~=\"bg-lightblue\"] {\n  background-color: rgba(173, 216, 230, 0.2);\n}\n.bg-lightblue-40pct,\nimg[src~=\"bg-lightblue\"] {\n  background-color: rgba(173, 216, 230, 0.4);\n}\n.bg-lightblue-60pct,\nimg[src~=\"bg-lightblue\"] {\n  background-color: rgba(173, 216, 230, 0.6);\n}\n.bg-lightblue-80pct,\nimg[src~=\"bg-lightblue\"] {\n  background-color: rgba(173, 216, 230, 0.8);\n}\n.bc-lightblue,\nimg[src~=\"bc-lightblue\"] {\n  border-color: #ADD8E6;\n}\n.bc-lightblue-20pct,\nimg[src~=\"bc-lightblue\"] {\n  border-color: rgba(173, 216, 230, 0.2);\n}\n.bc-lightblue-40pct,\nimg[src~=\"bc-lightblue\"] {\n  border-color: rgba(173, 216, 230, 0.4);\n}\n.bc-lightblue-60pct,\nimg[src~=\"bc-lightblue\"] {\n  border-color: rgba(173, 216, 230, 0.6);\n}\n.bc-lightblue-80pct,\nimg[src~=\"bc-lightblue\"] {\n  border-color: rgba(173, 216, 230, 0.8);\n}\n.color-lightcoral,\nimg[src~=\"color-lightcoral\"] {\n  color: #F08080;\n}\n.color-lightcoral-20pct,\nimg[src~=\"color-lightcoral\"] {\n  color: rgba(240, 128, 128, 0.2);\n}\n.color-lightcoral-40pct,\nimg[src~=\"color-lightcoral\"] {\n  color: rgba(240, 128, 128, 0.4);\n}\n.color-lightcoral-60pct,\nimg[src~=\"color-lightcoral\"] {\n  color: rgba(240, 128, 128, 0.6);\n}\n.color-lightcoral-80pct,\nimg[src~=\"color-lightcoral\"] {\n  color: rgba(240, 128, 128, 0.8);\n}\n.bg-lightcoral,\nimg[src~=\"bg-lightcoral\"] {\n  background-color: #F08080;\n}\n.bg-lightcoral-20pct,\nimg[src~=\"bg-lightcoral\"] {\n  background-color: rgba(240, 128, 128, 0.2);\n}\n.bg-lightcoral-40pct,\nimg[src~=\"bg-lightcoral\"] {\n  background-color: rgba(240, 128, 128, 0.4);\n}\n.bg-lightcoral-60pct,\nimg[src~=\"bg-lightcoral\"] {\n  background-color: rgba(240, 128, 128, 0.6);\n}\n.bg-lightcoral-80pct,\nimg[src~=\"bg-lightcoral\"] {\n  background-color: rgba(240, 128, 128, 0.8);\n}\n.bc-lightcoral,\nimg[src~=\"bc-lightcoral\"] {\n  border-color: #F08080;\n}\n.bc-lightcoral-20pct,\nimg[src~=\"bc-lightcoral\"] {\n  border-color: rgba(240, 128, 128, 0.2);\n}\n.bc-lightcoral-40pct,\nimg[src~=\"bc-lightcoral\"] {\n  border-color: rgba(240, 128, 128, 0.4);\n}\n.bc-lightcoral-60pct,\nimg[src~=\"bc-lightcoral\"] {\n  border-color: rgba(240, 128, 128, 0.6);\n}\n.bc-lightcoral-80pct,\nimg[src~=\"bc-lightcoral\"] {\n  border-color: rgba(240, 128, 128, 0.8);\n}\n.color-lightcyan,\nimg[src~=\"color-lightcyan\"] {\n  color: #E0FFFF;\n}\n.color-lightcyan-20pct,\nimg[src~=\"color-lightcyan\"] {\n  color: rgba(224, 255, 255, 0.2);\n}\n.color-lightcyan-40pct,\nimg[src~=\"color-lightcyan\"] {\n  color: rgba(224, 255, 255, 0.4);\n}\n.color-lightcyan-60pct,\nimg[src~=\"color-lightcyan\"] {\n  color: rgba(224, 255, 255, 0.6);\n}\n.color-lightcyan-80pct,\nimg[src~=\"color-lightcyan\"] {\n  color: rgba(224, 255, 255, 0.8);\n}\n.bg-lightcyan,\nimg[src~=\"bg-lightcyan\"] {\n  background-color: #E0FFFF;\n}\n.bg-lightcyan-20pct,\nimg[src~=\"bg-lightcyan\"] {\n  background-color: rgba(224, 255, 255, 0.2);\n}\n.bg-lightcyan-40pct,\nimg[src~=\"bg-lightcyan\"] {\n  background-color: rgba(224, 255, 255, 0.4);\n}\n.bg-lightcyan-60pct,\nimg[src~=\"bg-lightcyan\"] {\n  background-color: rgba(224, 255, 255, 0.6);\n}\n.bg-lightcyan-80pct,\nimg[src~=\"bg-lightcyan\"] {\n  background-color: rgba(224, 255, 255, 0.8);\n}\n.bc-lightcyan,\nimg[src~=\"bc-lightcyan\"] {\n  border-color: #E0FFFF;\n}\n.bc-lightcyan-20pct,\nimg[src~=\"bc-lightcyan\"] {\n  border-color: rgba(224, 255, 255, 0.2);\n}\n.bc-lightcyan-40pct,\nimg[src~=\"bc-lightcyan\"] {\n  border-color: rgba(224, 255, 255, 0.4);\n}\n.bc-lightcyan-60pct,\nimg[src~=\"bc-lightcyan\"] {\n  border-color: rgba(224, 255, 255, 0.6);\n}\n.bc-lightcyan-80pct,\nimg[src~=\"bc-lightcyan\"] {\n  border-color: rgba(224, 255, 255, 0.8);\n}\n.color-lightgoldenrodyellow,\nimg[src~=\"color-lightgoldenrodyellow\"] {\n  color: #FAFAD2;\n}\n.color-lightgoldenrodyellow-20pct,\nimg[src~=\"color-lightgoldenrodyellow\"] {\n  color: rgba(250, 250, 210, 0.2);\n}\n.color-lightgoldenrodyellow-40pct,\nimg[src~=\"color-lightgoldenrodyellow\"] {\n  color: rgba(250, 250, 210, 0.4);\n}\n.color-lightgoldenrodyellow-60pct,\nimg[src~=\"color-lightgoldenrodyellow\"] {\n  color: rgba(250, 250, 210, 0.6);\n}\n.color-lightgoldenrodyellow-80pct,\nimg[src~=\"color-lightgoldenrodyellow\"] {\n  color: rgba(250, 250, 210, 0.8);\n}\n.bg-lightgoldenrodyellow,\nimg[src~=\"bg-lightgoldenrodyellow\"] {\n  background-color: #FAFAD2;\n}\n.bg-lightgoldenrodyellow-20pct,\nimg[src~=\"bg-lightgoldenrodyellow\"] {\n  background-color: rgba(250, 250, 210, 0.2);\n}\n.bg-lightgoldenrodyellow-40pct,\nimg[src~=\"bg-lightgoldenrodyellow\"] {\n  background-color: rgba(250, 250, 210, 0.4);\n}\n.bg-lightgoldenrodyellow-60pct,\nimg[src~=\"bg-lightgoldenrodyellow\"] {\n  background-color: rgba(250, 250, 210, 0.6);\n}\n.bg-lightgoldenrodyellow-80pct,\nimg[src~=\"bg-lightgoldenrodyellow\"] {\n  background-color: rgba(250, 250, 210, 0.8);\n}\n.bc-lightgoldenrodyellow,\nimg[src~=\"bc-lightgoldenrodyellow\"] {\n  border-color: #FAFAD2;\n}\n.bc-lightgoldenrodyellow-20pct,\nimg[src~=\"bc-lightgoldenrodyellow\"] {\n  border-color: rgba(250, 250, 210, 0.2);\n}\n.bc-lightgoldenrodyellow-40pct,\nimg[src~=\"bc-lightgoldenrodyellow\"] {\n  border-color: rgba(250, 250, 210, 0.4);\n}\n.bc-lightgoldenrodyellow-60pct,\nimg[src~=\"bc-lightgoldenrodyellow\"] {\n  border-color: rgba(250, 250, 210, 0.6);\n}\n.bc-lightgoldenrodyellow-80pct,\nimg[src~=\"bc-lightgoldenrodyellow\"] {\n  border-color: rgba(250, 250, 210, 0.8);\n}\n.color-lightgray,\nimg[src~=\"color-lightgray\"] {\n  color: #D3D3D3;\n}\n.color-lightgray-20pct,\nimg[src~=\"color-lightgray\"] {\n  color: rgba(211, 211, 211, 0.2);\n}\n.color-lightgray-40pct,\nimg[src~=\"color-lightgray\"] {\n  color: rgba(211, 211, 211, 0.4);\n}\n.color-lightgray-60pct,\nimg[src~=\"color-lightgray\"] {\n  color: rgba(211, 211, 211, 0.6);\n}\n.color-lightgray-80pct,\nimg[src~=\"color-lightgray\"] {\n  color: rgba(211, 211, 211, 0.8);\n}\n.bg-lightgray,\nimg[src~=\"bg-lightgray\"] {\n  background-color: #D3D3D3;\n}\n.bg-lightgray-20pct,\nimg[src~=\"bg-lightgray\"] {\n  background-color: rgba(211, 211, 211, 0.2);\n}\n.bg-lightgray-40pct,\nimg[src~=\"bg-lightgray\"] {\n  background-color: rgba(211, 211, 211, 0.4);\n}\n.bg-lightgray-60pct,\nimg[src~=\"bg-lightgray\"] {\n  background-color: rgba(211, 211, 211, 0.6);\n}\n.bg-lightgray-80pct,\nimg[src~=\"bg-lightgray\"] {\n  background-color: rgba(211, 211, 211, 0.8);\n}\n.bc-lightgray,\nimg[src~=\"bc-lightgray\"] {\n  border-color: #D3D3D3;\n}\n.bc-lightgray-20pct,\nimg[src~=\"bc-lightgray\"] {\n  border-color: rgba(211, 211, 211, 0.2);\n}\n.bc-lightgray-40pct,\nimg[src~=\"bc-lightgray\"] {\n  border-color: rgba(211, 211, 211, 0.4);\n}\n.bc-lightgray-60pct,\nimg[src~=\"bc-lightgray\"] {\n  border-color: rgba(211, 211, 211, 0.6);\n}\n.bc-lightgray-80pct,\nimg[src~=\"bc-lightgray\"] {\n  border-color: rgba(211, 211, 211, 0.8);\n}\n.color-lightgreen,\nimg[src~=\"color-lightgreen\"] {\n  color: #90EE90;\n}\n.color-lightgreen-20pct,\nimg[src~=\"color-lightgreen\"] {\n  color: rgba(144, 238, 144, 0.2);\n}\n.color-lightgreen-40pct,\nimg[src~=\"color-lightgreen\"] {\n  color: rgba(144, 238, 144, 0.4);\n}\n.color-lightgreen-60pct,\nimg[src~=\"color-lightgreen\"] {\n  color: rgba(144, 238, 144, 0.6);\n}\n.color-lightgreen-80pct,\nimg[src~=\"color-lightgreen\"] {\n  color: rgba(144, 238, 144, 0.8);\n}\n.bg-lightgreen,\nimg[src~=\"bg-lightgreen\"] {\n  background-color: #90EE90;\n}\n.bg-lightgreen-20pct,\nimg[src~=\"bg-lightgreen\"] {\n  background-color: rgba(144, 238, 144, 0.2);\n}\n.bg-lightgreen-40pct,\nimg[src~=\"bg-lightgreen\"] {\n  background-color: rgba(144, 238, 144, 0.4);\n}\n.bg-lightgreen-60pct,\nimg[src~=\"bg-lightgreen\"] {\n  background-color: rgba(144, 238, 144, 0.6);\n}\n.bg-lightgreen-80pct,\nimg[src~=\"bg-lightgreen\"] {\n  background-color: rgba(144, 238, 144, 0.8);\n}\n.bc-lightgreen,\nimg[src~=\"bc-lightgreen\"] {\n  border-color: #90EE90;\n}\n.bc-lightgreen-20pct,\nimg[src~=\"bc-lightgreen\"] {\n  border-color: rgba(144, 238, 144, 0.2);\n}\n.bc-lightgreen-40pct,\nimg[src~=\"bc-lightgreen\"] {\n  border-color: rgba(144, 238, 144, 0.4);\n}\n.bc-lightgreen-60pct,\nimg[src~=\"bc-lightgreen\"] {\n  border-color: rgba(144, 238, 144, 0.6);\n}\n.bc-lightgreen-80pct,\nimg[src~=\"bc-lightgreen\"] {\n  border-color: rgba(144, 238, 144, 0.8);\n}\n.color-lightgrey,\nimg[src~=\"color-lightgrey\"] {\n  color: #D3D3D3;\n}\n.color-lightgrey-20pct,\nimg[src~=\"color-lightgrey\"] {\n  color: rgba(211, 211, 211, 0.2);\n}\n.color-lightgrey-40pct,\nimg[src~=\"color-lightgrey\"] {\n  color: rgba(211, 211, 211, 0.4);\n}\n.color-lightgrey-60pct,\nimg[src~=\"color-lightgrey\"] {\n  color: rgba(211, 211, 211, 0.6);\n}\n.color-lightgrey-80pct,\nimg[src~=\"color-lightgrey\"] {\n  color: rgba(211, 211, 211, 0.8);\n}\n.bg-lightgrey,\nimg[src~=\"bg-lightgrey\"] {\n  background-color: #D3D3D3;\n}\n.bg-lightgrey-20pct,\nimg[src~=\"bg-lightgrey\"] {\n  background-color: rgba(211, 211, 211, 0.2);\n}\n.bg-lightgrey-40pct,\nimg[src~=\"bg-lightgrey\"] {\n  background-color: rgba(211, 211, 211, 0.4);\n}\n.bg-lightgrey-60pct,\nimg[src~=\"bg-lightgrey\"] {\n  background-color: rgba(211, 211, 211, 0.6);\n}\n.bg-lightgrey-80pct,\nimg[src~=\"bg-lightgrey\"] {\n  background-color: rgba(211, 211, 211, 0.8);\n}\n.bc-lightgrey,\nimg[src~=\"bc-lightgrey\"] {\n  border-color: #D3D3D3;\n}\n.bc-lightgrey-20pct,\nimg[src~=\"bc-lightgrey\"] {\n  border-color: rgba(211, 211, 211, 0.2);\n}\n.bc-lightgrey-40pct,\nimg[src~=\"bc-lightgrey\"] {\n  border-color: rgba(211, 211, 211, 0.4);\n}\n.bc-lightgrey-60pct,\nimg[src~=\"bc-lightgrey\"] {\n  border-color: rgba(211, 211, 211, 0.6);\n}\n.bc-lightgrey-80pct,\nimg[src~=\"bc-lightgrey\"] {\n  border-color: rgba(211, 211, 211, 0.8);\n}\n.color-lightpink,\nimg[src~=\"color-lightpink\"] {\n  color: #FFB6C1;\n}\n.color-lightpink-20pct,\nimg[src~=\"color-lightpink\"] {\n  color: rgba(255, 182, 193, 0.2);\n}\n.color-lightpink-40pct,\nimg[src~=\"color-lightpink\"] {\n  color: rgba(255, 182, 193, 0.4);\n}\n.color-lightpink-60pct,\nimg[src~=\"color-lightpink\"] {\n  color: rgba(255, 182, 193, 0.6);\n}\n.color-lightpink-80pct,\nimg[src~=\"color-lightpink\"] {\n  color: rgba(255, 182, 193, 0.8);\n}\n.bg-lightpink,\nimg[src~=\"bg-lightpink\"] {\n  background-color: #FFB6C1;\n}\n.bg-lightpink-20pct,\nimg[src~=\"bg-lightpink\"] {\n  background-color: rgba(255, 182, 193, 0.2);\n}\n.bg-lightpink-40pct,\nimg[src~=\"bg-lightpink\"] {\n  background-color: rgba(255, 182, 193, 0.4);\n}\n.bg-lightpink-60pct,\nimg[src~=\"bg-lightpink\"] {\n  background-color: rgba(255, 182, 193, 0.6);\n}\n.bg-lightpink-80pct,\nimg[src~=\"bg-lightpink\"] {\n  background-color: rgba(255, 182, 193, 0.8);\n}\n.bc-lightpink,\nimg[src~=\"bc-lightpink\"] {\n  border-color: #FFB6C1;\n}\n.bc-lightpink-20pct,\nimg[src~=\"bc-lightpink\"] {\n  border-color: rgba(255, 182, 193, 0.2);\n}\n.bc-lightpink-40pct,\nimg[src~=\"bc-lightpink\"] {\n  border-color: rgba(255, 182, 193, 0.4);\n}\n.bc-lightpink-60pct,\nimg[src~=\"bc-lightpink\"] {\n  border-color: rgba(255, 182, 193, 0.6);\n}\n.bc-lightpink-80pct,\nimg[src~=\"bc-lightpink\"] {\n  border-color: rgba(255, 182, 193, 0.8);\n}\n.color-lightsalmon,\nimg[src~=\"color-lightsalmon\"] {\n  color: #FFA07A;\n}\n.color-lightsalmon-20pct,\nimg[src~=\"color-lightsalmon\"] {\n  color: rgba(255, 160, 122, 0.2);\n}\n.color-lightsalmon-40pct,\nimg[src~=\"color-lightsalmon\"] {\n  color: rgba(255, 160, 122, 0.4);\n}\n.color-lightsalmon-60pct,\nimg[src~=\"color-lightsalmon\"] {\n  color: rgba(255, 160, 122, 0.6);\n}\n.color-lightsalmon-80pct,\nimg[src~=\"color-lightsalmon\"] {\n  color: rgba(255, 160, 122, 0.8);\n}\n.bg-lightsalmon,\nimg[src~=\"bg-lightsalmon\"] {\n  background-color: #FFA07A;\n}\n.bg-lightsalmon-20pct,\nimg[src~=\"bg-lightsalmon\"] {\n  background-color: rgba(255, 160, 122, 0.2);\n}\n.bg-lightsalmon-40pct,\nimg[src~=\"bg-lightsalmon\"] {\n  background-color: rgba(255, 160, 122, 0.4);\n}\n.bg-lightsalmon-60pct,\nimg[src~=\"bg-lightsalmon\"] {\n  background-color: rgba(255, 160, 122, 0.6);\n}\n.bg-lightsalmon-80pct,\nimg[src~=\"bg-lightsalmon\"] {\n  background-color: rgba(255, 160, 122, 0.8);\n}\n.bc-lightsalmon,\nimg[src~=\"bc-lightsalmon\"] {\n  border-color: #FFA07A;\n}\n.bc-lightsalmon-20pct,\nimg[src~=\"bc-lightsalmon\"] {\n  border-color: rgba(255, 160, 122, 0.2);\n}\n.bc-lightsalmon-40pct,\nimg[src~=\"bc-lightsalmon\"] {\n  border-color: rgba(255, 160, 122, 0.4);\n}\n.bc-lightsalmon-60pct,\nimg[src~=\"bc-lightsalmon\"] {\n  border-color: rgba(255, 160, 122, 0.6);\n}\n.bc-lightsalmon-80pct,\nimg[src~=\"bc-lightsalmon\"] {\n  border-color: rgba(255, 160, 122, 0.8);\n}\n.color-lightseagreen,\nimg[src~=\"color-lightseagreen\"] {\n  color: #20B2AA;\n}\n.color-lightseagreen-20pct,\nimg[src~=\"color-lightseagreen\"] {\n  color: rgba(32, 178, 170, 0.2);\n}\n.color-lightseagreen-40pct,\nimg[src~=\"color-lightseagreen\"] {\n  color: rgba(32, 178, 170, 0.4);\n}\n.color-lightseagreen-60pct,\nimg[src~=\"color-lightseagreen\"] {\n  color: rgba(32, 178, 170, 0.6);\n}\n.color-lightseagreen-80pct,\nimg[src~=\"color-lightseagreen\"] {\n  color: rgba(32, 178, 170, 0.8);\n}\n.bg-lightseagreen,\nimg[src~=\"bg-lightseagreen\"] {\n  background-color: #20B2AA;\n}\n.bg-lightseagreen-20pct,\nimg[src~=\"bg-lightseagreen\"] {\n  background-color: rgba(32, 178, 170, 0.2);\n}\n.bg-lightseagreen-40pct,\nimg[src~=\"bg-lightseagreen\"] {\n  background-color: rgba(32, 178, 170, 0.4);\n}\n.bg-lightseagreen-60pct,\nimg[src~=\"bg-lightseagreen\"] {\n  background-color: rgba(32, 178, 170, 0.6);\n}\n.bg-lightseagreen-80pct,\nimg[src~=\"bg-lightseagreen\"] {\n  background-color: rgba(32, 178, 170, 0.8);\n}\n.bc-lightseagreen,\nimg[src~=\"bc-lightseagreen\"] {\n  border-color: #20B2AA;\n}\n.bc-lightseagreen-20pct,\nimg[src~=\"bc-lightseagreen\"] {\n  border-color: rgba(32, 178, 170, 0.2);\n}\n.bc-lightseagreen-40pct,\nimg[src~=\"bc-lightseagreen\"] {\n  border-color: rgba(32, 178, 170, 0.4);\n}\n.bc-lightseagreen-60pct,\nimg[src~=\"bc-lightseagreen\"] {\n  border-color: rgba(32, 178, 170, 0.6);\n}\n.bc-lightseagreen-80pct,\nimg[src~=\"bc-lightseagreen\"] {\n  border-color: rgba(32, 178, 170, 0.8);\n}\n.color-lightskyblue,\nimg[src~=\"color-lightskyblue\"] {\n  color: #87CEFA;\n}\n.color-lightskyblue-20pct,\nimg[src~=\"color-lightskyblue\"] {\n  color: rgba(135, 206, 250, 0.2);\n}\n.color-lightskyblue-40pct,\nimg[src~=\"color-lightskyblue\"] {\n  color: rgba(135, 206, 250, 0.4);\n}\n.color-lightskyblue-60pct,\nimg[src~=\"color-lightskyblue\"] {\n  color: rgba(135, 206, 250, 0.6);\n}\n.color-lightskyblue-80pct,\nimg[src~=\"color-lightskyblue\"] {\n  color: rgba(135, 206, 250, 0.8);\n}\n.bg-lightskyblue,\nimg[src~=\"bg-lightskyblue\"] {\n  background-color: #87CEFA;\n}\n.bg-lightskyblue-20pct,\nimg[src~=\"bg-lightskyblue\"] {\n  background-color: rgba(135, 206, 250, 0.2);\n}\n.bg-lightskyblue-40pct,\nimg[src~=\"bg-lightskyblue\"] {\n  background-color: rgba(135, 206, 250, 0.4);\n}\n.bg-lightskyblue-60pct,\nimg[src~=\"bg-lightskyblue\"] {\n  background-color: rgba(135, 206, 250, 0.6);\n}\n.bg-lightskyblue-80pct,\nimg[src~=\"bg-lightskyblue\"] {\n  background-color: rgba(135, 206, 250, 0.8);\n}\n.bc-lightskyblue,\nimg[src~=\"bc-lightskyblue\"] {\n  border-color: #87CEFA;\n}\n.bc-lightskyblue-20pct,\nimg[src~=\"bc-lightskyblue\"] {\n  border-color: rgba(135, 206, 250, 0.2);\n}\n.bc-lightskyblue-40pct,\nimg[src~=\"bc-lightskyblue\"] {\n  border-color: rgba(135, 206, 250, 0.4);\n}\n.bc-lightskyblue-60pct,\nimg[src~=\"bc-lightskyblue\"] {\n  border-color: rgba(135, 206, 250, 0.6);\n}\n.bc-lightskyblue-80pct,\nimg[src~=\"bc-lightskyblue\"] {\n  border-color: rgba(135, 206, 250, 0.8);\n}\n.color-lightslategray,\nimg[src~=\"color-lightslategray\"] {\n  color: #778899;\n}\n.color-lightslategray-20pct,\nimg[src~=\"color-lightslategray\"] {\n  color: rgba(119, 136, 153, 0.2);\n}\n.color-lightslategray-40pct,\nimg[src~=\"color-lightslategray\"] {\n  color: rgba(119, 136, 153, 0.4);\n}\n.color-lightslategray-60pct,\nimg[src~=\"color-lightslategray\"] {\n  color: rgba(119, 136, 153, 0.6);\n}\n.color-lightslategray-80pct,\nimg[src~=\"color-lightslategray\"] {\n  color: rgba(119, 136, 153, 0.8);\n}\n.bg-lightslategray,\nimg[src~=\"bg-lightslategray\"] {\n  background-color: #778899;\n}\n.bg-lightslategray-20pct,\nimg[src~=\"bg-lightslategray\"] {\n  background-color: rgba(119, 136, 153, 0.2);\n}\n.bg-lightslategray-40pct,\nimg[src~=\"bg-lightslategray\"] {\n  background-color: rgba(119, 136, 153, 0.4);\n}\n.bg-lightslategray-60pct,\nimg[src~=\"bg-lightslategray\"] {\n  background-color: rgba(119, 136, 153, 0.6);\n}\n.bg-lightslategray-80pct,\nimg[src~=\"bg-lightslategray\"] {\n  background-color: rgba(119, 136, 153, 0.8);\n}\n.bc-lightslategray,\nimg[src~=\"bc-lightslategray\"] {\n  border-color: #778899;\n}\n.bc-lightslategray-20pct,\nimg[src~=\"bc-lightslategray\"] {\n  border-color: rgba(119, 136, 153, 0.2);\n}\n.bc-lightslategray-40pct,\nimg[src~=\"bc-lightslategray\"] {\n  border-color: rgba(119, 136, 153, 0.4);\n}\n.bc-lightslategray-60pct,\nimg[src~=\"bc-lightslategray\"] {\n  border-color: rgba(119, 136, 153, 0.6);\n}\n.bc-lightslategray-80pct,\nimg[src~=\"bc-lightslategray\"] {\n  border-color: rgba(119, 136, 153, 0.8);\n}\n.color-lightslategrey,\nimg[src~=\"color-lightslategrey\"] {\n  color: #778899;\n}\n.color-lightslategrey-20pct,\nimg[src~=\"color-lightslategrey\"] {\n  color: rgba(119, 136, 153, 0.2);\n}\n.color-lightslategrey-40pct,\nimg[src~=\"color-lightslategrey\"] {\n  color: rgba(119, 136, 153, 0.4);\n}\n.color-lightslategrey-60pct,\nimg[src~=\"color-lightslategrey\"] {\n  color: rgba(119, 136, 153, 0.6);\n}\n.color-lightslategrey-80pct,\nimg[src~=\"color-lightslategrey\"] {\n  color: rgba(119, 136, 153, 0.8);\n}\n.bg-lightslategrey,\nimg[src~=\"bg-lightslategrey\"] {\n  background-color: #778899;\n}\n.bg-lightslategrey-20pct,\nimg[src~=\"bg-lightslategrey\"] {\n  background-color: rgba(119, 136, 153, 0.2);\n}\n.bg-lightslategrey-40pct,\nimg[src~=\"bg-lightslategrey\"] {\n  background-color: rgba(119, 136, 153, 0.4);\n}\n.bg-lightslategrey-60pct,\nimg[src~=\"bg-lightslategrey\"] {\n  background-color: rgba(119, 136, 153, 0.6);\n}\n.bg-lightslategrey-80pct,\nimg[src~=\"bg-lightslategrey\"] {\n  background-color: rgba(119, 136, 153, 0.8);\n}\n.bc-lightslategrey,\nimg[src~=\"bc-lightslategrey\"] {\n  border-color: #778899;\n}\n.bc-lightslategrey-20pct,\nimg[src~=\"bc-lightslategrey\"] {\n  border-color: rgba(119, 136, 153, 0.2);\n}\n.bc-lightslategrey-40pct,\nimg[src~=\"bc-lightslategrey\"] {\n  border-color: rgba(119, 136, 153, 0.4);\n}\n.bc-lightslategrey-60pct,\nimg[src~=\"bc-lightslategrey\"] {\n  border-color: rgba(119, 136, 153, 0.6);\n}\n.bc-lightslategrey-80pct,\nimg[src~=\"bc-lightslategrey\"] {\n  border-color: rgba(119, 136, 153, 0.8);\n}\n.color-lightsteelblue,\nimg[src~=\"color-lightsteelblue\"] {\n  color: #B0C4DE;\n}\n.color-lightsteelblue-20pct,\nimg[src~=\"color-lightsteelblue\"] {\n  color: rgba(176, 196, 222, 0.2);\n}\n.color-lightsteelblue-40pct,\nimg[src~=\"color-lightsteelblue\"] {\n  color: rgba(176, 196, 222, 0.4);\n}\n.color-lightsteelblue-60pct,\nimg[src~=\"color-lightsteelblue\"] {\n  color: rgba(176, 196, 222, 0.6);\n}\n.color-lightsteelblue-80pct,\nimg[src~=\"color-lightsteelblue\"] {\n  color: rgba(176, 196, 222, 0.8);\n}\n.bg-lightsteelblue,\nimg[src~=\"bg-lightsteelblue\"] {\n  background-color: #B0C4DE;\n}\n.bg-lightsteelblue-20pct,\nimg[src~=\"bg-lightsteelblue\"] {\n  background-color: rgba(176, 196, 222, 0.2);\n}\n.bg-lightsteelblue-40pct,\nimg[src~=\"bg-lightsteelblue\"] {\n  background-color: rgba(176, 196, 222, 0.4);\n}\n.bg-lightsteelblue-60pct,\nimg[src~=\"bg-lightsteelblue\"] {\n  background-color: rgba(176, 196, 222, 0.6);\n}\n.bg-lightsteelblue-80pct,\nimg[src~=\"bg-lightsteelblue\"] {\n  background-color: rgba(176, 196, 222, 0.8);\n}\n.bc-lightsteelblue,\nimg[src~=\"bc-lightsteelblue\"] {\n  border-color: #B0C4DE;\n}\n.bc-lightsteelblue-20pct,\nimg[src~=\"bc-lightsteelblue\"] {\n  border-color: rgba(176, 196, 222, 0.2);\n}\n.bc-lightsteelblue-40pct,\nimg[src~=\"bc-lightsteelblue\"] {\n  border-color: rgba(176, 196, 222, 0.4);\n}\n.bc-lightsteelblue-60pct,\nimg[src~=\"bc-lightsteelblue\"] {\n  border-color: rgba(176, 196, 222, 0.6);\n}\n.bc-lightsteelblue-80pct,\nimg[src~=\"bc-lightsteelblue\"] {\n  border-color: rgba(176, 196, 222, 0.8);\n}\n.color-lightyellow,\nimg[src~=\"color-lightyellow\"] {\n  color: #FFFFE0;\n}\n.color-lightyellow-20pct,\nimg[src~=\"color-lightyellow\"] {\n  color: rgba(255, 255, 224, 0.2);\n}\n.color-lightyellow-40pct,\nimg[src~=\"color-lightyellow\"] {\n  color: rgba(255, 255, 224, 0.4);\n}\n.color-lightyellow-60pct,\nimg[src~=\"color-lightyellow\"] {\n  color: rgba(255, 255, 224, 0.6);\n}\n.color-lightyellow-80pct,\nimg[src~=\"color-lightyellow\"] {\n  color: rgba(255, 255, 224, 0.8);\n}\n.bg-lightyellow,\nimg[src~=\"bg-lightyellow\"] {\n  background-color: #FFFFE0;\n}\n.bg-lightyellow-20pct,\nimg[src~=\"bg-lightyellow\"] {\n  background-color: rgba(255, 255, 224, 0.2);\n}\n.bg-lightyellow-40pct,\nimg[src~=\"bg-lightyellow\"] {\n  background-color: rgba(255, 255, 224, 0.4);\n}\n.bg-lightyellow-60pct,\nimg[src~=\"bg-lightyellow\"] {\n  background-color: rgba(255, 255, 224, 0.6);\n}\n.bg-lightyellow-80pct,\nimg[src~=\"bg-lightyellow\"] {\n  background-color: rgba(255, 255, 224, 0.8);\n}\n.bc-lightyellow,\nimg[src~=\"bc-lightyellow\"] {\n  border-color: #FFFFE0;\n}\n.bc-lightyellow-20pct,\nimg[src~=\"bc-lightyellow\"] {\n  border-color: rgba(255, 255, 224, 0.2);\n}\n.bc-lightyellow-40pct,\nimg[src~=\"bc-lightyellow\"] {\n  border-color: rgba(255, 255, 224, 0.4);\n}\n.bc-lightyellow-60pct,\nimg[src~=\"bc-lightyellow\"] {\n  border-color: rgba(255, 255, 224, 0.6);\n}\n.bc-lightyellow-80pct,\nimg[src~=\"bc-lightyellow\"] {\n  border-color: rgba(255, 255, 224, 0.8);\n}\n.color-lime,\nimg[src~=\"color-lime\"] {\n  color: #00FF00;\n}\n.color-lime-20pct,\nimg[src~=\"color-lime\"] {\n  color: rgba(0, 255, 0, 0.2);\n}\n.color-lime-40pct,\nimg[src~=\"color-lime\"] {\n  color: rgba(0, 255, 0, 0.4);\n}\n.color-lime-60pct,\nimg[src~=\"color-lime\"] {\n  color: rgba(0, 255, 0, 0.6);\n}\n.color-lime-80pct,\nimg[src~=\"color-lime\"] {\n  color: rgba(0, 255, 0, 0.8);\n}\n.bg-lime,\nimg[src~=\"bg-lime\"] {\n  background-color: #00FF00;\n}\n.bg-lime-20pct,\nimg[src~=\"bg-lime\"] {\n  background-color: rgba(0, 255, 0, 0.2);\n}\n.bg-lime-40pct,\nimg[src~=\"bg-lime\"] {\n  background-color: rgba(0, 255, 0, 0.4);\n}\n.bg-lime-60pct,\nimg[src~=\"bg-lime\"] {\n  background-color: rgba(0, 255, 0, 0.6);\n}\n.bg-lime-80pct,\nimg[src~=\"bg-lime\"] {\n  background-color: rgba(0, 255, 0, 0.8);\n}\n.bc-lime,\nimg[src~=\"bc-lime\"] {\n  border-color: #00FF00;\n}\n.bc-lime-20pct,\nimg[src~=\"bc-lime\"] {\n  border-color: rgba(0, 255, 0, 0.2);\n}\n.bc-lime-40pct,\nimg[src~=\"bc-lime\"] {\n  border-color: rgba(0, 255, 0, 0.4);\n}\n.bc-lime-60pct,\nimg[src~=\"bc-lime\"] {\n  border-color: rgba(0, 255, 0, 0.6);\n}\n.bc-lime-80pct,\nimg[src~=\"bc-lime\"] {\n  border-color: rgba(0, 255, 0, 0.8);\n}\n.color-limegreen,\nimg[src~=\"color-limegreen\"] {\n  color: #32CD32;\n}\n.color-limegreen-20pct,\nimg[src~=\"color-limegreen\"] {\n  color: rgba(50, 205, 50, 0.2);\n}\n.color-limegreen-40pct,\nimg[src~=\"color-limegreen\"] {\n  color: rgba(50, 205, 50, 0.4);\n}\n.color-limegreen-60pct,\nimg[src~=\"color-limegreen\"] {\n  color: rgba(50, 205, 50, 0.6);\n}\n.color-limegreen-80pct,\nimg[src~=\"color-limegreen\"] {\n  color: rgba(50, 205, 50, 0.8);\n}\n.bg-limegreen,\nimg[src~=\"bg-limegreen\"] {\n  background-color: #32CD32;\n}\n.bg-limegreen-20pct,\nimg[src~=\"bg-limegreen\"] {\n  background-color: rgba(50, 205, 50, 0.2);\n}\n.bg-limegreen-40pct,\nimg[src~=\"bg-limegreen\"] {\n  background-color: rgba(50, 205, 50, 0.4);\n}\n.bg-limegreen-60pct,\nimg[src~=\"bg-limegreen\"] {\n  background-color: rgba(50, 205, 50, 0.6);\n}\n.bg-limegreen-80pct,\nimg[src~=\"bg-limegreen\"] {\n  background-color: rgba(50, 205, 50, 0.8);\n}\n.bc-limegreen,\nimg[src~=\"bc-limegreen\"] {\n  border-color: #32CD32;\n}\n.bc-limegreen-20pct,\nimg[src~=\"bc-limegreen\"] {\n  border-color: rgba(50, 205, 50, 0.2);\n}\n.bc-limegreen-40pct,\nimg[src~=\"bc-limegreen\"] {\n  border-color: rgba(50, 205, 50, 0.4);\n}\n.bc-limegreen-60pct,\nimg[src~=\"bc-limegreen\"] {\n  border-color: rgba(50, 205, 50, 0.6);\n}\n.bc-limegreen-80pct,\nimg[src~=\"bc-limegreen\"] {\n  border-color: rgba(50, 205, 50, 0.8);\n}\n.color-linen,\nimg[src~=\"color-linen\"] {\n  color: #FAF0E6;\n}\n.color-linen-20pct,\nimg[src~=\"color-linen\"] {\n  color: rgba(250, 240, 230, 0.2);\n}\n.color-linen-40pct,\nimg[src~=\"color-linen\"] {\n  color: rgba(250, 240, 230, 0.4);\n}\n.color-linen-60pct,\nimg[src~=\"color-linen\"] {\n  color: rgba(250, 240, 230, 0.6);\n}\n.color-linen-80pct,\nimg[src~=\"color-linen\"] {\n  color: rgba(250, 240, 230, 0.8);\n}\n.bg-linen,\nimg[src~=\"bg-linen\"] {\n  background-color: #FAF0E6;\n}\n.bg-linen-20pct,\nimg[src~=\"bg-linen\"] {\n  background-color: rgba(250, 240, 230, 0.2);\n}\n.bg-linen-40pct,\nimg[src~=\"bg-linen\"] {\n  background-color: rgba(250, 240, 230, 0.4);\n}\n.bg-linen-60pct,\nimg[src~=\"bg-linen\"] {\n  background-color: rgba(250, 240, 230, 0.6);\n}\n.bg-linen-80pct,\nimg[src~=\"bg-linen\"] {\n  background-color: rgba(250, 240, 230, 0.8);\n}\n.bc-linen,\nimg[src~=\"bc-linen\"] {\n  border-color: #FAF0E6;\n}\n.bc-linen-20pct,\nimg[src~=\"bc-linen\"] {\n  border-color: rgba(250, 240, 230, 0.2);\n}\n.bc-linen-40pct,\nimg[src~=\"bc-linen\"] {\n  border-color: rgba(250, 240, 230, 0.4);\n}\n.bc-linen-60pct,\nimg[src~=\"bc-linen\"] {\n  border-color: rgba(250, 240, 230, 0.6);\n}\n.bc-linen-80pct,\nimg[src~=\"bc-linen\"] {\n  border-color: rgba(250, 240, 230, 0.8);\n}\n.color-magenta,\nimg[src~=\"color-magenta\"] {\n  color: #FF00FF;\n}\n.color-magenta-20pct,\nimg[src~=\"color-magenta\"] {\n  color: rgba(255, 0, 255, 0.2);\n}\n.color-magenta-40pct,\nimg[src~=\"color-magenta\"] {\n  color: rgba(255, 0, 255, 0.4);\n}\n.color-magenta-60pct,\nimg[src~=\"color-magenta\"] {\n  color: rgba(255, 0, 255, 0.6);\n}\n.color-magenta-80pct,\nimg[src~=\"color-magenta\"] {\n  color: rgba(255, 0, 255, 0.8);\n}\n.bg-magenta,\nimg[src~=\"bg-magenta\"] {\n  background-color: #FF00FF;\n}\n.bg-magenta-20pct,\nimg[src~=\"bg-magenta\"] {\n  background-color: rgba(255, 0, 255, 0.2);\n}\n.bg-magenta-40pct,\nimg[src~=\"bg-magenta\"] {\n  background-color: rgba(255, 0, 255, 0.4);\n}\n.bg-magenta-60pct,\nimg[src~=\"bg-magenta\"] {\n  background-color: rgba(255, 0, 255, 0.6);\n}\n.bg-magenta-80pct,\nimg[src~=\"bg-magenta\"] {\n  background-color: rgba(255, 0, 255, 0.8);\n}\n.bc-magenta,\nimg[src~=\"bc-magenta\"] {\n  border-color: #FF00FF;\n}\n.bc-magenta-20pct,\nimg[src~=\"bc-magenta\"] {\n  border-color: rgba(255, 0, 255, 0.2);\n}\n.bc-magenta-40pct,\nimg[src~=\"bc-magenta\"] {\n  border-color: rgba(255, 0, 255, 0.4);\n}\n.bc-magenta-60pct,\nimg[src~=\"bc-magenta\"] {\n  border-color: rgba(255, 0, 255, 0.6);\n}\n.bc-magenta-80pct,\nimg[src~=\"bc-magenta\"] {\n  border-color: rgba(255, 0, 255, 0.8);\n}\n.color-maroon,\nimg[src~=\"color-maroon\"] {\n  color: #800000;\n}\n.color-maroon-20pct,\nimg[src~=\"color-maroon\"] {\n  color: rgba(128, 0, 0, 0.2);\n}\n.color-maroon-40pct,\nimg[src~=\"color-maroon\"] {\n  color: rgba(128, 0, 0, 0.4);\n}\n.color-maroon-60pct,\nimg[src~=\"color-maroon\"] {\n  color: rgba(128, 0, 0, 0.6);\n}\n.color-maroon-80pct,\nimg[src~=\"color-maroon\"] {\n  color: rgba(128, 0, 0, 0.8);\n}\n.bg-maroon,\nimg[src~=\"bg-maroon\"] {\n  background-color: #800000;\n}\n.bg-maroon-20pct,\nimg[src~=\"bg-maroon\"] {\n  background-color: rgba(128, 0, 0, 0.2);\n}\n.bg-maroon-40pct,\nimg[src~=\"bg-maroon\"] {\n  background-color: rgba(128, 0, 0, 0.4);\n}\n.bg-maroon-60pct,\nimg[src~=\"bg-maroon\"] {\n  background-color: rgba(128, 0, 0, 0.6);\n}\n.bg-maroon-80pct,\nimg[src~=\"bg-maroon\"] {\n  background-color: rgba(128, 0, 0, 0.8);\n}\n.bc-maroon,\nimg[src~=\"bc-maroon\"] {\n  border-color: #800000;\n}\n.bc-maroon-20pct,\nimg[src~=\"bc-maroon\"] {\n  border-color: rgba(128, 0, 0, 0.2);\n}\n.bc-maroon-40pct,\nimg[src~=\"bc-maroon\"] {\n  border-color: rgba(128, 0, 0, 0.4);\n}\n.bc-maroon-60pct,\nimg[src~=\"bc-maroon\"] {\n  border-color: rgba(128, 0, 0, 0.6);\n}\n.bc-maroon-80pct,\nimg[src~=\"bc-maroon\"] {\n  border-color: rgba(128, 0, 0, 0.8);\n}\n.color-mediumaquamarine,\nimg[src~=\"color-mediumaquamarine\"] {\n  color: #66CDAA;\n}\n.color-mediumaquamarine-20pct,\nimg[src~=\"color-mediumaquamarine\"] {\n  color: rgba(102, 205, 170, 0.2);\n}\n.color-mediumaquamarine-40pct,\nimg[src~=\"color-mediumaquamarine\"] {\n  color: rgba(102, 205, 170, 0.4);\n}\n.color-mediumaquamarine-60pct,\nimg[src~=\"color-mediumaquamarine\"] {\n  color: rgba(102, 205, 170, 0.6);\n}\n.color-mediumaquamarine-80pct,\nimg[src~=\"color-mediumaquamarine\"] {\n  color: rgba(102, 205, 170, 0.8);\n}\n.bg-mediumaquamarine,\nimg[src~=\"bg-mediumaquamarine\"] {\n  background-color: #66CDAA;\n}\n.bg-mediumaquamarine-20pct,\nimg[src~=\"bg-mediumaquamarine\"] {\n  background-color: rgba(102, 205, 170, 0.2);\n}\n.bg-mediumaquamarine-40pct,\nimg[src~=\"bg-mediumaquamarine\"] {\n  background-color: rgba(102, 205, 170, 0.4);\n}\n.bg-mediumaquamarine-60pct,\nimg[src~=\"bg-mediumaquamarine\"] {\n  background-color: rgba(102, 205, 170, 0.6);\n}\n.bg-mediumaquamarine-80pct,\nimg[src~=\"bg-mediumaquamarine\"] {\n  background-color: rgba(102, 205, 170, 0.8);\n}\n.bc-mediumaquamarine,\nimg[src~=\"bc-mediumaquamarine\"] {\n  border-color: #66CDAA;\n}\n.bc-mediumaquamarine-20pct,\nimg[src~=\"bc-mediumaquamarine\"] {\n  border-color: rgba(102, 205, 170, 0.2);\n}\n.bc-mediumaquamarine-40pct,\nimg[src~=\"bc-mediumaquamarine\"] {\n  border-color: rgba(102, 205, 170, 0.4);\n}\n.bc-mediumaquamarine-60pct,\nimg[src~=\"bc-mediumaquamarine\"] {\n  border-color: rgba(102, 205, 170, 0.6);\n}\n.bc-mediumaquamarine-80pct,\nimg[src~=\"bc-mediumaquamarine\"] {\n  border-color: rgba(102, 205, 170, 0.8);\n}\n.color-mediumblue,\nimg[src~=\"color-mediumblue\"] {\n  color: #0000CD;\n}\n.color-mediumblue-20pct,\nimg[src~=\"color-mediumblue\"] {\n  color: rgba(0, 0, 205, 0.2);\n}\n.color-mediumblue-40pct,\nimg[src~=\"color-mediumblue\"] {\n  color: rgba(0, 0, 205, 0.4);\n}\n.color-mediumblue-60pct,\nimg[src~=\"color-mediumblue\"] {\n  color: rgba(0, 0, 205, 0.6);\n}\n.color-mediumblue-80pct,\nimg[src~=\"color-mediumblue\"] {\n  color: rgba(0, 0, 205, 0.8);\n}\n.bg-mediumblue,\nimg[src~=\"bg-mediumblue\"] {\n  background-color: #0000CD;\n}\n.bg-mediumblue-20pct,\nimg[src~=\"bg-mediumblue\"] {\n  background-color: rgba(0, 0, 205, 0.2);\n}\n.bg-mediumblue-40pct,\nimg[src~=\"bg-mediumblue\"] {\n  background-color: rgba(0, 0, 205, 0.4);\n}\n.bg-mediumblue-60pct,\nimg[src~=\"bg-mediumblue\"] {\n  background-color: rgba(0, 0, 205, 0.6);\n}\n.bg-mediumblue-80pct,\nimg[src~=\"bg-mediumblue\"] {\n  background-color: rgba(0, 0, 205, 0.8);\n}\n.bc-mediumblue,\nimg[src~=\"bc-mediumblue\"] {\n  border-color: #0000CD;\n}\n.bc-mediumblue-20pct,\nimg[src~=\"bc-mediumblue\"] {\n  border-color: rgba(0, 0, 205, 0.2);\n}\n.bc-mediumblue-40pct,\nimg[src~=\"bc-mediumblue\"] {\n  border-color: rgba(0, 0, 205, 0.4);\n}\n.bc-mediumblue-60pct,\nimg[src~=\"bc-mediumblue\"] {\n  border-color: rgba(0, 0, 205, 0.6);\n}\n.bc-mediumblue-80pct,\nimg[src~=\"bc-mediumblue\"] {\n  border-color: rgba(0, 0, 205, 0.8);\n}\n.color-mediumorchid,\nimg[src~=\"color-mediumorchid\"] {\n  color: #BA55D3;\n}\n.color-mediumorchid-20pct,\nimg[src~=\"color-mediumorchid\"] {\n  color: rgba(186, 85, 211, 0.2);\n}\n.color-mediumorchid-40pct,\nimg[src~=\"color-mediumorchid\"] {\n  color: rgba(186, 85, 211, 0.4);\n}\n.color-mediumorchid-60pct,\nimg[src~=\"color-mediumorchid\"] {\n  color: rgba(186, 85, 211, 0.6);\n}\n.color-mediumorchid-80pct,\nimg[src~=\"color-mediumorchid\"] {\n  color: rgba(186, 85, 211, 0.8);\n}\n.bg-mediumorchid,\nimg[src~=\"bg-mediumorchid\"] {\n  background-color: #BA55D3;\n}\n.bg-mediumorchid-20pct,\nimg[src~=\"bg-mediumorchid\"] {\n  background-color: rgba(186, 85, 211, 0.2);\n}\n.bg-mediumorchid-40pct,\nimg[src~=\"bg-mediumorchid\"] {\n  background-color: rgba(186, 85, 211, 0.4);\n}\n.bg-mediumorchid-60pct,\nimg[src~=\"bg-mediumorchid\"] {\n  background-color: rgba(186, 85, 211, 0.6);\n}\n.bg-mediumorchid-80pct,\nimg[src~=\"bg-mediumorchid\"] {\n  background-color: rgba(186, 85, 211, 0.8);\n}\n.bc-mediumorchid,\nimg[src~=\"bc-mediumorchid\"] {\n  border-color: #BA55D3;\n}\n.bc-mediumorchid-20pct,\nimg[src~=\"bc-mediumorchid\"] {\n  border-color: rgba(186, 85, 211, 0.2);\n}\n.bc-mediumorchid-40pct,\nimg[src~=\"bc-mediumorchid\"] {\n  border-color: rgba(186, 85, 211, 0.4);\n}\n.bc-mediumorchid-60pct,\nimg[src~=\"bc-mediumorchid\"] {\n  border-color: rgba(186, 85, 211, 0.6);\n}\n.bc-mediumorchid-80pct,\nimg[src~=\"bc-mediumorchid\"] {\n  border-color: rgba(186, 85, 211, 0.8);\n}\n.color-mediumpurple,\nimg[src~=\"color-mediumpurple\"] {\n  color: #9370DB;\n}\n.color-mediumpurple-20pct,\nimg[src~=\"color-mediumpurple\"] {\n  color: rgba(147, 112, 219, 0.2);\n}\n.color-mediumpurple-40pct,\nimg[src~=\"color-mediumpurple\"] {\n  color: rgba(147, 112, 219, 0.4);\n}\n.color-mediumpurple-60pct,\nimg[src~=\"color-mediumpurple\"] {\n  color: rgba(147, 112, 219, 0.6);\n}\n.color-mediumpurple-80pct,\nimg[src~=\"color-mediumpurple\"] {\n  color: rgba(147, 112, 219, 0.8);\n}\n.bg-mediumpurple,\nimg[src~=\"bg-mediumpurple\"] {\n  background-color: #9370DB;\n}\n.bg-mediumpurple-20pct,\nimg[src~=\"bg-mediumpurple\"] {\n  background-color: rgba(147, 112, 219, 0.2);\n}\n.bg-mediumpurple-40pct,\nimg[src~=\"bg-mediumpurple\"] {\n  background-color: rgba(147, 112, 219, 0.4);\n}\n.bg-mediumpurple-60pct,\nimg[src~=\"bg-mediumpurple\"] {\n  background-color: rgba(147, 112, 219, 0.6);\n}\n.bg-mediumpurple-80pct,\nimg[src~=\"bg-mediumpurple\"] {\n  background-color: rgba(147, 112, 219, 0.8);\n}\n.bc-mediumpurple,\nimg[src~=\"bc-mediumpurple\"] {\n  border-color: #9370DB;\n}\n.bc-mediumpurple-20pct,\nimg[src~=\"bc-mediumpurple\"] {\n  border-color: rgba(147, 112, 219, 0.2);\n}\n.bc-mediumpurple-40pct,\nimg[src~=\"bc-mediumpurple\"] {\n  border-color: rgba(147, 112, 219, 0.4);\n}\n.bc-mediumpurple-60pct,\nimg[src~=\"bc-mediumpurple\"] {\n  border-color: rgba(147, 112, 219, 0.6);\n}\n.bc-mediumpurple-80pct,\nimg[src~=\"bc-mediumpurple\"] {\n  border-color: rgba(147, 112, 219, 0.8);\n}\n.color-mediumseagreen,\nimg[src~=\"color-mediumseagreen\"] {\n  color: #3CB371;\n}\n.color-mediumseagreen-20pct,\nimg[src~=\"color-mediumseagreen\"] {\n  color: rgba(60, 179, 113, 0.2);\n}\n.color-mediumseagreen-40pct,\nimg[src~=\"color-mediumseagreen\"] {\n  color: rgba(60, 179, 113, 0.4);\n}\n.color-mediumseagreen-60pct,\nimg[src~=\"color-mediumseagreen\"] {\n  color: rgba(60, 179, 113, 0.6);\n}\n.color-mediumseagreen-80pct,\nimg[src~=\"color-mediumseagreen\"] {\n  color: rgba(60, 179, 113, 0.8);\n}\n.bg-mediumseagreen,\nimg[src~=\"bg-mediumseagreen\"] {\n  background-color: #3CB371;\n}\n.bg-mediumseagreen-20pct,\nimg[src~=\"bg-mediumseagreen\"] {\n  background-color: rgba(60, 179, 113, 0.2);\n}\n.bg-mediumseagreen-40pct,\nimg[src~=\"bg-mediumseagreen\"] {\n  background-color: rgba(60, 179, 113, 0.4);\n}\n.bg-mediumseagreen-60pct,\nimg[src~=\"bg-mediumseagreen\"] {\n  background-color: rgba(60, 179, 113, 0.6);\n}\n.bg-mediumseagreen-80pct,\nimg[src~=\"bg-mediumseagreen\"] {\n  background-color: rgba(60, 179, 113, 0.8);\n}\n.bc-mediumseagreen,\nimg[src~=\"bc-mediumseagreen\"] {\n  border-color: #3CB371;\n}\n.bc-mediumseagreen-20pct,\nimg[src~=\"bc-mediumseagreen\"] {\n  border-color: rgba(60, 179, 113, 0.2);\n}\n.bc-mediumseagreen-40pct,\nimg[src~=\"bc-mediumseagreen\"] {\n  border-color: rgba(60, 179, 113, 0.4);\n}\n.bc-mediumseagreen-60pct,\nimg[src~=\"bc-mediumseagreen\"] {\n  border-color: rgba(60, 179, 113, 0.6);\n}\n.bc-mediumseagreen-80pct,\nimg[src~=\"bc-mediumseagreen\"] {\n  border-color: rgba(60, 179, 113, 0.8);\n}\n.color-mediumslateblue,\nimg[src~=\"color-mediumslateblue\"] {\n  color: #7B68EE;\n}\n.color-mediumslateblue-20pct,\nimg[src~=\"color-mediumslateblue\"] {\n  color: rgba(123, 104, 238, 0.2);\n}\n.color-mediumslateblue-40pct,\nimg[src~=\"color-mediumslateblue\"] {\n  color: rgba(123, 104, 238, 0.4);\n}\n.color-mediumslateblue-60pct,\nimg[src~=\"color-mediumslateblue\"] {\n  color: rgba(123, 104, 238, 0.6);\n}\n.color-mediumslateblue-80pct,\nimg[src~=\"color-mediumslateblue\"] {\n  color: rgba(123, 104, 238, 0.8);\n}\n.bg-mediumslateblue,\nimg[src~=\"bg-mediumslateblue\"] {\n  background-color: #7B68EE;\n}\n.bg-mediumslateblue-20pct,\nimg[src~=\"bg-mediumslateblue\"] {\n  background-color: rgba(123, 104, 238, 0.2);\n}\n.bg-mediumslateblue-40pct,\nimg[src~=\"bg-mediumslateblue\"] {\n  background-color: rgba(123, 104, 238, 0.4);\n}\n.bg-mediumslateblue-60pct,\nimg[src~=\"bg-mediumslateblue\"] {\n  background-color: rgba(123, 104, 238, 0.6);\n}\n.bg-mediumslateblue-80pct,\nimg[src~=\"bg-mediumslateblue\"] {\n  background-color: rgba(123, 104, 238, 0.8);\n}\n.bc-mediumslateblue,\nimg[src~=\"bc-mediumslateblue\"] {\n  border-color: #7B68EE;\n}\n.bc-mediumslateblue-20pct,\nimg[src~=\"bc-mediumslateblue\"] {\n  border-color: rgba(123, 104, 238, 0.2);\n}\n.bc-mediumslateblue-40pct,\nimg[src~=\"bc-mediumslateblue\"] {\n  border-color: rgba(123, 104, 238, 0.4);\n}\n.bc-mediumslateblue-60pct,\nimg[src~=\"bc-mediumslateblue\"] {\n  border-color: rgba(123, 104, 238, 0.6);\n}\n.bc-mediumslateblue-80pct,\nimg[src~=\"bc-mediumslateblue\"] {\n  border-color: rgba(123, 104, 238, 0.8);\n}\n.color-mediumspringgreen,\nimg[src~=\"color-mediumspringgreen\"] {\n  color: #00FA9A;\n}\n.color-mediumspringgreen-20pct,\nimg[src~=\"color-mediumspringgreen\"] {\n  color: rgba(0, 250, 154, 0.2);\n}\n.color-mediumspringgreen-40pct,\nimg[src~=\"color-mediumspringgreen\"] {\n  color: rgba(0, 250, 154, 0.4);\n}\n.color-mediumspringgreen-60pct,\nimg[src~=\"color-mediumspringgreen\"] {\n  color: rgba(0, 250, 154, 0.6);\n}\n.color-mediumspringgreen-80pct,\nimg[src~=\"color-mediumspringgreen\"] {\n  color: rgba(0, 250, 154, 0.8);\n}\n.bg-mediumspringgreen,\nimg[src~=\"bg-mediumspringgreen\"] {\n  background-color: #00FA9A;\n}\n.bg-mediumspringgreen-20pct,\nimg[src~=\"bg-mediumspringgreen\"] {\n  background-color: rgba(0, 250, 154, 0.2);\n}\n.bg-mediumspringgreen-40pct,\nimg[src~=\"bg-mediumspringgreen\"] {\n  background-color: rgba(0, 250, 154, 0.4);\n}\n.bg-mediumspringgreen-60pct,\nimg[src~=\"bg-mediumspringgreen\"] {\n  background-color: rgba(0, 250, 154, 0.6);\n}\n.bg-mediumspringgreen-80pct,\nimg[src~=\"bg-mediumspringgreen\"] {\n  background-color: rgba(0, 250, 154, 0.8);\n}\n.bc-mediumspringgreen,\nimg[src~=\"bc-mediumspringgreen\"] {\n  border-color: #00FA9A;\n}\n.bc-mediumspringgreen-20pct,\nimg[src~=\"bc-mediumspringgreen\"] {\n  border-color: rgba(0, 250, 154, 0.2);\n}\n.bc-mediumspringgreen-40pct,\nimg[src~=\"bc-mediumspringgreen\"] {\n  border-color: rgba(0, 250, 154, 0.4);\n}\n.bc-mediumspringgreen-60pct,\nimg[src~=\"bc-mediumspringgreen\"] {\n  border-color: rgba(0, 250, 154, 0.6);\n}\n.bc-mediumspringgreen-80pct,\nimg[src~=\"bc-mediumspringgreen\"] {\n  border-color: rgba(0, 250, 154, 0.8);\n}\n.color-mediumturquoise,\nimg[src~=\"color-mediumturquoise\"] {\n  color: #48D1CC;\n}\n.color-mediumturquoise-20pct,\nimg[src~=\"color-mediumturquoise\"] {\n  color: rgba(72, 209, 204, 0.2);\n}\n.color-mediumturquoise-40pct,\nimg[src~=\"color-mediumturquoise\"] {\n  color: rgba(72, 209, 204, 0.4);\n}\n.color-mediumturquoise-60pct,\nimg[src~=\"color-mediumturquoise\"] {\n  color: rgba(72, 209, 204, 0.6);\n}\n.color-mediumturquoise-80pct,\nimg[src~=\"color-mediumturquoise\"] {\n  color: rgba(72, 209, 204, 0.8);\n}\n.bg-mediumturquoise,\nimg[src~=\"bg-mediumturquoise\"] {\n  background-color: #48D1CC;\n}\n.bg-mediumturquoise-20pct,\nimg[src~=\"bg-mediumturquoise\"] {\n  background-color: rgba(72, 209, 204, 0.2);\n}\n.bg-mediumturquoise-40pct,\nimg[src~=\"bg-mediumturquoise\"] {\n  background-color: rgba(72, 209, 204, 0.4);\n}\n.bg-mediumturquoise-60pct,\nimg[src~=\"bg-mediumturquoise\"] {\n  background-color: rgba(72, 209, 204, 0.6);\n}\n.bg-mediumturquoise-80pct,\nimg[src~=\"bg-mediumturquoise\"] {\n  background-color: rgba(72, 209, 204, 0.8);\n}\n.bc-mediumturquoise,\nimg[src~=\"bc-mediumturquoise\"] {\n  border-color: #48D1CC;\n}\n.bc-mediumturquoise-20pct,\nimg[src~=\"bc-mediumturquoise\"] {\n  border-color: rgba(72, 209, 204, 0.2);\n}\n.bc-mediumturquoise-40pct,\nimg[src~=\"bc-mediumturquoise\"] {\n  border-color: rgba(72, 209, 204, 0.4);\n}\n.bc-mediumturquoise-60pct,\nimg[src~=\"bc-mediumturquoise\"] {\n  border-color: rgba(72, 209, 204, 0.6);\n}\n.bc-mediumturquoise-80pct,\nimg[src~=\"bc-mediumturquoise\"] {\n  border-color: rgba(72, 209, 204, 0.8);\n}\n.color-mediumvioletred,\nimg[src~=\"color-mediumvioletred\"] {\n  color: #C71585;\n}\n.color-mediumvioletred-20pct,\nimg[src~=\"color-mediumvioletred\"] {\n  color: rgba(199, 21, 133, 0.2);\n}\n.color-mediumvioletred-40pct,\nimg[src~=\"color-mediumvioletred\"] {\n  color: rgba(199, 21, 133, 0.4);\n}\n.color-mediumvioletred-60pct,\nimg[src~=\"color-mediumvioletred\"] {\n  color: rgba(199, 21, 133, 0.6);\n}\n.color-mediumvioletred-80pct,\nimg[src~=\"color-mediumvioletred\"] {\n  color: rgba(199, 21, 133, 0.8);\n}\n.bg-mediumvioletred,\nimg[src~=\"bg-mediumvioletred\"] {\n  background-color: #C71585;\n}\n.bg-mediumvioletred-20pct,\nimg[src~=\"bg-mediumvioletred\"] {\n  background-color: rgba(199, 21, 133, 0.2);\n}\n.bg-mediumvioletred-40pct,\nimg[src~=\"bg-mediumvioletred\"] {\n  background-color: rgba(199, 21, 133, 0.4);\n}\n.bg-mediumvioletred-60pct,\nimg[src~=\"bg-mediumvioletred\"] {\n  background-color: rgba(199, 21, 133, 0.6);\n}\n.bg-mediumvioletred-80pct,\nimg[src~=\"bg-mediumvioletred\"] {\n  background-color: rgba(199, 21, 133, 0.8);\n}\n.bc-mediumvioletred,\nimg[src~=\"bc-mediumvioletred\"] {\n  border-color: #C71585;\n}\n.bc-mediumvioletred-20pct,\nimg[src~=\"bc-mediumvioletred\"] {\n  border-color: rgba(199, 21, 133, 0.2);\n}\n.bc-mediumvioletred-40pct,\nimg[src~=\"bc-mediumvioletred\"] {\n  border-color: rgba(199, 21, 133, 0.4);\n}\n.bc-mediumvioletred-60pct,\nimg[src~=\"bc-mediumvioletred\"] {\n  border-color: rgba(199, 21, 133, 0.6);\n}\n.bc-mediumvioletred-80pct,\nimg[src~=\"bc-mediumvioletred\"] {\n  border-color: rgba(199, 21, 133, 0.8);\n}\n.color-midnightblue,\nimg[src~=\"color-midnightblue\"] {\n  color: #191970;\n}\n.color-midnightblue-20pct,\nimg[src~=\"color-midnightblue\"] {\n  color: rgba(25, 25, 112, 0.2);\n}\n.color-midnightblue-40pct,\nimg[src~=\"color-midnightblue\"] {\n  color: rgba(25, 25, 112, 0.4);\n}\n.color-midnightblue-60pct,\nimg[src~=\"color-midnightblue\"] {\n  color: rgba(25, 25, 112, 0.6);\n}\n.color-midnightblue-80pct,\nimg[src~=\"color-midnightblue\"] {\n  color: rgba(25, 25, 112, 0.8);\n}\n.bg-midnightblue,\nimg[src~=\"bg-midnightblue\"] {\n  background-color: #191970;\n}\n.bg-midnightblue-20pct,\nimg[src~=\"bg-midnightblue\"] {\n  background-color: rgba(25, 25, 112, 0.2);\n}\n.bg-midnightblue-40pct,\nimg[src~=\"bg-midnightblue\"] {\n  background-color: rgba(25, 25, 112, 0.4);\n}\n.bg-midnightblue-60pct,\nimg[src~=\"bg-midnightblue\"] {\n  background-color: rgba(25, 25, 112, 0.6);\n}\n.bg-midnightblue-80pct,\nimg[src~=\"bg-midnightblue\"] {\n  background-color: rgba(25, 25, 112, 0.8);\n}\n.bc-midnightblue,\nimg[src~=\"bc-midnightblue\"] {\n  border-color: #191970;\n}\n.bc-midnightblue-20pct,\nimg[src~=\"bc-midnightblue\"] {\n  border-color: rgba(25, 25, 112, 0.2);\n}\n.bc-midnightblue-40pct,\nimg[src~=\"bc-midnightblue\"] {\n  border-color: rgba(25, 25, 112, 0.4);\n}\n.bc-midnightblue-60pct,\nimg[src~=\"bc-midnightblue\"] {\n  border-color: rgba(25, 25, 112, 0.6);\n}\n.bc-midnightblue-80pct,\nimg[src~=\"bc-midnightblue\"] {\n  border-color: rgba(25, 25, 112, 0.8);\n}\n.color-mintcream,\nimg[src~=\"color-mintcream\"] {\n  color: #F5FFFA;\n}\n.color-mintcream-20pct,\nimg[src~=\"color-mintcream\"] {\n  color: rgba(245, 255, 250, 0.2);\n}\n.color-mintcream-40pct,\nimg[src~=\"color-mintcream\"] {\n  color: rgba(245, 255, 250, 0.4);\n}\n.color-mintcream-60pct,\nimg[src~=\"color-mintcream\"] {\n  color: rgba(245, 255, 250, 0.6);\n}\n.color-mintcream-80pct,\nimg[src~=\"color-mintcream\"] {\n  color: rgba(245, 255, 250, 0.8);\n}\n.bg-mintcream,\nimg[src~=\"bg-mintcream\"] {\n  background-color: #F5FFFA;\n}\n.bg-mintcream-20pct,\nimg[src~=\"bg-mintcream\"] {\n  background-color: rgba(245, 255, 250, 0.2);\n}\n.bg-mintcream-40pct,\nimg[src~=\"bg-mintcream\"] {\n  background-color: rgba(245, 255, 250, 0.4);\n}\n.bg-mintcream-60pct,\nimg[src~=\"bg-mintcream\"] {\n  background-color: rgba(245, 255, 250, 0.6);\n}\n.bg-mintcream-80pct,\nimg[src~=\"bg-mintcream\"] {\n  background-color: rgba(245, 255, 250, 0.8);\n}\n.bc-mintcream,\nimg[src~=\"bc-mintcream\"] {\n  border-color: #F5FFFA;\n}\n.bc-mintcream-20pct,\nimg[src~=\"bc-mintcream\"] {\n  border-color: rgba(245, 255, 250, 0.2);\n}\n.bc-mintcream-40pct,\nimg[src~=\"bc-mintcream\"] {\n  border-color: rgba(245, 255, 250, 0.4);\n}\n.bc-mintcream-60pct,\nimg[src~=\"bc-mintcream\"] {\n  border-color: rgba(245, 255, 250, 0.6);\n}\n.bc-mintcream-80pct,\nimg[src~=\"bc-mintcream\"] {\n  border-color: rgba(245, 255, 250, 0.8);\n}\n.color-mistyrose,\nimg[src~=\"color-mistyrose\"] {\n  color: #FFE4E1;\n}\n.color-mistyrose-20pct,\nimg[src~=\"color-mistyrose\"] {\n  color: rgba(255, 228, 225, 0.2);\n}\n.color-mistyrose-40pct,\nimg[src~=\"color-mistyrose\"] {\n  color: rgba(255, 228, 225, 0.4);\n}\n.color-mistyrose-60pct,\nimg[src~=\"color-mistyrose\"] {\n  color: rgba(255, 228, 225, 0.6);\n}\n.color-mistyrose-80pct,\nimg[src~=\"color-mistyrose\"] {\n  color: rgba(255, 228, 225, 0.8);\n}\n.bg-mistyrose,\nimg[src~=\"bg-mistyrose\"] {\n  background-color: #FFE4E1;\n}\n.bg-mistyrose-20pct,\nimg[src~=\"bg-mistyrose\"] {\n  background-color: rgba(255, 228, 225, 0.2);\n}\n.bg-mistyrose-40pct,\nimg[src~=\"bg-mistyrose\"] {\n  background-color: rgba(255, 228, 225, 0.4);\n}\n.bg-mistyrose-60pct,\nimg[src~=\"bg-mistyrose\"] {\n  background-color: rgba(255, 228, 225, 0.6);\n}\n.bg-mistyrose-80pct,\nimg[src~=\"bg-mistyrose\"] {\n  background-color: rgba(255, 228, 225, 0.8);\n}\n.bc-mistyrose,\nimg[src~=\"bc-mistyrose\"] {\n  border-color: #FFE4E1;\n}\n.bc-mistyrose-20pct,\nimg[src~=\"bc-mistyrose\"] {\n  border-color: rgba(255, 228, 225, 0.2);\n}\n.bc-mistyrose-40pct,\nimg[src~=\"bc-mistyrose\"] {\n  border-color: rgba(255, 228, 225, 0.4);\n}\n.bc-mistyrose-60pct,\nimg[src~=\"bc-mistyrose\"] {\n  border-color: rgba(255, 228, 225, 0.6);\n}\n.bc-mistyrose-80pct,\nimg[src~=\"bc-mistyrose\"] {\n  border-color: rgba(255, 228, 225, 0.8);\n}\n.color-moccasin,\nimg[src~=\"color-moccasin\"] {\n  color: #FFE4B5;\n}\n.color-moccasin-20pct,\nimg[src~=\"color-moccasin\"] {\n  color: rgba(255, 228, 181, 0.2);\n}\n.color-moccasin-40pct,\nimg[src~=\"color-moccasin\"] {\n  color: rgba(255, 228, 181, 0.4);\n}\n.color-moccasin-60pct,\nimg[src~=\"color-moccasin\"] {\n  color: rgba(255, 228, 181, 0.6);\n}\n.color-moccasin-80pct,\nimg[src~=\"color-moccasin\"] {\n  color: rgba(255, 228, 181, 0.8);\n}\n.bg-moccasin,\nimg[src~=\"bg-moccasin\"] {\n  background-color: #FFE4B5;\n}\n.bg-moccasin-20pct,\nimg[src~=\"bg-moccasin\"] {\n  background-color: rgba(255, 228, 181, 0.2);\n}\n.bg-moccasin-40pct,\nimg[src~=\"bg-moccasin\"] {\n  background-color: rgba(255, 228, 181, 0.4);\n}\n.bg-moccasin-60pct,\nimg[src~=\"bg-moccasin\"] {\n  background-color: rgba(255, 228, 181, 0.6);\n}\n.bg-moccasin-80pct,\nimg[src~=\"bg-moccasin\"] {\n  background-color: rgba(255, 228, 181, 0.8);\n}\n.bc-moccasin,\nimg[src~=\"bc-moccasin\"] {\n  border-color: #FFE4B5;\n}\n.bc-moccasin-20pct,\nimg[src~=\"bc-moccasin\"] {\n  border-color: rgba(255, 228, 181, 0.2);\n}\n.bc-moccasin-40pct,\nimg[src~=\"bc-moccasin\"] {\n  border-color: rgba(255, 228, 181, 0.4);\n}\n.bc-moccasin-60pct,\nimg[src~=\"bc-moccasin\"] {\n  border-color: rgba(255, 228, 181, 0.6);\n}\n.bc-moccasin-80pct,\nimg[src~=\"bc-moccasin\"] {\n  border-color: rgba(255, 228, 181, 0.8);\n}\n.color-navajowhite,\nimg[src~=\"color-navajowhite\"] {\n  color: #FFDEAD;\n}\n.color-navajowhite-20pct,\nimg[src~=\"color-navajowhite\"] {\n  color: rgba(255, 222, 173, 0.2);\n}\n.color-navajowhite-40pct,\nimg[src~=\"color-navajowhite\"] {\n  color: rgba(255, 222, 173, 0.4);\n}\n.color-navajowhite-60pct,\nimg[src~=\"color-navajowhite\"] {\n  color: rgba(255, 222, 173, 0.6);\n}\n.color-navajowhite-80pct,\nimg[src~=\"color-navajowhite\"] {\n  color: rgba(255, 222, 173, 0.8);\n}\n.bg-navajowhite,\nimg[src~=\"bg-navajowhite\"] {\n  background-color: #FFDEAD;\n}\n.bg-navajowhite-20pct,\nimg[src~=\"bg-navajowhite\"] {\n  background-color: rgba(255, 222, 173, 0.2);\n}\n.bg-navajowhite-40pct,\nimg[src~=\"bg-navajowhite\"] {\n  background-color: rgba(255, 222, 173, 0.4);\n}\n.bg-navajowhite-60pct,\nimg[src~=\"bg-navajowhite\"] {\n  background-color: rgba(255, 222, 173, 0.6);\n}\n.bg-navajowhite-80pct,\nimg[src~=\"bg-navajowhite\"] {\n  background-color: rgba(255, 222, 173, 0.8);\n}\n.bc-navajowhite,\nimg[src~=\"bc-navajowhite\"] {\n  border-color: #FFDEAD;\n}\n.bc-navajowhite-20pct,\nimg[src~=\"bc-navajowhite\"] {\n  border-color: rgba(255, 222, 173, 0.2);\n}\n.bc-navajowhite-40pct,\nimg[src~=\"bc-navajowhite\"] {\n  border-color: rgba(255, 222, 173, 0.4);\n}\n.bc-navajowhite-60pct,\nimg[src~=\"bc-navajowhite\"] {\n  border-color: rgba(255, 222, 173, 0.6);\n}\n.bc-navajowhite-80pct,\nimg[src~=\"bc-navajowhite\"] {\n  border-color: rgba(255, 222, 173, 0.8);\n}\n.color-navy,\nimg[src~=\"color-navy\"] {\n  color: #000080;\n}\n.color-navy-20pct,\nimg[src~=\"color-navy\"] {\n  color: rgba(0, 0, 128, 0.2);\n}\n.color-navy-40pct,\nimg[src~=\"color-navy\"] {\n  color: rgba(0, 0, 128, 0.4);\n}\n.color-navy-60pct,\nimg[src~=\"color-navy\"] {\n  color: rgba(0, 0, 128, 0.6);\n}\n.color-navy-80pct,\nimg[src~=\"color-navy\"] {\n  color: rgba(0, 0, 128, 0.8);\n}\n.bg-navy,\nimg[src~=\"bg-navy\"] {\n  background-color: #000080;\n}\n.bg-navy-20pct,\nimg[src~=\"bg-navy\"] {\n  background-color: rgba(0, 0, 128, 0.2);\n}\n.bg-navy-40pct,\nimg[src~=\"bg-navy\"] {\n  background-color: rgba(0, 0, 128, 0.4);\n}\n.bg-navy-60pct,\nimg[src~=\"bg-navy\"] {\n  background-color: rgba(0, 0, 128, 0.6);\n}\n.bg-navy-80pct,\nimg[src~=\"bg-navy\"] {\n  background-color: rgba(0, 0, 128, 0.8);\n}\n.bc-navy,\nimg[src~=\"bc-navy\"] {\n  border-color: #000080;\n}\n.bc-navy-20pct,\nimg[src~=\"bc-navy\"] {\n  border-color: rgba(0, 0, 128, 0.2);\n}\n.bc-navy-40pct,\nimg[src~=\"bc-navy\"] {\n  border-color: rgba(0, 0, 128, 0.4);\n}\n.bc-navy-60pct,\nimg[src~=\"bc-navy\"] {\n  border-color: rgba(0, 0, 128, 0.6);\n}\n.bc-navy-80pct,\nimg[src~=\"bc-navy\"] {\n  border-color: rgba(0, 0, 128, 0.8);\n}\n.color-oldlace,\nimg[src~=\"color-oldlace\"] {\n  color: #FDF5E6;\n}\n.color-oldlace-20pct,\nimg[src~=\"color-oldlace\"] {\n  color: rgba(253, 245, 230, 0.2);\n}\n.color-oldlace-40pct,\nimg[src~=\"color-oldlace\"] {\n  color: rgba(253, 245, 230, 0.4);\n}\n.color-oldlace-60pct,\nimg[src~=\"color-oldlace\"] {\n  color: rgba(253, 245, 230, 0.6);\n}\n.color-oldlace-80pct,\nimg[src~=\"color-oldlace\"] {\n  color: rgba(253, 245, 230, 0.8);\n}\n.bg-oldlace,\nimg[src~=\"bg-oldlace\"] {\n  background-color: #FDF5E6;\n}\n.bg-oldlace-20pct,\nimg[src~=\"bg-oldlace\"] {\n  background-color: rgba(253, 245, 230, 0.2);\n}\n.bg-oldlace-40pct,\nimg[src~=\"bg-oldlace\"] {\n  background-color: rgba(253, 245, 230, 0.4);\n}\n.bg-oldlace-60pct,\nimg[src~=\"bg-oldlace\"] {\n  background-color: rgba(253, 245, 230, 0.6);\n}\n.bg-oldlace-80pct,\nimg[src~=\"bg-oldlace\"] {\n  background-color: rgba(253, 245, 230, 0.8);\n}\n.bc-oldlace,\nimg[src~=\"bc-oldlace\"] {\n  border-color: #FDF5E6;\n}\n.bc-oldlace-20pct,\nimg[src~=\"bc-oldlace\"] {\n  border-color: rgba(253, 245, 230, 0.2);\n}\n.bc-oldlace-40pct,\nimg[src~=\"bc-oldlace\"] {\n  border-color: rgba(253, 245, 230, 0.4);\n}\n.bc-oldlace-60pct,\nimg[src~=\"bc-oldlace\"] {\n  border-color: rgba(253, 245, 230, 0.6);\n}\n.bc-oldlace-80pct,\nimg[src~=\"bc-oldlace\"] {\n  border-color: rgba(253, 245, 230, 0.8);\n}\n.color-olive,\nimg[src~=\"color-olive\"] {\n  color: #808000;\n}\n.color-olive-20pct,\nimg[src~=\"color-olive\"] {\n  color: rgba(128, 128, 0, 0.2);\n}\n.color-olive-40pct,\nimg[src~=\"color-olive\"] {\n  color: rgba(128, 128, 0, 0.4);\n}\n.color-olive-60pct,\nimg[src~=\"color-olive\"] {\n  color: rgba(128, 128, 0, 0.6);\n}\n.color-olive-80pct,\nimg[src~=\"color-olive\"] {\n  color: rgba(128, 128, 0, 0.8);\n}\n.bg-olive,\nimg[src~=\"bg-olive\"] {\n  background-color: #808000;\n}\n.bg-olive-20pct,\nimg[src~=\"bg-olive\"] {\n  background-color: rgba(128, 128, 0, 0.2);\n}\n.bg-olive-40pct,\nimg[src~=\"bg-olive\"] {\n  background-color: rgba(128, 128, 0, 0.4);\n}\n.bg-olive-60pct,\nimg[src~=\"bg-olive\"] {\n  background-color: rgba(128, 128, 0, 0.6);\n}\n.bg-olive-80pct,\nimg[src~=\"bg-olive\"] {\n  background-color: rgba(128, 128, 0, 0.8);\n}\n.bc-olive,\nimg[src~=\"bc-olive\"] {\n  border-color: #808000;\n}\n.bc-olive-20pct,\nimg[src~=\"bc-olive\"] {\n  border-color: rgba(128, 128, 0, 0.2);\n}\n.bc-olive-40pct,\nimg[src~=\"bc-olive\"] {\n  border-color: rgba(128, 128, 0, 0.4);\n}\n.bc-olive-60pct,\nimg[src~=\"bc-olive\"] {\n  border-color: rgba(128, 128, 0, 0.6);\n}\n.bc-olive-80pct,\nimg[src~=\"bc-olive\"] {\n  border-color: rgba(128, 128, 0, 0.8);\n}\n.color-olivedrab,\nimg[src~=\"color-olivedrab\"] {\n  color: #6B8E23;\n}\n.color-olivedrab-20pct,\nimg[src~=\"color-olivedrab\"] {\n  color: rgba(107, 142, 35, 0.2);\n}\n.color-olivedrab-40pct,\nimg[src~=\"color-olivedrab\"] {\n  color: rgba(107, 142, 35, 0.4);\n}\n.color-olivedrab-60pct,\nimg[src~=\"color-olivedrab\"] {\n  color: rgba(107, 142, 35, 0.6);\n}\n.color-olivedrab-80pct,\nimg[src~=\"color-olivedrab\"] {\n  color: rgba(107, 142, 35, 0.8);\n}\n.bg-olivedrab,\nimg[src~=\"bg-olivedrab\"] {\n  background-color: #6B8E23;\n}\n.bg-olivedrab-20pct,\nimg[src~=\"bg-olivedrab\"] {\n  background-color: rgba(107, 142, 35, 0.2);\n}\n.bg-olivedrab-40pct,\nimg[src~=\"bg-olivedrab\"] {\n  background-color: rgba(107, 142, 35, 0.4);\n}\n.bg-olivedrab-60pct,\nimg[src~=\"bg-olivedrab\"] {\n  background-color: rgba(107, 142, 35, 0.6);\n}\n.bg-olivedrab-80pct,\nimg[src~=\"bg-olivedrab\"] {\n  background-color: rgba(107, 142, 35, 0.8);\n}\n.bc-olivedrab,\nimg[src~=\"bc-olivedrab\"] {\n  border-color: #6B8E23;\n}\n.bc-olivedrab-20pct,\nimg[src~=\"bc-olivedrab\"] {\n  border-color: rgba(107, 142, 35, 0.2);\n}\n.bc-olivedrab-40pct,\nimg[src~=\"bc-olivedrab\"] {\n  border-color: rgba(107, 142, 35, 0.4);\n}\n.bc-olivedrab-60pct,\nimg[src~=\"bc-olivedrab\"] {\n  border-color: rgba(107, 142, 35, 0.6);\n}\n.bc-olivedrab-80pct,\nimg[src~=\"bc-olivedrab\"] {\n  border-color: rgba(107, 142, 35, 0.8);\n}\n.color-orange,\nimg[src~=\"color-orange\"] {\n  color: #FFA500;\n}\n.color-orange-20pct,\nimg[src~=\"color-orange\"] {\n  color: rgba(255, 165, 0, 0.2);\n}\n.color-orange-40pct,\nimg[src~=\"color-orange\"] {\n  color: rgba(255, 165, 0, 0.4);\n}\n.color-orange-60pct,\nimg[src~=\"color-orange\"] {\n  color: rgba(255, 165, 0, 0.6);\n}\n.color-orange-80pct,\nimg[src~=\"color-orange\"] {\n  color: rgba(255, 165, 0, 0.8);\n}\n.bg-orange,\nimg[src~=\"bg-orange\"] {\n  background-color: #FFA500;\n}\n.bg-orange-20pct,\nimg[src~=\"bg-orange\"] {\n  background-color: rgba(255, 165, 0, 0.2);\n}\n.bg-orange-40pct,\nimg[src~=\"bg-orange\"] {\n  background-color: rgba(255, 165, 0, 0.4);\n}\n.bg-orange-60pct,\nimg[src~=\"bg-orange\"] {\n  background-color: rgba(255, 165, 0, 0.6);\n}\n.bg-orange-80pct,\nimg[src~=\"bg-orange\"] {\n  background-color: rgba(255, 165, 0, 0.8);\n}\n.bc-orange,\nimg[src~=\"bc-orange\"] {\n  border-color: #FFA500;\n}\n.bc-orange-20pct,\nimg[src~=\"bc-orange\"] {\n  border-color: rgba(255, 165, 0, 0.2);\n}\n.bc-orange-40pct,\nimg[src~=\"bc-orange\"] {\n  border-color: rgba(255, 165, 0, 0.4);\n}\n.bc-orange-60pct,\nimg[src~=\"bc-orange\"] {\n  border-color: rgba(255, 165, 0, 0.6);\n}\n.bc-orange-80pct,\nimg[src~=\"bc-orange\"] {\n  border-color: rgba(255, 165, 0, 0.8);\n}\n.color-orangered,\nimg[src~=\"color-orangered\"] {\n  color: #FF4500;\n}\n.color-orangered-20pct,\nimg[src~=\"color-orangered\"] {\n  color: rgba(255, 69, 0, 0.2);\n}\n.color-orangered-40pct,\nimg[src~=\"color-orangered\"] {\n  color: rgba(255, 69, 0, 0.4);\n}\n.color-orangered-60pct,\nimg[src~=\"color-orangered\"] {\n  color: rgba(255, 69, 0, 0.6);\n}\n.color-orangered-80pct,\nimg[src~=\"color-orangered\"] {\n  color: rgba(255, 69, 0, 0.8);\n}\n.bg-orangered,\nimg[src~=\"bg-orangered\"] {\n  background-color: #FF4500;\n}\n.bg-orangered-20pct,\nimg[src~=\"bg-orangered\"] {\n  background-color: rgba(255, 69, 0, 0.2);\n}\n.bg-orangered-40pct,\nimg[src~=\"bg-orangered\"] {\n  background-color: rgba(255, 69, 0, 0.4);\n}\n.bg-orangered-60pct,\nimg[src~=\"bg-orangered\"] {\n  background-color: rgba(255, 69, 0, 0.6);\n}\n.bg-orangered-80pct,\nimg[src~=\"bg-orangered\"] {\n  background-color: rgba(255, 69, 0, 0.8);\n}\n.bc-orangered,\nimg[src~=\"bc-orangered\"] {\n  border-color: #FF4500;\n}\n.bc-orangered-20pct,\nimg[src~=\"bc-orangered\"] {\n  border-color: rgba(255, 69, 0, 0.2);\n}\n.bc-orangered-40pct,\nimg[src~=\"bc-orangered\"] {\n  border-color: rgba(255, 69, 0, 0.4);\n}\n.bc-orangered-60pct,\nimg[src~=\"bc-orangered\"] {\n  border-color: rgba(255, 69, 0, 0.6);\n}\n.bc-orangered-80pct,\nimg[src~=\"bc-orangered\"] {\n  border-color: rgba(255, 69, 0, 0.8);\n}\n.color-orchid,\nimg[src~=\"color-orchid\"] {\n  color: #DA70D6;\n}\n.color-orchid-20pct,\nimg[src~=\"color-orchid\"] {\n  color: rgba(218, 112, 214, 0.2);\n}\n.color-orchid-40pct,\nimg[src~=\"color-orchid\"] {\n  color: rgba(218, 112, 214, 0.4);\n}\n.color-orchid-60pct,\nimg[src~=\"color-orchid\"] {\n  color: rgba(218, 112, 214, 0.6);\n}\n.color-orchid-80pct,\nimg[src~=\"color-orchid\"] {\n  color: rgba(218, 112, 214, 0.8);\n}\n.bg-orchid,\nimg[src~=\"bg-orchid\"] {\n  background-color: #DA70D6;\n}\n.bg-orchid-20pct,\nimg[src~=\"bg-orchid\"] {\n  background-color: rgba(218, 112, 214, 0.2);\n}\n.bg-orchid-40pct,\nimg[src~=\"bg-orchid\"] {\n  background-color: rgba(218, 112, 214, 0.4);\n}\n.bg-orchid-60pct,\nimg[src~=\"bg-orchid\"] {\n  background-color: rgba(218, 112, 214, 0.6);\n}\n.bg-orchid-80pct,\nimg[src~=\"bg-orchid\"] {\n  background-color: rgba(218, 112, 214, 0.8);\n}\n.bc-orchid,\nimg[src~=\"bc-orchid\"] {\n  border-color: #DA70D6;\n}\n.bc-orchid-20pct,\nimg[src~=\"bc-orchid\"] {\n  border-color: rgba(218, 112, 214, 0.2);\n}\n.bc-orchid-40pct,\nimg[src~=\"bc-orchid\"] {\n  border-color: rgba(218, 112, 214, 0.4);\n}\n.bc-orchid-60pct,\nimg[src~=\"bc-orchid\"] {\n  border-color: rgba(218, 112, 214, 0.6);\n}\n.bc-orchid-80pct,\nimg[src~=\"bc-orchid\"] {\n  border-color: rgba(218, 112, 214, 0.8);\n}\n.color-palegoldenrod,\nimg[src~=\"color-palegoldenrod\"] {\n  color: #EEE8AA;\n}\n.color-palegoldenrod-20pct,\nimg[src~=\"color-palegoldenrod\"] {\n  color: rgba(238, 232, 170, 0.2);\n}\n.color-palegoldenrod-40pct,\nimg[src~=\"color-palegoldenrod\"] {\n  color: rgba(238, 232, 170, 0.4);\n}\n.color-palegoldenrod-60pct,\nimg[src~=\"color-palegoldenrod\"] {\n  color: rgba(238, 232, 170, 0.6);\n}\n.color-palegoldenrod-80pct,\nimg[src~=\"color-palegoldenrod\"] {\n  color: rgba(238, 232, 170, 0.8);\n}\n.bg-palegoldenrod,\nimg[src~=\"bg-palegoldenrod\"] {\n  background-color: #EEE8AA;\n}\n.bg-palegoldenrod-20pct,\nimg[src~=\"bg-palegoldenrod\"] {\n  background-color: rgba(238, 232, 170, 0.2);\n}\n.bg-palegoldenrod-40pct,\nimg[src~=\"bg-palegoldenrod\"] {\n  background-color: rgba(238, 232, 170, 0.4);\n}\n.bg-palegoldenrod-60pct,\nimg[src~=\"bg-palegoldenrod\"] {\n  background-color: rgba(238, 232, 170, 0.6);\n}\n.bg-palegoldenrod-80pct,\nimg[src~=\"bg-palegoldenrod\"] {\n  background-color: rgba(238, 232, 170, 0.8);\n}\n.bc-palegoldenrod,\nimg[src~=\"bc-palegoldenrod\"] {\n  border-color: #EEE8AA;\n}\n.bc-palegoldenrod-20pct,\nimg[src~=\"bc-palegoldenrod\"] {\n  border-color: rgba(238, 232, 170, 0.2);\n}\n.bc-palegoldenrod-40pct,\nimg[src~=\"bc-palegoldenrod\"] {\n  border-color: rgba(238, 232, 170, 0.4);\n}\n.bc-palegoldenrod-60pct,\nimg[src~=\"bc-palegoldenrod\"] {\n  border-color: rgba(238, 232, 170, 0.6);\n}\n.bc-palegoldenrod-80pct,\nimg[src~=\"bc-palegoldenrod\"] {\n  border-color: rgba(238, 232, 170, 0.8);\n}\n.color-palegreen,\nimg[src~=\"color-palegreen\"] {\n  color: #98FB98;\n}\n.color-palegreen-20pct,\nimg[src~=\"color-palegreen\"] {\n  color: rgba(152, 251, 152, 0.2);\n}\n.color-palegreen-40pct,\nimg[src~=\"color-palegreen\"] {\n  color: rgba(152, 251, 152, 0.4);\n}\n.color-palegreen-60pct,\nimg[src~=\"color-palegreen\"] {\n  color: rgba(152, 251, 152, 0.6);\n}\n.color-palegreen-80pct,\nimg[src~=\"color-palegreen\"] {\n  color: rgba(152, 251, 152, 0.8);\n}\n.bg-palegreen,\nimg[src~=\"bg-palegreen\"] {\n  background-color: #98FB98;\n}\n.bg-palegreen-20pct,\nimg[src~=\"bg-palegreen\"] {\n  background-color: rgba(152, 251, 152, 0.2);\n}\n.bg-palegreen-40pct,\nimg[src~=\"bg-palegreen\"] {\n  background-color: rgba(152, 251, 152, 0.4);\n}\n.bg-palegreen-60pct,\nimg[src~=\"bg-palegreen\"] {\n  background-color: rgba(152, 251, 152, 0.6);\n}\n.bg-palegreen-80pct,\nimg[src~=\"bg-palegreen\"] {\n  background-color: rgba(152, 251, 152, 0.8);\n}\n.bc-palegreen,\nimg[src~=\"bc-palegreen\"] {\n  border-color: #98FB98;\n}\n.bc-palegreen-20pct,\nimg[src~=\"bc-palegreen\"] {\n  border-color: rgba(152, 251, 152, 0.2);\n}\n.bc-palegreen-40pct,\nimg[src~=\"bc-palegreen\"] {\n  border-color: rgba(152, 251, 152, 0.4);\n}\n.bc-palegreen-60pct,\nimg[src~=\"bc-palegreen\"] {\n  border-color: rgba(152, 251, 152, 0.6);\n}\n.bc-palegreen-80pct,\nimg[src~=\"bc-palegreen\"] {\n  border-color: rgba(152, 251, 152, 0.8);\n}\n.color-paleturquoise,\nimg[src~=\"color-paleturquoise\"] {\n  color: #AFEEEE;\n}\n.color-paleturquoise-20pct,\nimg[src~=\"color-paleturquoise\"] {\n  color: rgba(175, 238, 238, 0.2);\n}\n.color-paleturquoise-40pct,\nimg[src~=\"color-paleturquoise\"] {\n  color: rgba(175, 238, 238, 0.4);\n}\n.color-paleturquoise-60pct,\nimg[src~=\"color-paleturquoise\"] {\n  color: rgba(175, 238, 238, 0.6);\n}\n.color-paleturquoise-80pct,\nimg[src~=\"color-paleturquoise\"] {\n  color: rgba(175, 238, 238, 0.8);\n}\n.bg-paleturquoise,\nimg[src~=\"bg-paleturquoise\"] {\n  background-color: #AFEEEE;\n}\n.bg-paleturquoise-20pct,\nimg[src~=\"bg-paleturquoise\"] {\n  background-color: rgba(175, 238, 238, 0.2);\n}\n.bg-paleturquoise-40pct,\nimg[src~=\"bg-paleturquoise\"] {\n  background-color: rgba(175, 238, 238, 0.4);\n}\n.bg-paleturquoise-60pct,\nimg[src~=\"bg-paleturquoise\"] {\n  background-color: rgba(175, 238, 238, 0.6);\n}\n.bg-paleturquoise-80pct,\nimg[src~=\"bg-paleturquoise\"] {\n  background-color: rgba(175, 238, 238, 0.8);\n}\n.bc-paleturquoise,\nimg[src~=\"bc-paleturquoise\"] {\n  border-color: #AFEEEE;\n}\n.bc-paleturquoise-20pct,\nimg[src~=\"bc-paleturquoise\"] {\n  border-color: rgba(175, 238, 238, 0.2);\n}\n.bc-paleturquoise-40pct,\nimg[src~=\"bc-paleturquoise\"] {\n  border-color: rgba(175, 238, 238, 0.4);\n}\n.bc-paleturquoise-60pct,\nimg[src~=\"bc-paleturquoise\"] {\n  border-color: rgba(175, 238, 238, 0.6);\n}\n.bc-paleturquoise-80pct,\nimg[src~=\"bc-paleturquoise\"] {\n  border-color: rgba(175, 238, 238, 0.8);\n}\n.color-palevioletred,\nimg[src~=\"color-palevioletred\"] {\n  color: #DB7093;\n}\n.color-palevioletred-20pct,\nimg[src~=\"color-palevioletred\"] {\n  color: rgba(219, 112, 147, 0.2);\n}\n.color-palevioletred-40pct,\nimg[src~=\"color-palevioletred\"] {\n  color: rgba(219, 112, 147, 0.4);\n}\n.color-palevioletred-60pct,\nimg[src~=\"color-palevioletred\"] {\n  color: rgba(219, 112, 147, 0.6);\n}\n.color-palevioletred-80pct,\nimg[src~=\"color-palevioletred\"] {\n  color: rgba(219, 112, 147, 0.8);\n}\n.bg-palevioletred,\nimg[src~=\"bg-palevioletred\"] {\n  background-color: #DB7093;\n}\n.bg-palevioletred-20pct,\nimg[src~=\"bg-palevioletred\"] {\n  background-color: rgba(219, 112, 147, 0.2);\n}\n.bg-palevioletred-40pct,\nimg[src~=\"bg-palevioletred\"] {\n  background-color: rgba(219, 112, 147, 0.4);\n}\n.bg-palevioletred-60pct,\nimg[src~=\"bg-palevioletred\"] {\n  background-color: rgba(219, 112, 147, 0.6);\n}\n.bg-palevioletred-80pct,\nimg[src~=\"bg-palevioletred\"] {\n  background-color: rgba(219, 112, 147, 0.8);\n}\n.bc-palevioletred,\nimg[src~=\"bc-palevioletred\"] {\n  border-color: #DB7093;\n}\n.bc-palevioletred-20pct,\nimg[src~=\"bc-palevioletred\"] {\n  border-color: rgba(219, 112, 147, 0.2);\n}\n.bc-palevioletred-40pct,\nimg[src~=\"bc-palevioletred\"] {\n  border-color: rgba(219, 112, 147, 0.4);\n}\n.bc-palevioletred-60pct,\nimg[src~=\"bc-palevioletred\"] {\n  border-color: rgba(219, 112, 147, 0.6);\n}\n.bc-palevioletred-80pct,\nimg[src~=\"bc-palevioletred\"] {\n  border-color: rgba(219, 112, 147, 0.8);\n}\n.color-papayawhip,\nimg[src~=\"color-papayawhip\"] {\n  color: #FFEFD5;\n}\n.color-papayawhip-20pct,\nimg[src~=\"color-papayawhip\"] {\n  color: rgba(255, 239, 213, 0.2);\n}\n.color-papayawhip-40pct,\nimg[src~=\"color-papayawhip\"] {\n  color: rgba(255, 239, 213, 0.4);\n}\n.color-papayawhip-60pct,\nimg[src~=\"color-papayawhip\"] {\n  color: rgba(255, 239, 213, 0.6);\n}\n.color-papayawhip-80pct,\nimg[src~=\"color-papayawhip\"] {\n  color: rgba(255, 239, 213, 0.8);\n}\n.bg-papayawhip,\nimg[src~=\"bg-papayawhip\"] {\n  background-color: #FFEFD5;\n}\n.bg-papayawhip-20pct,\nimg[src~=\"bg-papayawhip\"] {\n  background-color: rgba(255, 239, 213, 0.2);\n}\n.bg-papayawhip-40pct,\nimg[src~=\"bg-papayawhip\"] {\n  background-color: rgba(255, 239, 213, 0.4);\n}\n.bg-papayawhip-60pct,\nimg[src~=\"bg-papayawhip\"] {\n  background-color: rgba(255, 239, 213, 0.6);\n}\n.bg-papayawhip-80pct,\nimg[src~=\"bg-papayawhip\"] {\n  background-color: rgba(255, 239, 213, 0.8);\n}\n.bc-papayawhip,\nimg[src~=\"bc-papayawhip\"] {\n  border-color: #FFEFD5;\n}\n.bc-papayawhip-20pct,\nimg[src~=\"bc-papayawhip\"] {\n  border-color: rgba(255, 239, 213, 0.2);\n}\n.bc-papayawhip-40pct,\nimg[src~=\"bc-papayawhip\"] {\n  border-color: rgba(255, 239, 213, 0.4);\n}\n.bc-papayawhip-60pct,\nimg[src~=\"bc-papayawhip\"] {\n  border-color: rgba(255, 239, 213, 0.6);\n}\n.bc-papayawhip-80pct,\nimg[src~=\"bc-papayawhip\"] {\n  border-color: rgba(255, 239, 213, 0.8);\n}\n.color-peachpuff,\nimg[src~=\"color-peachpuff\"] {\n  color: #FFDAB9;\n}\n.color-peachpuff-20pct,\nimg[src~=\"color-peachpuff\"] {\n  color: rgba(255, 218, 185, 0.2);\n}\n.color-peachpuff-40pct,\nimg[src~=\"color-peachpuff\"] {\n  color: rgba(255, 218, 185, 0.4);\n}\n.color-peachpuff-60pct,\nimg[src~=\"color-peachpuff\"] {\n  color: rgba(255, 218, 185, 0.6);\n}\n.color-peachpuff-80pct,\nimg[src~=\"color-peachpuff\"] {\n  color: rgba(255, 218, 185, 0.8);\n}\n.bg-peachpuff,\nimg[src~=\"bg-peachpuff\"] {\n  background-color: #FFDAB9;\n}\n.bg-peachpuff-20pct,\nimg[src~=\"bg-peachpuff\"] {\n  background-color: rgba(255, 218, 185, 0.2);\n}\n.bg-peachpuff-40pct,\nimg[src~=\"bg-peachpuff\"] {\n  background-color: rgba(255, 218, 185, 0.4);\n}\n.bg-peachpuff-60pct,\nimg[src~=\"bg-peachpuff\"] {\n  background-color: rgba(255, 218, 185, 0.6);\n}\n.bg-peachpuff-80pct,\nimg[src~=\"bg-peachpuff\"] {\n  background-color: rgba(255, 218, 185, 0.8);\n}\n.bc-peachpuff,\nimg[src~=\"bc-peachpuff\"] {\n  border-color: #FFDAB9;\n}\n.bc-peachpuff-20pct,\nimg[src~=\"bc-peachpuff\"] {\n  border-color: rgba(255, 218, 185, 0.2);\n}\n.bc-peachpuff-40pct,\nimg[src~=\"bc-peachpuff\"] {\n  border-color: rgba(255, 218, 185, 0.4);\n}\n.bc-peachpuff-60pct,\nimg[src~=\"bc-peachpuff\"] {\n  border-color: rgba(255, 218, 185, 0.6);\n}\n.bc-peachpuff-80pct,\nimg[src~=\"bc-peachpuff\"] {\n  border-color: rgba(255, 218, 185, 0.8);\n}\n.color-peru,\nimg[src~=\"color-peru\"] {\n  color: #CD853F;\n}\n.color-peru-20pct,\nimg[src~=\"color-peru\"] {\n  color: rgba(205, 133, 63, 0.2);\n}\n.color-peru-40pct,\nimg[src~=\"color-peru\"] {\n  color: rgba(205, 133, 63, 0.4);\n}\n.color-peru-60pct,\nimg[src~=\"color-peru\"] {\n  color: rgba(205, 133, 63, 0.6);\n}\n.color-peru-80pct,\nimg[src~=\"color-peru\"] {\n  color: rgba(205, 133, 63, 0.8);\n}\n.bg-peru,\nimg[src~=\"bg-peru\"] {\n  background-color: #CD853F;\n}\n.bg-peru-20pct,\nimg[src~=\"bg-peru\"] {\n  background-color: rgba(205, 133, 63, 0.2);\n}\n.bg-peru-40pct,\nimg[src~=\"bg-peru\"] {\n  background-color: rgba(205, 133, 63, 0.4);\n}\n.bg-peru-60pct,\nimg[src~=\"bg-peru\"] {\n  background-color: rgba(205, 133, 63, 0.6);\n}\n.bg-peru-80pct,\nimg[src~=\"bg-peru\"] {\n  background-color: rgba(205, 133, 63, 0.8);\n}\n.bc-peru,\nimg[src~=\"bc-peru\"] {\n  border-color: #CD853F;\n}\n.bc-peru-20pct,\nimg[src~=\"bc-peru\"] {\n  border-color: rgba(205, 133, 63, 0.2);\n}\n.bc-peru-40pct,\nimg[src~=\"bc-peru\"] {\n  border-color: rgba(205, 133, 63, 0.4);\n}\n.bc-peru-60pct,\nimg[src~=\"bc-peru\"] {\n  border-color: rgba(205, 133, 63, 0.6);\n}\n.bc-peru-80pct,\nimg[src~=\"bc-peru\"] {\n  border-color: rgba(205, 133, 63, 0.8);\n}\n.color-pink,\nimg[src~=\"color-pink\"] {\n  color: #FFC0CB;\n}\n.color-pink-20pct,\nimg[src~=\"color-pink\"] {\n  color: rgba(255, 192, 203, 0.2);\n}\n.color-pink-40pct,\nimg[src~=\"color-pink\"] {\n  color: rgba(255, 192, 203, 0.4);\n}\n.color-pink-60pct,\nimg[src~=\"color-pink\"] {\n  color: rgba(255, 192, 203, 0.6);\n}\n.color-pink-80pct,\nimg[src~=\"color-pink\"] {\n  color: rgba(255, 192, 203, 0.8);\n}\n.bg-pink,\nimg[src~=\"bg-pink\"] {\n  background-color: #FFC0CB;\n}\n.bg-pink-20pct,\nimg[src~=\"bg-pink\"] {\n  background-color: rgba(255, 192, 203, 0.2);\n}\n.bg-pink-40pct,\nimg[src~=\"bg-pink\"] {\n  background-color: rgba(255, 192, 203, 0.4);\n}\n.bg-pink-60pct,\nimg[src~=\"bg-pink\"] {\n  background-color: rgba(255, 192, 203, 0.6);\n}\n.bg-pink-80pct,\nimg[src~=\"bg-pink\"] {\n  background-color: rgba(255, 192, 203, 0.8);\n}\n.bc-pink,\nimg[src~=\"bc-pink\"] {\n  border-color: #FFC0CB;\n}\n.bc-pink-20pct,\nimg[src~=\"bc-pink\"] {\n  border-color: rgba(255, 192, 203, 0.2);\n}\n.bc-pink-40pct,\nimg[src~=\"bc-pink\"] {\n  border-color: rgba(255, 192, 203, 0.4);\n}\n.bc-pink-60pct,\nimg[src~=\"bc-pink\"] {\n  border-color: rgba(255, 192, 203, 0.6);\n}\n.bc-pink-80pct,\nimg[src~=\"bc-pink\"] {\n  border-color: rgba(255, 192, 203, 0.8);\n}\n.color-plum,\nimg[src~=\"color-plum\"] {\n  color: #DDA0DD;\n}\n.color-plum-20pct,\nimg[src~=\"color-plum\"] {\n  color: rgba(221, 160, 221, 0.2);\n}\n.color-plum-40pct,\nimg[src~=\"color-plum\"] {\n  color: rgba(221, 160, 221, 0.4);\n}\n.color-plum-60pct,\nimg[src~=\"color-plum\"] {\n  color: rgba(221, 160, 221, 0.6);\n}\n.color-plum-80pct,\nimg[src~=\"color-plum\"] {\n  color: rgba(221, 160, 221, 0.8);\n}\n.bg-plum,\nimg[src~=\"bg-plum\"] {\n  background-color: #DDA0DD;\n}\n.bg-plum-20pct,\nimg[src~=\"bg-plum\"] {\n  background-color: rgba(221, 160, 221, 0.2);\n}\n.bg-plum-40pct,\nimg[src~=\"bg-plum\"] {\n  background-color: rgba(221, 160, 221, 0.4);\n}\n.bg-plum-60pct,\nimg[src~=\"bg-plum\"] {\n  background-color: rgba(221, 160, 221, 0.6);\n}\n.bg-plum-80pct,\nimg[src~=\"bg-plum\"] {\n  background-color: rgba(221, 160, 221, 0.8);\n}\n.bc-plum,\nimg[src~=\"bc-plum\"] {\n  border-color: #DDA0DD;\n}\n.bc-plum-20pct,\nimg[src~=\"bc-plum\"] {\n  border-color: rgba(221, 160, 221, 0.2);\n}\n.bc-plum-40pct,\nimg[src~=\"bc-plum\"] {\n  border-color: rgba(221, 160, 221, 0.4);\n}\n.bc-plum-60pct,\nimg[src~=\"bc-plum\"] {\n  border-color: rgba(221, 160, 221, 0.6);\n}\n.bc-plum-80pct,\nimg[src~=\"bc-plum\"] {\n  border-color: rgba(221, 160, 221, 0.8);\n}\n.color-powderblue,\nimg[src~=\"color-powderblue\"] {\n  color: #B0E0E6;\n}\n.color-powderblue-20pct,\nimg[src~=\"color-powderblue\"] {\n  color: rgba(176, 224, 230, 0.2);\n}\n.color-powderblue-40pct,\nimg[src~=\"color-powderblue\"] {\n  color: rgba(176, 224, 230, 0.4);\n}\n.color-powderblue-60pct,\nimg[src~=\"color-powderblue\"] {\n  color: rgba(176, 224, 230, 0.6);\n}\n.color-powderblue-80pct,\nimg[src~=\"color-powderblue\"] {\n  color: rgba(176, 224, 230, 0.8);\n}\n.bg-powderblue,\nimg[src~=\"bg-powderblue\"] {\n  background-color: #B0E0E6;\n}\n.bg-powderblue-20pct,\nimg[src~=\"bg-powderblue\"] {\n  background-color: rgba(176, 224, 230, 0.2);\n}\n.bg-powderblue-40pct,\nimg[src~=\"bg-powderblue\"] {\n  background-color: rgba(176, 224, 230, 0.4);\n}\n.bg-powderblue-60pct,\nimg[src~=\"bg-powderblue\"] {\n  background-color: rgba(176, 224, 230, 0.6);\n}\n.bg-powderblue-80pct,\nimg[src~=\"bg-powderblue\"] {\n  background-color: rgba(176, 224, 230, 0.8);\n}\n.bc-powderblue,\nimg[src~=\"bc-powderblue\"] {\n  border-color: #B0E0E6;\n}\n.bc-powderblue-20pct,\nimg[src~=\"bc-powderblue\"] {\n  border-color: rgba(176, 224, 230, 0.2);\n}\n.bc-powderblue-40pct,\nimg[src~=\"bc-powderblue\"] {\n  border-color: rgba(176, 224, 230, 0.4);\n}\n.bc-powderblue-60pct,\nimg[src~=\"bc-powderblue\"] {\n  border-color: rgba(176, 224, 230, 0.6);\n}\n.bc-powderblue-80pct,\nimg[src~=\"bc-powderblue\"] {\n  border-color: rgba(176, 224, 230, 0.8);\n}\n.color-purple,\nimg[src~=\"color-purple\"] {\n  color: #800080;\n}\n.color-purple-20pct,\nimg[src~=\"color-purple\"] {\n  color: rgba(128, 0, 128, 0.2);\n}\n.color-purple-40pct,\nimg[src~=\"color-purple\"] {\n  color: rgba(128, 0, 128, 0.4);\n}\n.color-purple-60pct,\nimg[src~=\"color-purple\"] {\n  color: rgba(128, 0, 128, 0.6);\n}\n.color-purple-80pct,\nimg[src~=\"color-purple\"] {\n  color: rgba(128, 0, 128, 0.8);\n}\n.bg-purple,\nimg[src~=\"bg-purple\"] {\n  background-color: #800080;\n}\n.bg-purple-20pct,\nimg[src~=\"bg-purple\"] {\n  background-color: rgba(128, 0, 128, 0.2);\n}\n.bg-purple-40pct,\nimg[src~=\"bg-purple\"] {\n  background-color: rgba(128, 0, 128, 0.4);\n}\n.bg-purple-60pct,\nimg[src~=\"bg-purple\"] {\n  background-color: rgba(128, 0, 128, 0.6);\n}\n.bg-purple-80pct,\nimg[src~=\"bg-purple\"] {\n  background-color: rgba(128, 0, 128, 0.8);\n}\n.bc-purple,\nimg[src~=\"bc-purple\"] {\n  border-color: #800080;\n}\n.bc-purple-20pct,\nimg[src~=\"bc-purple\"] {\n  border-color: rgba(128, 0, 128, 0.2);\n}\n.bc-purple-40pct,\nimg[src~=\"bc-purple\"] {\n  border-color: rgba(128, 0, 128, 0.4);\n}\n.bc-purple-60pct,\nimg[src~=\"bc-purple\"] {\n  border-color: rgba(128, 0, 128, 0.6);\n}\n.bc-purple-80pct,\nimg[src~=\"bc-purple\"] {\n  border-color: rgba(128, 0, 128, 0.8);\n}\n.color-rebeccapurple,\nimg[src~=\"color-rebeccapurple\"] {\n  color: #663399;\n}\n.color-rebeccapurple-20pct,\nimg[src~=\"color-rebeccapurple\"] {\n  color: rgba(102, 51, 153, 0.2);\n}\n.color-rebeccapurple-40pct,\nimg[src~=\"color-rebeccapurple\"] {\n  color: rgba(102, 51, 153, 0.4);\n}\n.color-rebeccapurple-60pct,\nimg[src~=\"color-rebeccapurple\"] {\n  color: rgba(102, 51, 153, 0.6);\n}\n.color-rebeccapurple-80pct,\nimg[src~=\"color-rebeccapurple\"] {\n  color: rgba(102, 51, 153, 0.8);\n}\n.bg-rebeccapurple,\nimg[src~=\"bg-rebeccapurple\"] {\n  background-color: #663399;\n}\n.bg-rebeccapurple-20pct,\nimg[src~=\"bg-rebeccapurple\"] {\n  background-color: rgba(102, 51, 153, 0.2);\n}\n.bg-rebeccapurple-40pct,\nimg[src~=\"bg-rebeccapurple\"] {\n  background-color: rgba(102, 51, 153, 0.4);\n}\n.bg-rebeccapurple-60pct,\nimg[src~=\"bg-rebeccapurple\"] {\n  background-color: rgba(102, 51, 153, 0.6);\n}\n.bg-rebeccapurple-80pct,\nimg[src~=\"bg-rebeccapurple\"] {\n  background-color: rgba(102, 51, 153, 0.8);\n}\n.bc-rebeccapurple,\nimg[src~=\"bc-rebeccapurple\"] {\n  border-color: #663399;\n}\n.bc-rebeccapurple-20pct,\nimg[src~=\"bc-rebeccapurple\"] {\n  border-color: rgba(102, 51, 153, 0.2);\n}\n.bc-rebeccapurple-40pct,\nimg[src~=\"bc-rebeccapurple\"] {\n  border-color: rgba(102, 51, 153, 0.4);\n}\n.bc-rebeccapurple-60pct,\nimg[src~=\"bc-rebeccapurple\"] {\n  border-color: rgba(102, 51, 153, 0.6);\n}\n.bc-rebeccapurple-80pct,\nimg[src~=\"bc-rebeccapurple\"] {\n  border-color: rgba(102, 51, 153, 0.8);\n}\n.color-red,\nimg[src~=\"color-red\"] {\n  color: #FF0000;\n}\n.color-red-20pct,\nimg[src~=\"color-red\"] {\n  color: rgba(255, 0, 0, 0.2);\n}\n.color-red-40pct,\nimg[src~=\"color-red\"] {\n  color: rgba(255, 0, 0, 0.4);\n}\n.color-red-60pct,\nimg[src~=\"color-red\"] {\n  color: rgba(255, 0, 0, 0.6);\n}\n.color-red-80pct,\nimg[src~=\"color-red\"] {\n  color: rgba(255, 0, 0, 0.8);\n}\n.bg-red,\nimg[src~=\"bg-red\"] {\n  background-color: #FF0000;\n}\n.bg-red-20pct,\nimg[src~=\"bg-red\"] {\n  background-color: rgba(255, 0, 0, 0.2);\n}\n.bg-red-40pct,\nimg[src~=\"bg-red\"] {\n  background-color: rgba(255, 0, 0, 0.4);\n}\n.bg-red-60pct,\nimg[src~=\"bg-red\"] {\n  background-color: rgba(255, 0, 0, 0.6);\n}\n.bg-red-80pct,\nimg[src~=\"bg-red\"] {\n  background-color: rgba(255, 0, 0, 0.8);\n}\n.bc-red,\nimg[src~=\"bc-red\"] {\n  border-color: #FF0000;\n}\n.bc-red-20pct,\nimg[src~=\"bc-red\"] {\n  border-color: rgba(255, 0, 0, 0.2);\n}\n.bc-red-40pct,\nimg[src~=\"bc-red\"] {\n  border-color: rgba(255, 0, 0, 0.4);\n}\n.bc-red-60pct,\nimg[src~=\"bc-red\"] {\n  border-color: rgba(255, 0, 0, 0.6);\n}\n.bc-red-80pct,\nimg[src~=\"bc-red\"] {\n  border-color: rgba(255, 0, 0, 0.8);\n}\n.color-rosybrown,\nimg[src~=\"color-rosybrown\"] {\n  color: #BC8F8F;\n}\n.color-rosybrown-20pct,\nimg[src~=\"color-rosybrown\"] {\n  color: rgba(188, 143, 143, 0.2);\n}\n.color-rosybrown-40pct,\nimg[src~=\"color-rosybrown\"] {\n  color: rgba(188, 143, 143, 0.4);\n}\n.color-rosybrown-60pct,\nimg[src~=\"color-rosybrown\"] {\n  color: rgba(188, 143, 143, 0.6);\n}\n.color-rosybrown-80pct,\nimg[src~=\"color-rosybrown\"] {\n  color: rgba(188, 143, 143, 0.8);\n}\n.bg-rosybrown,\nimg[src~=\"bg-rosybrown\"] {\n  background-color: #BC8F8F;\n}\n.bg-rosybrown-20pct,\nimg[src~=\"bg-rosybrown\"] {\n  background-color: rgba(188, 143, 143, 0.2);\n}\n.bg-rosybrown-40pct,\nimg[src~=\"bg-rosybrown\"] {\n  background-color: rgba(188, 143, 143, 0.4);\n}\n.bg-rosybrown-60pct,\nimg[src~=\"bg-rosybrown\"] {\n  background-color: rgba(188, 143, 143, 0.6);\n}\n.bg-rosybrown-80pct,\nimg[src~=\"bg-rosybrown\"] {\n  background-color: rgba(188, 143, 143, 0.8);\n}\n.bc-rosybrown,\nimg[src~=\"bc-rosybrown\"] {\n  border-color: #BC8F8F;\n}\n.bc-rosybrown-20pct,\nimg[src~=\"bc-rosybrown\"] {\n  border-color: rgba(188, 143, 143, 0.2);\n}\n.bc-rosybrown-40pct,\nimg[src~=\"bc-rosybrown\"] {\n  border-color: rgba(188, 143, 143, 0.4);\n}\n.bc-rosybrown-60pct,\nimg[src~=\"bc-rosybrown\"] {\n  border-color: rgba(188, 143, 143, 0.6);\n}\n.bc-rosybrown-80pct,\nimg[src~=\"bc-rosybrown\"] {\n  border-color: rgba(188, 143, 143, 0.8);\n}\n.color-royalblue,\nimg[src~=\"color-royalblue\"] {\n  color: #4169E1;\n}\n.color-royalblue-20pct,\nimg[src~=\"color-royalblue\"] {\n  color: rgba(65, 105, 225, 0.2);\n}\n.color-royalblue-40pct,\nimg[src~=\"color-royalblue\"] {\n  color: rgba(65, 105, 225, 0.4);\n}\n.color-royalblue-60pct,\nimg[src~=\"color-royalblue\"] {\n  color: rgba(65, 105, 225, 0.6);\n}\n.color-royalblue-80pct,\nimg[src~=\"color-royalblue\"] {\n  color: rgba(65, 105, 225, 0.8);\n}\n.bg-royalblue,\nimg[src~=\"bg-royalblue\"] {\n  background-color: #4169E1;\n}\n.bg-royalblue-20pct,\nimg[src~=\"bg-royalblue\"] {\n  background-color: rgba(65, 105, 225, 0.2);\n}\n.bg-royalblue-40pct,\nimg[src~=\"bg-royalblue\"] {\n  background-color: rgba(65, 105, 225, 0.4);\n}\n.bg-royalblue-60pct,\nimg[src~=\"bg-royalblue\"] {\n  background-color: rgba(65, 105, 225, 0.6);\n}\n.bg-royalblue-80pct,\nimg[src~=\"bg-royalblue\"] {\n  background-color: rgba(65, 105, 225, 0.8);\n}\n.bc-royalblue,\nimg[src~=\"bc-royalblue\"] {\n  border-color: #4169E1;\n}\n.bc-royalblue-20pct,\nimg[src~=\"bc-royalblue\"] {\n  border-color: rgba(65, 105, 225, 0.2);\n}\n.bc-royalblue-40pct,\nimg[src~=\"bc-royalblue\"] {\n  border-color: rgba(65, 105, 225, 0.4);\n}\n.bc-royalblue-60pct,\nimg[src~=\"bc-royalblue\"] {\n  border-color: rgba(65, 105, 225, 0.6);\n}\n.bc-royalblue-80pct,\nimg[src~=\"bc-royalblue\"] {\n  border-color: rgba(65, 105, 225, 0.8);\n}\n.color-saddlebrown,\nimg[src~=\"color-saddlebrown\"] {\n  color: #8B4513;\n}\n.color-saddlebrown-20pct,\nimg[src~=\"color-saddlebrown\"] {\n  color: rgba(139, 69, 19, 0.2);\n}\n.color-saddlebrown-40pct,\nimg[src~=\"color-saddlebrown\"] {\n  color: rgba(139, 69, 19, 0.4);\n}\n.color-saddlebrown-60pct,\nimg[src~=\"color-saddlebrown\"] {\n  color: rgba(139, 69, 19, 0.6);\n}\n.color-saddlebrown-80pct,\nimg[src~=\"color-saddlebrown\"] {\n  color: rgba(139, 69, 19, 0.8);\n}\n.bg-saddlebrown,\nimg[src~=\"bg-saddlebrown\"] {\n  background-color: #8B4513;\n}\n.bg-saddlebrown-20pct,\nimg[src~=\"bg-saddlebrown\"] {\n  background-color: rgba(139, 69, 19, 0.2);\n}\n.bg-saddlebrown-40pct,\nimg[src~=\"bg-saddlebrown\"] {\n  background-color: rgba(139, 69, 19, 0.4);\n}\n.bg-saddlebrown-60pct,\nimg[src~=\"bg-saddlebrown\"] {\n  background-color: rgba(139, 69, 19, 0.6);\n}\n.bg-saddlebrown-80pct,\nimg[src~=\"bg-saddlebrown\"] {\n  background-color: rgba(139, 69, 19, 0.8);\n}\n.bc-saddlebrown,\nimg[src~=\"bc-saddlebrown\"] {\n  border-color: #8B4513;\n}\n.bc-saddlebrown-20pct,\nimg[src~=\"bc-saddlebrown\"] {\n  border-color: rgba(139, 69, 19, 0.2);\n}\n.bc-saddlebrown-40pct,\nimg[src~=\"bc-saddlebrown\"] {\n  border-color: rgba(139, 69, 19, 0.4);\n}\n.bc-saddlebrown-60pct,\nimg[src~=\"bc-saddlebrown\"] {\n  border-color: rgba(139, 69, 19, 0.6);\n}\n.bc-saddlebrown-80pct,\nimg[src~=\"bc-saddlebrown\"] {\n  border-color: rgba(139, 69, 19, 0.8);\n}\n.color-salmon,\nimg[src~=\"color-salmon\"] {\n  color: #FA8072;\n}\n.color-salmon-20pct,\nimg[src~=\"color-salmon\"] {\n  color: rgba(250, 128, 114, 0.2);\n}\n.color-salmon-40pct,\nimg[src~=\"color-salmon\"] {\n  color: rgba(250, 128, 114, 0.4);\n}\n.color-salmon-60pct,\nimg[src~=\"color-salmon\"] {\n  color: rgba(250, 128, 114, 0.6);\n}\n.color-salmon-80pct,\nimg[src~=\"color-salmon\"] {\n  color: rgba(250, 128, 114, 0.8);\n}\n.bg-salmon,\nimg[src~=\"bg-salmon\"] {\n  background-color: #FA8072;\n}\n.bg-salmon-20pct,\nimg[src~=\"bg-salmon\"] {\n  background-color: rgba(250, 128, 114, 0.2);\n}\n.bg-salmon-40pct,\nimg[src~=\"bg-salmon\"] {\n  background-color: rgba(250, 128, 114, 0.4);\n}\n.bg-salmon-60pct,\nimg[src~=\"bg-salmon\"] {\n  background-color: rgba(250, 128, 114, 0.6);\n}\n.bg-salmon-80pct,\nimg[src~=\"bg-salmon\"] {\n  background-color: rgba(250, 128, 114, 0.8);\n}\n.bc-salmon,\nimg[src~=\"bc-salmon\"] {\n  border-color: #FA8072;\n}\n.bc-salmon-20pct,\nimg[src~=\"bc-salmon\"] {\n  border-color: rgba(250, 128, 114, 0.2);\n}\n.bc-salmon-40pct,\nimg[src~=\"bc-salmon\"] {\n  border-color: rgba(250, 128, 114, 0.4);\n}\n.bc-salmon-60pct,\nimg[src~=\"bc-salmon\"] {\n  border-color: rgba(250, 128, 114, 0.6);\n}\n.bc-salmon-80pct,\nimg[src~=\"bc-salmon\"] {\n  border-color: rgba(250, 128, 114, 0.8);\n}\n.color-sandybrown,\nimg[src~=\"color-sandybrown\"] {\n  color: #F4A460;\n}\n.color-sandybrown-20pct,\nimg[src~=\"color-sandybrown\"] {\n  color: rgba(244, 164, 96, 0.2);\n}\n.color-sandybrown-40pct,\nimg[src~=\"color-sandybrown\"] {\n  color: rgba(244, 164, 96, 0.4);\n}\n.color-sandybrown-60pct,\nimg[src~=\"color-sandybrown\"] {\n  color: rgba(244, 164, 96, 0.6);\n}\n.color-sandybrown-80pct,\nimg[src~=\"color-sandybrown\"] {\n  color: rgba(244, 164, 96, 0.8);\n}\n.bg-sandybrown,\nimg[src~=\"bg-sandybrown\"] {\n  background-color: #F4A460;\n}\n.bg-sandybrown-20pct,\nimg[src~=\"bg-sandybrown\"] {\n  background-color: rgba(244, 164, 96, 0.2);\n}\n.bg-sandybrown-40pct,\nimg[src~=\"bg-sandybrown\"] {\n  background-color: rgba(244, 164, 96, 0.4);\n}\n.bg-sandybrown-60pct,\nimg[src~=\"bg-sandybrown\"] {\n  background-color: rgba(244, 164, 96, 0.6);\n}\n.bg-sandybrown-80pct,\nimg[src~=\"bg-sandybrown\"] {\n  background-color: rgba(244, 164, 96, 0.8);\n}\n.bc-sandybrown,\nimg[src~=\"bc-sandybrown\"] {\n  border-color: #F4A460;\n}\n.bc-sandybrown-20pct,\nimg[src~=\"bc-sandybrown\"] {\n  border-color: rgba(244, 164, 96, 0.2);\n}\n.bc-sandybrown-40pct,\nimg[src~=\"bc-sandybrown\"] {\n  border-color: rgba(244, 164, 96, 0.4);\n}\n.bc-sandybrown-60pct,\nimg[src~=\"bc-sandybrown\"] {\n  border-color: rgba(244, 164, 96, 0.6);\n}\n.bc-sandybrown-80pct,\nimg[src~=\"bc-sandybrown\"] {\n  border-color: rgba(244, 164, 96, 0.8);\n}\n.color-seagreen,\nimg[src~=\"color-seagreen\"] {\n  color: #2E8B57;\n}\n.color-seagreen-20pct,\nimg[src~=\"color-seagreen\"] {\n  color: rgba(46, 139, 87, 0.2);\n}\n.color-seagreen-40pct,\nimg[src~=\"color-seagreen\"] {\n  color: rgba(46, 139, 87, 0.4);\n}\n.color-seagreen-60pct,\nimg[src~=\"color-seagreen\"] {\n  color: rgba(46, 139, 87, 0.6);\n}\n.color-seagreen-80pct,\nimg[src~=\"color-seagreen\"] {\n  color: rgba(46, 139, 87, 0.8);\n}\n.bg-seagreen,\nimg[src~=\"bg-seagreen\"] {\n  background-color: #2E8B57;\n}\n.bg-seagreen-20pct,\nimg[src~=\"bg-seagreen\"] {\n  background-color: rgba(46, 139, 87, 0.2);\n}\n.bg-seagreen-40pct,\nimg[src~=\"bg-seagreen\"] {\n  background-color: rgba(46, 139, 87, 0.4);\n}\n.bg-seagreen-60pct,\nimg[src~=\"bg-seagreen\"] {\n  background-color: rgba(46, 139, 87, 0.6);\n}\n.bg-seagreen-80pct,\nimg[src~=\"bg-seagreen\"] {\n  background-color: rgba(46, 139, 87, 0.8);\n}\n.bc-seagreen,\nimg[src~=\"bc-seagreen\"] {\n  border-color: #2E8B57;\n}\n.bc-seagreen-20pct,\nimg[src~=\"bc-seagreen\"] {\n  border-color: rgba(46, 139, 87, 0.2);\n}\n.bc-seagreen-40pct,\nimg[src~=\"bc-seagreen\"] {\n  border-color: rgba(46, 139, 87, 0.4);\n}\n.bc-seagreen-60pct,\nimg[src~=\"bc-seagreen\"] {\n  border-color: rgba(46, 139, 87, 0.6);\n}\n.bc-seagreen-80pct,\nimg[src~=\"bc-seagreen\"] {\n  border-color: rgba(46, 139, 87, 0.8);\n}\n.color-seashell,\nimg[src~=\"color-seashell\"] {\n  color: #FFF5EE;\n}\n.color-seashell-20pct,\nimg[src~=\"color-seashell\"] {\n  color: rgba(255, 245, 238, 0.2);\n}\n.color-seashell-40pct,\nimg[src~=\"color-seashell\"] {\n  color: rgba(255, 245, 238, 0.4);\n}\n.color-seashell-60pct,\nimg[src~=\"color-seashell\"] {\n  color: rgba(255, 245, 238, 0.6);\n}\n.color-seashell-80pct,\nimg[src~=\"color-seashell\"] {\n  color: rgba(255, 245, 238, 0.8);\n}\n.bg-seashell,\nimg[src~=\"bg-seashell\"] {\n  background-color: #FFF5EE;\n}\n.bg-seashell-20pct,\nimg[src~=\"bg-seashell\"] {\n  background-color: rgba(255, 245, 238, 0.2);\n}\n.bg-seashell-40pct,\nimg[src~=\"bg-seashell\"] {\n  background-color: rgba(255, 245, 238, 0.4);\n}\n.bg-seashell-60pct,\nimg[src~=\"bg-seashell\"] {\n  background-color: rgba(255, 245, 238, 0.6);\n}\n.bg-seashell-80pct,\nimg[src~=\"bg-seashell\"] {\n  background-color: rgba(255, 245, 238, 0.8);\n}\n.bc-seashell,\nimg[src~=\"bc-seashell\"] {\n  border-color: #FFF5EE;\n}\n.bc-seashell-20pct,\nimg[src~=\"bc-seashell\"] {\n  border-color: rgba(255, 245, 238, 0.2);\n}\n.bc-seashell-40pct,\nimg[src~=\"bc-seashell\"] {\n  border-color: rgba(255, 245, 238, 0.4);\n}\n.bc-seashell-60pct,\nimg[src~=\"bc-seashell\"] {\n  border-color: rgba(255, 245, 238, 0.6);\n}\n.bc-seashell-80pct,\nimg[src~=\"bc-seashell\"] {\n  border-color: rgba(255, 245, 238, 0.8);\n}\n.color-sienna,\nimg[src~=\"color-sienna\"] {\n  color: #A0522D;\n}\n.color-sienna-20pct,\nimg[src~=\"color-sienna\"] {\n  color: rgba(160, 82, 45, 0.2);\n}\n.color-sienna-40pct,\nimg[src~=\"color-sienna\"] {\n  color: rgba(160, 82, 45, 0.4);\n}\n.color-sienna-60pct,\nimg[src~=\"color-sienna\"] {\n  color: rgba(160, 82, 45, 0.6);\n}\n.color-sienna-80pct,\nimg[src~=\"color-sienna\"] {\n  color: rgba(160, 82, 45, 0.8);\n}\n.bg-sienna,\nimg[src~=\"bg-sienna\"] {\n  background-color: #A0522D;\n}\n.bg-sienna-20pct,\nimg[src~=\"bg-sienna\"] {\n  background-color: rgba(160, 82, 45, 0.2);\n}\n.bg-sienna-40pct,\nimg[src~=\"bg-sienna\"] {\n  background-color: rgba(160, 82, 45, 0.4);\n}\n.bg-sienna-60pct,\nimg[src~=\"bg-sienna\"] {\n  background-color: rgba(160, 82, 45, 0.6);\n}\n.bg-sienna-80pct,\nimg[src~=\"bg-sienna\"] {\n  background-color: rgba(160, 82, 45, 0.8);\n}\n.bc-sienna,\nimg[src~=\"bc-sienna\"] {\n  border-color: #A0522D;\n}\n.bc-sienna-20pct,\nimg[src~=\"bc-sienna\"] {\n  border-color: rgba(160, 82, 45, 0.2);\n}\n.bc-sienna-40pct,\nimg[src~=\"bc-sienna\"] {\n  border-color: rgba(160, 82, 45, 0.4);\n}\n.bc-sienna-60pct,\nimg[src~=\"bc-sienna\"] {\n  border-color: rgba(160, 82, 45, 0.6);\n}\n.bc-sienna-80pct,\nimg[src~=\"bc-sienna\"] {\n  border-color: rgba(160, 82, 45, 0.8);\n}\n.color-silver,\nimg[src~=\"color-silver\"] {\n  color: #C0C0C0;\n}\n.color-silver-20pct,\nimg[src~=\"color-silver\"] {\n  color: rgba(192, 192, 192, 0.2);\n}\n.color-silver-40pct,\nimg[src~=\"color-silver\"] {\n  color: rgba(192, 192, 192, 0.4);\n}\n.color-silver-60pct,\nimg[src~=\"color-silver\"] {\n  color: rgba(192, 192, 192, 0.6);\n}\n.color-silver-80pct,\nimg[src~=\"color-silver\"] {\n  color: rgba(192, 192, 192, 0.8);\n}\n.bg-silver,\nimg[src~=\"bg-silver\"] {\n  background-color: #C0C0C0;\n}\n.bg-silver-20pct,\nimg[src~=\"bg-silver\"] {\n  background-color: rgba(192, 192, 192, 0.2);\n}\n.bg-silver-40pct,\nimg[src~=\"bg-silver\"] {\n  background-color: rgba(192, 192, 192, 0.4);\n}\n.bg-silver-60pct,\nimg[src~=\"bg-silver\"] {\n  background-color: rgba(192, 192, 192, 0.6);\n}\n.bg-silver-80pct,\nimg[src~=\"bg-silver\"] {\n  background-color: rgba(192, 192, 192, 0.8);\n}\n.bc-silver,\nimg[src~=\"bc-silver\"] {\n  border-color: #C0C0C0;\n}\n.bc-silver-20pct,\nimg[src~=\"bc-silver\"] {\n  border-color: rgba(192, 192, 192, 0.2);\n}\n.bc-silver-40pct,\nimg[src~=\"bc-silver\"] {\n  border-color: rgba(192, 192, 192, 0.4);\n}\n.bc-silver-60pct,\nimg[src~=\"bc-silver\"] {\n  border-color: rgba(192, 192, 192, 0.6);\n}\n.bc-silver-80pct,\nimg[src~=\"bc-silver\"] {\n  border-color: rgba(192, 192, 192, 0.8);\n}\n.color-skyblue,\nimg[src~=\"color-skyblue\"] {\n  color: #87CEEB;\n}\n.color-skyblue-20pct,\nimg[src~=\"color-skyblue\"] {\n  color: rgba(135, 206, 235, 0.2);\n}\n.color-skyblue-40pct,\nimg[src~=\"color-skyblue\"] {\n  color: rgba(135, 206, 235, 0.4);\n}\n.color-skyblue-60pct,\nimg[src~=\"color-skyblue\"] {\n  color: rgba(135, 206, 235, 0.6);\n}\n.color-skyblue-80pct,\nimg[src~=\"color-skyblue\"] {\n  color: rgba(135, 206, 235, 0.8);\n}\n.bg-skyblue,\nimg[src~=\"bg-skyblue\"] {\n  background-color: #87CEEB;\n}\n.bg-skyblue-20pct,\nimg[src~=\"bg-skyblue\"] {\n  background-color: rgba(135, 206, 235, 0.2);\n}\n.bg-skyblue-40pct,\nimg[src~=\"bg-skyblue\"] {\n  background-color: rgba(135, 206, 235, 0.4);\n}\n.bg-skyblue-60pct,\nimg[src~=\"bg-skyblue\"] {\n  background-color: rgba(135, 206, 235, 0.6);\n}\n.bg-skyblue-80pct,\nimg[src~=\"bg-skyblue\"] {\n  background-color: rgba(135, 206, 235, 0.8);\n}\n.bc-skyblue,\nimg[src~=\"bc-skyblue\"] {\n  border-color: #87CEEB;\n}\n.bc-skyblue-20pct,\nimg[src~=\"bc-skyblue\"] {\n  border-color: rgba(135, 206, 235, 0.2);\n}\n.bc-skyblue-40pct,\nimg[src~=\"bc-skyblue\"] {\n  border-color: rgba(135, 206, 235, 0.4);\n}\n.bc-skyblue-60pct,\nimg[src~=\"bc-skyblue\"] {\n  border-color: rgba(135, 206, 235, 0.6);\n}\n.bc-skyblue-80pct,\nimg[src~=\"bc-skyblue\"] {\n  border-color: rgba(135, 206, 235, 0.8);\n}\n.color-slateblue,\nimg[src~=\"color-slateblue\"] {\n  color: #6A5ACD;\n}\n.color-slateblue-20pct,\nimg[src~=\"color-slateblue\"] {\n  color: rgba(106, 90, 205, 0.2);\n}\n.color-slateblue-40pct,\nimg[src~=\"color-slateblue\"] {\n  color: rgba(106, 90, 205, 0.4);\n}\n.color-slateblue-60pct,\nimg[src~=\"color-slateblue\"] {\n  color: rgba(106, 90, 205, 0.6);\n}\n.color-slateblue-80pct,\nimg[src~=\"color-slateblue\"] {\n  color: rgba(106, 90, 205, 0.8);\n}\n.bg-slateblue,\nimg[src~=\"bg-slateblue\"] {\n  background-color: #6A5ACD;\n}\n.bg-slateblue-20pct,\nimg[src~=\"bg-slateblue\"] {\n  background-color: rgba(106, 90, 205, 0.2);\n}\n.bg-slateblue-40pct,\nimg[src~=\"bg-slateblue\"] {\n  background-color: rgba(106, 90, 205, 0.4);\n}\n.bg-slateblue-60pct,\nimg[src~=\"bg-slateblue\"] {\n  background-color: rgba(106, 90, 205, 0.6);\n}\n.bg-slateblue-80pct,\nimg[src~=\"bg-slateblue\"] {\n  background-color: rgba(106, 90, 205, 0.8);\n}\n.bc-slateblue,\nimg[src~=\"bc-slateblue\"] {\n  border-color: #6A5ACD;\n}\n.bc-slateblue-20pct,\nimg[src~=\"bc-slateblue\"] {\n  border-color: rgba(106, 90, 205, 0.2);\n}\n.bc-slateblue-40pct,\nimg[src~=\"bc-slateblue\"] {\n  border-color: rgba(106, 90, 205, 0.4);\n}\n.bc-slateblue-60pct,\nimg[src~=\"bc-slateblue\"] {\n  border-color: rgba(106, 90, 205, 0.6);\n}\n.bc-slateblue-80pct,\nimg[src~=\"bc-slateblue\"] {\n  border-color: rgba(106, 90, 205, 0.8);\n}\n.color-slategray,\nimg[src~=\"color-slategray\"] {\n  color: #708090;\n}\n.color-slategray-20pct,\nimg[src~=\"color-slategray\"] {\n  color: rgba(112, 128, 144, 0.2);\n}\n.color-slategray-40pct,\nimg[src~=\"color-slategray\"] {\n  color: rgba(112, 128, 144, 0.4);\n}\n.color-slategray-60pct,\nimg[src~=\"color-slategray\"] {\n  color: rgba(112, 128, 144, 0.6);\n}\n.color-slategray-80pct,\nimg[src~=\"color-slategray\"] {\n  color: rgba(112, 128, 144, 0.8);\n}\n.bg-slategray,\nimg[src~=\"bg-slategray\"] {\n  background-color: #708090;\n}\n.bg-slategray-20pct,\nimg[src~=\"bg-slategray\"] {\n  background-color: rgba(112, 128, 144, 0.2);\n}\n.bg-slategray-40pct,\nimg[src~=\"bg-slategray\"] {\n  background-color: rgba(112, 128, 144, 0.4);\n}\n.bg-slategray-60pct,\nimg[src~=\"bg-slategray\"] {\n  background-color: rgba(112, 128, 144, 0.6);\n}\n.bg-slategray-80pct,\nimg[src~=\"bg-slategray\"] {\n  background-color: rgba(112, 128, 144, 0.8);\n}\n.bc-slategray,\nimg[src~=\"bc-slategray\"] {\n  border-color: #708090;\n}\n.bc-slategray-20pct,\nimg[src~=\"bc-slategray\"] {\n  border-color: rgba(112, 128, 144, 0.2);\n}\n.bc-slategray-40pct,\nimg[src~=\"bc-slategray\"] {\n  border-color: rgba(112, 128, 144, 0.4);\n}\n.bc-slategray-60pct,\nimg[src~=\"bc-slategray\"] {\n  border-color: rgba(112, 128, 144, 0.6);\n}\n.bc-slategray-80pct,\nimg[src~=\"bc-slategray\"] {\n  border-color: rgba(112, 128, 144, 0.8);\n}\n.color-slategrey,\nimg[src~=\"color-slategrey\"] {\n  color: #708090;\n}\n.color-slategrey-20pct,\nimg[src~=\"color-slategrey\"] {\n  color: rgba(112, 128, 144, 0.2);\n}\n.color-slategrey-40pct,\nimg[src~=\"color-slategrey\"] {\n  color: rgba(112, 128, 144, 0.4);\n}\n.color-slategrey-60pct,\nimg[src~=\"color-slategrey\"] {\n  color: rgba(112, 128, 144, 0.6);\n}\n.color-slategrey-80pct,\nimg[src~=\"color-slategrey\"] {\n  color: rgba(112, 128, 144, 0.8);\n}\n.bg-slategrey,\nimg[src~=\"bg-slategrey\"] {\n  background-color: #708090;\n}\n.bg-slategrey-20pct,\nimg[src~=\"bg-slategrey\"] {\n  background-color: rgba(112, 128, 144, 0.2);\n}\n.bg-slategrey-40pct,\nimg[src~=\"bg-slategrey\"] {\n  background-color: rgba(112, 128, 144, 0.4);\n}\n.bg-slategrey-60pct,\nimg[src~=\"bg-slategrey\"] {\n  background-color: rgba(112, 128, 144, 0.6);\n}\n.bg-slategrey-80pct,\nimg[src~=\"bg-slategrey\"] {\n  background-color: rgba(112, 128, 144, 0.8);\n}\n.bc-slategrey,\nimg[src~=\"bc-slategrey\"] {\n  border-color: #708090;\n}\n.bc-slategrey-20pct,\nimg[src~=\"bc-slategrey\"] {\n  border-color: rgba(112, 128, 144, 0.2);\n}\n.bc-slategrey-40pct,\nimg[src~=\"bc-slategrey\"] {\n  border-color: rgba(112, 128, 144, 0.4);\n}\n.bc-slategrey-60pct,\nimg[src~=\"bc-slategrey\"] {\n  border-color: rgba(112, 128, 144, 0.6);\n}\n.bc-slategrey-80pct,\nimg[src~=\"bc-slategrey\"] {\n  border-color: rgba(112, 128, 144, 0.8);\n}\n.color-snow,\nimg[src~=\"color-snow\"] {\n  color: #FFFAFA;\n}\n.color-snow-20pct,\nimg[src~=\"color-snow\"] {\n  color: rgba(255, 250, 250, 0.2);\n}\n.color-snow-40pct,\nimg[src~=\"color-snow\"] {\n  color: rgba(255, 250, 250, 0.4);\n}\n.color-snow-60pct,\nimg[src~=\"color-snow\"] {\n  color: rgba(255, 250, 250, 0.6);\n}\n.color-snow-80pct,\nimg[src~=\"color-snow\"] {\n  color: rgba(255, 250, 250, 0.8);\n}\n.bg-snow,\nimg[src~=\"bg-snow\"] {\n  background-color: #FFFAFA;\n}\n.bg-snow-20pct,\nimg[src~=\"bg-snow\"] {\n  background-color: rgba(255, 250, 250, 0.2);\n}\n.bg-snow-40pct,\nimg[src~=\"bg-snow\"] {\n  background-color: rgba(255, 250, 250, 0.4);\n}\n.bg-snow-60pct,\nimg[src~=\"bg-snow\"] {\n  background-color: rgba(255, 250, 250, 0.6);\n}\n.bg-snow-80pct,\nimg[src~=\"bg-snow\"] {\n  background-color: rgba(255, 250, 250, 0.8);\n}\n.bc-snow,\nimg[src~=\"bc-snow\"] {\n  border-color: #FFFAFA;\n}\n.bc-snow-20pct,\nimg[src~=\"bc-snow\"] {\n  border-color: rgba(255, 250, 250, 0.2);\n}\n.bc-snow-40pct,\nimg[src~=\"bc-snow\"] {\n  border-color: rgba(255, 250, 250, 0.4);\n}\n.bc-snow-60pct,\nimg[src~=\"bc-snow\"] {\n  border-color: rgba(255, 250, 250, 0.6);\n}\n.bc-snow-80pct,\nimg[src~=\"bc-snow\"] {\n  border-color: rgba(255, 250, 250, 0.8);\n}\n.color-springgreen,\nimg[src~=\"color-springgreen\"] {\n  color: #00FF7F;\n}\n.color-springgreen-20pct,\nimg[src~=\"color-springgreen\"] {\n  color: rgba(0, 255, 127, 0.2);\n}\n.color-springgreen-40pct,\nimg[src~=\"color-springgreen\"] {\n  color: rgba(0, 255, 127, 0.4);\n}\n.color-springgreen-60pct,\nimg[src~=\"color-springgreen\"] {\n  color: rgba(0, 255, 127, 0.6);\n}\n.color-springgreen-80pct,\nimg[src~=\"color-springgreen\"] {\n  color: rgba(0, 255, 127, 0.8);\n}\n.bg-springgreen,\nimg[src~=\"bg-springgreen\"] {\n  background-color: #00FF7F;\n}\n.bg-springgreen-20pct,\nimg[src~=\"bg-springgreen\"] {\n  background-color: rgba(0, 255, 127, 0.2);\n}\n.bg-springgreen-40pct,\nimg[src~=\"bg-springgreen\"] {\n  background-color: rgba(0, 255, 127, 0.4);\n}\n.bg-springgreen-60pct,\nimg[src~=\"bg-springgreen\"] {\n  background-color: rgba(0, 255, 127, 0.6);\n}\n.bg-springgreen-80pct,\nimg[src~=\"bg-springgreen\"] {\n  background-color: rgba(0, 255, 127, 0.8);\n}\n.bc-springgreen,\nimg[src~=\"bc-springgreen\"] {\n  border-color: #00FF7F;\n}\n.bc-springgreen-20pct,\nimg[src~=\"bc-springgreen\"] {\n  border-color: rgba(0, 255, 127, 0.2);\n}\n.bc-springgreen-40pct,\nimg[src~=\"bc-springgreen\"] {\n  border-color: rgba(0, 255, 127, 0.4);\n}\n.bc-springgreen-60pct,\nimg[src~=\"bc-springgreen\"] {\n  border-color: rgba(0, 255, 127, 0.6);\n}\n.bc-springgreen-80pct,\nimg[src~=\"bc-springgreen\"] {\n  border-color: rgba(0, 255, 127, 0.8);\n}\n.color-steelblue,\nimg[src~=\"color-steelblue\"] {\n  color: #4682B4;\n}\n.color-steelblue-20pct,\nimg[src~=\"color-steelblue\"] {\n  color: rgba(70, 130, 180, 0.2);\n}\n.color-steelblue-40pct,\nimg[src~=\"color-steelblue\"] {\n  color: rgba(70, 130, 180, 0.4);\n}\n.color-steelblue-60pct,\nimg[src~=\"color-steelblue\"] {\n  color: rgba(70, 130, 180, 0.6);\n}\n.color-steelblue-80pct,\nimg[src~=\"color-steelblue\"] {\n  color: rgba(70, 130, 180, 0.8);\n}\n.bg-steelblue,\nimg[src~=\"bg-steelblue\"] {\n  background-color: #4682B4;\n}\n.bg-steelblue-20pct,\nimg[src~=\"bg-steelblue\"] {\n  background-color: rgba(70, 130, 180, 0.2);\n}\n.bg-steelblue-40pct,\nimg[src~=\"bg-steelblue\"] {\n  background-color: rgba(70, 130, 180, 0.4);\n}\n.bg-steelblue-60pct,\nimg[src~=\"bg-steelblue\"] {\n  background-color: rgba(70, 130, 180, 0.6);\n}\n.bg-steelblue-80pct,\nimg[src~=\"bg-steelblue\"] {\n  background-color: rgba(70, 130, 180, 0.8);\n}\n.bc-steelblue,\nimg[src~=\"bc-steelblue\"] {\n  border-color: #4682B4;\n}\n.bc-steelblue-20pct,\nimg[src~=\"bc-steelblue\"] {\n  border-color: rgba(70, 130, 180, 0.2);\n}\n.bc-steelblue-40pct,\nimg[src~=\"bc-steelblue\"] {\n  border-color: rgba(70, 130, 180, 0.4);\n}\n.bc-steelblue-60pct,\nimg[src~=\"bc-steelblue\"] {\n  border-color: rgba(70, 130, 180, 0.6);\n}\n.bc-steelblue-80pct,\nimg[src~=\"bc-steelblue\"] {\n  border-color: rgba(70, 130, 180, 0.8);\n}\n.color-tan,\nimg[src~=\"color-tan\"] {\n  color: #D2B48C;\n}\n.color-tan-20pct,\nimg[src~=\"color-tan\"] {\n  color: rgba(210, 180, 140, 0.2);\n}\n.color-tan-40pct,\nimg[src~=\"color-tan\"] {\n  color: rgba(210, 180, 140, 0.4);\n}\n.color-tan-60pct,\nimg[src~=\"color-tan\"] {\n  color: rgba(210, 180, 140, 0.6);\n}\n.color-tan-80pct,\nimg[src~=\"color-tan\"] {\n  color: rgba(210, 180, 140, 0.8);\n}\n.bg-tan,\nimg[src~=\"bg-tan\"] {\n  background-color: #D2B48C;\n}\n.bg-tan-20pct,\nimg[src~=\"bg-tan\"] {\n  background-color: rgba(210, 180, 140, 0.2);\n}\n.bg-tan-40pct,\nimg[src~=\"bg-tan\"] {\n  background-color: rgba(210, 180, 140, 0.4);\n}\n.bg-tan-60pct,\nimg[src~=\"bg-tan\"] {\n  background-color: rgba(210, 180, 140, 0.6);\n}\n.bg-tan-80pct,\nimg[src~=\"bg-tan\"] {\n  background-color: rgba(210, 180, 140, 0.8);\n}\n.bc-tan,\nimg[src~=\"bc-tan\"] {\n  border-color: #D2B48C;\n}\n.bc-tan-20pct,\nimg[src~=\"bc-tan\"] {\n  border-color: rgba(210, 180, 140, 0.2);\n}\n.bc-tan-40pct,\nimg[src~=\"bc-tan\"] {\n  border-color: rgba(210, 180, 140, 0.4);\n}\n.bc-tan-60pct,\nimg[src~=\"bc-tan\"] {\n  border-color: rgba(210, 180, 140, 0.6);\n}\n.bc-tan-80pct,\nimg[src~=\"bc-tan\"] {\n  border-color: rgba(210, 180, 140, 0.8);\n}\n.color-teal,\nimg[src~=\"color-teal\"] {\n  color: #008080;\n}\n.color-teal-20pct,\nimg[src~=\"color-teal\"] {\n  color: rgba(0, 128, 128, 0.2);\n}\n.color-teal-40pct,\nimg[src~=\"color-teal\"] {\n  color: rgba(0, 128, 128, 0.4);\n}\n.color-teal-60pct,\nimg[src~=\"color-teal\"] {\n  color: rgba(0, 128, 128, 0.6);\n}\n.color-teal-80pct,\nimg[src~=\"color-teal\"] {\n  color: rgba(0, 128, 128, 0.8);\n}\n.bg-teal,\nimg[src~=\"bg-teal\"] {\n  background-color: #008080;\n}\n.bg-teal-20pct,\nimg[src~=\"bg-teal\"] {\n  background-color: rgba(0, 128, 128, 0.2);\n}\n.bg-teal-40pct,\nimg[src~=\"bg-teal\"] {\n  background-color: rgba(0, 128, 128, 0.4);\n}\n.bg-teal-60pct,\nimg[src~=\"bg-teal\"] {\n  background-color: rgba(0, 128, 128, 0.6);\n}\n.bg-teal-80pct,\nimg[src~=\"bg-teal\"] {\n  background-color: rgba(0, 128, 128, 0.8);\n}\n.bc-teal,\nimg[src~=\"bc-teal\"] {\n  border-color: #008080;\n}\n.bc-teal-20pct,\nimg[src~=\"bc-teal\"] {\n  border-color: rgba(0, 128, 128, 0.2);\n}\n.bc-teal-40pct,\nimg[src~=\"bc-teal\"] {\n  border-color: rgba(0, 128, 128, 0.4);\n}\n.bc-teal-60pct,\nimg[src~=\"bc-teal\"] {\n  border-color: rgba(0, 128, 128, 0.6);\n}\n.bc-teal-80pct,\nimg[src~=\"bc-teal\"] {\n  border-color: rgba(0, 128, 128, 0.8);\n}\n.color-thistle,\nimg[src~=\"color-thistle\"] {\n  color: #D8BFD8;\n}\n.color-thistle-20pct,\nimg[src~=\"color-thistle\"] {\n  color: rgba(216, 191, 216, 0.2);\n}\n.color-thistle-40pct,\nimg[src~=\"color-thistle\"] {\n  color: rgba(216, 191, 216, 0.4);\n}\n.color-thistle-60pct,\nimg[src~=\"color-thistle\"] {\n  color: rgba(216, 191, 216, 0.6);\n}\n.color-thistle-80pct,\nimg[src~=\"color-thistle\"] {\n  color: rgba(216, 191, 216, 0.8);\n}\n.bg-thistle,\nimg[src~=\"bg-thistle\"] {\n  background-color: #D8BFD8;\n}\n.bg-thistle-20pct,\nimg[src~=\"bg-thistle\"] {\n  background-color: rgba(216, 191, 216, 0.2);\n}\n.bg-thistle-40pct,\nimg[src~=\"bg-thistle\"] {\n  background-color: rgba(216, 191, 216, 0.4);\n}\n.bg-thistle-60pct,\nimg[src~=\"bg-thistle\"] {\n  background-color: rgba(216, 191, 216, 0.6);\n}\n.bg-thistle-80pct,\nimg[src~=\"bg-thistle\"] {\n  background-color: rgba(216, 191, 216, 0.8);\n}\n.bc-thistle,\nimg[src~=\"bc-thistle\"] {\n  border-color: #D8BFD8;\n}\n.bc-thistle-20pct,\nimg[src~=\"bc-thistle\"] {\n  border-color: rgba(216, 191, 216, 0.2);\n}\n.bc-thistle-40pct,\nimg[src~=\"bc-thistle\"] {\n  border-color: rgba(216, 191, 216, 0.4);\n}\n.bc-thistle-60pct,\nimg[src~=\"bc-thistle\"] {\n  border-color: rgba(216, 191, 216, 0.6);\n}\n.bc-thistle-80pct,\nimg[src~=\"bc-thistle\"] {\n  border-color: rgba(216, 191, 216, 0.8);\n}\n.color-tomato,\nimg[src~=\"color-tomato\"] {\n  color: #FF6347;\n}\n.color-tomato-20pct,\nimg[src~=\"color-tomato\"] {\n  color: rgba(255, 99, 71, 0.2);\n}\n.color-tomato-40pct,\nimg[src~=\"color-tomato\"] {\n  color: rgba(255, 99, 71, 0.4);\n}\n.color-tomato-60pct,\nimg[src~=\"color-tomato\"] {\n  color: rgba(255, 99, 71, 0.6);\n}\n.color-tomato-80pct,\nimg[src~=\"color-tomato\"] {\n  color: rgba(255, 99, 71, 0.8);\n}\n.bg-tomato,\nimg[src~=\"bg-tomato\"] {\n  background-color: #FF6347;\n}\n.bg-tomato-20pct,\nimg[src~=\"bg-tomato\"] {\n  background-color: rgba(255, 99, 71, 0.2);\n}\n.bg-tomato-40pct,\nimg[src~=\"bg-tomato\"] {\n  background-color: rgba(255, 99, 71, 0.4);\n}\n.bg-tomato-60pct,\nimg[src~=\"bg-tomato\"] {\n  background-color: rgba(255, 99, 71, 0.6);\n}\n.bg-tomato-80pct,\nimg[src~=\"bg-tomato\"] {\n  background-color: rgba(255, 99, 71, 0.8);\n}\n.bc-tomato,\nimg[src~=\"bc-tomato\"] {\n  border-color: #FF6347;\n}\n.bc-tomato-20pct,\nimg[src~=\"bc-tomato\"] {\n  border-color: rgba(255, 99, 71, 0.2);\n}\n.bc-tomato-40pct,\nimg[src~=\"bc-tomato\"] {\n  border-color: rgba(255, 99, 71, 0.4);\n}\n.bc-tomato-60pct,\nimg[src~=\"bc-tomato\"] {\n  border-color: rgba(255, 99, 71, 0.6);\n}\n.bc-tomato-80pct,\nimg[src~=\"bc-tomato\"] {\n  border-color: rgba(255, 99, 71, 0.8);\n}\n.color-turquoise,\nimg[src~=\"color-turquoise\"] {\n  color: #40E0D0;\n}\n.color-turquoise-20pct,\nimg[src~=\"color-turquoise\"] {\n  color: rgba(64, 224, 208, 0.2);\n}\n.color-turquoise-40pct,\nimg[src~=\"color-turquoise\"] {\n  color: rgba(64, 224, 208, 0.4);\n}\n.color-turquoise-60pct,\nimg[src~=\"color-turquoise\"] {\n  color: rgba(64, 224, 208, 0.6);\n}\n.color-turquoise-80pct,\nimg[src~=\"color-turquoise\"] {\n  color: rgba(64, 224, 208, 0.8);\n}\n.bg-turquoise,\nimg[src~=\"bg-turquoise\"] {\n  background-color: #40E0D0;\n}\n.bg-turquoise-20pct,\nimg[src~=\"bg-turquoise\"] {\n  background-color: rgba(64, 224, 208, 0.2);\n}\n.bg-turquoise-40pct,\nimg[src~=\"bg-turquoise\"] {\n  background-color: rgba(64, 224, 208, 0.4);\n}\n.bg-turquoise-60pct,\nimg[src~=\"bg-turquoise\"] {\n  background-color: rgba(64, 224, 208, 0.6);\n}\n.bg-turquoise-80pct,\nimg[src~=\"bg-turquoise\"] {\n  background-color: rgba(64, 224, 208, 0.8);\n}\n.bc-turquoise,\nimg[src~=\"bc-turquoise\"] {\n  border-color: #40E0D0;\n}\n.bc-turquoise-20pct,\nimg[src~=\"bc-turquoise\"] {\n  border-color: rgba(64, 224, 208, 0.2);\n}\n.bc-turquoise-40pct,\nimg[src~=\"bc-turquoise\"] {\n  border-color: rgba(64, 224, 208, 0.4);\n}\n.bc-turquoise-60pct,\nimg[src~=\"bc-turquoise\"] {\n  border-color: rgba(64, 224, 208, 0.6);\n}\n.bc-turquoise-80pct,\nimg[src~=\"bc-turquoise\"] {\n  border-color: rgba(64, 224, 208, 0.8);\n}\n.color-violet,\nimg[src~=\"color-violet\"] {\n  color: #EE82EE;\n}\n.color-violet-20pct,\nimg[src~=\"color-violet\"] {\n  color: rgba(238, 130, 238, 0.2);\n}\n.color-violet-40pct,\nimg[src~=\"color-violet\"] {\n  color: rgba(238, 130, 238, 0.4);\n}\n.color-violet-60pct,\nimg[src~=\"color-violet\"] {\n  color: rgba(238, 130, 238, 0.6);\n}\n.color-violet-80pct,\nimg[src~=\"color-violet\"] {\n  color: rgba(238, 130, 238, 0.8);\n}\n.bg-violet,\nimg[src~=\"bg-violet\"] {\n  background-color: #EE82EE;\n}\n.bg-violet-20pct,\nimg[src~=\"bg-violet\"] {\n  background-color: rgba(238, 130, 238, 0.2);\n}\n.bg-violet-40pct,\nimg[src~=\"bg-violet\"] {\n  background-color: rgba(238, 130, 238, 0.4);\n}\n.bg-violet-60pct,\nimg[src~=\"bg-violet\"] {\n  background-color: rgba(238, 130, 238, 0.6);\n}\n.bg-violet-80pct,\nimg[src~=\"bg-violet\"] {\n  background-color: rgba(238, 130, 238, 0.8);\n}\n.bc-violet,\nimg[src~=\"bc-violet\"] {\n  border-color: #EE82EE;\n}\n.bc-violet-20pct,\nimg[src~=\"bc-violet\"] {\n  border-color: rgba(238, 130, 238, 0.2);\n}\n.bc-violet-40pct,\nimg[src~=\"bc-violet\"] {\n  border-color: rgba(238, 130, 238, 0.4);\n}\n.bc-violet-60pct,\nimg[src~=\"bc-violet\"] {\n  border-color: rgba(238, 130, 238, 0.6);\n}\n.bc-violet-80pct,\nimg[src~=\"bc-violet\"] {\n  border-color: rgba(238, 130, 238, 0.8);\n}\n.color-wheat,\nimg[src~=\"color-wheat\"] {\n  color: #F5DEB3;\n}\n.color-wheat-20pct,\nimg[src~=\"color-wheat\"] {\n  color: rgba(245, 222, 179, 0.2);\n}\n.color-wheat-40pct,\nimg[src~=\"color-wheat\"] {\n  color: rgba(245, 222, 179, 0.4);\n}\n.color-wheat-60pct,\nimg[src~=\"color-wheat\"] {\n  color: rgba(245, 222, 179, 0.6);\n}\n.color-wheat-80pct,\nimg[src~=\"color-wheat\"] {\n  color: rgba(245, 222, 179, 0.8);\n}\n.bg-wheat,\nimg[src~=\"bg-wheat\"] {\n  background-color: #F5DEB3;\n}\n.bg-wheat-20pct,\nimg[src~=\"bg-wheat\"] {\n  background-color: rgba(245, 222, 179, 0.2);\n}\n.bg-wheat-40pct,\nimg[src~=\"bg-wheat\"] {\n  background-color: rgba(245, 222, 179, 0.4);\n}\n.bg-wheat-60pct,\nimg[src~=\"bg-wheat\"] {\n  background-color: rgba(245, 222, 179, 0.6);\n}\n.bg-wheat-80pct,\nimg[src~=\"bg-wheat\"] {\n  background-color: rgba(245, 222, 179, 0.8);\n}\n.bc-wheat,\nimg[src~=\"bc-wheat\"] {\n  border-color: #F5DEB3;\n}\n.bc-wheat-20pct,\nimg[src~=\"bc-wheat\"] {\n  border-color: rgba(245, 222, 179, 0.2);\n}\n.bc-wheat-40pct,\nimg[src~=\"bc-wheat\"] {\n  border-color: rgba(245, 222, 179, 0.4);\n}\n.bc-wheat-60pct,\nimg[src~=\"bc-wheat\"] {\n  border-color: rgba(245, 222, 179, 0.6);\n}\n.bc-wheat-80pct,\nimg[src~=\"bc-wheat\"] {\n  border-color: rgba(245, 222, 179, 0.8);\n}\n.color-white,\nimg[src~=\"color-white\"] {\n  color: #FFFFFF;\n}\n.color-white-20pct,\nimg[src~=\"color-white\"] {\n  color: rgba(255, 255, 255, 0.2);\n}\n.color-white-40pct,\nimg[src~=\"color-white\"] {\n  color: rgba(255, 255, 255, 0.4);\n}\n.color-white-60pct,\nimg[src~=\"color-white\"] {\n  color: rgba(255, 255, 255, 0.6);\n}\n.color-white-80pct,\nimg[src~=\"color-white\"] {\n  color: rgba(255, 255, 255, 0.8);\n}\n.bg-white,\nimg[src~=\"bg-white\"] {\n  background-color: #FFFFFF;\n}\n.bg-white-20pct,\nimg[src~=\"bg-white\"] {\n  background-color: rgba(255, 255, 255, 0.2);\n}\n.bg-white-40pct,\nimg[src~=\"bg-white\"] {\n  background-color: rgba(255, 255, 255, 0.4);\n}\n.bg-white-60pct,\nimg[src~=\"bg-white\"] {\n  background-color: rgba(255, 255, 255, 0.6);\n}\n.bg-white-80pct,\nimg[src~=\"bg-white\"] {\n  background-color: rgba(255, 255, 255, 0.8);\n}\n.bc-white,\nimg[src~=\"bc-white\"] {\n  border-color: #FFFFFF;\n}\n.bc-white-20pct,\nimg[src~=\"bc-white\"] {\n  border-color: rgba(255, 255, 255, 0.2);\n}\n.bc-white-40pct,\nimg[src~=\"bc-white\"] {\n  border-color: rgba(255, 255, 255, 0.4);\n}\n.bc-white-60pct,\nimg[src~=\"bc-white\"] {\n  border-color: rgba(255, 255, 255, 0.6);\n}\n.bc-white-80pct,\nimg[src~=\"bc-white\"] {\n  border-color: rgba(255, 255, 255, 0.8);\n}\n.color-whitesmoke,\nimg[src~=\"color-whitesmoke\"] {\n  color: #F5F5F5;\n}\n.color-whitesmoke-20pct,\nimg[src~=\"color-whitesmoke\"] {\n  color: rgba(245, 245, 245, 0.2);\n}\n.color-whitesmoke-40pct,\nimg[src~=\"color-whitesmoke\"] {\n  color: rgba(245, 245, 245, 0.4);\n}\n.color-whitesmoke-60pct,\nimg[src~=\"color-whitesmoke\"] {\n  color: rgba(245, 245, 245, 0.6);\n}\n.color-whitesmoke-80pct,\nimg[src~=\"color-whitesmoke\"] {\n  color: rgba(245, 245, 245, 0.8);\n}\n.bg-whitesmoke,\nimg[src~=\"bg-whitesmoke\"] {\n  background-color: #F5F5F5;\n}\n.bg-whitesmoke-20pct,\nimg[src~=\"bg-whitesmoke\"] {\n  background-color: rgba(245, 245, 245, 0.2);\n}\n.bg-whitesmoke-40pct,\nimg[src~=\"bg-whitesmoke\"] {\n  background-color: rgba(245, 245, 245, 0.4);\n}\n.bg-whitesmoke-60pct,\nimg[src~=\"bg-whitesmoke\"] {\n  background-color: rgba(245, 245, 245, 0.6);\n}\n.bg-whitesmoke-80pct,\nimg[src~=\"bg-whitesmoke\"] {\n  background-color: rgba(245, 245, 245, 0.8);\n}\n.bc-whitesmoke,\nimg[src~=\"bc-whitesmoke\"] {\n  border-color: #F5F5F5;\n}\n.bc-whitesmoke-20pct,\nimg[src~=\"bc-whitesmoke\"] {\n  border-color: rgba(245, 245, 245, 0.2);\n}\n.bc-whitesmoke-40pct,\nimg[src~=\"bc-whitesmoke\"] {\n  border-color: rgba(245, 245, 245, 0.4);\n}\n.bc-whitesmoke-60pct,\nimg[src~=\"bc-whitesmoke\"] {\n  border-color: rgba(245, 245, 245, 0.6);\n}\n.bc-whitesmoke-80pct,\nimg[src~=\"bc-whitesmoke\"] {\n  border-color: rgba(245, 245, 245, 0.8);\n}\n.color-yellow,\nimg[src~=\"color-yellow\"] {\n  color: #FFFF00;\n}\n.color-yellow-20pct,\nimg[src~=\"color-yellow\"] {\n  color: rgba(255, 255, 0, 0.2);\n}\n.color-yellow-40pct,\nimg[src~=\"color-yellow\"] {\n  color: rgba(255, 255, 0, 0.4);\n}\n.color-yellow-60pct,\nimg[src~=\"color-yellow\"] {\n  color: rgba(255, 255, 0, 0.6);\n}\n.color-yellow-80pct,\nimg[src~=\"color-yellow\"] {\n  color: rgba(255, 255, 0, 0.8);\n}\n.bg-yellow,\nimg[src~=\"bg-yellow\"] {\n  background-color: #FFFF00;\n}\n.bg-yellow-20pct,\nimg[src~=\"bg-yellow\"] {\n  background-color: rgba(255, 255, 0, 0.2);\n}\n.bg-yellow-40pct,\nimg[src~=\"bg-yellow\"] {\n  background-color: rgba(255, 255, 0, 0.4);\n}\n.bg-yellow-60pct,\nimg[src~=\"bg-yellow\"] {\n  background-color: rgba(255, 255, 0, 0.6);\n}\n.bg-yellow-80pct,\nimg[src~=\"bg-yellow\"] {\n  background-color: rgba(255, 255, 0, 0.8);\n}\n.bc-yellow,\nimg[src~=\"bc-yellow\"] {\n  border-color: #FFFF00;\n}\n.bc-yellow-20pct,\nimg[src~=\"bc-yellow\"] {\n  border-color: rgba(255, 255, 0, 0.2);\n}\n.bc-yellow-40pct,\nimg[src~=\"bc-yellow\"] {\n  border-color: rgba(255, 255, 0, 0.4);\n}\n.bc-yellow-60pct,\nimg[src~=\"bc-yellow\"] {\n  border-color: rgba(255, 255, 0, 0.6);\n}\n.bc-yellow-80pct,\nimg[src~=\"bc-yellow\"] {\n  border-color: rgba(255, 255, 0, 0.8);\n}\n.color-yellowgreen,\nimg[src~=\"color-yellowgreen\"] {\n  color: #9ACD32;\n}\n.color-yellowgreen-20pct,\nimg[src~=\"color-yellowgreen\"] {\n  color: rgba(154, 205, 50, 0.2);\n}\n.color-yellowgreen-40pct,\nimg[src~=\"color-yellowgreen\"] {\n  color: rgba(154, 205, 50, 0.4);\n}\n.color-yellowgreen-60pct,\nimg[src~=\"color-yellowgreen\"] {\n  color: rgba(154, 205, 50, 0.6);\n}\n.color-yellowgreen-80pct,\nimg[src~=\"color-yellowgreen\"] {\n  color: rgba(154, 205, 50, 0.8);\n}\n.bg-yellowgreen,\nimg[src~=\"bg-yellowgreen\"] {\n  background-color: #9ACD32;\n}\n.bg-yellowgreen-20pct,\nimg[src~=\"bg-yellowgreen\"] {\n  background-color: rgba(154, 205, 50, 0.2);\n}\n.bg-yellowgreen-40pct,\nimg[src~=\"bg-yellowgreen\"] {\n  background-color: rgba(154, 205, 50, 0.4);\n}\n.bg-yellowgreen-60pct,\nimg[src~=\"bg-yellowgreen\"] {\n  background-color: rgba(154, 205, 50, 0.6);\n}\n.bg-yellowgreen-80pct,\nimg[src~=\"bg-yellowgreen\"] {\n  background-color: rgba(154, 205, 50, 0.8);\n}\n.bc-yellowgreen,\nimg[src~=\"bc-yellowgreen\"] {\n  border-color: #9ACD32;\n}\n.bc-yellowgreen-20pct,\nimg[src~=\"bc-yellowgreen\"] {\n  border-color: rgba(154, 205, 50, 0.2);\n}\n.bc-yellowgreen-40pct,\nimg[src~=\"bc-yellowgreen\"] {\n  border-color: rgba(154, 205, 50, 0.4);\n}\n.bc-yellowgreen-60pct,\nimg[src~=\"bc-yellowgreen\"] {\n  border-color: rgba(154, 205, 50, 0.6);\n}\n.bc-yellowgreen-80pct,\nimg[src~=\"bc-yellowgreen\"] {\n  border-color: rgba(154, 205, 50, 0.8);\n}\n.opacity-20pct,\nimg[src~=\"opacity--20pct\"] {\n  opacity: 20%;\n}\n.opacity-40pct,\nimg[src~=\"opacity--40pct\"] {\n  opacity: 40%;\n}\n.opacity-60pct,\nimg[src~=\"opacity--60pct\"] {\n  opacity: 60%;\n}\n.opacity-80pct,\nimg[src~=\"opacity--80pct\"] {\n  opacity: 80%;\n}\n.ba,\nimg[src~=ba] {\n  border: 1px solid;\n}\n.bn,\nimg[src~=bn] {\n  border: 0px none;\n}\n.bt,\nimg[src~=\"bt\"] {\n  border-top: 1px solid;\n}\n.br,\nimg[src~=\"br\"] {\n  border-right: 1px solid;\n}\n.bb,\nimg[src~=\"bb\"] {\n  border-bottom: 1px solid;\n}\n.bl,\nimg[src~=\"bl\"] {\n  border-left: 1px solid;\n}\n.br-0,\nimg[src~=\"br-0\"] {\n  border-radius: 0;\n}\n.bw-0,\nimg[src~=\"bw-0\"] {\n  border-width: 0;\n}\n.br-1,\nimg[src~=\"br-1\"] {\n  border-radius: 0.125rem;\n}\n.bw-1,\nimg[src~=\"bw-1\"] {\n  border-width: 0.125rem;\n}\n.br-2,\nimg[src~=\"br-2\"] {\n  border-radius: 0.25rem;\n}\n.bw-2,\nimg[src~=\"bw-2\"] {\n  border-width: 0.25rem;\n}\n.br-3,\nimg[src~=\"br-3\"] {\n  border-radius: 0.5rem;\n}\n.bw-3,\nimg[src~=\"bw-3\"] {\n  border-width: 0.5rem;\n}\n.br-4,\nimg[src~=\"br-4\"] {\n  border-radius: 1rem;\n}\n.bw-4,\nimg[src~=\"bw-4\"] {\n  border-width: 1rem;\n}\n.br-5,\nimg[src~=\"br-5\"] {\n  border-radius: 2rem;\n}\n.bw-5,\nimg[src~=\"bw-5\"] {\n  border-width: 2rem;\n}\n.br-100pct,\nimg[src~=\"br-100pct\"] {\n  border-radius: 100%;\n}\n.bw-100pct,\nimg[src~=\"bw-100pct\"] {\n  border-width: 100%;\n}\n.pa-0,\nimg[src~=\"pa-0\"] {\n  padding: 0;\n}\n.pv-0,\nimg[src~=\"pv-0\"] {\n  padding-top: 0;\n  padding-bottom: 0;\n}\n.ph-0,\nimg[src~=\"ph-0\"] {\n  padding-left: 0;\n  padding-right: 0;\n}\n.ma-0,\nimg[src~=\"ma-0\"] {\n  margin: 0;\n}\n.mv-0,\nimg[src~=\"mv-0\"] {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.mh-0,\nimg[src~=\"mh-0\"] {\n  margin-left: 0;\n  margin-right: 0;\n}\n.pa-1,\nimg[src~=\"pa-1\"] {\n  padding: 0.25rem;\n}\n.pv-1,\nimg[src~=\"pv-1\"] {\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n}\n.ph-1,\nimg[src~=\"ph-1\"] {\n  padding-left: 0.25rem;\n  padding-right: 0.25rem;\n}\n.ma-1,\nimg[src~=\"ma-1\"] {\n  margin: 0.25rem;\n}\n.mv-1,\nimg[src~=\"mv-1\"] {\n  margin-top: 0.25rem;\n  margin-bottom: 0.25rem;\n}\n.mh-1,\nimg[src~=\"mh-1\"] {\n  margin-left: 0.25rem;\n  margin-right: 0.25rem;\n}\n.pa-2,\nimg[src~=\"pa-2\"] {\n  padding: 0.5rem;\n}\n.pv-2,\nimg[src~=\"pv-2\"] {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n.ph-2,\nimg[src~=\"ph-2\"] {\n  padding-left: 0.5rem;\n  padding-right: 0.5rem;\n}\n.ma-2,\nimg[src~=\"ma-2\"] {\n  margin: 0.5rem;\n}\n.mv-2,\nimg[src~=\"mv-2\"] {\n  margin-top: 0.5rem;\n  margin-bottom: 0.5rem;\n}\n.mh-2,\nimg[src~=\"mh-2\"] {\n  margin-left: 0.5rem;\n  margin-right: 0.5rem;\n}\n.pa-3,\nimg[src~=\"pa-3\"] {\n  padding: 1rem;\n}\n.pv-3,\nimg[src~=\"pv-3\"] {\n  padding-top: 1rem;\n  padding-bottom: 1rem;\n}\n.ph-3,\nimg[src~=\"ph-3\"] {\n  padding-left: 1rem;\n  padding-right: 1rem;\n}\n.ma-3,\nimg[src~=\"ma-3\"] {\n  margin: 1rem;\n}\n.mv-3,\nimg[src~=\"mv-3\"] {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n}\n.mh-3,\nimg[src~=\"mh-3\"] {\n  margin-left: 1rem;\n  margin-right: 1rem;\n}\n.pa-4,\nimg[src~=\"pa-4\"] {\n  padding: 2rem;\n}\n.pv-4,\nimg[src~=\"pv-4\"] {\n  padding-top: 2rem;\n  padding-bottom: 2rem;\n}\n.ph-4,\nimg[src~=\"ph-4\"] {\n  padding-left: 2rem;\n  padding-right: 2rem;\n}\n.ma-4,\nimg[src~=\"ma-4\"] {\n  margin: 2rem;\n}\n.mv-4,\nimg[src~=\"mv-4\"] {\n  margin-top: 2rem;\n  margin-bottom: 2rem;\n}\n.mh-4,\nimg[src~=\"mh-4\"] {\n  margin-left: 2rem;\n  margin-right: 2rem;\n}\n.pa-5,\nimg[src~=\"pa-5\"] {\n  padding: 4rem;\n}\n.pv-5,\nimg[src~=\"pv-5\"] {\n  padding-top: 4rem;\n  padding-bottom: 4rem;\n}\n.ph-5,\nimg[src~=\"ph-5\"] {\n  padding-left: 4rem;\n  padding-right: 4rem;\n}\n.ma-5,\nimg[src~=\"ma-5\"] {\n  margin: 4rem;\n}\n.mv-5,\nimg[src~=\"mv-5\"] {\n  margin-top: 4rem;\n  margin-bottom: 4rem;\n}\n.mh-5,\nimg[src~=\"mh-5\"] {\n  margin-left: 4rem;\n  margin-right: 4rem;\n}\n.pa-6,\nimg[src~=\"pa-6\"] {\n  padding: 8rem;\n}\n.pv-6,\nimg[src~=\"pv-6\"] {\n  padding-top: 8rem;\n  padding-bottom: 8rem;\n}\n.ph-6,\nimg[src~=\"ph-6\"] {\n  padding-left: 8rem;\n  padding-right: 8rem;\n}\n.ma-6,\nimg[src~=\"ma-6\"] {\n  margin: 8rem;\n}\n.mv-6,\nimg[src~=\"mv-6\"] {\n  margin-top: 8rem;\n  margin-bottom: 8rem;\n}\n.mh-6,\nimg[src~=\"mh-6\"] {\n  margin-left: 8rem;\n  margin-right: 8rem;\n}\n.pa-7,\nimg[src~=\"pa-7\"] {\n  padding: 16rem;\n}\n.pv-7,\nimg[src~=\"pv-7\"] {\n  padding-top: 16rem;\n  padding-bottom: 16rem;\n}\n.ph-7,\nimg[src~=\"ph-7\"] {\n  padding-left: 16rem;\n  padding-right: 16rem;\n}\n.ma-7,\nimg[src~=\"ma-7\"] {\n  margin: 16rem;\n}\n.mv-7,\nimg[src~=\"mv-7\"] {\n  margin-top: 16rem;\n  margin-bottom: 16rem;\n}\n.mh-7,\nimg[src~=\"mh-7\"] {\n  margin-left: 16rem;\n  margin-right: 16rem;\n}\n.pa-8,\nimg[src~=\"pa-8\"] {\n  padding: 32rem;\n}\n.pv-8,\nimg[src~=\"pv-8\"] {\n  padding-top: 32rem;\n  padding-bottom: 32rem;\n}\n.ph-8,\nimg[src~=\"ph-8\"] {\n  padding-left: 32rem;\n  padding-right: 32rem;\n}\n.ma-8,\nimg[src~=\"ma-8\"] {\n  margin: 32rem;\n}\n.mv-8,\nimg[src~=\"mv-8\"] {\n  margin-top: 32rem;\n  margin-bottom: 32rem;\n}\n.mh-8,\nimg[src~=\"mh-8\"] {\n  margin-left: 32rem;\n  margin-right: 32rem;\n}\n.pa-9,\nimg[src~=\"pa-9\"] {\n  padding: 64rem;\n}\n.pv-9,\nimg[src~=\"pv-9\"] {\n  padding-top: 64rem;\n  padding-bottom: 64rem;\n}\n.ph-9,\nimg[src~=\"ph-9\"] {\n  padding-left: 64rem;\n  padding-right: 64rem;\n}\n.ma-9,\nimg[src~=\"ma-9\"] {\n  margin: 64rem;\n}\n.mv-9,\nimg[src~=\"mv-9\"] {\n  margin-top: 64rem;\n  margin-bottom: 64rem;\n}\n.mh-9,\nimg[src~=\"mh-9\"] {\n  margin-left: 64rem;\n  margin-right: 64rem;\n}\n.pt-0,\nimg[src~=\"pt-0\"] {\n  padding-top: 0;\n}\n.mt-0,\nimg[src~=\"mt-0\"] {\n  margin-top: 0;\n}\n.pt-1,\nimg[src~=\"pt-1\"] {\n  padding-top: 0.25rem;\n}\n.mt-1,\nimg[src~=\"mt-1\"] {\n  margin-top: 0.25rem;\n}\n.pt-2,\nimg[src~=\"pt-2\"] {\n  padding-top: 0.5rem;\n}\n.mt-2,\nimg[src~=\"mt-2\"] {\n  margin-top: 0.5rem;\n}\n.pt-3,\nimg[src~=\"pt-3\"] {\n  padding-top: 1rem;\n}\n.mt-3,\nimg[src~=\"mt-3\"] {\n  margin-top: 1rem;\n}\n.pt-4,\nimg[src~=\"pt-4\"] {\n  padding-top: 2rem;\n}\n.mt-4,\nimg[src~=\"mt-4\"] {\n  margin-top: 2rem;\n}\n.pt-5,\nimg[src~=\"pt-5\"] {\n  padding-top: 4rem;\n}\n.mt-5,\nimg[src~=\"mt-5\"] {\n  margin-top: 4rem;\n}\n.pt-6,\nimg[src~=\"pt-6\"] {\n  padding-top: 8rem;\n}\n.mt-6,\nimg[src~=\"mt-6\"] {\n  margin-top: 8rem;\n}\n.pt-7,\nimg[src~=\"pt-7\"] {\n  padding-top: 16rem;\n}\n.mt-7,\nimg[src~=\"mt-7\"] {\n  margin-top: 16rem;\n}\n.pt-8,\nimg[src~=\"pt-8\"] {\n  padding-top: 32rem;\n}\n.mt-8,\nimg[src~=\"mt-8\"] {\n  margin-top: 32rem;\n}\n.pt-9,\nimg[src~=\"pt-9\"] {\n  padding-top: 64rem;\n}\n.mt-9,\nimg[src~=\"mt-9\"] {\n  margin-top: 64rem;\n}\n.pr-0,\nimg[src~=\"pr-0\"] {\n  padding-right: 0;\n}\n.mr-0,\nimg[src~=\"mr-0\"] {\n  margin-right: 0;\n}\n.pr-1,\nimg[src~=\"pr-1\"] {\n  padding-right: 0.25rem;\n}\n.mr-1,\nimg[src~=\"mr-1\"] {\n  margin-right: 0.25rem;\n}\n.pr-2,\nimg[src~=\"pr-2\"] {\n  padding-right: 0.5rem;\n}\n.mr-2,\nimg[src~=\"mr-2\"] {\n  margin-right: 0.5rem;\n}\n.pr-3,\nimg[src~=\"pr-3\"] {\n  padding-right: 1rem;\n}\n.mr-3,\nimg[src~=\"mr-3\"] {\n  margin-right: 1rem;\n}\n.pr-4,\nimg[src~=\"pr-4\"] {\n  padding-right: 2rem;\n}\n.mr-4,\nimg[src~=\"mr-4\"] {\n  margin-right: 2rem;\n}\n.pr-5,\nimg[src~=\"pr-5\"] {\n  padding-right: 4rem;\n}\n.mr-5,\nimg[src~=\"mr-5\"] {\n  margin-right: 4rem;\n}\n.pr-6,\nimg[src~=\"pr-6\"] {\n  padding-right: 8rem;\n}\n.mr-6,\nimg[src~=\"mr-6\"] {\n  margin-right: 8rem;\n}\n.pr-7,\nimg[src~=\"pr-7\"] {\n  padding-right: 16rem;\n}\n.mr-7,\nimg[src~=\"mr-7\"] {\n  margin-right: 16rem;\n}\n.pr-8,\nimg[src~=\"pr-8\"] {\n  padding-right: 32rem;\n}\n.mr-8,\nimg[src~=\"mr-8\"] {\n  margin-right: 32rem;\n}\n.pr-9,\nimg[src~=\"pr-9\"] {\n  padding-right: 64rem;\n}\n.mr-9,\nimg[src~=\"mr-9\"] {\n  margin-right: 64rem;\n}\n.pb-0,\nimg[src~=\"pb-0\"] {\n  padding-bottom: 0;\n}\n.mb-0,\nimg[src~=\"mb-0\"] {\n  margin-bottom: 0;\n}\n.pb-1,\nimg[src~=\"pb-1\"] {\n  padding-bottom: 0.25rem;\n}\n.mb-1,\nimg[src~=\"mb-1\"] {\n  margin-bottom: 0.25rem;\n}\n.pb-2,\nimg[src~=\"pb-2\"] {\n  padding-bottom: 0.5rem;\n}\n.mb-2,\nimg[src~=\"mb-2\"] {\n  margin-bottom: 0.5rem;\n}\n.pb-3,\nimg[src~=\"pb-3\"] {\n  padding-bottom: 1rem;\n}\n.mb-3,\nimg[src~=\"mb-3\"] {\n  margin-bottom: 1rem;\n}\n.pb-4,\nimg[src~=\"pb-4\"] {\n  padding-bottom: 2rem;\n}\n.mb-4,\nimg[src~=\"mb-4\"] {\n  margin-bottom: 2rem;\n}\n.pb-5,\nimg[src~=\"pb-5\"] {\n  padding-bottom: 4rem;\n}\n.mb-5,\nimg[src~=\"mb-5\"] {\n  margin-bottom: 4rem;\n}\n.pb-6,\nimg[src~=\"pb-6\"] {\n  padding-bottom: 8rem;\n}\n.mb-6,\nimg[src~=\"mb-6\"] {\n  margin-bottom: 8rem;\n}\n.pb-7,\nimg[src~=\"pb-7\"] {\n  padding-bottom: 16rem;\n}\n.mb-7,\nimg[src~=\"mb-7\"] {\n  margin-bottom: 16rem;\n}\n.pb-8,\nimg[src~=\"pb-8\"] {\n  padding-bottom: 32rem;\n}\n.mb-8,\nimg[src~=\"mb-8\"] {\n  margin-bottom: 32rem;\n}\n.pb-9,\nimg[src~=\"pb-9\"] {\n  padding-bottom: 64rem;\n}\n.mb-9,\nimg[src~=\"mb-9\"] {\n  margin-bottom: 64rem;\n}\n.pl-0,\nimg[src~=\"pl-0\"] {\n  padding-left: 0;\n}\n.ml-0,\nimg[src~=\"ml-0\"] {\n  margin-left: 0;\n}\n.pl-1,\nimg[src~=\"pl-1\"] {\n  padding-left: 0.25rem;\n}\n.ml-1,\nimg[src~=\"ml-1\"] {\n  margin-left: 0.25rem;\n}\n.pl-2,\nimg[src~=\"pl-2\"] {\n  padding-left: 0.5rem;\n}\n.ml-2,\nimg[src~=\"ml-2\"] {\n  margin-left: 0.5rem;\n}\n.pl-3,\nimg[src~=\"pl-3\"] {\n  padding-left: 1rem;\n}\n.ml-3,\nimg[src~=\"ml-3\"] {\n  margin-left: 1rem;\n}\n.pl-4,\nimg[src~=\"pl-4\"] {\n  padding-left: 2rem;\n}\n.ml-4,\nimg[src~=\"ml-4\"] {\n  margin-left: 2rem;\n}\n.pl-5,\nimg[src~=\"pl-5\"] {\n  padding-left: 4rem;\n}\n.ml-5,\nimg[src~=\"ml-5\"] {\n  margin-left: 4rem;\n}\n.pl-6,\nimg[src~=\"pl-6\"] {\n  padding-left: 8rem;\n}\n.ml-6,\nimg[src~=\"ml-6\"] {\n  margin-left: 8rem;\n}\n.pl-7,\nimg[src~=\"pl-7\"] {\n  padding-left: 16rem;\n}\n.ml-7,\nimg[src~=\"ml-7\"] {\n  margin-left: 16rem;\n}\n.pl-8,\nimg[src~=\"pl-8\"] {\n  padding-left: 32rem;\n}\n.ml-8,\nimg[src~=\"ml-8\"] {\n  margin-left: 32rem;\n}\n.pl-9,\nimg[src~=\"pl-9\"] {\n  padding-left: 64rem;\n}\n.ml-9,\nimg[src~=\"ml-9\"] {\n  margin-left: 64rem;\n}\n.w-0,\nimg[src~=\"w-0\"] {\n  width: 0;\n}\n.maxw-0,\nimg[src~=\"maxw-0\"] {\n  max-width: 0;\n}\n.minw-0,\nimg[src~=\"minw-0\"] {\n  min-width: 0;\n}\n.h-0,\nimg[src~=\"h-0\"] {\n  height: 0;\n}\n.maxh-0,\nimg[src~=\"maxh-0\"] {\n  max-height: 0;\n}\n.minh-0,\nimg[src~=\"minh-0\"] {\n  min-height: 0;\n}\n.t-0,\nimg[src~=\"t-0\"] {\n  top: 0;\n}\n.r-0,\nimg[src~=\"r-0\"] {\n  right: 0;\n}\n.b-0,\nimg[src~=\"b-0\"] {\n  bottom: 0;\n}\n.l-0,\nimg[src~=\"l-0\"] {\n  left: 0;\n}\n.w-0.center,\nimg[src~=\"w-0\"][src~=center] {\n  left: 50%;\n  margin-left: 0;\n}\n.w-1,\nimg[src~=\"w-1\"] {\n  width: 1rem;\n}\n.maxw-1,\nimg[src~=\"maxw-1\"] {\n  max-width: 1rem;\n}\n.minw-1,\nimg[src~=\"minw-1\"] {\n  min-width: 1rem;\n}\n.h-1,\nimg[src~=\"h-1\"] {\n  height: 1rem;\n}\n.maxh-1,\nimg[src~=\"maxh-1\"] {\n  max-height: 1rem;\n}\n.minh-1,\nimg[src~=\"minh-1\"] {\n  min-height: 1rem;\n}\n.t-1,\nimg[src~=\"t-1\"] {\n  top: 1rem;\n}\n.r-1,\nimg[src~=\"r-1\"] {\n  right: 1rem;\n}\n.b-1,\nimg[src~=\"b-1\"] {\n  bottom: 1rem;\n}\n.l-1,\nimg[src~=\"l-1\"] {\n  left: 1rem;\n}\n.w-1.center,\nimg[src~=\"w-1\"][src~=center] {\n  left: 50%;\n  margin-left: -0.5rem;\n}\n.w-2,\nimg[src~=\"w-2\"] {\n  width: 2rem;\n}\n.maxw-2,\nimg[src~=\"maxw-2\"] {\n  max-width: 2rem;\n}\n.minw-2,\nimg[src~=\"minw-2\"] {\n  min-width: 2rem;\n}\n.h-2,\nimg[src~=\"h-2\"] {\n  height: 2rem;\n}\n.maxh-2,\nimg[src~=\"maxh-2\"] {\n  max-height: 2rem;\n}\n.minh-2,\nimg[src~=\"minh-2\"] {\n  min-height: 2rem;\n}\n.t-2,\nimg[src~=\"t-2\"] {\n  top: 2rem;\n}\n.r-2,\nimg[src~=\"r-2\"] {\n  right: 2rem;\n}\n.b-2,\nimg[src~=\"b-2\"] {\n  bottom: 2rem;\n}\n.l-2,\nimg[src~=\"l-2\"] {\n  left: 2rem;\n}\n.w-2.center,\nimg[src~=\"w-2\"][src~=center] {\n  left: 50%;\n  margin-left: -1rem;\n}\n.w-3,\nimg[src~=\"w-3\"] {\n  width: 4rem;\n}\n.maxw-3,\nimg[src~=\"maxw-3\"] {\n  max-width: 4rem;\n}\n.minw-3,\nimg[src~=\"minw-3\"] {\n  min-width: 4rem;\n}\n.h-3,\nimg[src~=\"h-3\"] {\n  height: 4rem;\n}\n.maxh-3,\nimg[src~=\"maxh-3\"] {\n  max-height: 4rem;\n}\n.minh-3,\nimg[src~=\"minh-3\"] {\n  min-height: 4rem;\n}\n.t-3,\nimg[src~=\"t-3\"] {\n  top: 4rem;\n}\n.r-3,\nimg[src~=\"r-3\"] {\n  right: 4rem;\n}\n.b-3,\nimg[src~=\"b-3\"] {\n  bottom: 4rem;\n}\n.l-3,\nimg[src~=\"l-3\"] {\n  left: 4rem;\n}\n.w-3.center,\nimg[src~=\"w-3\"][src~=center] {\n  left: 50%;\n  margin-left: -2rem;\n}\n.w-4,\nimg[src~=\"w-4\"] {\n  width: 8rem;\n}\n.maxw-4,\nimg[src~=\"maxw-4\"] {\n  max-width: 8rem;\n}\n.minw-4,\nimg[src~=\"minw-4\"] {\n  min-width: 8rem;\n}\n.h-4,\nimg[src~=\"h-4\"] {\n  height: 8rem;\n}\n.maxh-4,\nimg[src~=\"maxh-4\"] {\n  max-height: 8rem;\n}\n.minh-4,\nimg[src~=\"minh-4\"] {\n  min-height: 8rem;\n}\n.t-4,\nimg[src~=\"t-4\"] {\n  top: 8rem;\n}\n.r-4,\nimg[src~=\"r-4\"] {\n  right: 8rem;\n}\n.b-4,\nimg[src~=\"b-4\"] {\n  bottom: 8rem;\n}\n.l-4,\nimg[src~=\"l-4\"] {\n  left: 8rem;\n}\n.w-4.center,\nimg[src~=\"w-4\"][src~=center] {\n  left: 50%;\n  margin-left: -4rem;\n}\n.w-5,\nimg[src~=\"w-5\"] {\n  width: 16rem;\n}\n.maxw-5,\nimg[src~=\"maxw-5\"] {\n  max-width: 16rem;\n}\n.minw-5,\nimg[src~=\"minw-5\"] {\n  min-width: 16rem;\n}\n.h-5,\nimg[src~=\"h-5\"] {\n  height: 16rem;\n}\n.maxh-5,\nimg[src~=\"maxh-5\"] {\n  max-height: 16rem;\n}\n.minh-5,\nimg[src~=\"minh-5\"] {\n  min-height: 16rem;\n}\n.t-5,\nimg[src~=\"t-5\"] {\n  top: 16rem;\n}\n.r-5,\nimg[src~=\"r-5\"] {\n  right: 16rem;\n}\n.b-5,\nimg[src~=\"b-5\"] {\n  bottom: 16rem;\n}\n.l-5,\nimg[src~=\"l-5\"] {\n  left: 16rem;\n}\n.w-5.center,\nimg[src~=\"w-5\"][src~=center] {\n  left: 50%;\n  margin-left: -8rem;\n}\n.w-6,\nimg[src~=\"w-6\"] {\n  width: 32rem;\n}\n.maxw-6,\nimg[src~=\"maxw-6\"] {\n  max-width: 32rem;\n}\n.minw-6,\nimg[src~=\"minw-6\"] {\n  min-width: 32rem;\n}\n.h-6,\nimg[src~=\"h-6\"] {\n  height: 32rem;\n}\n.maxh-6,\nimg[src~=\"maxh-6\"] {\n  max-height: 32rem;\n}\n.minh-6,\nimg[src~=\"minh-6\"] {\n  min-height: 32rem;\n}\n.t-6,\nimg[src~=\"t-6\"] {\n  top: 32rem;\n}\n.r-6,\nimg[src~=\"r-6\"] {\n  right: 32rem;\n}\n.b-6,\nimg[src~=\"b-6\"] {\n  bottom: 32rem;\n}\n.l-6,\nimg[src~=\"l-6\"] {\n  left: 32rem;\n}\n.w-6.center,\nimg[src~=\"w-6\"][src~=center] {\n  left: 50%;\n  margin-left: -16rem;\n}\n.w-7,\nimg[src~=\"w-7\"] {\n  width: 48rem;\n}\n.maxw-7,\nimg[src~=\"maxw-7\"] {\n  max-width: 48rem;\n}\n.minw-7,\nimg[src~=\"minw-7\"] {\n  min-width: 48rem;\n}\n.h-7,\nimg[src~=\"h-7\"] {\n  height: 48rem;\n}\n.maxh-7,\nimg[src~=\"maxh-7\"] {\n  max-height: 48rem;\n}\n.minh-7,\nimg[src~=\"minh-7\"] {\n  min-height: 48rem;\n}\n.t-7,\nimg[src~=\"t-7\"] {\n  top: 48rem;\n}\n.r-7,\nimg[src~=\"r-7\"] {\n  right: 48rem;\n}\n.b-7,\nimg[src~=\"b-7\"] {\n  bottom: 48rem;\n}\n.l-7,\nimg[src~=\"l-7\"] {\n  left: 48rem;\n}\n.w-7.center,\nimg[src~=\"w-7\"][src~=center] {\n  left: 50%;\n  margin-left: -24rem;\n}\n.w-8,\nimg[src~=\"w-8\"] {\n  width: 64rem;\n}\n.maxw-8,\nimg[src~=\"maxw-8\"] {\n  max-width: 64rem;\n}\n.minw-8,\nimg[src~=\"minw-8\"] {\n  min-width: 64rem;\n}\n.h-8,\nimg[src~=\"h-8\"] {\n  height: 64rem;\n}\n.maxh-8,\nimg[src~=\"maxh-8\"] {\n  max-height: 64rem;\n}\n.minh-8,\nimg[src~=\"minh-8\"] {\n  min-height: 64rem;\n}\n.t-8,\nimg[src~=\"t-8\"] {\n  top: 64rem;\n}\n.r-8,\nimg[src~=\"r-8\"] {\n  right: 64rem;\n}\n.b-8,\nimg[src~=\"b-8\"] {\n  bottom: 64rem;\n}\n.l-8,\nimg[src~=\"l-8\"] {\n  left: 64rem;\n}\n.w-8.center,\nimg[src~=\"w-8\"][src~=center] {\n  left: 50%;\n  margin-left: -32rem;\n}\n.w-9,\nimg[src~=\"w-9\"] {\n  width: 96rem;\n}\n.maxw-9,\nimg[src~=\"maxw-9\"] {\n  max-width: 96rem;\n}\n.minw-9,\nimg[src~=\"minw-9\"] {\n  min-width: 96rem;\n}\n.h-9,\nimg[src~=\"h-9\"] {\n  height: 96rem;\n}\n.maxh-9,\nimg[src~=\"maxh-9\"] {\n  max-height: 96rem;\n}\n.minh-9,\nimg[src~=\"minh-9\"] {\n  min-height: 96rem;\n}\n.t-9,\nimg[src~=\"t-9\"] {\n  top: 96rem;\n}\n.r-9,\nimg[src~=\"r-9\"] {\n  right: 96rem;\n}\n.b-9,\nimg[src~=\"b-9\"] {\n  bottom: 96rem;\n}\n.l-9,\nimg[src~=\"l-9\"] {\n  left: 96rem;\n}\n.w-9.center,\nimg[src~=\"w-9\"][src~=center] {\n  left: 50%;\n  margin-left: -48rem;\n}\n.w-10pct,\nimg[src~=\"w-10pct\"] {\n  width: 10%;\n}\n.maxw-10pct,\nimg[src~=\"maxw-10pct\"] {\n  max-width: 10%;\n}\n.minw-10pct,\nimg[src~=\"minw-10pct\"] {\n  min-width: 10%;\n}\n.h-10pct,\nimg[src~=\"h-10pct\"] {\n  height: 10%;\n}\n.maxh-10pct,\nimg[src~=\"maxh-10pct\"] {\n  max-height: 10%;\n}\n.minh-10pct,\nimg[src~=\"minh-10pct\"] {\n  min-height: 10%;\n}\n.t-10pct,\nimg[src~=\"t-10pct\"] {\n  top: 10%;\n}\n.r-10pct,\nimg[src~=\"r-10pct\"] {\n  right: 10%;\n}\n.b-10pct,\nimg[src~=\"b-10pct\"] {\n  bottom: 10%;\n}\n.l-10pct,\nimg[src~=\"l-10pct\"] {\n  left: 10%;\n}\n.w-10pct.center,\nimg[src~=\"w-10pct\"][src~=center] {\n  left: 50%;\n  margin-left: -5%;\n}\n.w-20pct,\nimg[src~=\"w-20pct\"] {\n  width: 20%;\n}\n.maxw-20pct,\nimg[src~=\"maxw-20pct\"] {\n  max-width: 20%;\n}\n.minw-20pct,\nimg[src~=\"minw-20pct\"] {\n  min-width: 20%;\n}\n.h-20pct,\nimg[src~=\"h-20pct\"] {\n  height: 20%;\n}\n.maxh-20pct,\nimg[src~=\"maxh-20pct\"] {\n  max-height: 20%;\n}\n.minh-20pct,\nimg[src~=\"minh-20pct\"] {\n  min-height: 20%;\n}\n.t-20pct,\nimg[src~=\"t-20pct\"] {\n  top: 20%;\n}\n.r-20pct,\nimg[src~=\"r-20pct\"] {\n  right: 20%;\n}\n.b-20pct,\nimg[src~=\"b-20pct\"] {\n  bottom: 20%;\n}\n.l-20pct,\nimg[src~=\"l-20pct\"] {\n  left: 20%;\n}\n.w-20pct.center,\nimg[src~=\"w-20pct\"][src~=center] {\n  left: 50%;\n  margin-left: -10%;\n}\n.w-30pct,\nimg[src~=\"w-30pct\"] {\n  width: 30%;\n}\n.maxw-30pct,\nimg[src~=\"maxw-30pct\"] {\n  max-width: 30%;\n}\n.minw-30pct,\nimg[src~=\"minw-30pct\"] {\n  min-width: 30%;\n}\n.h-30pct,\nimg[src~=\"h-30pct\"] {\n  height: 30%;\n}\n.maxh-30pct,\nimg[src~=\"maxh-30pct\"] {\n  max-height: 30%;\n}\n.minh-30pct,\nimg[src~=\"minh-30pct\"] {\n  min-height: 30%;\n}\n.t-30pct,\nimg[src~=\"t-30pct\"] {\n  top: 30%;\n}\n.r-30pct,\nimg[src~=\"r-30pct\"] {\n  right: 30%;\n}\n.b-30pct,\nimg[src~=\"b-30pct\"] {\n  bottom: 30%;\n}\n.l-30pct,\nimg[src~=\"l-30pct\"] {\n  left: 30%;\n}\n.w-30pct.center,\nimg[src~=\"w-30pct\"][src~=center] {\n  left: 50%;\n  margin-left: -15%;\n}\n.w-33pct,\nimg[src~=\"w-33pct\"] {\n  width: 33%;\n}\n.maxw-33pct,\nimg[src~=\"maxw-33pct\"] {\n  max-width: 33%;\n}\n.minw-33pct,\nimg[src~=\"minw-33pct\"] {\n  min-width: 33%;\n}\n.h-33pct,\nimg[src~=\"h-33pct\"] {\n  height: 33%;\n}\n.maxh-33pct,\nimg[src~=\"maxh-33pct\"] {\n  max-height: 33%;\n}\n.minh-33pct,\nimg[src~=\"minh-33pct\"] {\n  min-height: 33%;\n}\n.t-33pct,\nimg[src~=\"t-33pct\"] {\n  top: 33%;\n}\n.r-33pct,\nimg[src~=\"r-33pct\"] {\n  right: 33%;\n}\n.b-33pct,\nimg[src~=\"b-33pct\"] {\n  bottom: 33%;\n}\n.l-33pct,\nimg[src~=\"l-33pct\"] {\n  left: 33%;\n}\n.w-33pct.center,\nimg[src~=\"w-33pct\"][src~=center] {\n  left: 50%;\n  margin-left: -16.5%;\n}\n.w-34pct,\nimg[src~=\"w-34pct\"] {\n  width: 34%;\n}\n.maxw-34pct,\nimg[src~=\"maxw-34pct\"] {\n  max-width: 34%;\n}\n.minw-34pct,\nimg[src~=\"minw-34pct\"] {\n  min-width: 34%;\n}\n.h-34pct,\nimg[src~=\"h-34pct\"] {\n  height: 34%;\n}\n.maxh-34pct,\nimg[src~=\"maxh-34pct\"] {\n  max-height: 34%;\n}\n.minh-34pct,\nimg[src~=\"minh-34pct\"] {\n  min-height: 34%;\n}\n.t-34pct,\nimg[src~=\"t-34pct\"] {\n  top: 34%;\n}\n.r-34pct,\nimg[src~=\"r-34pct\"] {\n  right: 34%;\n}\n.b-34pct,\nimg[src~=\"b-34pct\"] {\n  bottom: 34%;\n}\n.l-34pct,\nimg[src~=\"l-34pct\"] {\n  left: 34%;\n}\n.w-34pct.center,\nimg[src~=\"w-34pct\"][src~=center] {\n  left: 50%;\n  margin-left: -17%;\n}\n.w-40pct,\nimg[src~=\"w-40pct\"] {\n  width: 40%;\n}\n.maxw-40pct,\nimg[src~=\"maxw-40pct\"] {\n  max-width: 40%;\n}\n.minw-40pct,\nimg[src~=\"minw-40pct\"] {\n  min-width: 40%;\n}\n.h-40pct,\nimg[src~=\"h-40pct\"] {\n  height: 40%;\n}\n.maxh-40pct,\nimg[src~=\"maxh-40pct\"] {\n  max-height: 40%;\n}\n.minh-40pct,\nimg[src~=\"minh-40pct\"] {\n  min-height: 40%;\n}\n.t-40pct,\nimg[src~=\"t-40pct\"] {\n  top: 40%;\n}\n.r-40pct,\nimg[src~=\"r-40pct\"] {\n  right: 40%;\n}\n.b-40pct,\nimg[src~=\"b-40pct\"] {\n  bottom: 40%;\n}\n.l-40pct,\nimg[src~=\"l-40pct\"] {\n  left: 40%;\n}\n.w-40pct.center,\nimg[src~=\"w-40pct\"][src~=center] {\n  left: 50%;\n  margin-left: -20%;\n}\n.w-50pct,\nimg[src~=\"w-50pct\"] {\n  width: 50%;\n}\n.maxw-50pct,\nimg[src~=\"maxw-50pct\"] {\n  max-width: 50%;\n}\n.minw-50pct,\nimg[src~=\"minw-50pct\"] {\n  min-width: 50%;\n}\n.h-50pct,\nimg[src~=\"h-50pct\"] {\n  height: 50%;\n}\n.maxh-50pct,\nimg[src~=\"maxh-50pct\"] {\n  max-height: 50%;\n}\n.minh-50pct,\nimg[src~=\"minh-50pct\"] {\n  min-height: 50%;\n}\n.t-50pct,\nimg[src~=\"t-50pct\"] {\n  top: 50%;\n}\n.r-50pct,\nimg[src~=\"r-50pct\"] {\n  right: 50%;\n}\n.b-50pct,\nimg[src~=\"b-50pct\"] {\n  bottom: 50%;\n}\n.l-50pct,\nimg[src~=\"l-50pct\"] {\n  left: 50%;\n}\n.w-50pct.center,\nimg[src~=\"w-50pct\"][src~=center] {\n  left: 50%;\n  margin-left: -25%;\n}\n.w-60pct,\nimg[src~=\"w-60pct\"] {\n  width: 60%;\n}\n.maxw-60pct,\nimg[src~=\"maxw-60pct\"] {\n  max-width: 60%;\n}\n.minw-60pct,\nimg[src~=\"minw-60pct\"] {\n  min-width: 60%;\n}\n.h-60pct,\nimg[src~=\"h-60pct\"] {\n  height: 60%;\n}\n.maxh-60pct,\nimg[src~=\"maxh-60pct\"] {\n  max-height: 60%;\n}\n.minh-60pct,\nimg[src~=\"minh-60pct\"] {\n  min-height: 60%;\n}\n.t-60pct,\nimg[src~=\"t-60pct\"] {\n  top: 60%;\n}\n.r-60pct,\nimg[src~=\"r-60pct\"] {\n  right: 60%;\n}\n.b-60pct,\nimg[src~=\"b-60pct\"] {\n  bottom: 60%;\n}\n.l-60pct,\nimg[src~=\"l-60pct\"] {\n  left: 60%;\n}\n.w-60pct.center,\nimg[src~=\"w-60pct\"][src~=center] {\n  left: 50%;\n  margin-left: -30%;\n}\n.w-70pct,\nimg[src~=\"w-70pct\"] {\n  width: 70%;\n}\n.maxw-70pct,\nimg[src~=\"maxw-70pct\"] {\n  max-width: 70%;\n}\n.minw-70pct,\nimg[src~=\"minw-70pct\"] {\n  min-width: 70%;\n}\n.h-70pct,\nimg[src~=\"h-70pct\"] {\n  height: 70%;\n}\n.maxh-70pct,\nimg[src~=\"maxh-70pct\"] {\n  max-height: 70%;\n}\n.minh-70pct,\nimg[src~=\"minh-70pct\"] {\n  min-height: 70%;\n}\n.t-70pct,\nimg[src~=\"t-70pct\"] {\n  top: 70%;\n}\n.r-70pct,\nimg[src~=\"r-70pct\"] {\n  right: 70%;\n}\n.b-70pct,\nimg[src~=\"b-70pct\"] {\n  bottom: 70%;\n}\n.l-70pct,\nimg[src~=\"l-70pct\"] {\n  left: 70%;\n}\n.w-70pct.center,\nimg[src~=\"w-70pct\"][src~=center] {\n  left: 50%;\n  margin-left: -35%;\n}\n.w-75pct,\nimg[src~=\"w-75pct\"] {\n  width: 75%;\n}\n.maxw-75pct,\nimg[src~=\"maxw-75pct\"] {\n  max-width: 75%;\n}\n.minw-75pct,\nimg[src~=\"minw-75pct\"] {\n  min-width: 75%;\n}\n.h-75pct,\nimg[src~=\"h-75pct\"] {\n  height: 75%;\n}\n.maxh-75pct,\nimg[src~=\"maxh-75pct\"] {\n  max-height: 75%;\n}\n.minh-75pct,\nimg[src~=\"minh-75pct\"] {\n  min-height: 75%;\n}\n.t-75pct,\nimg[src~=\"t-75pct\"] {\n  top: 75%;\n}\n.r-75pct,\nimg[src~=\"r-75pct\"] {\n  right: 75%;\n}\n.b-75pct,\nimg[src~=\"b-75pct\"] {\n  bottom: 75%;\n}\n.l-75pct,\nimg[src~=\"l-75pct\"] {\n  left: 75%;\n}\n.w-75pct.center,\nimg[src~=\"w-75pct\"][src~=center] {\n  left: 50%;\n  margin-left: -37.5%;\n}\n.w-80pct,\nimg[src~=\"w-80pct\"] {\n  width: 80%;\n}\n.maxw-80pct,\nimg[src~=\"maxw-80pct\"] {\n  max-width: 80%;\n}\n.minw-80pct,\nimg[src~=\"minw-80pct\"] {\n  min-width: 80%;\n}\n.h-80pct,\nimg[src~=\"h-80pct\"] {\n  height: 80%;\n}\n.maxh-80pct,\nimg[src~=\"maxh-80pct\"] {\n  max-height: 80%;\n}\n.minh-80pct,\nimg[src~=\"minh-80pct\"] {\n  min-height: 80%;\n}\n.t-80pct,\nimg[src~=\"t-80pct\"] {\n  top: 80%;\n}\n.r-80pct,\nimg[src~=\"r-80pct\"] {\n  right: 80%;\n}\n.b-80pct,\nimg[src~=\"b-80pct\"] {\n  bottom: 80%;\n}\n.l-80pct,\nimg[src~=\"l-80pct\"] {\n  left: 80%;\n}\n.w-80pct.center,\nimg[src~=\"w-80pct\"][src~=center] {\n  left: 50%;\n  margin-left: -40%;\n}\n.w-90pct,\nimg[src~=\"w-90pct\"] {\n  width: 90%;\n}\n.maxw-90pct,\nimg[src~=\"maxw-90pct\"] {\n  max-width: 90%;\n}\n.minw-90pct,\nimg[src~=\"minw-90pct\"] {\n  min-width: 90%;\n}\n.h-90pct,\nimg[src~=\"h-90pct\"] {\n  height: 90%;\n}\n.maxh-90pct,\nimg[src~=\"maxh-90pct\"] {\n  max-height: 90%;\n}\n.minh-90pct,\nimg[src~=\"minh-90pct\"] {\n  min-height: 90%;\n}\n.t-90pct,\nimg[src~=\"t-90pct\"] {\n  top: 90%;\n}\n.r-90pct,\nimg[src~=\"r-90pct\"] {\n  right: 90%;\n}\n.b-90pct,\nimg[src~=\"b-90pct\"] {\n  bottom: 90%;\n}\n.l-90pct,\nimg[src~=\"l-90pct\"] {\n  left: 90%;\n}\n.w-90pct.center,\nimg[src~=\"w-90pct\"][src~=center] {\n  left: 50%;\n  margin-left: -45%;\n}\n.w-100pct,\nimg[src~=\"w-100pct\"] {\n  width: 100%;\n}\n.maxw-100pct,\nimg[src~=\"maxw-100pct\"] {\n  max-width: 100%;\n}\n.minw-100pct,\nimg[src~=\"minw-100pct\"] {\n  min-width: 100%;\n}\n.h-100pct,\nimg[src~=\"h-100pct\"] {\n  height: 100%;\n}\n.maxh-100pct,\nimg[src~=\"maxh-100pct\"] {\n  max-height: 100%;\n}\n.minh-100pct,\nimg[src~=\"minh-100pct\"] {\n  min-height: 100%;\n}\n.t-100pct,\nimg[src~=\"t-100pct\"] {\n  top: 100%;\n}\n.r-100pct,\nimg[src~=\"r-100pct\"] {\n  right: 100%;\n}\n.b-100pct,\nimg[src~=\"b-100pct\"] {\n  bottom: 100%;\n}\n.l-100pct,\nimg[src~=\"l-100pct\"] {\n  left: 100%;\n}\n.w-100pct.center,\nimg[src~=\"w-100pct\"][src~=center] {\n  left: 50%;\n  margin-left: -50%;\n}\n.w-1-12th,\nimg[src~=\"w-1-12th\"] {\n  width: 8.33333333%;\n}\n.maxw-1-12th,\nimg[src~=\"maxw-1-12th\"] {\n  max-width: 8.33333333%;\n}\n.minw-1-12th,\nimg[src~=\"minw-1-12th\"] {\n  min-width: 8.33333333%;\n}\n.h-1-12th,\nimg[src~=\"h-1-12th\"] {\n  height: 8.33333333%;\n}\n.maxh-1-12th,\nimg[src~=\"maxh-1-12th\"] {\n  max-height: 8.33333333%;\n}\n.minh-1-12th,\nimg[src~=\"minh-1-12th\"] {\n  min-height: 8.33333333%;\n}\n.t-1-12th,\nimg[src~=\"t-1-12th\"] {\n  top: 8.33333333%;\n}\n.r-1-12th,\nimg[src~=\"r-1-12th\"] {\n  right: 8.33333333%;\n}\n.b-1-12th,\nimg[src~=\"b-1-12th\"] {\n  bottom: 8.33333333%;\n}\n.l-1-12th,\nimg[src~=\"l-1-12th\"] {\n  left: 8.33333333%;\n}\n.w-1-12th.center,\nimg[src~=\"w-1-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -4.16666667%;\n}\n.w-2-12th,\nimg[src~=\"w-2-12th\"] {\n  width: 16.66666667%;\n}\n.maxw-2-12th,\nimg[src~=\"maxw-2-12th\"] {\n  max-width: 16.66666667%;\n}\n.minw-2-12th,\nimg[src~=\"minw-2-12th\"] {\n  min-width: 16.66666667%;\n}\n.h-2-12th,\nimg[src~=\"h-2-12th\"] {\n  height: 16.66666667%;\n}\n.maxh-2-12th,\nimg[src~=\"maxh-2-12th\"] {\n  max-height: 16.66666667%;\n}\n.minh-2-12th,\nimg[src~=\"minh-2-12th\"] {\n  min-height: 16.66666667%;\n}\n.t-2-12th,\nimg[src~=\"t-2-12th\"] {\n  top: 16.66666667%;\n}\n.r-2-12th,\nimg[src~=\"r-2-12th\"] {\n  right: 16.66666667%;\n}\n.b-2-12th,\nimg[src~=\"b-2-12th\"] {\n  bottom: 16.66666667%;\n}\n.l-2-12th,\nimg[src~=\"l-2-12th\"] {\n  left: 16.66666667%;\n}\n.w-2-12th.center,\nimg[src~=\"w-2-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -8.33333333%;\n}\n.w-3-12th,\nimg[src~=\"w-3-12th\"] {\n  width: 25%;\n}\n.maxw-3-12th,\nimg[src~=\"maxw-3-12th\"] {\n  max-width: 25%;\n}\n.minw-3-12th,\nimg[src~=\"minw-3-12th\"] {\n  min-width: 25%;\n}\n.h-3-12th,\nimg[src~=\"h-3-12th\"] {\n  height: 25%;\n}\n.maxh-3-12th,\nimg[src~=\"maxh-3-12th\"] {\n  max-height: 25%;\n}\n.minh-3-12th,\nimg[src~=\"minh-3-12th\"] {\n  min-height: 25%;\n}\n.t-3-12th,\nimg[src~=\"t-3-12th\"] {\n  top: 25%;\n}\n.r-3-12th,\nimg[src~=\"r-3-12th\"] {\n  right: 25%;\n}\n.b-3-12th,\nimg[src~=\"b-3-12th\"] {\n  bottom: 25%;\n}\n.l-3-12th,\nimg[src~=\"l-3-12th\"] {\n  left: 25%;\n}\n.w-3-12th.center,\nimg[src~=\"w-3-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -12.5%;\n}\n.w-4-12th,\nimg[src~=\"w-4-12th\"] {\n  width: 33.33333333%;\n}\n.maxw-4-12th,\nimg[src~=\"maxw-4-12th\"] {\n  max-width: 33.33333333%;\n}\n.minw-4-12th,\nimg[src~=\"minw-4-12th\"] {\n  min-width: 33.33333333%;\n}\n.h-4-12th,\nimg[src~=\"h-4-12th\"] {\n  height: 33.33333333%;\n}\n.maxh-4-12th,\nimg[src~=\"maxh-4-12th\"] {\n  max-height: 33.33333333%;\n}\n.minh-4-12th,\nimg[src~=\"minh-4-12th\"] {\n  min-height: 33.33333333%;\n}\n.t-4-12th,\nimg[src~=\"t-4-12th\"] {\n  top: 33.33333333%;\n}\n.r-4-12th,\nimg[src~=\"r-4-12th\"] {\n  right: 33.33333333%;\n}\n.b-4-12th,\nimg[src~=\"b-4-12th\"] {\n  bottom: 33.33333333%;\n}\n.l-4-12th,\nimg[src~=\"l-4-12th\"] {\n  left: 33.33333333%;\n}\n.w-4-12th.center,\nimg[src~=\"w-4-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -16.66666667%;\n}\n.w-5-12th,\nimg[src~=\"w-5-12th\"] {\n  width: 41.66666667%;\n}\n.maxw-5-12th,\nimg[src~=\"maxw-5-12th\"] {\n  max-width: 41.66666667%;\n}\n.minw-5-12th,\nimg[src~=\"minw-5-12th\"] {\n  min-width: 41.66666667%;\n}\n.h-5-12th,\nimg[src~=\"h-5-12th\"] {\n  height: 41.66666667%;\n}\n.maxh-5-12th,\nimg[src~=\"maxh-5-12th\"] {\n  max-height: 41.66666667%;\n}\n.minh-5-12th,\nimg[src~=\"minh-5-12th\"] {\n  min-height: 41.66666667%;\n}\n.t-5-12th,\nimg[src~=\"t-5-12th\"] {\n  top: 41.66666667%;\n}\n.r-5-12th,\nimg[src~=\"r-5-12th\"] {\n  right: 41.66666667%;\n}\n.b-5-12th,\nimg[src~=\"b-5-12th\"] {\n  bottom: 41.66666667%;\n}\n.l-5-12th,\nimg[src~=\"l-5-12th\"] {\n  left: 41.66666667%;\n}\n.w-5-12th.center,\nimg[src~=\"w-5-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -20.83333333%;\n}\n.w-6-12th,\nimg[src~=\"w-6-12th\"] {\n  width: 50%;\n}\n.maxw-6-12th,\nimg[src~=\"maxw-6-12th\"] {\n  max-width: 50%;\n}\n.minw-6-12th,\nimg[src~=\"minw-6-12th\"] {\n  min-width: 50%;\n}\n.h-6-12th,\nimg[src~=\"h-6-12th\"] {\n  height: 50%;\n}\n.maxh-6-12th,\nimg[src~=\"maxh-6-12th\"] {\n  max-height: 50%;\n}\n.minh-6-12th,\nimg[src~=\"minh-6-12th\"] {\n  min-height: 50%;\n}\n.t-6-12th,\nimg[src~=\"t-6-12th\"] {\n  top: 50%;\n}\n.r-6-12th,\nimg[src~=\"r-6-12th\"] {\n  right: 50%;\n}\n.b-6-12th,\nimg[src~=\"b-6-12th\"] {\n  bottom: 50%;\n}\n.l-6-12th,\nimg[src~=\"l-6-12th\"] {\n  left: 50%;\n}\n.w-6-12th.center,\nimg[src~=\"w-6-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -25%;\n}\n.w-7-12th,\nimg[src~=\"w-7-12th\"] {\n  width: 58.33333333%;\n}\n.maxw-7-12th,\nimg[src~=\"maxw-7-12th\"] {\n  max-width: 58.33333333%;\n}\n.minw-7-12th,\nimg[src~=\"minw-7-12th\"] {\n  min-width: 58.33333333%;\n}\n.h-7-12th,\nimg[src~=\"h-7-12th\"] {\n  height: 58.33333333%;\n}\n.maxh-7-12th,\nimg[src~=\"maxh-7-12th\"] {\n  max-height: 58.33333333%;\n}\n.minh-7-12th,\nimg[src~=\"minh-7-12th\"] {\n  min-height: 58.33333333%;\n}\n.t-7-12th,\nimg[src~=\"t-7-12th\"] {\n  top: 58.33333333%;\n}\n.r-7-12th,\nimg[src~=\"r-7-12th\"] {\n  right: 58.33333333%;\n}\n.b-7-12th,\nimg[src~=\"b-7-12th\"] {\n  bottom: 58.33333333%;\n}\n.l-7-12th,\nimg[src~=\"l-7-12th\"] {\n  left: 58.33333333%;\n}\n.w-7-12th.center,\nimg[src~=\"w-7-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -29.16666667%;\n}\n.w-8-12th,\nimg[src~=\"w-8-12th\"] {\n  width: 66.66666667%;\n}\n.maxw-8-12th,\nimg[src~=\"maxw-8-12th\"] {\n  max-width: 66.66666667%;\n}\n.minw-8-12th,\nimg[src~=\"minw-8-12th\"] {\n  min-width: 66.66666667%;\n}\n.h-8-12th,\nimg[src~=\"h-8-12th\"] {\n  height: 66.66666667%;\n}\n.maxh-8-12th,\nimg[src~=\"maxh-8-12th\"] {\n  max-height: 66.66666667%;\n}\n.minh-8-12th,\nimg[src~=\"minh-8-12th\"] {\n  min-height: 66.66666667%;\n}\n.t-8-12th,\nimg[src~=\"t-8-12th\"] {\n  top: 66.66666667%;\n}\n.r-8-12th,\nimg[src~=\"r-8-12th\"] {\n  right: 66.66666667%;\n}\n.b-8-12th,\nimg[src~=\"b-8-12th\"] {\n  bottom: 66.66666667%;\n}\n.l-8-12th,\nimg[src~=\"l-8-12th\"] {\n  left: 66.66666667%;\n}\n.w-8-12th.center,\nimg[src~=\"w-8-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -33.33333333%;\n}\n.w-9-12th,\nimg[src~=\"w-9-12th\"] {\n  width: 75%;\n}\n.maxw-9-12th,\nimg[src~=\"maxw-9-12th\"] {\n  max-width: 75%;\n}\n.minw-9-12th,\nimg[src~=\"minw-9-12th\"] {\n  min-width: 75%;\n}\n.h-9-12th,\nimg[src~=\"h-9-12th\"] {\n  height: 75%;\n}\n.maxh-9-12th,\nimg[src~=\"maxh-9-12th\"] {\n  max-height: 75%;\n}\n.minh-9-12th,\nimg[src~=\"minh-9-12th\"] {\n  min-height: 75%;\n}\n.t-9-12th,\nimg[src~=\"t-9-12th\"] {\n  top: 75%;\n}\n.r-9-12th,\nimg[src~=\"r-9-12th\"] {\n  right: 75%;\n}\n.b-9-12th,\nimg[src~=\"b-9-12th\"] {\n  bottom: 75%;\n}\n.l-9-12th,\nimg[src~=\"l-9-12th\"] {\n  left: 75%;\n}\n.w-9-12th.center,\nimg[src~=\"w-9-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -37.5%;\n}\n.w-10-12th,\nimg[src~=\"w-10-12th\"] {\n  width: 83.33333333%;\n}\n.maxw-10-12th,\nimg[src~=\"maxw-10-12th\"] {\n  max-width: 83.33333333%;\n}\n.minw-10-12th,\nimg[src~=\"minw-10-12th\"] {\n  min-width: 83.33333333%;\n}\n.h-10-12th,\nimg[src~=\"h-10-12th\"] {\n  height: 83.33333333%;\n}\n.maxh-10-12th,\nimg[src~=\"maxh-10-12th\"] {\n  max-height: 83.33333333%;\n}\n.minh-10-12th,\nimg[src~=\"minh-10-12th\"] {\n  min-height: 83.33333333%;\n}\n.t-10-12th,\nimg[src~=\"t-10-12th\"] {\n  top: 83.33333333%;\n}\n.r-10-12th,\nimg[src~=\"r-10-12th\"] {\n  right: 83.33333333%;\n}\n.b-10-12th,\nimg[src~=\"b-10-12th\"] {\n  bottom: 83.33333333%;\n}\n.l-10-12th,\nimg[src~=\"l-10-12th\"] {\n  left: 83.33333333%;\n}\n.w-10-12th.center,\nimg[src~=\"w-10-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -41.66666667%;\n}\n.w-11-12th,\nimg[src~=\"w-11-12th\"] {\n  width: 91.66666667%;\n}\n.maxw-11-12th,\nimg[src~=\"maxw-11-12th\"] {\n  max-width: 91.66666667%;\n}\n.minw-11-12th,\nimg[src~=\"minw-11-12th\"] {\n  min-width: 91.66666667%;\n}\n.h-11-12th,\nimg[src~=\"h-11-12th\"] {\n  height: 91.66666667%;\n}\n.maxh-11-12th,\nimg[src~=\"maxh-11-12th\"] {\n  max-height: 91.66666667%;\n}\n.minh-11-12th,\nimg[src~=\"minh-11-12th\"] {\n  min-height: 91.66666667%;\n}\n.t-11-12th,\nimg[src~=\"t-11-12th\"] {\n  top: 91.66666667%;\n}\n.r-11-12th,\nimg[src~=\"r-11-12th\"] {\n  right: 91.66666667%;\n}\n.b-11-12th,\nimg[src~=\"b-11-12th\"] {\n  bottom: 91.66666667%;\n}\n.l-11-12th,\nimg[src~=\"l-11-12th\"] {\n  left: 91.66666667%;\n}\n.w-11-12th.center,\nimg[src~=\"w-11-12th\"][src~=center] {\n  left: 50%;\n  margin-left: -45.83333333%;\n}\n.w-third,\nimg[src~=\"w-third\"] {\n  width: 33.33333333%;\n}\n.maxw-third,\nimg[src~=\"maxw-third\"] {\n  max-width: 33.33333333%;\n}\n.minw-third,\nimg[src~=\"minw-third\"] {\n  min-width: 33.33333333%;\n}\n.h-third,\nimg[src~=\"h-third\"] {\n  height: 33.33333333%;\n}\n.maxh-third,\nimg[src~=\"maxh-third\"] {\n  max-height: 33.33333333%;\n}\n.minh-third,\nimg[src~=\"minh-third\"] {\n  min-height: 33.33333333%;\n}\n.t-third,\nimg[src~=\"t-third\"] {\n  top: 33.33333333%;\n}\n.r-third,\nimg[src~=\"r-third\"] {\n  right: 33.33333333%;\n}\n.b-third,\nimg[src~=\"b-third\"] {\n  bottom: 33.33333333%;\n}\n.l-third,\nimg[src~=\"l-third\"] {\n  left: 33.33333333%;\n}\n.w-third.center,\nimg[src~=\"w-third\"][src~=center] {\n  left: 50%;\n  margin-left: -16.66666667%;\n}\n.w-two-thirds,\nimg[src~=\"w-two-thirds\"] {\n  width: 66.66666667%;\n}\n.maxw-two-thirds,\nimg[src~=\"maxw-two-thirds\"] {\n  max-width: 66.66666667%;\n}\n.minw-two-thirds,\nimg[src~=\"minw-two-thirds\"] {\n  min-width: 66.66666667%;\n}\n.h-two-thirds,\nimg[src~=\"h-two-thirds\"] {\n  height: 66.66666667%;\n}\n.maxh-two-thirds,\nimg[src~=\"maxh-two-thirds\"] {\n  max-height: 66.66666667%;\n}\n.minh-two-thirds,\nimg[src~=\"minh-two-thirds\"] {\n  min-height: 66.66666667%;\n}\n.t-two-thirds,\nimg[src~=\"t-two-thirds\"] {\n  top: 66.66666667%;\n}\n.r-two-thirds,\nimg[src~=\"r-two-thirds\"] {\n  right: 66.66666667%;\n}\n.b-two-thirds,\nimg[src~=\"b-two-thirds\"] {\n  bottom: 66.66666667%;\n}\n.l-two-thirds,\nimg[src~=\"l-two-thirds\"] {\n  left: 66.66666667%;\n}\n.w-two-thirds.center,\nimg[src~=\"w-two-thirds\"][src~=center] {\n  left: 50%;\n  margin-left: -33.33333333%;\n}\n.dn,\nimg[src~=dn] {\n  display: none;\n}\n.di,\nimg[src~=di] {\n  display: inline;\n}\n.db,\nimg[src~=db] {\n  display: block;\n}\n.dib,\nimg[src~=dib] {\n  display: inline-block;\n}\n.fl,\nimg[src~=fl] {\n  float: left;\n}\n.fr,\nimg[src~=fr] {\n  float: right;\n}\n.fn,\nimg[src~=fn] {\n  float: none;\n}\nimg[src~=cf]:before,\nimg[src~=cf]:after {\n  content: \" \";\n  display: table;\n}\nimg[src~=cf]:after {\n  clear: both;\n}\n.cf,\nimg[src~=cf] {\n  *zoom: 1;\n}\n.static,\nimg[src~=static] {\n  position: static;\n}\n.relative,\nimg[src~=relative] {\n  position: relative;\n}\n.absolute,\nimg[src~=absolute] {\n  position: absolute;\n}\n.fixed,\nimg[src~=fixed] {\n  position: fixed;\n}\n.center,\nimg[src~=center] {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n.ofc,\nimg[src~=ofc] {\n  object-fit: contain;\n}\n.ofv,\nimg[src~=ofv] {\n  object-fit: cover;\n}\n.opl,\nimg[src~=opl] {\n  object-position: left !important;\n}\n.opc,\nimg[src~=opc] {\n  object-position: center !important;\n}\n.opr,\nimg[src~=opr] {\n  object-position: right !important;\n}\n.opt,\nimg[src~=opt] {\n  object-position: top !important;\n}\n.opb,\nimg[src~=opb] {\n  object-position: bottom !important;\n}\n.oplt,\nimg[src~=oplt] {\n  object-position: left top !important;\n}\n.oplc,\nimg[src~=oplc] {\n  object-position: left center !important;\n}\n.oplb,\nimg[src~=oplb] {\n  object-position: left bottom !important;\n}\n.opct,\nimg[src~=opct] {\n  object-position: center top !important;\n}\n.opcc,\nimg[src~=opcc] {\n  object-position: center center !important;\n}\n.opcb,\nimg[src~=opcb] {\n  object-position: center bottom !important;\n}\n.oprt,\nimg[src~=oprt] {\n  object-position: right top !important;\n}\n.oprc,\nimg[src~=oprc] {\n  object-position: right center !important;\n}\n.oprb,\nimg[src~=oprb] {\n  object-position: right bottom !important;\n}\n.shadow-1,\nimg[src~=shadow-1] {\n  box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2);\n}\n.shadow-2,\nimg[src~=shadow-2] {\n  box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.2);\n}\n.shadow-3,\nimg[src~=shadow-3] {\n  box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2);\n}\n.shadow-4,\nimg[src~=shadow-4] {\n  box-shadow: 2px 2px 8px 0 rgba(0, 0, 0, 0.2);\n}\n.shadow-5,\nimg[src~=shadow-5] {\n  box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.2);\n}\n"
  },
  {
    "path": "static/css/descartes.less",
    "content": "@sides: {\n\tt: -top;\n\tr: -right;\n\tb: -bottom;\n\tl: -left;\n}\n\n@border-lengths: {\n\t-0: 0;\n\t-1: .125rem;\n\t-2: .25rem;\n\t-3: .5rem;\n\t-4: 1rem;\n\t-5: 2rem;\n\t-100pct: 100%;\n}\n\n@box-lengths: {\n\t-0: 0;\n\t-1: 1rem;\n\t-2: 2rem;\n\t-3: 4rem;\n\t-4: 8rem;\n\t-5: 16rem;\n\t-6: 32rem;\n\t-7: 48rem;\n\t-8: 64rem;\n\t-9: 96rem;\n\t-10pct: 10%;\n\t-20pct: 20%;\n\t-30pct: 30%;\n\t-33pct: 33%;\n\t-34pct: 34%;\n\t-40pct: 40%;\n\t-50pct: 50%;\n\t-60pct: 60%;\n\t-70pct: 70%;\n\t-75pct: 75%;\n\t-80pct: 80%;\n\t-90pct: 90%;\n\t-100pct: 100%;\n\t-1-12th: 100%/12;\n\t-2-12th: 200%/12;\n\t-3-12th: 300%/12;\n\t-4-12th: 400%/12;\n\t-5-12th: 500%/12;\n\t-6-12th: 600%/12;\n\t-7-12th: 700%/12;\n\t-8-12th: 800%/12;\n\t-9-12th: 900%/12;\n\t-10-12th: 1000%/12;\n\t-11-12th: 1100%/12;\n\t-third: 100%/3;\n\t-two-thirds: 200%/3;\n}\n\n@spacing-lengths: {\n\t-0: 0;\n\t-1: .25rem;\n\t-2: .5rem;\n\t-3: 1rem;\n\t-4: 2rem;\n\t-5: 4rem;\n\t-6: 8rem;\n\t-7: 16rem;\n\t-8: 32rem;\n\t-9: 64rem;\n}\n\n// https://drafts.csswg.org/css-color/#named-colors\n@named-colors: {\n\taliceblue: #F0F8FF;\n\tantiquewhite: #FAEBD7;\n\taqua: #00FFFF;\n\taquamarine: #7FFFD4;\n\tazure: #F0FFFF;\n\tbeige: #F5F5DC;\n\tbisque: #FFE4C4;\n\tblack: #000000;\n\tblanchedalmond: #FFEBCD;\n\tblue: #0000FF;\n\tblueviolet: #8A2BE2;\n\tbrown: #A52A2A;\n\tburlywood: #DEB887;\n\tcadetblue: #5F9EA0;\n\tchartreuse: #7FFF00;\n\tchocolate: #D2691E;\n\tcoral: #FF7F50;\n\tcornflowerblue: #6495ED;\n\tcornsilk: #FFF8DC;\n\tcrimson: #DC143C;\n\tcyan: #00FFFF;\n\tdarkblue: #00008B;\n\tdarkcyan: #008B8B;\n\tdarkgoldenrod: #B8860B;\n\tdarkgray: #A9A9A9;\n\tdarkgreen: #006400;\n\tdarkgrey: #A9A9A9;\n\tdarkkhaki: #BDB76B;\n\tdarkmagenta: #8B008B;\n\tdarkolivegreen: #556B2F;\n\tdarkorange: #FF8C00;\n\tdarkorchid: #9932CC;\n\tdarkred: #8B0000;\n\tdarksalmon: #E9967A;\n\tdarkseagreen: #8FBC8F;\n\tdarkslateblue: #483D8B;\n\tdarkslategray: #2F4F4F;\n\tdarkslategrey: #2F4F4F;\n\tdarkturquoise: #00CED1;\n\tdarkviolet: #9400D3;\n\tdeeppink: #FF1493;\n\tdeepskyblue: #00BFFF;\n\tdimgray: #696969;\n\tdimgrey: #696969;\n\tdodgerblue: #1E90FF;\n\tfirebrick: #B22222;\n\tfloralwhite: #FFFAF0;\n\tforestgreen: #228B22;\n\tfuchsia: #FF00FF;\n\tgainsboro: #DCDCDC;\n\tghostwhite: #F8F8FF;\n\tgold: #FFD700;\n\tgoldenrod: #DAA520;\n\tgray: #808080;\n\tgreen: #008000;\n\tgreenyellow: #ADFF2F;\n\tgrey: #808080;\n\thoneydew: #F0FFF0;\n\thotpink: #FF69B4;\n\tindianred: #CD5C5C;\n\tindigo: #4B0082;\n\tivory: #FFFFF0;\n\tkhaki: #F0E68C;\n\tlavender: #E6E6FA;\n\tlavenderblush: #FFF0F5;\n\tlawngreen: #7CFC00;\n\tlemonchiffon: #FFFACD;\n\tlightblue: #ADD8E6;\n\tlightcoral: #F08080;\n\tlightcyan: #E0FFFF;\n\tlightgoldenrodyellow: #FAFAD2;\n\tlightgray: #D3D3D3;\n\tlightgreen: #90EE90;\n\tlightgrey: #D3D3D3;\n\tlightpink: #FFB6C1;\n\tlightsalmon: #FFA07A;\n\tlightseagreen: #20B2AA;\n\tlightskyblue: #87CEFA;\n\tlightslategray: #778899;\n\tlightslategrey: #778899;\n\tlightsteelblue: #B0C4DE;\n\tlightyellow: #FFFFE0;\n\tlime: #00FF00;\n\tlimegreen: #32CD32;\n\tlinen: #FAF0E6;\n\tmagenta: #FF00FF;\n\tmaroon: #800000;\n\tmediumaquamarine: #66CDAA;\n\tmediumblue: #0000CD;\n\tmediumorchid: #BA55D3;\n\tmediumpurple: #9370DB;\n\tmediumseagreen: #3CB371;\n\tmediumslateblue: #7B68EE;\n\tmediumspringgreen: #00FA9A;\n\tmediumturquoise: #48D1CC;\n\tmediumvioletred: #C71585;\n\tmidnightblue: #191970;\n\tmintcream: #F5FFFA;\n\tmistyrose: #FFE4E1;\n\tmoccasin: #FFE4B5;\n\tnavajowhite: #FFDEAD;\n\tnavy: #000080;\n\toldlace: #FDF5E6;\n\tolive: #808000;\n\tolivedrab: #6B8E23;\n\torange: #FFA500;\n\torangered: #FF4500;\n\torchid: #DA70D6;\n\tpalegoldenrod: #EEE8AA;\n\tpalegreen: #98FB98;\n\tpaleturquoise: #AFEEEE;\n\tpalevioletred: #DB7093;\n\tpapayawhip: #FFEFD5;\n\tpeachpuff: #FFDAB9;\n\tperu: #CD853F;\n\tpink: #FFC0CB;\n\tplum: #DDA0DD;\n\tpowderblue: #B0E0E6;\n\tpurple: #800080;\n\trebeccapurple: #663399;\n\tred: #FF0000;\n\trosybrown: #BC8F8F;\n\troyalblue: #4169E1;\n\tsaddlebrown: #8B4513;\n\tsalmon: #FA8072;\n\tsandybrown: #F4A460;\n\tseagreen: #2E8B57;\n\tseashell: #FFF5EE;\n\tsienna: #A0522D;\n\tsilver: #C0C0C0;\n\tskyblue: #87CEEB;\n\tslateblue: #6A5ACD;\n\tslategray: #708090;\n\tslategrey: #708090;\n\tsnow: #FFFAFA;\n\tspringgreen: #00FF7F;\n\tsteelblue: #4682B4;\n\ttan: #D2B48C;\n\tteal: #008080;\n\tthistle: #D8BFD8;\n\ttomato: #FF6347;\n\tturquoise: #40E0D0;\n\tviolet: #EE82EE;\n\twheat: #F5DEB3;\n\twhite: #FFFFFF;\n\twhitesmoke: #F5F5F5;\n\tyellow: #FFFF00;\n\tyellowgreen: #9ACD32;\n}\n\n@fifths: {\n\t-20pct: 80%;\n\t-40pct: 60%;\n\t-60pct: 40%;\n\t-80pct: 20%;\n}\n\n// Text color, border color, background color, opacity\n.color-transparent, img[src~=color-transparent] { color: transparent; }\n.bg-transparent, img[src~=bg-transparent] { background-color: transparent; }\n.bc-transparent, img[src~=bc-transparent] { border-color: transparent; }\n.color(@name, @color) {\n\t.color-@{name}, img[src~=\"color-@{name}\"] { color: @value; }\n\teach(@fifths, {\n\t\t.color-@{name}@{key}, img[src~=\"color-@{name}\"] { color: fadeout(@color, @value); }\n\t});\n}\n.background-color(@name, @color) {\n\t.bg-@{name}, img[src~=\"bg-@{name}\"] { background-color: @value; }\n\teach(@fifths, {\n\t\t.bg-@{name}@{key}, img[src~=\"bg-@{name}\"] { background-color: fadeout(@color, @value); }\n\t});\n}\n.border-color(@name, @color) {\n\t.bc-@{name}, img[src~=\"bc-@{name}\"] { border-color: @value; }\n\teach(@fifths, {\n\t\t.bc-@{name}@{key}, img[src~=\"bc-@{name}\"] { border-color: fadeout(@color, @value); }\n\t});\n}\neach(@named-colors, {\n\t.color(@key, @value);\n\t.background-color(@key, @value);\n\t.border-color(@key, @value);\n});\neach(@fifths, {\n\t.opacity@{key}, img[src~=\"opacity-@{key}\"] { opacity: 100%-@value; }\n});\n\n// Border styles, widths, and radiuses\n.ba, img[src~=ba] { border: 1px solid; }\n.bn, img[src~=bn] { border: 0px none; }\neach(@sides, {\n\t.b@{key}, img[src~=\"b@{key}\"] { border@{value}: 1px solid; }\n});\neach(@border-lengths, {\n\t.br@{key}, img[src~=\"br@{key}\"] { border-radius: @value; }\n\t.bw@{key}, img[src~=\"bw@{key}\"] { border-width: @value; }\n});\n\n// Padding and margins\neach(@spacing-lengths, {\n\t.pa@{key}, img[src~=\"pa@{key}\"] { padding: @value; }\n\t.pv@{key}, img[src~=\"pv@{key}\"] { padding-top: @value; padding-bottom: @value; }\n\t.ph@{key}, img[src~=\"ph@{key}\"] { padding-left: @value; padding-right: @value; }\n\t.ma@{key}, img[src~=\"ma@{key}\"] { margin: @value; }\n\t.mv@{key}, img[src~=\"mv@{key}\"] { margin-top: @value; margin-bottom: @value; }\n\t.mh@{key}, img[src~=\"mh@{key}\"] { margin-left: @value; margin-right: @value; }\n});\n.spacing(@name, @side) {\n\teach(@spacing-lengths, {\n\t\t.p@{name}@{key}, img[src~=\"p@{name}@{key}\"] { padding@{side}: @value; }\n\t\t.m@{name}@{key}, img[src~=\"m@{name}@{key}\"] { margin@{side}: @value; }\n\t});\n}\neach(@sides, {\n\t.spacing(@key, @value);\n});\n\n// Element widths, heights, and coordinates\n// Idle thought: combine with the inverse golden ratio, 2/(1+sqrt(5))\neach(@box-lengths, {\n\t.w@{key}, img[src~=\"w@{key}\"]       { width: @value; }\n\t.maxw@{key}, img[src~=\"maxw@{key}\"] { max-width: @value; }\n\t.minw@{key}, img[src~=\"minw@{key}\"] { min-width: @value; }\n\t.h@{key}, img[src~=\"h@{key}\"]       { height: @value; }\n\t.maxh@{key}, img[src~=\"maxh@{key}\"] { max-height: @value; }\n\t.minh@{key}, img[src~=\"minh@{key}\"] { min-height: @value; }\n\t.t@{key}, img[src~=\"t@{key}\"]       { top: @value; }\n\t.r@{key}, img[src~=\"r@{key}\"]       { right: @value; }\n\t.b@{key}, img[src~=\"b@{key}\"]       { bottom: @value; }\n\t.l@{key}, img[src~=\"l@{key}\"]       { left: @value; }\n\t// https://www.sitepoint.com/css-center-position-absolute-div/\n\t.w@{key}.center, img[src~=\"w@{key}\"][src~=center] {\n\t\tleft: 50%;\n\t\tmargin-left: @value/-2;\n\t}\n});\n\n// Element display styles, positioning, floating, etc\n.dn, img[src~=dn] { display: none; }\n.di, img[src~=di] { display: inline; }\n.db, img[src~=db] { display: block; }\n.dib, img[src~=dib] { display: inline-block; }\n\n.fl, img[src~=fl] { float: left; }\n.fr, img[src~=fr] { float: right; }\n.fn, img[src~=fn] { float: none; }\n\nimg[src~=cf]:before,\nimg[src~=cf]:after { content: \" \"; display: table; }\nimg[src~=cf]:after { clear: both; }\n.cf, img[src~=cf] { *zoom: 1; }\n\n.static, img[src~=static] { position: static; }\n.relative, img[src~=relative] { position: relative; }\n.absolute, img[src~=absolute] { position: absolute; }\n.fixed, img[src~=fixed] { position: fixed; }\n\n.center, img[src~=center] { display: block; margin-left: auto; margin-right: auto; }\n\n// Object-fitting and covering\n.ofc, img[src~=ofc] { object-fit: contain; }\n.ofv, img[src~=ofv] { object-fit: cover; }\n.opl, img[src~=opl] { object-position: left !important; }\n.opc, img[src~=opc] { object-position: center !important; }\n.opr, img[src~=opr] { object-position: right !important; }\n.opt, img[src~=opt] { object-position: top !important; }\n.opb, img[src~=opb] { object-position: bottom !important; }\n.oplt, img[src~=oplt] { object-position: left top !important; }\n.oplc, img[src~=oplc] { object-position: left center !important; }\n.oplb, img[src~=oplb] { object-position: left bottom !important; }\n.opct, img[src~=opct] { object-position: center top !important; }\n.opcc, img[src~=opcc] { object-position: center center !important; }\n.opcb, img[src~=opcb] { object-position: center bottom !important; }\n.oprt, img[src~=oprt] { object-position: right top !important; }\n.oprc, img[src~=oprc] { object-position: right center !important; }\n.oprb, img[src~=oprb] { object-position: right bottom !important; }\n\n// Box shadows\n.shadow-1, img[src~=shadow-1] { box-shadow: 0 0 4px 2px rgba( 0, 0, 0, .2 ); }\n.shadow-2, img[src~=shadow-2] { box-shadow: 0 0 8px 2px rgba( 0, 0, 0, .2 ); }\n.shadow-3, img[src~=shadow-3] { box-shadow: 2px 2px 4px 2px rgba( 0, 0, 0, .2 ); }\n.shadow-4, img[src~=shadow-4] { box-shadow: 2px 2px 8px 0 rgba( 0, 0, 0, .2 ); }\n.shadow-5, img[src~=shadow-5] { box-shadow: 4px 4px 8px 0 rgba( 0, 0, 0, .2 ); }\n"
  },
  {
    "path": "static/css/monobloc.css",
    "content": "@import url('https://fonts.googleapis.com/css?family=Heebo:300,400,500,700|Inconsolata');\n\n\n/* Global Styles */\nbody {\n  font-family: Heebo, \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n.remark-slide-content h1, .remark-slide-content h2 {\n  font-weight: 500;\n}\n.remark-slide-content p, .remark-slide-content li, .remark-slide-content td, .remark-slide-content th {\n  font-size: 24pt;\n  line-height: 1.6;\n}\n.remark-code, .remark-inline-code {\n\tfont-family: Inconsolata, monospace;\n}\nth {\n\tborder-bottom: 1px solid black;\n}\ntd, th {\n\tpadding: 8px;\n}\nimg {\n  display: block;\n  max-width:100%;\n  max-height:100%;\n  width: auto;\n  height: auto;\n}\n.center img {\n  margin-right: auto;\n  margin-left: auto;\n}\n.smaller p, .smaller div, .smaller li, .smaller th, .smaller td {\n\tfont-size: 18pt;\n}\n.footnote p {\n\tposition: absolute;\n\tbottom: 3em;\n\tfont-size: 8pt !important;\n}\n.remark-slide-number {\n\tbackground-color: white;\n\tpadding: 0 5px;\n\tborder-radius: 5px;\n\tfont-size: 20px !important;\n}\n.no-number .remark-slide-number {\n\tdisplay: none;\n}\n#qrcode {\n  width: 384px;\n  height: 384px;\n}\n\n/* Title Slide Layout. Use .smokescreen[...] to contain the h1/h2. */\n.remark-slide-content.title h1, .remark-slide-content.title h2, .remark-slide-content.title h3 {\n\tcolor: white;\n\tfont-size: 50pt;\n\tmargin: 30pt;\n\tfont-weight: 300;\n}\n.remark-slide-content.title h2 {\n\tfont-size: 30pt;\n}\n.remark-slide-content.title h3 {\n\tfont-size: 22pt;\n}\n.smokescreen {\n\twidth: 100%;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 33%;\n\tbackground-color: rgba(0,0,0,.7);\n\tvertical-align: middle;\n\ttext-align: center;\n}\n\n/* Columnar Layouts. Two- and three-column layouts use .col classnames and float\n * next to each other. The img-right uses .col and .rc (for right-column) and\n * they're not equal-width or height. For convenience, two-column layouts also\n * allow you to name the right column with .rc classname, so you can switch\n * between layouts without changing the markup, just the slide's class.\n */\n\n/* Two-Column Layout */\n.two-column .rc, .two-column .col {\n\twidth: 48%;\n\tfloat: left;\n\tmargin-right: 1%;\n}\n.two-column .rc img, .two-column .col img, .three-column .col img, .three-column .rc img {\n\tdisplay: block;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tpadding: 0;\n}\n\n/* Two-Column Layout, Text Left, Image Right */\n.img-right .col {\n\twidth: 62.5%;\n   padding-right: 1em;\n}\n.img-right .rc {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 62.5%;\n\twidth: 37.5%;\n\theight: 100%;\n\tmargin: 0;\n\tpadding: 0;\n}\n.img-right .rc p { /* Remove empty line above image wrapped in <p> */\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* Three-Column Layout */\n.three-column .col, .three-column .rc {\n\twidth: 32%;\n\tfloat: left;\n}\n\n/* Shrink Images To Fit In A Vertical Space */\n.img-450h img {\n\tdisplay: block;\n\tmax-height: 450px !important;\n\twidth: auto;\n\tmargin: 0;\n\tpadding: 0;\n}\n.img-300h img {\n\tdisplay: block;\n\tmax-height: 300px !important;\n\twidth: auto;\n\tmargin: 0;\n\tpadding: 0;\n}\n.center img, .img-center img {\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n}\n"
  },
  {
    "path": "static/css/story.css",
    "content": "h1,\nh2,\nh3,\nh4,\n.sans-serif {\n  font-family: 'Quattrocento Sans', -apple-system, BlinkMacSystemFont, 'avenir next', avenir, 'helvetica neue', helvetica, ubuntu, roboto, noto, 'segoe ui', arial, sans-serif;\n}\nbody article {\n  font-family: 'Spectral', Georgia, Times, serif;\n}\n@media only screen and (max-width: 30em) {\n  body article p,\n  body article li {\n    font-family: 'Quattrocento Sans', -apple-system, BlinkMacSystemFont, 'avenir next', avenir, 'helvetica neue', helvetica, ubuntu, roboto, noto, 'segoe ui', arial, sans-serif;\n  }\n}\n@media only screen and (min-width: 50em) {\n  body.is-page-true.feature-depth:not(.feature-nodepth):not(.feature-nohdr) article {\n    margin-top: -2em;\n    box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 0.5em 0.125em;\n  }\n}\n@media screen only {\n  header h1,\n  header h2 {\n    text-shadow: 0.1em 0.1em 0.3em rgba(0, 0, 0, 0.3);\n  }\n}\nblockquote {\n  margin: 0;\n  padding: 0 1rem;\n  color: #6a737d;\n  border-left: 0.25rem solid #dfe2e5;\n}\npre {\n  border: 1px solid #dfe2e5;\n  border-radius: 3px;\n  font-size: 75%;\n  line-height: 1.4;\n  padding: 1em;\n  background: #f6f8fa;\n  overflow: auto;\n}\np > code,\nli > code,\na > code,\ntd > code {\n  font-size: 80%;\n  background: #f6f8fa;\n  margin: 0;\n  border-radius: 3px;\n  padding: 0.15em 0.25em;\n}\narticle img {\n  max-width: 100%;\n}\nhr {\n  height: 0px;\n  border-style: none none solid none;\n  border-bottom-color: #dfe2e5;\n}\ntable caption {\n  text-align: left;\n  font-family: 'Spectral', Georgia, Times, serif;\n  font-style: italic;\n  padding: 0px 0.5rem;\n}\nbody.feature-hyphenate:not(.feature-nohyphenate) article p,\nbody.feature-hyphenate:not(.feature-nohyphenate) article li,\nbody.feature-hyphenate:not(.feature-nohyphenate) article td,\nbody.feature-hyphenate:not(.feature-nohyphenate) article caption,\nbody.feature-hyphenate:not(.feature-nohyphenate) article figcaption,\nbody.feature-hyphenate:not(.feature-nohyphenate) article th {\n  word-wrap: break-word;\n  overflow-wrap: break-word;\n  -webkit-hyphens: auto;\n  -moz-hyphens: auto;\n  -ms-hyphens: auto;\n  hyphens: auto;\n}\nbody.feature-hyphenate:not(.feature-nohyphenate) article pre,\nbody.feature-hyphenate:not(.feature-nohyphenate) article code {\n  -webkit-hyphens: none;\n  -moz-hyphens: none;\n  -ms-hyphens: none;\n  hyphens: none;\n}\nbody.feature-justify:not(.feature-nojustify) article p,\nbody.feature-justify:not(.feature-nojustify) article li {\n  text-align: justify;\n}\nbody.feature-hrfleuron:not(.feature-nohrfleuron) article > hr {\n  border-style: none;\n  width: 0px;\n  text-align: center;\n  margin-top: 0px;\n  margin-bottom: 3rem;\n}\nbody.feature-hrfleuron:not(.feature-nohrfleuron) article > hr:before {\n  content: \"\\002766\";\n}\nbody.feature-hrdinkus:not(.feature-nohrdinkus) article > hr {\n  border-style: none;\n  width: 0px;\n  text-align: center;\n  margin-top: 0px;\n  margin-bottom: 3rem;\n}\nbody.feature-hrdinkus:not(.feature-nohrdinkus) article > hr:before {\n  content: \"*\\000A0\\000A0*\\000A0\\000A0*\";\n}\nfigure {\n  margin: 0px;\n  padding: 0px;\n}\nfigure img {\n  display: block;\n}\n@media screen {\n  body.feature-figcaption-hidden:not(.feature-figcaption-visible) figure {\n    position: relative;\n  }\n  body.feature-figcaption-hidden:not(.feature-figcaption-visible) figcaption {\n    position: absolute;\n    bottom: 0px;\n    display: block;\n    width: 100%;\n    color: white;\n    background-color: rgba(0, 0, 0, 0.75);\n    padding: 1rem;\n    visibility: hidden;\n  }\n  body.feature-figcaption-hidden figure:hover figcaption {\n    visibility: visible;\n  }\n}\nbody:not(.feature-tablefig) table {\n  border-spacing: 0;\n  border-collapse: collapse;\n  display: block;\n  width: 100%;\n  overflow: auto;\n  font-size: 85%;\n  font-family: 'Quattrocento Sans', -apple-system, BlinkMacSystemFont, 'avenir next', avenir, 'helvetica neue', helvetica, ubuntu, roboto, noto, 'segoe ui', arial, sans-serif;\n}\nbody:not(.feature-tablefig) table tr:nth-child(2n) {\n  background-color: #f6f8fa;\n}\nbody:not(.feature-tablefig) table th,\nbody:not(.feature-tablefig) table td {\n  display: table-cell;\n  vertical-align: inherit;\n  padding: 0.25rem 0.5rem;\n  border: 1px solid #dfe2e5;\n}\nbody:not(.feature-tablefig) table th {\n  font-weight: 600;\n}\nbody.feature-tablefw:not(.feature-tablefig) td {\n  font-family: arial;\n}\nbody.feature-tablefig:not(.feature-notablefig) table {\n  border-spacing: 0;\n  border-collapse: collapse;\n  overflow: auto;\n  font-size: 85%;\n  font-family: inherit;\n  border-top: 2px solid black;\n}\nbody.feature-tablefig:not(.feature-notablefig) table thead,\nbody.feature-tablefig:not(.feature-notablefig) table tbody {\n  border-bottom: 1px solid black;\n}\nbody.feature-tablefig:not(.feature-notablefig) table th,\nbody.feature-tablefig:not(.feature-notablefig) table td {\n  display: table-cell;\n  vertical-align: bottom;\n  padding: 0 0.5rem;\n}\nbody.feature-tablefig:not(.feature-notablefig) table th {\n  font-weight: 600;\n  padding-top: 0.5rem;\n}\nbody {\n  counter-reset: figure-counter table-counter;\n}\nbody.feature-fignum figure figcaption::before {\n  counter-increment: figure-counter;\n  content: \"Figure \" counter(figure-counter) \". \";\n}\nbody.feature-fignum table caption::before {\n  counter-increment: table-counter;\n  content: \"Table \" counter(table-counter) \". \";\n}\n.feature-h3-cl h3 {\n  clear: left;\n}\n.feature-h3-cr h3 {\n  clear: right;\n}\n.feature-h3-cb h3 {\n  clear: both;\n}\n.feature-nosubtitle h2 {\n  display: none;\n}\n.footnotes {\n  font-size: 80%;\n}\n.math {\n  font-size: 1rem;\n}\n.about-the-author img {\n  float: left;\n  max-width: 100px;\n  border: 1px solid rgba(0, 0, 0, 0.3);\n  border-radius: 100%;\n  margin: 0 1rem 1rem 0;\n}\nblockquote.tweet {\n  border: 1px solid #dfe2e5;\n  border-radius: 5px;\n  padding: 4px 20px;\n  color: black;\n}\n.pagination li {\n  display: inline-block;\n}\n.pagination li a {\n  padding: 0.5rem 0.625rem;\n  background-color: white;\n  color: #333;\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  text-decoration: none;\n}\n.pagination li.disabled {\n  display: none;\n}\n.pagination li.active a:link,\n.pagination li.active a:active,\n.pagination li.active a:visited {\n  background-color: #ddd;\n}\nimg[src~=\"3dbook\"] {\n  max-width: 120px;\n}\n@media screen {\n  .book {\n    display: inline-block;\n    box-shadow: 5px 5px 20px #333;\n    margin: 1rem;\n  }\n  .book img {\n    vertical-align: middle;\n  }\n  .books {\n    -moz-perspective: 100px;\n    -moz-transform-style: preserve-3d;\n    -webkit-transform-style: preserve-3d;\n    display: inline-block;\n    float: right;\n    margin: 0px 0px 1rem 1rem;\n  }\n  .book {\n    position: relative;\n    -moz-perspective: 100px;\n    -moz-transform: rotateY(-3deg);\n    -webkit-transform: perspective(100) rotateY(-3deg);\n    outline: 1px solid transparent;\n    box-shadow: none;\n    margin: 0;\n  }\n  .book img {\n    position: relative !important;\n  }\n  .book:before,\n  .book:after {\n    position: absolute;\n    top: 2%;\n    height: 96%;\n    content: ' ';\n    z-index: -1;\n  }\n  .book:before {\n    width: 100%;\n    left: 6.5%;\n    background-color: #484848;\n    box-shadow: 0px 3px 20px 2px #333;\n  }\n  .book:after {\n    width: 5%;\n    left: 100%;\n    background-color: #EFEFEF;\n    box-shadow: inset 0px 0px 5px #aaa;\n    -moz-transform: rotateY(20deg);\n    -webkit-transform: perspective(100) rotateY(20deg);\n  }\n}\n.display-print {\n  display: none;\n}\n@media print {\n  * {\n    color: black !important;\n  }\n  pre,\n  code {\n    font-size: 0.85rem;\n    background: white !important;\n    padding: 3px !important;\n  }\n  img[src~=\"3dbook\"] {\n    border: 1px solid black;\n    float: right;\n    margin: 0px 0px 1rem 1rem;\n  }\n  .footnote-return {\n    display: none;\n  }\n  a,\n  a:link,\n  a:visited,\n  a:hover {\n    text-decoration: underline black;\n  }\n  .footnote-ref a,\n  .category a {\n    text-decoration: none !important;\n  }\n  #hdr {\n    padding-top: 0px !important;\n    padding-bottom: 0px !important;\n  }\n  h2 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n    font-style: italic;\n  }\n  h3 a:link,\n  h3 a:visited {\n    text-decoration: none;\n  }\n  .hide-print {\n    display: none !important;\n  }\n  .display-print {\n    display: inline !important;\n  }\n  .f4 {\n    font-size: 1rem !important;\n  }\n  .measure-wide {\n    max-width: 45em !important;\n  }\n  main {\n    padding-bottom: 0 !important;\n  }\n  .math {\n    font-size: 0.85rem !important;\n  }\n  article {\n    border-bottom-style: none !important;\n  }\n}\n.hljs {\n  display: block;\n  color: #333333;\n  overflow-x: auto;\n}\n.hljs-comment,\n.hljs-meta {\n  color: #969896;\n}\n.hljs-string,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-strong,\n.hljs-emphasis,\n.hljs-quote {\n  color: #df5000;\n}\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-type {\n  color: #a71d5d;\n}\n.hljs-literal,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-attribute {\n  color: #0086b3;\n}\n.hljs-section,\n.hljs-name {\n  color: #63a35c;\n}\n.hljs-tag {\n  color: #333333;\n}\n.hljs-title,\n.hljs-attr,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #795da3;\n}\n.hljs-addition {\n  color: #55a532;\n  background-color: #eaffea;\n}\n.hljs-deletion {\n  color: #bd2c00;\n  background-color: #ffecec;\n}\n.hljs-link {\n  text-decoration: underline;\n}\n"
  },
  {
    "path": "static/css/story.less",
    "content": "@font-sans: 'Quattrocento Sans',-apple-system, BlinkMacSystemFont, 'avenir next', avenir, 'helvetica neue', helvetica, ubuntu, roboto, noto, 'segoe ui', arial, sans-serif;\n@font-serif: 'Spectral', Georgia, Times, serif;\n@shaded-bg: #f6f8fa;\n@border: #dfe2e5;\n@muted-text: #6a737d;\n\n// Typography designed for clarity and elegance on a large, modern (hi-res)\n// display.  But when reading on an cellphone, a sans-serif font family is much\n// nicer, so apply serif fonts to the article only at larger sizes or in print.\nh1, h2, h3, h4, .sans-serif {\n\tfont-family: @font-sans;\n}\n\nbody {\n\tarticle {\n\t\tfont-family: @font-serif;\n\t\t@media only screen and (max-width: 30em) {\n\t\t\tp, li {\n\t\t\t\tfont-family: @font-sans;\n\t\t\t}\n\t\t}\n\t}\n\t@media only screen and (min-width: 50em) {\n\t\t&.is-page-true.feature-depth:not(.feature-nodepth):not(.feature-nohdr) article {\n\t\t\tmargin-top: -2em;\n\t\t\tbox-shadow: rgba(0, 0, 0, 0.2) 0px 0px 0.5em 0.125em;\n\t\t}\n\t}\n}\n\nheader {\n\th1, h2 {\n\t\t@media screen only {\n\t\t\ttext-shadow: 0.1em 0.1em 0.3em rgba(0, 0, 0, 0.3);\n\t\t}\n\t}\n}\n\n// General element styling\nblockquote {\n\tmargin: 0;\n\tpadding: 0 1rem;\n\tcolor: @muted-text;\n\tborder-left: 0.25rem solid @border;\n}\n\npre {\n\tborder: 1px solid @border;\n\tborder-radius: 3px;\n\tfont-size: 75%;\n\tline-height: 1.4;\n\tpadding: 1em;\n\tbackground: @shaded-bg;\n\toverflow: auto;\n}\np>code, li>code, a>code, td>code {\n\tfont-size: 80%;\n\tbackground: @shaded-bg;\n\tmargin: 0;\n\tborder-radius: 3px;\n\tpadding: 0.15em 0.25em;\n}\n\narticle img {\n\tmax-width: 100%;\n}\n\nhr {\n\theight: 0px;\n\tborder-style: none none solid none;\n\tborder-bottom-color: @border;\n}\n\ntable caption {\n\ttext-align: left;\n\tfont-family: @font-serif;\n\tfont-style: italic;\n\tpadding: 0px 0.5rem;\n}\n\n// Story uses feature-X and feature-noX classes to enable/disable a lot of\n// typography and other features.\nbody.feature-hyphenate:not(.feature-nohyphenate) article {\n\tp, li, td, caption, figcaption, th {\n\t\tword-wrap: break-word;\n\t\toverflow-wrap: break-word;\n\t\t-webkit-hyphens: auto;\n\t\t-moz-hyphens: auto;\n\t\t-ms-hyphens: auto;\n\t\thyphens: auto;\n\t}\n\tpre, code {\n\t\t-webkit-hyphens: none;\n\t\t-moz-hyphens: none;\n\t\t-ms-hyphens: none;\n\t\thyphens: none;\n\t}\n}\n\nbody.feature-justify:not(.feature-nojustify) article {\n\tp, li {\n\t\ttext-align: justify;\n\t}\n}\n\nbody.feature-hrfleuron:not(.feature-nohrfleuron) article > hr {\n\tborder-style: none;\n\twidth: 0px;\n\ttext-align: center;\n\tmargin-top: 0px;\n\tmargin-bottom: 3rem;\n\t&:before {\n\t\tcontent: \"\\002766\";\n\t}\n}\n\nbody.feature-hrdinkus:not(.feature-nohrdinkus) article > hr {\n\tborder-style: none;\n\twidth: 0px;\n\ttext-align: center;\n\tmargin-top: 0px;\n\tmargin-bottom: 3rem;\n\t&:before {\n\t\tcontent: \"*\\000A0\\000A0*\\000A0\\000A0*\";\n\t}\n}\n\nfigure {\n\tmargin: 0px;\n\tpadding: 0px;\n\timg {\n\t\tdisplay: block;\n\t}\n}\n\n@media screen {\n\t// Image captions should only be \"hidden\" overlays on the images in screen\n\t// mode.  Even if feature-figcaption-hidden is defined, if\n\t// feature-figcaption-visible is set, this all should be disabled.\n\tbody.feature-figcaption-hidden:not(.feature-figcaption-visible) figure {\n\t\tposition: relative;\n\t}\n\tbody.feature-figcaption-hidden:not(.feature-figcaption-visible) figcaption {\n\t\tposition: absolute;\n\t\tbottom: 0px;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tcolor: white;\n\t\tbackground-color: rgba(0, 0, 0, 0.75);\n\t\tpadding: 1rem;\n\t\tvisibility: hidden;\n\t}\n\tbody.feature-figcaption-hidden figure:hover figcaption {\n\t\tvisibility: visible;\n\t}\n}\n\n// Default table styling is GitHub-inspired. It's overridden by\n// .feature-tablefig below, so it applies only if that class isn't active.\nbody:not(.feature-tablefig) table {\n\tborder-spacing: 0;\n\tborder-collapse: collapse;\n\tdisplay: block;\n\twidth: 100%;\n\toverflow: auto;\n\tfont-size: 85%;\n\tfont-family: @font-sans;\n\ttr:nth-child(2n) {\n\t\tbackground-color: @shaded-bg;\n\t}\n\tth, td {\n\t\tdisplay: table-cell;\n\t\tvertical-align: inherit;\n\t\tpadding: .25rem .5rem;\n\t\tborder: 1px solid @border;\n\t}\n\tth {\n\t\tfont-weight: 600;\n\t}\n}\n\n// A typeface with fixed-width numerals is nice if there are many cells filled\n// with numbers.\nbody.feature-tablefw:not(.feature-tablefig) td {\n\tfont-family: arial;\n}\n\n// This table style is more of an academic paper look.\nbody.feature-tablefig:not(.feature-notablefig) table {\n\tborder-spacing: 0;\n\tborder-collapse: collapse;\n\toverflow: auto;\n\tfont-size: 85%;\n\tfont-family: inherit;\n\tborder-top: 2px solid black;\n\tthead, tbody {\n\t\tborder-bottom: 1px solid black;\n\t}\n\tth, td {\n\t\tdisplay: table-cell;\n\t\tvertical-align: bottom;\n\t\tpadding: 0 .5rem;\n\t}\n\tth {\n\t\tfont-weight: 600;\n\t\tpadding-top: .5rem;\n\t}\n}\n\n// Add labels and counters to table and figure captions.\nbody {\n\tcounter-reset: figure-counter table-counter;\n\t&.feature-fignum {\n\t\tfigure figcaption::before {\n\t\t\tcounter-increment: figure-counter;\n\t\t\tcontent: \"Figure \" counter(figure-counter) \". \";\n\t\t}\n\t\ttable\tcaption::before {\n\t\t\tcounter-increment: table-counter;\n\t\t\tcontent: \"Table \" counter(table-counter) \". \";\n\t\t}\n\t}\n}\n\n// Use front matter in the blog post to add CSS class names to the <body> tag.\n.feature-h3-cl h3 { clear: left; }\n.feature-h3-cr h3 { clear: right; }\n.feature-h3-cb h3 { clear: both; }\n.feature-nosubtitle h2 {\n\tdisplay: none;\n}\n\n// Hugo creates a div.footnotes around an <ol> for footnotes\n.footnotes {\n\tfont-size: 80%;\n}\n\n// For KaTeX's rendered elements, the font-size tends to be mismatched. Reset.\n.math {\n\tfont-size: 1rem;\n}\n\n.about-the-author img {\n\tfloat: left;\n\tmax-width: 100px;\n\tborder: 1px solid rgba(0,0,0,.3);\n\tborder-radius: 100%;\n\tmargin: 0 1rem 1rem 0;\n}\n\nblockquote.tweet {\n\tborder: 1px solid @border;\n\tborder-radius: 5px;\n\tpadding: 4px 20px;\n\tcolor: black;\n}\n\n.pagination li {\n\tdisplay: inline-block;\n\ta {\n\t\tpadding: .5rem .625rem;\n\t\tbackground-color: white;\n\t\tcolor: #333;\n\t\tborder: 1px solid #ddd;\n\t\tborder-radius: 3px;\n\t\ttext-decoration: none;\n\t}\n\t&.disabled {\n\t\tdisplay: none;\n\t}\n\t&.active {\n\t\ta:link, a:active, a:visited {\n\t\t\tbackground-color: #ddd;\n\t\t}\n\t}\n}\n\nimg[src~=\"3dbook\"] {\n\tmax-width: 120px;\n}\n\n@media screen {\n\t// Pseudo-3d book covers via http://srobbin.com/blog/3d-css-book-covers/\n\t// The images should be 400x525px but displayed at smaller size.\n\t// Give the book images a 3dbook pseudo-class in the URL fragment.\n\t// [![img](/img.jpg# 3dbook)](http://example.com/)\n\t// There's some JS that runs from story.js that will find the img,\n\t// and give its wrapper <a> the right classes, and the containing <p> still\n\t// more classes:\n\t// <p class=\"books\"><a class=\"book\"><img></a></p>\n\n\t// Fallback book cover styles\n\t.book {\n\t\tdisplay: inline-block;\n\t\tbox-shadow: 5px 5px 20px #333;\n\t\tmargin: 1rem;\n\t}\n\n\t.book img { vertical-align: middle; }\n\n\t.books {\n\t\t-moz-perspective: 100px;\n\t\t-moz-transform-style: preserve-3d;\n\t\t-webkit-transform-style: preserve-3d;\n\t\tdisplay: inline-block;\n\t\tfloat: right;\n\t\tmargin: 0px 0px 1rem 1rem;\n\t}\n\n\t.book {\n\t\tposition: relative;\n\t\t-moz-perspective: 100px;\n\t\t-moz-transform: rotateY(-3deg);\n\t\t-webkit-transform: perspective(100) rotateY(-3deg);\n\t\toutline: 1px solid transparent; // Helps smooth jagged edges in Firefox\n\t\tbox-shadow: none;\n\t\tmargin: 0;\n\t}\n\n\t.book img {\n\t\tposition: relative !important;\n\t}\n\n\t.book:before,\n\t.book:after {\n\t\tposition: absolute;\n\t\ttop: 2%;\n\t\theight: 96%;\n\t\tcontent: ' ';\n\t\tz-index: -1;\n\t}\n\n\t.book:before {\n\t\twidth: 100%;\n\t\tleft: 6.5%;\n\t\tbackground-color: #484848;\n\t\tbox-shadow: 0px 3px 20px 2px #333;\n\t}\n\n\t.book:after {\n\t\twidth: 5%;\n\t\tleft: 100%;\n\t\tbackground-color: #EFEFEF;\n\t\tbox-shadow: inset 0px 0px 5px #aaa;\n\t\t-moz-transform: rotateY(20deg);\n\t\t-webkit-transform: perspective(100) rotateY(20deg);\n\t}\n}\n\n// These will be hidden in screen media, but visible in print\n.display-print {\n\tdisplay: none;\n}\n\n@media print {\n\t* {\n\t\tcolor: black !important;\n\t}\n\tpre, code {\n\t\tfont-size: .85rem;\n\t\tbackground: white !important;\n\t\tpadding: 3px !important;\n\t}\n\timg[src~=\"3dbook\"] {\n\t\tborder: 1px solid black;\n\t\tfloat: right;\n\t\tmargin: 0px 0px 1rem 1rem;\n\t}\n\t.footnote-return {\n\t\tdisplay: none;\n\t}\n\ta, a:link, a:visited, a:hover {\n\t\ttext-decoration: underline black;\n\t}\n\t.footnote-ref a, .category a {\n\t\ttext-decoration: none !important;\n\t}\n\t#hdr {\n\t\tpadding-top: 0px !important;\n\t\tpadding-bottom: 0px !important;\n\t}\n\th2 {\n\t\tmargin-top: 1rem !important;\n\t\tmargin-bottom: 1rem !important;\n\t\tfont-style: italic;\n\t}\n\th3 a:link, h3 a:visited {\n\t\ttext-decoration: none;\n\t}\n\t.hide-print {\n\t\tdisplay: none !important;\n\t}\n\t.display-print {\n\t\tdisplay: inline !important;\n\t}\n\t.f4 {\n\t\tfont-size: 1rem !important;\n\t}\n\t.measure-wide { // increase line width to compensate for the decrease in font size\n\t\tmax-width: 45em !important;\n\t}\n\tmain { // don't waste paper on extra blank pages\n\t\tpadding-bottom: 0 !important;\n\t}\n\t.math {\n\t\tfont-size: .85rem !important;\n\t}\n\tarticle {\n\t\tborder-bottom-style: none !important;\n\t}\n}\n\n.hljs{display:block;color:#333333;overflow-x:auto}.hljs-comment,.hljs-meta{color:#969896}.hljs-string,.hljs-variable,.hljs-template-variable,.hljs-strong,.hljs-emphasis,.hljs-quote{color:#df5000}.hljs-keyword,.hljs-selector-tag,.hljs-type{color:#a71d5d}.hljs-literal,.hljs-symbol,.hljs-bullet,.hljs-attribute{color:#0086b3}.hljs-section,.hljs-name{color:#63a35c}.hljs-tag{color:#333333}.hljs-title,.hljs-attr,.hljs-selector-id,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo{color:#795da3}.hljs-addition{color:#55a532;background-color:#eaffea}.hljs-deletion{color:#bd2c00;background-color:#ffecec}.hljs-link{text-decoration:underline}\n"
  },
  {
    "path": "static/js/abcjs_basic_5.6.3-min.js",
    "content": "/*! abcjs_basic v5.6.3 Copyright © 2009-2018 Paul Rosen and Gregory Dyke (http://abcjs.net) */\n/*! For license information please see abcjs_basic_5.6.3-min.js.LICENSE */\n!function(t){var e={};function i(r){if(e[r])return e[r].exports;var s=e[r]={i:r,l:!1,exports:{}};return t[r].call(s.exports,s,s.exports,i),s.l=!0,s.exports}i.m=t,i.c=e,i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=15)}([function(t,e,i){\"use strict\";var r={clone:function(t){var e={};for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},cloneArray:function(t){for(var e=[],i=0;i<t.length;i++)e.push(r.clone(t[i]));return e},cloneHashOfHash:function(t){var e={};for(var i in t)t.hasOwnProperty(i)&&(e[i]=r.clone(t[i]));return e},cloneHashOfArrayOfHash:function(t){var e={};for(var i in t)t.hasOwnProperty(i)&&(e[i]=r.cloneArray(t[i]));return e},gsub:function(t,e,i){return t.split(e).join(i)},strip:function(t){return t.replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")},startsWith:function(t,e){return 0===t.indexOf(e)},endsWith:function(t,e){var i=t.length-e.length;return i>=0&&t.lastIndexOf(e)===i},each:function(t,e,i){for(var r=0,s=t.length;r<s;r++)e.apply(i,[t[r],r])},last:function(t){return 0===t.length?null:t[t.length-1]},compact:function(t){for(var e=[],i=0;i<t.length;i++)t[i]&&e.push(t[i]);return e},detect:function(t,e){for(var i=0;i<t.length;i++)if(e(t[i]))return!0;return!1}};[Element.prototype,CharacterData.prototype,DocumentType.prototype].forEach(function(t){t.hasOwnProperty(\"remove\")||Object.defineProperty(t,\"remove\",{configurable:!0,enumerable:!0,writable:!0,value:function(){null!==this.parentNode&&this.parentNode.removeChild(this)}})}),t.exports=r},function(t,e,i){\"use strict\";var r={FONTEM:360,FONTSIZE:30};r.STEP=93*r.FONTSIZE/720,r.SPACE=10,r.TOPNOTE=15,r.STAVEHEIGHT=100,r.INDENT=50,t.exports=r},function(t,e,i){\"use strict\";i(3);var r=function(t,e,i,r,s){switch(s=s||{},this.x=0,this.c=t,this.dx=e,this.w=i,this.pitch=r,this.scalex=s.scalex||1,this.scaley=s.scaley||1,this.type=s.type||\"symbol\",this.pitch2=s.pitch2,this.linewidth=s.linewidth,this.klass=s.klass,this.top=r,void 0!==this.pitch2&&this.pitch2>this.top&&(this.top=this.pitch2),this.bottom=r,void 0!==this.pitch2&&this.pitch2<this.bottom&&(this.bottom=this.pitch2),s.thickness&&(this.top+=s.thickness/2,this.bottom-=s.thickness/2),s.stemHeight&&(s.stemHeight>0?this.top+=s.stemHeight:this.bottom+=s.stemHeight),this.height=s.height?s.height:4,this.centerVertically=!1,this.type){case\"debug\":this.chordHeightAbove=this.height;break;case\"lyric\":s.position&&\"below\"===s.position?this.lyricHeightBelow=this.height:this.lyricHeightAbove=this.height;break;case\"chord\":s.position&&\"below\"===s.position?this.chordHeightBelow=this.height:this.chordHeightAbove=this.height;break;case\"text\":void 0===this.pitch?s.position&&\"below\"===s.position?this.chordHeightBelow=this.height:this.chordHeightAbove=this.height:this.centerVertically=!0;break;case\"part\":this.partHeightAbove=this.height}};r.prototype.setX=function(t){this.x=t+this.dx},r.prototype.setUpperAndLowerElements=function(t){switch(this.type){case\"part\":this.top=t.partHeightAbove+this.height,this.bottom=t.partHeightAbove;break;case\"text\":case\"chord\":this.chordHeightAbove?(this.top=t.chordHeightAbove,this.bottom=t.chordHeightAbove):(this.top=t.chordHeightBelow,this.bottom=t.chordHeightBelow);break;case\"lyric\":this.lyricHeightAbove?(this.top=t.lyricHeightAbove,this.bottom=t.lyricHeightAbove):(this.top=t.lyricHeightBelow,this.bottom=t.lyricHeightBelow);break;case\"debug\":this.top=t.chordHeightAbove,this.bottom=t.chordHeightAbove}void 0!==this.pitch&&void 0!==this.top||window.console.error(\"RelativeElement position not set.\",this.type,this.pitch,this.top,t)},r.prototype.draw=function(t,e){void 0===this.pitch&&window.console.error(this.type+\" Relative Element y-coordinate not set.\");var i=t.calcY(this.pitch);switch(this.type){case\"symbol\":if(null===this.c)return null;var r=\"symbol\";this.klass&&(r+=\" \"+this.klass),this.graphelem=t.printSymbol(this.x,this.pitch,this.c,this.scalex,this.scaley,t.addClasses(r));break;case\"debug\":this.graphelem=t.renderText(this.x,t.calcY(15),\"\"+this.c,\"debugfont\",\"debug-msg\",\"start\");break;case\"barNumber\":this.graphelem=t.renderText(this.x,i,\"\"+this.c,\"measurefont\",\"bar-number\",\"middle\");break;case\"lyric\":this.graphelem=t.renderText(this.x,i,this.c,\"vocalfont\",\"lyric\",\"middle\");break;case\"chord\":this.graphelem=t.renderText(this.x,i,this.c,\"gchordfont\",\"chord\",\"middle\");break;case\"decoration\":this.graphelem=t.renderText(this.x,i,this.c,\"annotationfont\",\"annotation\",\"middle\",!0);break;case\"text\":this.graphelem=t.renderText(this.x,i,this.c,\"annotationfont\",\"annotation\",\"start\",this.centerVertically);break;case\"multimeasure-text\":this.graphelem=t.renderText(this.x+this.w/2,i,this.c,\"tempofont\",\"rest\",\"middle\",!1);break;case\"part\":this.graphelem=t.renderText(this.x,i,this.c,\"partsfont\",\"part\",\"start\");break;case\"bar\":this.graphelem=t.printStem(this.x,this.linewidth,i,e||t.calcY(this.pitch2));break;case\"stem\":this.graphelem=t.printStem(this.x,this.linewidth,i,t.calcY(this.pitch2));break;case\"ledger\":this.graphelem=t.printStaveLine(this.x,this.x+this.w,this.pitch)}return 1!==this.scalex&&this.graphelem&&t.scaleExistingElem(this.graphelem,this.scalex,this.scaley,this.x,i),this.graphelem},t.exports=r},function(t,e,i){\"use strict\";var r=i(1);t.exports=new function(){var t={0:{d:[[\"M\",4.83,-14.97],[\"c\",.33,-.03,1.11,0,1.47,.06],[\"c\",1.68,.36,2.97,1.59,3.78,3.6],[\"c\",1.2,2.97,.81,6.96,-.9,9.27],[\"c\",-.78,1.08,-1.71,1.71,-2.91,1.95],[\"c\",-.45,.09,-1.32,.09,-1.77,0],[\"c\",-.81,-.18,-1.47,-.51,-2.07,-1.02],[\"c\",-2.34,-2.07,-3.15,-6.72,-1.74,-10.2],[\"c\",.87,-2.16,2.28,-3.42,4.14,-3.66],[\"z\"],[\"m\",1.11,.87],[\"c\",-.21,-.06,-.69,-.09,-.87,-.06],[\"c\",-.54,.12,-.87,.42,-1.17,.99],[\"c\",-.36,.66,-.51,1.56,-.6,3],[\"c\",-.03,.75,-.03,4.59,0,5.31],[\"c\",.09,1.5,.27,2.4,.6,3.06],[\"c\",.24,.48,.57,.78,.96,.9],[\"c\",.27,.09,.78,.09,1.05,0],[\"c\",.39,-.12,.72,-.42,.96,-.9],[\"c\",.33,-.66,.51,-1.56,.6,-3.06],[\"c\",.03,-.72,.03,-4.56,0,-5.31],[\"c\",-.09,-1.47,-.27,-2.37,-.6,-3.03],[\"c\",-.24,-.48,-.54,-.78,-.93,-.9],[\"z\"]],w:10.78,h:14.959},1:{d:[[\"M\",3.3,-15.06],[\"c\",.06,-.06,.21,-.03,.66,.15],[\"c\",.81,.39,1.08,.39,1.83,.03],[\"c\",.21,-.09,.39,-.15,.42,-.15],[\"c\",.12,0,.21,.09,.27,.21],[\"c\",.06,.12,.06,.33,.06,5.94],[\"c\",0,3.93,0,5.85,.03,6.03],[\"c\",.06,.36,.15,.69,.27,.96],[\"c\",.36,.75,.93,1.17,1.68,1.26],[\"c\",.3,.03,.39,.09,.39,.3],[\"c\",0,.15,-.03,.18,-.09,.24],[\"c\",-.06,.06,-.09,.06,-.48,.06],[\"c\",-.42,0,-.69,-.03,-2.1,-.24],[\"c\",-.9,-.15,-1.77,-.15,-2.67,0],[\"c\",-1.41,.21,-1.68,.24,-2.1,.24],[\"c\",-.39,0,-.42,0,-.48,-.06],[\"c\",-.06,-.06,-.06,-.09,-.06,-.24],[\"c\",0,-.21,.06,-.27,.36,-.3],[\"c\",.75,-.09,1.32,-.51,1.68,-1.26],[\"c\",.12,-.27,.21,-.6,.27,-.96],[\"c\",.03,-.18,.03,-1.59,.03,-4.29],[\"c\",0,-3.87,0,-4.05,-.06,-4.14],[\"c\",-.09,-.15,-.18,-.24,-.39,-.24],[\"c\",-.12,0,-.15,.03,-.21,.06],[\"c\",-.03,.06,-.45,.99,-.96,2.13],[\"c\",-.48,1.14,-.9,2.1,-.93,2.16],[\"c\",-.06,.15,-.21,.24,-.33,.24],[\"c\",-.24,0,-.42,-.18,-.42,-.39],[\"c\",0,-.06,3.27,-7.62,3.33,-7.74],[\"z\"]],w:8.94,h:15.058},2:{d:[[\"M\",4.23,-14.97],[\"c\",.57,-.06,1.68,0,2.34,.18],[\"c\",.69,.18,1.5,.54,2.01,.9],[\"c\",1.35,.96,1.95,2.25,1.77,3.81],[\"c\",-.15,1.35,-.66,2.34,-1.68,3.15],[\"c\",-.6,.48,-1.44,.93,-3.12,1.65],[\"c\",-1.32,.57,-1.8,.81,-2.37,1.14],[\"c\",-.57,.33,-.57,.33,-.24,.27],[\"c\",.39,-.09,1.26,-.09,1.68,0],[\"c\",.72,.15,1.41,.45,2.1,.9],[\"c\",.99,.63,1.86,.87,2.55,.75],[\"c\",.24,-.06,.42,-.15,.57,-.3],[\"c\",.12,-.09,.3,-.42,.3,-.51],[\"c\",0,-.09,.12,-.21,.24,-.24],[\"c\",.18,-.03,.39,.12,.39,.3],[\"c\",0,.12,-.15,.57,-.3,.87],[\"c\",-.54,1.02,-1.56,1.74,-2.79,2.01],[\"c\",-.42,.09,-1.23,.09,-1.62,.03],[\"c\",-.81,-.18,-1.32,-.45,-2.01,-1.11],[\"c\",-.45,-.45,-.63,-.57,-.96,-.69],[\"c\",-.84,-.27,-1.89,.12,-2.25,.9],[\"c\",-.12,.21,-.21,.54,-.21,.72],[\"c\",0,.12,-.12,.21,-.27,.24],[\"c\",-.15,0,-.27,-.03,-.33,-.15],[\"c\",-.09,-.21,.09,-1.08,.33,-1.71],[\"c\",.24,-.66,.66,-1.26,1.29,-1.89],[\"c\",.45,-.45,.9,-.81,1.92,-1.56],[\"c\",1.29,-.93,1.89,-1.44,2.34,-1.98],[\"c\",.87,-1.05,1.26,-2.19,1.2,-3.63],[\"c\",-.06,-1.29,-.39,-2.31,-.96,-2.91],[\"c\",-.36,-.33,-.72,-.51,-1.17,-.54],[\"c\",-.84,-.03,-1.53,.42,-1.59,1.05],[\"c\",-.03,.33,.12,.6,.57,1.14],[\"c\",.45,.54,.54,.87,.42,1.41],[\"c\",-.15,.63,-.54,1.11,-1.08,1.38],[\"c\",-.63,.33,-1.2,.33,-1.83,0],[\"c\",-.24,-.12,-.33,-.18,-.54,-.39],[\"c\",-.18,-.18,-.27,-.3,-.36,-.51],[\"c\",-.24,-.45,-.27,-.84,-.21,-1.38],[\"c\",.12,-.75,.45,-1.41,1.02,-1.98],[\"c\",.72,-.72,1.74,-1.17,2.85,-1.32],[\"z\"]],w:10.764,h:14.97},3:{d:[[\"M\",3.78,-14.97],[\"c\",.3,-.03,1.41,0,1.83,.06],[\"c\",2.22,.3,3.51,1.32,3.72,2.91],[\"c\",.03,.33,.03,1.26,-.03,1.65],[\"c\",-.12,.84,-.48,1.47,-1.05,1.77],[\"c\",-.27,.15,-.36,.24,-.45,.39],[\"c\",-.09,.21,-.09,.36,0,.57],[\"c\",.09,.15,.18,.24,.51,.39],[\"c\",.75,.42,1.23,1.14,1.41,2.13],[\"c\",.06,.42,.06,1.35,0,1.71],[\"c\",-.18,.81,-.48,1.38,-1.02,1.95],[\"c\",-.75,.72,-1.8,1.2,-3.18,1.38],[\"c\",-.42,.06,-1.56,.06,-1.95,0],[\"c\",-1.89,-.33,-3.18,-1.29,-3.51,-2.64],[\"c\",-.03,-.12,-.03,-.33,-.03,-.6],[\"c\",0,-.36,0,-.42,.06,-.63],[\"c\",.12,-.3,.27,-.51,.51,-.75],[\"c\",.24,-.24,.45,-.39,.75,-.51],[\"c\",.21,-.06,.27,-.06,.6,-.06],[\"c\",.33,0,.39,0,.6,.06],[\"c\",.3,.12,.51,.27,.75,.51],[\"c\",.36,.33,.57,.75,.6,1.2],[\"c\",0,.21,0,.27,-.06,.42],[\"c\",-.09,.18,-.12,.24,-.54,.54],[\"c\",-.51,.36,-.63,.54,-.6,.87],[\"c\",.06,.54,.54,.9,1.38,.99],[\"c\",.36,.06,.72,.03,.96,-.06],[\"c\",.81,-.27,1.29,-1.23,1.44,-2.79],[\"c\",.03,-.45,.03,-1.95,-.03,-2.37],[\"c\",-.09,-.75,-.33,-1.23,-.75,-1.44],[\"c\",-.33,-.18,-.45,-.18,-1.98,-.18],[\"c\",-1.35,0,-1.41,0,-1.5,-.06],[\"c\",-.18,-.12,-.24,-.39,-.12,-.6],[\"c\",.12,-.15,.15,-.15,1.68,-.15],[\"c\",1.5,0,1.62,0,1.89,-.15],[\"c\",.18,-.09,.42,-.36,.54,-.57],[\"c\",.18,-.42,.27,-.9,.3,-1.95],[\"c\",.03,-1.2,-.06,-1.8,-.36,-2.37],[\"c\",-.24,-.48,-.63,-.81,-1.14,-.96],[\"c\",-.3,-.06,-1.08,-.06,-1.38,.03],[\"c\",-.6,.15,-.9,.42,-.96,.84],[\"c\",-.03,.3,.06,.45,.63,.84],[\"c\",.33,.24,.42,.39,.45,.63],[\"c\",.03,.72,-.57,1.5,-1.32,1.65],[\"c\",-1.05,.27,-2.1,-.57,-2.1,-1.65],[\"c\",0,-.45,.15,-.96,.39,-1.38],[\"c\",.12,-.21,.54,-.63,.81,-.81],[\"c\",.57,-.42,1.38,-.69,2.25,-.81],[\"z\"]],w:9.735,h:14.967},4:{d:[[\"M\",8.64,-14.94],[\"c\",.27,-.09,.42,-.12,.54,-.03],[\"c\",.09,.06,.15,.21,.15,.3],[\"c\",-.03,.06,-1.92,2.31,-4.23,5.04],[\"c\",-2.31,2.73,-4.23,4.98,-4.26,5.01],[\"c\",-.03,.06,.12,.06,2.55,.06],[\"l\",2.61,0],[\"l\",0,-2.37],[\"c\",0,-2.19,.03,-2.37,.06,-2.46],[\"c\",.03,-.06,.21,-.18,.57,-.42],[\"c\",1.08,-.72,1.38,-1.08,1.86,-2.16],[\"c\",.12,-.3,.24,-.54,.27,-.57],[\"c\",.12,-.12,.39,-.06,.45,.12],[\"c\",.06,.09,.06,.57,.06,3.96],[\"l\",0,3.9],[\"l\",1.08,0],[\"c\",1.05,0,1.11,0,1.2,.06],[\"c\",.24,.15,.24,.54,0,.69],[\"c\",-.09,.06,-.15,.06,-1.2,.06],[\"l\",-1.08,0],[\"l\",0,.33],[\"c\",0,.57,.09,1.11,.3,1.53],[\"c\",.36,.75,.93,1.17,1.68,1.26],[\"c\",.3,.03,.39,.09,.39,.3],[\"c\",0,.15,-.03,.18,-.09,.24],[\"c\",-.06,.06,-.09,.06,-.48,.06],[\"c\",-.42,0,-.69,-.03,-2.1,-.24],[\"c\",-.9,-.15,-1.77,-.15,-2.67,0],[\"c\",-1.41,.21,-1.68,.24,-2.1,.24],[\"c\",-.39,0,-.42,0,-.48,-.06],[\"c\",-.06,-.06,-.06,-.09,-.06,-.24],[\"c\",0,-.21,.06,-.27,.36,-.3],[\"c\",.75,-.09,1.32,-.51,1.68,-1.26],[\"c\",.21,-.42,.3,-.96,.3,-1.53],[\"l\",0,-.33],[\"l\",-2.7,0],[\"c\",-2.91,0,-2.85,0,-3.09,-.15],[\"c\",-.18,-.12,-.3,-.39,-.27,-.54],[\"c\",.03,-.06,.18,-.24,.33,-.45],[\"c\",.75,-.9,1.59,-2.07,2.13,-3.03],[\"c\",.33,-.54,.84,-1.62,1.05,-2.16],[\"c\",.57,-1.41,.84,-2.64,.9,-4.05],[\"c\",.03,-.63,.06,-.72,.24,-.81],[\"l\",.12,-.06],[\"l\",.45,.12],[\"c\",.66,.18,1.02,.24,1.47,.27],[\"c\",.6,.03,1.23,-.09,2.01,-.33],[\"z\"]],w:11.795,h:14.994},5:{d:[[\"M\",1.02,-14.94],[\"c\",.12,-.09,.03,-.09,1.08,.06],[\"c\",2.49,.36,4.35,.36,6.96,-.06],[\"c\",.57,-.09,.66,-.06,.81,.06],[\"c\",.15,.18,.12,.24,-.15,.51],[\"c\",-1.29,1.26,-3.24,2.04,-5.58,2.31],[\"c\",-.6,.09,-1.2,.12,-1.71,.12],[\"c\",-.39,0,-.45,0,-.57,.06],[\"c\",-.09,.06,-.15,.12,-.21,.21],[\"l\",-.06,.12],[\"l\",0,1.65],[\"l\",0,1.65],[\"l\",.21,-.21],[\"c\",.66,-.57,1.41,-.96,2.19,-1.14],[\"c\",.33,-.06,1.41,-.06,1.95,0],[\"c\",2.61,.36,4.02,1.74,4.26,4.14],[\"c\",.03,.45,.03,1.08,-.03,1.44],[\"c\",-.18,1.02,-.78,2.01,-1.59,2.7],[\"c\",-.72,.57,-1.62,1.02,-2.49,1.2],[\"c\",-1.38,.27,-3.03,.06,-4.2,-.54],[\"c\",-1.08,-.54,-1.71,-1.32,-1.86,-2.28],[\"c\",-.09,-.69,.09,-1.29,.57,-1.74],[\"c\",.24,-.24,.45,-.39,.75,-.51],[\"c\",.21,-.06,.27,-.06,.6,-.06],[\"c\",.33,0,.39,0,.6,.06],[\"c\",.3,.12,.51,.27,.75,.51],[\"c\",.36,.33,.57,.75,.6,1.2],[\"c\",0,.21,0,.27,-.06,.42],[\"c\",-.09,.18,-.12,.24,-.54,.54],[\"c\",-.18,.12,-.36,.3,-.42,.33],[\"c\",-.36,.42,-.18,.99,.36,1.26],[\"c\",.51,.27,1.47,.36,2.01,.27],[\"c\",.93,-.21,1.47,-1.17,1.65,-2.91],[\"c\",.06,-.45,.06,-1.89,0,-2.31],[\"c\",-.15,-1.2,-.51,-2.1,-1.05,-2.55],[\"c\",-.21,-.18,-.54,-.36,-.81,-.39],[\"c\",-.3,-.06,-.84,-.03,-1.26,.06],[\"c\",-.93,.18,-1.65,.6,-2.16,1.2],[\"c\",-.15,.21,-.27,.3,-.39,.3],[\"c\",-.15,0,-.3,-.09,-.36,-.18],[\"c\",-.06,-.09,-.06,-.15,-.06,-3.66],[\"c\",0,-3.39,0,-3.57,.06,-3.66],[\"c\",.03,-.06,.09,-.15,.15,-.18],[\"z\"]],w:10.212,h:14.997},6:{d:[[\"M\",4.98,-14.97],[\"c\",.36,-.03,1.2,0,1.59,.06],[\"c\",.9,.15,1.68,.51,2.25,1.05],[\"c\",.57,.51,.87,1.23,.84,1.98],[\"c\",-.03,.51,-.21,.9,-.6,1.26],[\"c\",-.24,.24,-.45,.39,-.75,.51],[\"c\",-.21,.06,-.27,.06,-.6,.06],[\"c\",-.33,0,-.39,0,-.6,-.06],[\"c\",-.3,-.12,-.51,-.27,-.75,-.51],[\"c\",-.39,-.36,-.57,-.78,-.57,-1.26],[\"c\",0,-.27,0,-.3,.09,-.42],[\"c\",.03,-.09,.18,-.21,.3,-.3],[\"c\",.12,-.09,.3,-.21,.39,-.27],[\"c\",.09,-.06,.21,-.18,.27,-.24],[\"c\",.06,-.12,.09,-.15,.09,-.33],[\"c\",0,-.18,-.03,-.24,-.09,-.36],[\"c\",-.24,-.39,-.75,-.6,-1.38,-.57],[\"c\",-.54,.03,-.9,.18,-1.23,.48],[\"c\",-.81,.72,-1.08,2.16,-.96,5.37],[\"l\",0,.63],[\"l\",.3,-.12],[\"c\",.78,-.27,1.29,-.33,2.1,-.27],[\"c\",1.47,.12,2.49,.54,3.27,1.29],[\"c\",.48,.51,.81,1.11,.96,1.89],[\"c\",.06,.27,.06,.42,.06,.93],[\"c\",0,.54,0,.69,-.06,.96],[\"c\",-.15,.78,-.48,1.38,-.96,1.89],[\"c\",-.54,.51,-1.17,.87,-1.98,1.08],[\"c\",-1.14,.3,-2.4,.33,-3.24,.03],[\"c\",-1.5,-.48,-2.64,-1.89,-3.27,-4.02],[\"c\",-.36,-1.23,-.51,-2.82,-.42,-4.08],[\"c\",.3,-3.66,2.28,-6.3,4.95,-6.66],[\"z\"],[\"m\",.66,7.41],[\"c\",-.27,-.09,-.81,-.12,-1.08,-.06],[\"c\",-.72,.18,-1.08,.69,-1.23,1.71],[\"c\",-.06,.54,-.06,3,0,3.54],[\"c\",.18,1.26,.72,1.77,1.8,1.74],[\"c\",.39,-.03,.63,-.09,.9,-.27],[\"c\",.66,-.42,.9,-1.32,.9,-3.24],[\"c\",0,-2.22,-.36,-3.12,-1.29,-3.42],[\"z\"]],w:9.956,h:14.982},7:{d:[[\"M\",.21,-14.97],[\"c\",.21,-.06,.45,0,.54,.15],[\"c\",.06,.09,.06,.15,.06,.39],[\"c\",0,.24,0,.33,.06,.42],[\"c\",.06,.12,.21,.24,.27,.24],[\"c\",.03,0,.12,-.12,.24,-.21],[\"c\",.96,-1.2,2.58,-1.35,3.99,-.42],[\"c\",.15,.12,.42,.3,.54,.45],[\"c\",.48,.39,.81,.57,1.29,.6],[\"c\",.69,.03,1.5,-.3,2.13,-.87],[\"c\",.09,-.09,.27,-.3,.39,-.45],[\"c\",.12,-.15,.24,-.27,.3,-.3],[\"c\",.18,-.06,.39,.03,.51,.21],[\"c\",.06,.18,.06,.24,-.27,.72],[\"c\",-.18,.24,-.54,.78,-.78,1.17],[\"c\",-2.37,3.54,-3.54,6.27,-3.87,9],[\"c\",-.03,.33,-.03,.66,-.03,1.26],[\"c\",0,.9,0,1.08,.15,1.89],[\"c\",.06,.45,.06,.48,.03,.6],[\"c\",-.06,.09,-.21,.21,-.3,.21],[\"c\",-.03,0,-.27,-.06,-.54,-.15],[\"c\",-.84,-.27,-1.11,-.3,-1.65,-.3],[\"c\",-.57,0,-.84,.03,-1.56,.27],[\"c\",-.6,.18,-.69,.21,-.81,.15],[\"c\",-.12,-.06,-.21,-.18,-.21,-.3],[\"c\",0,-.15,.6,-1.44,1.2,-2.61],[\"c\",1.14,-2.22,2.73,-4.68,5.1,-8.01],[\"c\",.21,-.27,.36,-.48,.33,-.48],[\"c\",0,0,-.12,.06,-.27,.12],[\"c\",-.54,.3,-.99,.39,-1.56,.39],[\"c\",-.75,.03,-1.2,-.18,-1.83,-.75],[\"c\",-.99,-.9,-1.83,-1.17,-2.31,-.72],[\"c\",-.18,.15,-.36,.51,-.45,.84],[\"c\",-.06,.24,-.06,.33,-.09,1.98],[\"c\",0,1.62,-.03,1.74,-.06,1.8],[\"c\",-.15,.24,-.54,.24,-.69,0],[\"c\",-.06,-.09,-.06,-.15,-.06,-3.57],[\"c\",0,-3.42,0,-3.48,.06,-3.57],[\"c\",.03,-.06,.09,-.12,.15,-.15],[\"z\"]],w:10.561,h:15.093},8:{d:[[\"M\",4.98,-14.97],[\"c\",.33,-.03,1.02,-.03,1.32,0],[\"c\",1.32,.12,2.49,.6,3.21,1.32],[\"c\",.39,.39,.66,.81,.78,1.29],[\"c\",.09,.36,.09,1.08,0,1.44],[\"c\",-.21,.84,-.66,1.59,-1.59,2.55],[\"l\",-.3,.3],[\"l\",.27,.18],[\"c\",1.47,.93,2.31,2.31,2.25,3.75],[\"c\",-.03,.75,-.24,1.35,-.63,1.95],[\"c\",-.45,.66,-1.02,1.14,-1.83,1.53],[\"c\",-1.8,.87,-4.2,.87,-6,.03],[\"c\",-1.62,-.78,-2.52,-2.16,-2.46,-3.66],[\"c\",.06,-.99,.54,-1.77,1.8,-2.97],[\"c\",.54,-.51,.54,-.54,.48,-.57],[\"c\",-.39,-.27,-.96,-.78,-1.2,-1.14],[\"c\",-.75,-1.11,-.87,-2.4,-.3,-3.6],[\"c\",.69,-1.35,2.25,-2.25,4.2,-2.4],[\"z\"],[\"m\",1.53,.69],[\"c\",-.42,-.09,-1.11,-.12,-1.38,-.06],[\"c\",-.3,.06,-.6,.18,-.81,.3],[\"c\",-.21,.12,-.6,.51,-.72,.72],[\"c\",-.51,.87,-.42,1.89,.21,2.52],[\"c\",.21,.21,.36,.3,1.95,1.23],[\"c\",.96,.54,1.74,.99,1.77,1.02],[\"c\",.09,0,.63,-.6,.99,-1.11],[\"c\",.21,-.36,.48,-.87,.57,-1.23],[\"c\",.06,-.24,.06,-.36,.06,-.72],[\"c\",0,-.45,-.03,-.66,-.15,-.99],[\"c\",-.39,-.81,-1.29,-1.44,-2.49,-1.68],[\"z\"],[\"m\",-1.44,8.07],[\"l\",-1.89,-1.08],[\"c\",-.03,0,-.18,.15,-.39,.33],[\"c\",-1.2,1.08,-1.65,1.95,-1.59,3],[\"c\",.09,1.59,1.35,2.85,3.21,3.24],[\"c\",.33,.06,.45,.06,.93,.06],[\"c\",.63,0,.81,-.03,1.29,-.27],[\"c\",.9,-.42,1.47,-1.41,1.41,-2.4],[\"c\",-.06,-.66,-.39,-1.29,-.9,-1.65],[\"c\",-.12,-.09,-1.05,-.63,-2.07,-1.23],[\"z\"]],w:10.926,h:14.989},9:{d:[[\"M\",4.23,-14.97],[\"c\",.42,-.03,1.29,0,1.62,.06],[\"c\",.51,.12,.93,.3,1.38,.57],[\"c\",1.53,1.02,2.52,3.24,2.73,5.94],[\"c\",.18,2.55,-.48,4.98,-1.83,6.57],[\"c\",-1.05,1.26,-2.4,1.89,-3.93,1.83],[\"c\",-1.23,-.06,-2.31,-.45,-3.03,-1.14],[\"c\",-.57,-.51,-.87,-1.23,-.84,-1.98],[\"c\",.03,-.51,.21,-.9,.6,-1.26],[\"c\",.24,-.24,.45,-.39,.75,-.51],[\"c\",.21,-.06,.27,-.06,.6,-.06],[\"c\",.33,0,.39,0,.6,.06],[\"c\",.3,.12,.51,.27,.75,.51],[\"c\",.39,.36,.57,.78,.57,1.26],[\"c\",0,.27,0,.3,-.09,.42],[\"c\",-.03,.09,-.18,.21,-.3,.3],[\"c\",-.12,.09,-.3,.21,-.39,.27],[\"c\",-.09,.06,-.21,.18,-.27,.24],[\"c\",-.06,.12,-.06,.15,-.06,.33],[\"c\",0,.18,0,.24,.06,.36],[\"c\",.24,.39,.75,.6,1.38,.57],[\"c\",.54,-.03,.9,-.18,1.23,-.48],[\"c\",.81,-.72,1.08,-2.16,.96,-5.37],[\"l\",0,-.63],[\"l\",-.3,.12],[\"c\",-.78,.27,-1.29,.33,-2.1,.27],[\"c\",-1.47,-.12,-2.49,-.54,-3.27,-1.29],[\"c\",-.48,-.51,-.81,-1.11,-.96,-1.89],[\"c\",-.06,-.27,-.06,-.42,-.06,-.96],[\"c\",0,-.51,0,-.66,.06,-.93],[\"c\",.15,-.78,.48,-1.38,.96,-1.89],[\"c\",.15,-.12,.33,-.27,.42,-.36],[\"c\",.69,-.51,1.62,-.81,2.76,-.93],[\"z\"],[\"m\",1.17,.66],[\"c\",-.21,-.06,-.57,-.06,-.81,-.03],[\"c\",-.78,.12,-1.26,.69,-1.41,1.74],[\"c\",-.12,.63,-.15,1.95,-.09,2.79],[\"c\",.12,1.71,.63,2.4,1.77,2.46],[\"c\",1.08,.03,1.62,-.48,1.8,-1.74],[\"c\",.06,-.54,.06,-3,0,-3.54],[\"c\",-.15,-1.05,-.51,-1.53,-1.26,-1.68],[\"z\"]],w:9.959,h:14.986},\"rests.multimeasure\":{d:[[\"M\",0,-4],[\"l\",0,16],[\"l\",1,0],[\"l\",0,-5],[\"l\",40,0],[\"l\",0,5],[\"l\",1,0],[\"l\",0,-16],[\"l\",-1,0],[\"l\",0,5],[\"l\",-40,0],[\"l\",0,-5],[\"z\"]],w:42,h:18},\"rests.whole\":{d:[[\"M\",.06,.03],[\"l\",.09,-.06],[\"l\",5.46,0],[\"l\",5.49,0],[\"l\",.09,.06],[\"l\",.06,.09],[\"l\",0,2.19],[\"l\",0,2.19],[\"l\",-.06,.09],[\"l\",-.09,.06],[\"l\",-5.49,0],[\"l\",-5.46,0],[\"l\",-.09,-.06],[\"l\",-.06,-.09],[\"l\",0,-2.19],[\"l\",0,-2.19],[\"z\"]],w:11.25,h:4.68},\"rests.half\":{d:[[\"M\",.06,-4.62],[\"l\",.09,-.06],[\"l\",5.46,0],[\"l\",5.49,0],[\"l\",.09,.06],[\"l\",.06,.09],[\"l\",0,2.19],[\"l\",0,2.19],[\"l\",-.06,.09],[\"l\",-.09,.06],[\"l\",-5.49,0],[\"l\",-5.46,0],[\"l\",-.09,-.06],[\"l\",-.06,-.09],[\"l\",0,-2.19],[\"l\",0,-2.19],[\"z\"]],w:11.25,h:4.68},\"rests.quarter\":{d:[[\"M\",1.89,-11.82],[\"c\",.12,-.06,.24,-.06,.36,-.03],[\"c\",.09,.06,4.74,5.58,4.86,5.82],[\"c\",.21,.39,.15,.78,-.15,1.26],[\"c\",-.24,.33,-.72,.81,-1.62,1.56],[\"c\",-.45,.36,-.87,.75,-.96,.84],[\"c\",-.93,.99,-1.14,2.49,-.6,3.63],[\"c\",.18,.39,.27,.48,1.32,1.68],[\"c\",1.92,2.25,1.83,2.16,1.83,2.34],[\"c\",0,.18,-.18,.36,-.36,.39],[\"c\",-.15,0,-.27,-.06,-.48,-.27],[\"c\",-.75,-.75,-2.46,-1.29,-3.39,-1.08],[\"c\",-.45,.09,-.69,.27,-.9,.69],[\"c\",-.12,.3,-.21,.66,-.24,1.14],[\"c\",-.03,.66,.09,1.35,.3,2.01],[\"c\",.15,.42,.24,.66,.45,.96],[\"c\",.18,.24,.18,.33,.03,.42],[\"c\",-.12,.06,-.18,.03,-.45,-.3],[\"c\",-1.08,-1.38,-2.07,-3.36,-2.4,-4.83],[\"c\",-.27,-1.05,-.15,-1.77,.27,-2.07],[\"c\",.21,-.12,.42,-.15,.87,-.15],[\"c\",.87,.06,2.1,.39,3.3,.9],[\"l\",.39,.18],[\"l\",-1.65,-1.95],[\"c\",-2.52,-2.97,-2.61,-3.09,-2.7,-3.27],[\"c\",-.09,-.24,-.12,-.48,-.03,-.75],[\"c\",.15,-.48,.57,-.96,1.83,-2.01],[\"c\",.45,-.36,.84,-.72,.93,-.78],[\"c\",.69,-.75,1.02,-1.8,.9,-2.79],[\"c\",-.06,-.33,-.21,-.84,-.39,-1.11],[\"c\",-.09,-.15,-.45,-.6,-.81,-1.05],[\"c\",-.36,-.42,-.69,-.81,-.72,-.87],[\"c\",-.09,-.18,0,-.42,.21,-.51],[\"z\"]],w:7.888,h:21.435},\"rests.8th\":{d:[[\"M\",1.68,-6.12],[\"c\",.66,-.09,1.23,.09,1.68,.51],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.09,.33,.18,.66,.21,.72],[\"c\",.12,.27,.33,.45,.6,.48],[\"c\",.12,0,.18,0,.33,-.09],[\"c\",.39,-.18,1.32,-1.29,1.68,-1.98],[\"c\",.09,-.21,.24,-.3,.39,-.3],[\"c\",.12,0,.27,.09,.33,.18],[\"c\",.03,.06,-.27,1.11,-1.86,6.42],[\"c\",-1.02,3.48,-1.89,6.39,-1.92,6.42],[\"c\",0,.03,-.12,.12,-.24,.15],[\"c\",-.18,.09,-.21,.09,-.45,.09],[\"c\",-.24,0,-.3,0,-.48,-.06],[\"c\",-.09,-.06,-.21,-.12,-.21,-.15],[\"c\",-.06,-.03,.15,-.57,1.68,-4.92],[\"c\",.96,-2.67,1.74,-4.89,1.71,-4.89],[\"l\",-.51,.15],[\"c\",-1.08,.36,-1.74,.48,-2.55,.48],[\"c\",-.66,0,-.84,-.03,-1.32,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.33,-.45,.84,-.81,1.38,-.9],[\"z\"]],w:7.534,h:13.883},\"rests.16th\":{d:[[\"M\",3.33,-6.12],[\"c\",.66,-.09,1.23,.09,1.68,.51],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.09,.33,.18,.66,.21,.72],[\"c\",.15,.39,.57,.57,.87,.42],[\"c\",.39,-.18,1.2,-1.23,1.62,-2.07],[\"c\",.06,-.15,.24,-.24,.36,-.24],[\"c\",.12,0,.27,.09,.33,.18],[\"c\",.03,.06,-.45,1.86,-2.67,10.17],[\"c\",-1.5,5.55,-2.73,10.14,-2.76,10.17],[\"c\",-.03,.03,-.12,.12,-.24,.15],[\"c\",-.18,.09,-.21,.09,-.45,.09],[\"c\",-.24,0,-.3,0,-.48,-.06],[\"c\",-.09,-.06,-.21,-.12,-.21,-.15],[\"c\",-.06,-.03,.12,-.57,1.44,-4.92],[\"c\",.81,-2.67,1.47,-4.86,1.47,-4.89],[\"c\",-.03,0,-.27,.06,-.54,.15],[\"c\",-1.08,.36,-1.77,.48,-2.58,.48],[\"c\",-.66,0,-.84,-.03,-1.32,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.72,-1.05,2.22,-1.23,3.06,-.42],[\"c\",.3,.33,.42,.6,.6,1.38],[\"c\",.09,.45,.21,.78,.33,.9],[\"c\",.09,.09,.27,.18,.45,.21],[\"c\",.12,0,.18,0,.33,-.09],[\"c\",.33,-.15,1.02,-.93,1.41,-1.59],[\"c\",.12,-.21,.18,-.39,.39,-1.08],[\"c\",.66,-2.1,1.17,-3.84,1.17,-3.87],[\"c\",0,0,-.21,.06,-.42,.15],[\"c\",-.51,.15,-1.2,.33,-1.68,.42],[\"c\",-.33,.06,-.51,.06,-.96,.06],[\"c\",-.66,0,-.84,-.03,-1.32,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.33,-.45,.84,-.81,1.38,-.9],[\"z\"]],w:9.724,h:21.383},\"rests.32nd\":{d:[[\"M\",4.23,-13.62],[\"c\",.66,-.09,1.23,.09,1.68,.51],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.09,.33,.18,.66,.21,.72],[\"c\",.12,.27,.33,.45,.6,.48],[\"c\",.12,0,.18,0,.27,-.06],[\"c\",.33,-.21,.99,-1.11,1.44,-1.98],[\"c\",.09,-.24,.21,-.33,.39,-.33],[\"c\",.12,0,.27,.09,.33,.18],[\"c\",.03,.06,-.57,2.67,-3.21,13.89],[\"c\",-1.8,7.62,-3.3,13.89,-3.3,13.92],[\"c\",-.03,.06,-.12,.12,-.24,.18],[\"c\",-.21,.09,-.24,.09,-.48,.09],[\"c\",-.24,0,-.3,0,-.48,-.06],[\"c\",-.09,-.06,-.21,-.12,-.21,-.15],[\"c\",-.06,-.03,.09,-.57,1.23,-4.92],[\"c\",.69,-2.67,1.26,-4.86,1.29,-4.89],[\"c\",0,-.03,-.12,-.03,-.48,.12],[\"c\",-1.17,.39,-2.22,.57,-3,.54],[\"c\",-.42,-.03,-.75,-.12,-1.11,-.3],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.72,-1.05,2.22,-1.23,3.06,-.42],[\"c\",.3,.33,.42,.6,.6,1.38],[\"c\",.09,.45,.21,.78,.33,.9],[\"c\",.12,.09,.3,.18,.48,.21],[\"c\",.12,0,.18,0,.3,-.09],[\"c\",.42,-.21,1.29,-1.29,1.56,-1.89],[\"c\",.03,-.12,1.23,-4.59,1.23,-4.65],[\"c\",0,-.03,-.18,.03,-.39,.12],[\"c\",-.63,.18,-1.2,.36,-1.74,.45],[\"c\",-.39,.06,-.54,.06,-1.02,.06],[\"c\",-.66,0,-.84,-.03,-1.32,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.72,-1.05,2.22,-1.23,3.06,-.42],[\"c\",.3,.33,.42,.6,.6,1.38],[\"c\",.09,.45,.21,.78,.33,.9],[\"c\",.18,.18,.51,.27,.72,.15],[\"c\",.3,-.12,.69,-.57,1.08,-1.17],[\"c\",.42,-.6,.39,-.51,1.05,-3.03],[\"c\",.33,-1.26,.6,-2.31,.6,-2.34],[\"c\",0,0,-.21,.03,-.45,.12],[\"c\",-.57,.18,-1.14,.33,-1.62,.42],[\"c\",-.33,.06,-.51,.06,-.96,.06],[\"c\",-.66,0,-.84,-.03,-1.32,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.33,-.45,.84,-.81,1.38,-.9],[\"z\"]],w:11.373,h:28.883},\"rests.64th\":{d:[[\"M\",5.13,-13.62],[\"c\",.66,-.09,1.23,.09,1.68,.51],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.15,.63,.21,.81,.33,.96],[\"c\",.18,.21,.54,.3,.75,.18],[\"c\",.24,-.12,.63,-.66,1.08,-1.56],[\"c\",.33,-.66,.39,-.72,.6,-.72],[\"c\",.12,0,.27,.09,.33,.18],[\"c\",.03,.06,-.69,3.66,-3.54,17.64],[\"c\",-1.95,9.66,-3.57,17.61,-3.57,17.64],[\"c\",-.03,.06,-.12,.12,-.24,.18],[\"c\",-.21,.09,-.24,.09,-.48,.09],[\"c\",-.24,0,-.3,0,-.48,-.06],[\"c\",-.09,-.06,-.21,-.12,-.21,-.15],[\"c\",-.06,-.03,.06,-.57,1.05,-4.95],[\"c\",.6,-2.7,1.08,-4.89,1.08,-4.92],[\"c\",0,0,-.24,.06,-.51,.15],[\"c\",-.66,.24,-1.2,.36,-1.77,.48],[\"c\",-.42,.06,-.57,.06,-1.05,.06],[\"c\",-.69,0,-.87,-.03,-1.35,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.72,-1.05,2.22,-1.23,3.06,-.42],[\"c\",.3,.33,.42,.6,.6,1.38],[\"c\",.09,.45,.21,.78,.33,.9],[\"c\",.09,.09,.27,.18,.45,.21],[\"c\",.21,.03,.39,-.09,.72,-.42],[\"c\",.45,-.45,1.02,-1.26,1.17,-1.65],[\"c\",.03,-.09,.27,-1.14,.54,-2.34],[\"c\",.27,-1.2,.48,-2.19,.51,-2.22],[\"c\",0,-.03,-.09,-.03,-.48,.12],[\"c\",-1.17,.39,-2.22,.57,-3,.54],[\"c\",-.42,-.03,-.75,-.12,-1.11,-.3],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.36,-.54,.96,-.87,1.65,-.93],[\"c\",.54,-.03,1.02,.15,1.41,.54],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.09,.33,.18,.66,.21,.72],[\"c\",.15,.39,.57,.57,.9,.42],[\"c\",.36,-.18,1.2,-1.26,1.47,-1.89],[\"c\",.03,-.09,.3,-1.2,.57,-2.43],[\"l\",.51,-2.28],[\"l\",-.54,.18],[\"c\",-1.11,.36,-1.8,.48,-2.61,.48],[\"c\",-.66,0,-.84,-.03,-1.32,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.36,-.54,.96,-.87,1.65,-.93],[\"c\",.54,-.03,1.02,.15,1.41,.54],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.15,.63,.21,.81,.33,.96],[\"c\",.21,.21,.54,.3,.75,.18],[\"c\",.36,-.18,.93,-.93,1.29,-1.68],[\"c\",.12,-.24,.18,-.48,.63,-2.55],[\"l\",.51,-2.31],[\"c\",0,-.03,-.18,.03,-.39,.12],[\"c\",-1.14,.36,-2.1,.54,-2.82,.51],[\"c\",-.42,-.03,-.75,-.12,-1.11,-.3],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.33,-.45,.84,-.81,1.38,-.9],[\"z\"]],w:12.453,h:36.383},\"rests.128th\":{d:[[\"M\",6.03,-21.12],[\"c\",.66,-.09,1.23,.09,1.68,.51],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.09,.33,.18,.66,.21,.72],[\"c\",.12,.27,.33,.45,.6,.48],[\"c\",.21,0,.33,-.06,.54,-.36],[\"c\",.15,-.21,.54,-.93,.78,-1.47],[\"c\",.15,-.33,.18,-.39,.3,-.48],[\"c\",.18,-.09,.45,0,.51,.15],[\"c\",.03,.09,-7.11,42.75,-7.17,42.84],[\"c\",-.03,.03,-.15,.09,-.24,.15],[\"c\",-.18,.06,-.24,.06,-.45,.06],[\"c\",-.24,0,-.3,0,-.48,-.06],[\"c\",-.09,-.06,-.21,-.12,-.21,-.15],[\"c\",-.06,-.03,.03,-.57,.84,-4.98],[\"c\",.51,-2.7,.93,-4.92,.9,-4.92],[\"c\",0,0,-.15,.06,-.36,.12],[\"c\",-.78,.27,-1.62,.48,-2.31,.57],[\"c\",-.15,.03,-.54,.03,-.81,.03],[\"c\",-.66,0,-.84,-.03,-1.32,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.36,-.54,.96,-.87,1.65,-.93],[\"c\",.54,-.03,1.02,.15,1.41,.54],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.09,.33,.18,.66,.21,.72],[\"c\",.12,.27,.33,.45,.63,.48],[\"c\",.12,0,.18,0,.3,-.09],[\"c\",.42,-.21,1.14,-1.11,1.5,-1.83],[\"c\",.12,-.27,.12,-.27,.54,-2.52],[\"c\",.24,-1.23,.42,-2.25,.39,-2.25],[\"c\",0,0,-.24,.06,-.51,.18],[\"c\",-1.26,.39,-2.25,.57,-3.06,.54],[\"c\",-.42,-.03,-.75,-.12,-1.11,-.3],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.36,-.54,.96,-.87,1.65,-.93],[\"c\",.54,-.03,1.02,.15,1.41,.54],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.15,.63,.21,.81,.33,.96],[\"c\",.18,.21,.51,.3,.75,.18],[\"c\",.36,-.15,1.05,-.99,1.41,-1.77],[\"l\",.15,-.3],[\"l\",.42,-2.25],[\"c\",.21,-1.26,.42,-2.28,.39,-2.28],[\"l\",-.51,.15],[\"c\",-1.11,.39,-1.89,.51,-2.7,.51],[\"c\",-.66,0,-.84,-.03,-1.32,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.36,-.54,.96,-.87,1.65,-.93],[\"c\",.54,-.03,1.02,.15,1.41,.54],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.15,.63,.21,.81,.33,.96],[\"c\",.18,.18,.48,.27,.72,.21],[\"c\",.33,-.12,1.14,-1.26,1.41,-1.95],[\"c\",0,-.09,.21,-1.11,.45,-2.34],[\"c\",.21,-1.2,.39,-2.22,.39,-2.28],[\"c\",.03,-.03,0,-.03,-.45,.12],[\"c\",-.57,.18,-1.2,.33,-1.71,.42],[\"c\",-.3,.06,-.51,.06,-.93,.06],[\"c\",-.66,0,-.84,-.03,-1.32,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.36,-.54,.96,-.87,1.65,-.93],[\"c\",.54,-.03,1.02,.15,1.41,.54],[\"c\",.27,.3,.39,.54,.57,1.26],[\"c\",.09,.33,.18,.66,.21,.72],[\"c\",.12,.27,.33,.45,.6,.48],[\"c\",.18,0,.36,-.09,.57,-.33],[\"c\",.33,-.36,.78,-1.14,.93,-1.56],[\"c\",.03,-.12,.24,-1.2,.45,-2.4],[\"c\",.24,-1.2,.42,-2.22,.42,-2.28],[\"c\",.03,-.03,0,-.03,-.39,.09],[\"c\",-1.05,.36,-1.8,.48,-2.58,.48],[\"c\",-.63,0,-.84,-.03,-1.29,-.27],[\"c\",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],[\"c\",.33,-.45,.84,-.81,1.38,-.9],[\"z\"]],w:12.992,h:43.883},\"accidentals.sharp\":{d:[[\"M\",5.73,-11.19],[\"c\",.21,-.12,.54,-.03,.66,.24],[\"c\",.06,.12,.06,.21,.06,2.31],[\"c\",0,1.23,0,2.22,.03,2.22],[\"c\",0,0,.27,-.12,.6,-.24],[\"c\",.69,-.27,.78,-.3,.96,-.15],[\"c\",.21,.15,.21,.18,.21,1.38],[\"c\",0,1.02,0,1.11,-.06,1.2],[\"c\",-.03,.06,-.09,.12,-.12,.15],[\"c\",-.06,.03,-.42,.21,-.84,.36],[\"l\",-.75,.33],[\"l\",-.03,2.43],[\"c\",0,1.32,0,2.43,.03,2.43],[\"c\",0,0,.27,-.12,.6,-.24],[\"c\",.69,-.27,.78,-.3,.96,-.15],[\"c\",.21,.15,.21,.18,.21,1.38],[\"c\",0,1.02,0,1.11,-.06,1.2],[\"c\",-.03,.06,-.09,.12,-.12,.15],[\"c\",-.06,.03,-.42,.21,-.84,.36],[\"l\",-.75,.33],[\"l\",-.03,2.52],[\"c\",0,2.28,-.03,2.55,-.06,2.64],[\"c\",-.21,.36,-.72,.36,-.93,0],[\"c\",-.03,-.09,-.06,-.33,-.06,-2.43],[\"l\",0,-2.31],[\"l\",-1.29,.51],[\"l\",-1.26,.51],[\"l\",0,2.43],[\"c\",0,2.58,0,2.52,-.15,2.67],[\"c\",-.06,.09,-.27,.18,-.36,.18],[\"c\",-.12,0,-.33,-.09,-.39,-.18],[\"c\",-.15,-.15,-.15,-.09,-.15,-2.43],[\"c\",0,-1.23,0,-2.22,-.03,-2.22],[\"c\",0,0,-.27,.12,-.6,.24],[\"c\",-.69,.27,-.78,.3,-.96,.15],[\"c\",-.21,-.15,-.21,-.18,-.21,-1.38],[\"c\",0,-1.02,0,-1.11,.06,-1.2],[\"c\",.03,-.06,.09,-.12,.12,-.15],[\"c\",.06,-.03,.42,-.21,.84,-.36],[\"l\",.78,-.33],[\"l\",0,-2.43],[\"c\",0,-1.32,0,-2.43,-.03,-2.43],[\"c\",0,0,-.27,.12,-.6,.24],[\"c\",-.69,.27,-.78,.3,-.96,.15],[\"c\",-.21,-.15,-.21,-.18,-.21,-1.38],[\"c\",0,-1.02,0,-1.11,.06,-1.2],[\"c\",.03,-.06,.09,-.12,.12,-.15],[\"c\",.06,-.03,.42,-.21,.84,-.36],[\"l\",.78,-.33],[\"l\",0,-2.52],[\"c\",0,-2.28,.03,-2.55,.06,-2.64],[\"c\",.21,-.36,.72,-.36,.93,0],[\"c\",.03,.09,.06,.33,.06,2.43],[\"l\",.03,2.31],[\"l\",1.26,-.51],[\"l\",1.26,-.51],[\"l\",0,-2.43],[\"c\",0,-2.28,0,-2.43,.06,-2.55],[\"c\",.06,-.12,.12,-.18,.27,-.24],[\"z\"],[\"m\",-.33,10.65],[\"l\",0,-2.43],[\"l\",-1.29,.51],[\"l\",-1.26,.51],[\"l\",0,2.46],[\"l\",0,2.43],[\"l\",.09,-.03],[\"c\",.06,-.03,.63,-.27,1.29,-.51],[\"l\",1.17,-.48],[\"l\",0,-2.46],[\"z\"]],w:8.25,h:22.462},\"accidentals.halfsharp\":{d:[[\"M\",2.43,-10.05],[\"c\",.21,-.12,.54,-.03,.66,.24],[\"c\",.06,.12,.06,.21,.06,2.01],[\"c\",0,1.05,0,1.89,.03,1.89],[\"l\",.72,-.48],[\"c\",.69,-.48,.69,-.51,.87,-.51],[\"c\",.15,0,.18,.03,.27,.09],[\"c\",.21,.15,.21,.18,.21,1.41],[\"c\",0,1.11,-.03,1.14,-.09,1.23],[\"c\",-.03,.03,-.48,.39,-1.02,.75],[\"l\",-.99,.66],[\"l\",0,2.37],[\"c\",0,1.32,0,2.37,.03,2.37],[\"l\",.72,-.48],[\"c\",.69,-.48,.69,-.51,.87,-.51],[\"c\",.15,0,.18,.03,.27,.09],[\"c\",.21,.15,.21,.18,.21,1.41],[\"c\",0,1.11,-.03,1.14,-.09,1.23],[\"c\",-.03,.03,-.48,.39,-1.02,.75],[\"l\",-.99,.66],[\"l\",0,2.25],[\"c\",0,1.95,0,2.28,-.06,2.37],[\"c\",-.06,.12,-.12,.21,-.24,.27],[\"c\",-.27,.12,-.54,.03,-.69,-.24],[\"c\",-.06,-.12,-.06,-.21,-.06,-2.01],[\"c\",0,-1.05,0,-1.89,-.03,-1.89],[\"l\",-.72,.48],[\"c\",-.69,.48,-.69,.48,-.87,.48],[\"c\",-.15,0,-.18,0,-.27,-.06],[\"c\",-.21,-.15,-.21,-.18,-.21,-1.41],[\"c\",0,-1.11,.03,-1.14,.09,-1.23],[\"c\",.03,-.03,.48,-.39,1.02,-.75],[\"l\",.99,-.66],[\"l\",0,-2.37],[\"c\",0,-1.32,0,-2.37,-.03,-2.37],[\"l\",-.72,.48],[\"c\",-.69,.48,-.69,.48,-.87,.48],[\"c\",-.15,0,-.18,0,-.27,-.06],[\"c\",-.21,-.15,-.21,-.18,-.21,-1.41],[\"c\",0,-1.11,.03,-1.14,.09,-1.23],[\"c\",.03,-.03,.48,-.39,1.02,-.75],[\"l\",.99,-.66],[\"l\",0,-2.25],[\"c\",0,-2.13,0,-2.28,.06,-2.4],[\"c\",.06,-.12,.12,-.18,.27,-.24],[\"z\"]],w:5.25,h:20.174},\"accidentals.nat\":{d:[[\"M\",.21,-11.4],[\"c\",.24,-.06,.78,0,.99,.15],[\"c\",.03,.03,.03,.48,0,2.61],[\"c\",-.03,1.44,-.03,2.61,-.03,2.61],[\"c\",0,.03,.75,-.09,1.68,-.24],[\"c\",.96,-.18,1.71,-.27,1.74,-.27],[\"c\",.15,.03,.27,.15,.36,.3],[\"l\",.06,.12],[\"l\",.09,8.67],[\"c\",.09,6.96,.12,8.67,.09,8.67],[\"c\",-.03,.03,-.12,.06,-.21,.09],[\"c\",-.24,.09,-.72,.09,-.96,0],[\"c\",-.09,-.03,-.18,-.06,-.21,-.09],[\"c\",-.03,-.03,-.03,-.48,0,-2.61],[\"c\",.03,-1.44,.03,-2.61,.03,-2.61],[\"c\",0,-.03,-.75,.09,-1.68,.24],[\"c\",-.96,.18,-1.71,.27,-1.74,.27],[\"c\",-.15,-.03,-.27,-.15,-.36,-.3],[\"l\",-.06,-.15],[\"l\",-.09,-7.53],[\"c\",-.06,-4.14,-.09,-8.04,-.12,-8.67],[\"l\",0,-1.11],[\"l\",.15,-.06],[\"c\",.09,-.03,.21,-.06,.27,-.09],[\"z\"],[\"m\",3.75,8.4],[\"c\",0,-.33,0,-.42,-.03,-.42],[\"c\",-.12,0,-2.79,.45,-2.79,.48],[\"c\",-.03,0,-.09,6.3,-.09,6.33],[\"c\",.03,0,2.79,-.45,2.82,-.48],[\"c\",0,0,.09,-4.53,.09,-5.91],[\"z\"]],w:5.4,h:22.8},\"accidentals.flat\":{d:[[\"M\",-.36,-14.07],[\"c\",.33,-.06,.87,0,1.08,.15],[\"c\",.06,.03,.06,.36,-.03,5.25],[\"c\",-.06,2.85,-.09,5.19,-.09,5.19],[\"c\",0,.03,.12,-.03,.24,-.12],[\"c\",.63,-.42,1.41,-.66,2.19,-.72],[\"c\",.81,-.03,1.47,.21,2.04,.78],[\"c\",.57,.54,.87,1.26,.93,2.04],[\"c\",.03,.57,-.09,1.08,-.36,1.62],[\"c\",-.42,.81,-1.02,1.38,-2.82,2.61],[\"c\",-1.14,.78,-1.44,1.02,-1.8,1.44],[\"c\",-.18,.18,-.39,.39,-.45,.42],[\"c\",-.27,.18,-.57,.15,-.81,-.06],[\"c\",-.06,-.09,-.12,-.18,-.15,-.27],[\"c\",-.03,-.06,-.09,-3.27,-.18,-8.34],[\"c\",-.09,-4.53,-.15,-8.58,-.18,-9.03],[\"l\",0,-.78],[\"l\",.12,-.06],[\"c\",.06,-.03,.18,-.09,.27,-.12],[\"z\"],[\"m\",3.18,11.01],[\"c\",-.21,-.12,-.54,-.15,-.81,-.06],[\"c\",-.54,.15,-.99,.63,-1.17,1.26],[\"c\",-.06,.3,-.12,2.88,-.06,3.87],[\"c\",.03,.42,.03,.81,.06,.9],[\"l\",.03,.12],[\"l\",.45,-.39],[\"c\",.63,-.54,1.26,-1.17,1.56,-1.59],[\"c\",.3,-.42,.6,-.99,.72,-1.41],[\"c\",.18,-.69,.09,-1.47,-.18,-2.07],[\"c\",-.15,-.3,-.33,-.51,-.6,-.63],[\"z\"]],w:6.75,h:18.801},\"accidentals.halfflat\":{d:[[\"M\",4.83,-14.07],[\"c\",.33,-.06,.87,0,1.08,.15],[\"c\",.06,.03,.06,.6,-.12,9.06],[\"c\",-.09,5.55,-.15,9.06,-.18,9.12],[\"c\",-.03,.09,-.09,.18,-.15,.27],[\"c\",-.24,.21,-.54,.24,-.81,.06],[\"c\",-.06,-.03,-.27,-.24,-.45,-.42],[\"c\",-.36,-.42,-.66,-.66,-1.8,-1.44],[\"c\",-1.23,-.84,-1.83,-1.32,-2.25,-1.77],[\"c\",-.66,-.78,-.96,-1.56,-.93,-2.46],[\"c\",.09,-1.41,1.11,-2.58,2.4,-2.79],[\"c\",.3,-.06,.84,-.03,1.23,.06],[\"c\",.54,.12,1.08,.33,1.53,.63],[\"c\",.12,.09,.24,.15,.24,.12],[\"c\",0,0,-.12,-8.37,-.18,-9.75],[\"l\",0,-.66],[\"l\",.12,-.06],[\"c\",.06,-.03,.18,-.09,.27,-.12],[\"z\"],[\"m\",-1.65,10.95],[\"c\",-.6,-.18,-1.08,.09,-1.38,.69],[\"c\",-.27,.6,-.36,1.38,-.18,2.07],[\"c\",.12,.42,.42,.99,.72,1.41],[\"c\",.3,.42,.93,1.05,1.56,1.59],[\"l\",.48,.39],[\"l\",0,-.12],[\"c\",.03,-.09,.03,-.48,.06,-.9],[\"c\",.03,-.57,.03,-1.08,0,-2.22],[\"c\",-.03,-1.62,-.03,-1.62,-.24,-2.07],[\"c\",-.21,-.42,-.6,-.75,-1.02,-.84],[\"z\"]],w:6.728,h:18.801},\"accidentals.dblflat\":{d:[[\"M\",-.36,-14.07],[\"c\",.33,-.06,.87,0,1.08,.15],[\"c\",.06,.03,.06,.33,-.03,4.89],[\"c\",-.06,2.67,-.09,5.01,-.09,5.22],[\"l\",0,.36],[\"l\",.15,-.15],[\"c\",.36,-.3,.75,-.51,1.2,-.63],[\"c\",.33,-.09,.96,-.09,1.26,-.03],[\"c\",.27,.09,.63,.27,.87,.45],[\"l\",.21,.15],[\"l\",0,-.27],[\"c\",0,-.15,-.03,-2.43,-.09,-5.1],[\"c\",-.09,-4.56,-.09,-4.86,-.03,-4.89],[\"c\",.15,-.12,.39,-.15,.72,-.15],[\"c\",.3,0,.54,.03,.69,.15],[\"c\",.06,.03,.06,.33,-.03,4.95],[\"c\",-.06,2.7,-.09,5.04,-.09,5.22],[\"l\",.03,.3],[\"l\",.21,-.15],[\"c\",.69,-.48,1.44,-.69,2.28,-.69],[\"c\",.51,0,.78,.03,1.2,.21],[\"c\",1.32,.63,2.01,2.28,1.53,3.69],[\"c\",-.21,.57,-.51,1.02,-1.05,1.56],[\"c\",-.42,.42,-.81,.72,-1.92,1.5],[\"c\",-1.26,.87,-1.5,1.08,-1.86,1.5],[\"c\",-.39,.45,-.54,.54,-.81,.51],[\"c\",-.18,0,-.21,0,-.33,-.06],[\"l\",-.21,-.21],[\"l\",-.06,-.12],[\"l\",-.03,-.99],[\"c\",-.03,-.54,-.03,-1.29,-.06,-1.68],[\"l\",0,-.69],[\"l\",-.21,.24],[\"c\",-.36,.42,-.75,.75,-1.8,1.62],[\"c\",-1.02,.84,-1.2,.99,-1.44,1.38],[\"c\",-.36,.51,-.54,.6,-.9,.51],[\"c\",-.15,-.03,-.39,-.27,-.42,-.42],[\"c\",-.03,-.06,-.09,-3.27,-.18,-8.34],[\"c\",-.09,-4.53,-.15,-8.58,-.18,-9.03],[\"l\",0,-.78],[\"l\",.12,-.06],[\"c\",.06,-.03,.18,-.09,.27,-.12],[\"z\"],[\"m\",2.52,10.98],[\"c\",-.18,-.09,-.48,-.12,-.66,-.06],[\"c\",-.39,.15,-.69,.54,-.84,1.14],[\"c\",-.06,.24,-.06,.39,-.09,1.74],[\"c\",-.03,1.44,0,2.73,.06,3.18],[\"l\",.03,.15],[\"l\",.27,-.27],[\"c\",.93,-.96,1.5,-1.95,1.74,-3.06],[\"c\",.06,-.27,.06,-.39,.06,-.96],[\"c\",0,-.54,0,-.69,-.06,-.93],[\"c\",-.09,-.51,-.27,-.81,-.51,-.93],[\"z\"],[\"m\",5.43,0],[\"c\",-.18,-.09,-.51,-.12,-.72,-.06],[\"c\",-.54,.12,-.96,.63,-1.17,1.26],[\"c\",-.06,.3,-.12,2.88,-.06,3.9],[\"c\",.03,.42,.03,.81,.06,.9],[\"l\",.03,.12],[\"l\",.36,-.3],[\"c\",.42,-.36,1.02,-.96,1.29,-1.29],[\"c\",.36,-.45,.66,-.99,.81,-1.41],[\"c\",.42,-1.23,.15,-2.76,-.6,-3.12],[\"z\"]],w:11.613,h:18.804},\"accidentals.dblsharp\":{d:[[\"M\",-.18,-3.96],[\"c\",.06,-.03,.12,-.06,.15,-.06],[\"c\",.09,0,2.76,.27,2.79,.3],[\"c\",.12,.03,.15,.12,.15,.51],[\"c\",.06,.96,.24,1.59,.57,2.1],[\"c\",.06,.09,.15,.21,.18,.24],[\"l\",.09,.06],[\"l\",.09,-.06],[\"c\",.03,-.03,.12,-.15,.18,-.24],[\"c\",.33,-.51,.51,-1.14,.57,-2.1],[\"c\",0,-.39,.03,-.45,.12,-.51],[\"c\",.03,0,.66,-.09,1.44,-.15],[\"c\",1.47,-.15,1.5,-.15,1.56,-.03],[\"c\",.03,.06,0,.42,-.09,1.44],[\"c\",-.09,.72,-.15,1.35,-.15,1.38],[\"c\",0,.03,-.03,.09,-.06,.12],[\"c\",-.06,.06,-.12,.09,-.51,.09],[\"c\",-1.08,.06,-1.8,.3,-2.28,.75],[\"l\",-.12,.09],[\"l\",.09,.09],[\"c\",.12,.15,.39,.33,.63,.45],[\"c\",.42,.18,.96,.27,1.68,.33],[\"c\",.39,0,.45,.03,.51,.09],[\"c\",.03,.03,.06,.09,.06,.12],[\"c\",0,.03,.06,.66,.15,1.38],[\"c\",.09,1.02,.12,1.38,.09,1.44],[\"c\",-.06,.12,-.09,.12,-1.56,-.03],[\"c\",-.78,-.06,-1.41,-.15,-1.44,-.15],[\"c\",-.09,-.06,-.12,-.12,-.12,-.54],[\"c\",-.06,-.93,-.24,-1.56,-.57,-2.07],[\"c\",-.06,-.09,-.15,-.21,-.18,-.24],[\"l\",-.09,-.06],[\"l\",-.09,.06],[\"c\",-.03,.03,-.12,.15,-.18,.24],[\"c\",-.33,.51,-.51,1.14,-.57,2.07],[\"c\",0,.42,-.03,.48,-.12,.54],[\"c\",-.03,0,-.66,.09,-1.44,.15],[\"c\",-1.47,.15,-1.5,.15,-1.56,.03],[\"c\",-.03,-.06,0,-.42,.09,-1.44],[\"c\",.09,-.72,.15,-1.35,.15,-1.38],[\"c\",0,-.03,.03,-.09,.06,-.12],[\"c\",.06,-.06,.12,-.09,.51,-.09],[\"c\",.72,-.06,1.26,-.15,1.68,-.33],[\"c\",.24,-.12,.51,-.3,.63,-.45],[\"l\",.09,-.09],[\"l\",-.12,-.09],[\"c\",-.48,-.45,-1.2,-.69,-2.28,-.75],[\"c\",-.39,0,-.45,-.03,-.51,-.09],[\"c\",-.03,-.03,-.06,-.09,-.06,-.12],[\"c\",0,-.03,-.06,-.63,-.12,-1.38],[\"c\",-.09,-.72,-.15,-1.35,-.15,-1.38],[\"z\"]],w:7.95,h:7.977},\"dots.dot\":{d:[[\"M\",1.32,-1.68],[\"c\",.09,-.03,.27,-.06,.39,-.06],[\"c\",.96,0,1.74,.78,1.74,1.71],[\"c\",0,.96,-.78,1.74,-1.71,1.74],[\"c\",-.96,0,-1.74,-.78,-1.74,-1.71],[\"c\",0,-.78,.54,-1.5,1.32,-1.68],[\"z\"]],w:3.45,h:3.45},\"noteheads.dbl\":{d:[[\"M\",-.69,-4.02],[\"c\",.18,-.09,.36,-.09,.54,0],[\"c\",.18,.09,.24,.15,.33,.3],[\"c\",.06,.15,.06,.18,.06,1.41],[\"l\",0,1.23],[\"l\",.12,-.18],[\"c\",.72,-1.26,2.64,-2.31,4.86,-2.64],[\"c\",.81,-.15,1.11,-.15,2.13,-.15],[\"c\",.99,0,1.29,0,2.1,.15],[\"c\",.75,.12,1.38,.27,2.04,.54],[\"c\",1.35,.51,2.34,1.26,2.82,2.1],[\"l\",.12,.18],[\"l\",0,-1.23],[\"c\",0,-1.2,0,-1.26,.06,-1.38],[\"c\",.09,-.18,.15,-.24,.33,-.33],[\"c\",.18,-.09,.36,-.09,.54,0],[\"c\",.18,.09,.24,.15,.33,.3],[\"l\",.06,.15],[\"l\",0,3.54],[\"l\",0,3.54],[\"l\",-.06,.15],[\"c\",-.09,.18,-.15,.24,-.33,.33],[\"c\",-.18,.09,-.36,.09,-.54,0],[\"c\",-.18,-.09,-.24,-.15,-.33,-.33],[\"c\",-.06,-.12,-.06,-.18,-.06,-1.38],[\"l\",0,-1.23],[\"l\",-.12,.18],[\"c\",-.48,.84,-1.47,1.59,-2.82,2.1],[\"c\",-.84,.33,-1.71,.54,-2.85,.66],[\"c\",-.45,.06,-2.16,.06,-2.61,0],[\"c\",-1.14,-.12,-2.01,-.33,-2.85,-.66],[\"c\",-1.35,-.51,-2.34,-1.26,-2.82,-2.1],[\"l\",-.12,-.18],[\"l\",0,1.23],[\"c\",0,1.23,0,1.26,-.06,1.38],[\"c\",-.09,.18,-.15,.24,-.33,.33],[\"c\",-.18,.09,-.36,.09,-.54,0],[\"c\",-.18,-.09,-.24,-.15,-.33,-.33],[\"l\",-.06,-.15],[\"l\",0,-3.54],[\"c\",0,-3.48,0,-3.54,.06,-3.66],[\"c\",.09,-.18,.15,-.24,.33,-.33],[\"z\"],[\"m\",7.71,.63],[\"c\",-.36,-.06,-.9,-.06,-1.14,0],[\"c\",-.3,.03,-.66,.24,-.87,.42],[\"c\",-.6,.54,-.9,1.62,-.75,2.82],[\"c\",.12,.93,.51,1.68,1.11,2.31],[\"c\",.75,.72,1.83,1.2,2.85,1.26],[\"c\",1.05,.06,1.83,-.54,2.1,-1.65],[\"c\",.21,-.9,.12,-1.95,-.24,-2.82],[\"c\",-.36,-.81,-1.08,-1.53,-1.95,-1.95],[\"c\",-.3,-.15,-.78,-.3,-1.11,-.39],[\"z\"]],w:16.83,h:8.145},\"noteheads.whole\":{d:[[\"M\",6.51,-4.05],[\"c\",.51,-.03,2.01,0,2.52,.03],[\"c\",1.41,.18,2.64,.51,3.72,1.08],[\"c\",1.2,.63,1.95,1.41,2.19,2.31],[\"c\",.09,.33,.09,.9,0,1.23],[\"c\",-.24,.9,-.99,1.68,-2.19,2.31],[\"c\",-1.08,.57,-2.28,.9,-3.75,1.08],[\"c\",-.66,.06,-2.31,.06,-2.97,0],[\"c\",-1.47,-.18,-2.67,-.51,-3.75,-1.08],[\"c\",-1.2,-.63,-1.95,-1.41,-2.19,-2.31],[\"c\",-.09,-.33,-.09,-.9,0,-1.23],[\"c\",.24,-.9,.99,-1.68,2.19,-2.31],[\"c\",1.2,-.63,2.61,-.99,4.23,-1.11],[\"z\"],[\"m\",.57,.66],[\"c\",-.87,-.15,-1.53,0,-2.04,.51],[\"c\",-.15,.15,-.24,.27,-.33,.48],[\"c\",-.24,.51,-.36,1.08,-.33,1.77],[\"c\",.03,.69,.18,1.26,.42,1.77],[\"c\",.6,1.17,1.74,1.98,3.18,2.22],[\"c\",1.11,.21,1.95,-.15,2.34,-.99],[\"c\",.24,-.51,.36,-1.08,.33,-1.8],[\"c\",-.06,-1.11,-.45,-2.04,-1.17,-2.76],[\"c\",-.63,-.63,-1.47,-1.05,-2.4,-1.2],[\"z\"]],w:14.985,h:8.097},\"noteheads.half\":{d:[[\"M\",7.44,-4.05],[\"c\",.06,-.03,.27,-.03,.48,-.03],[\"c\",1.05,0,1.71,.24,2.1,.81],[\"c\",.42,.6,.45,1.35,.18,2.4],[\"c\",-.42,1.59,-1.14,2.73,-2.16,3.39],[\"c\",-1.41,.93,-3.18,1.44,-5.4,1.53],[\"c\",-1.17,.03,-1.89,-.21,-2.28,-.81],[\"c\",-.42,-.6,-.45,-1.35,-.18,-2.4],[\"c\",.42,-1.59,1.14,-2.73,2.16,-3.39],[\"c\",.63,-.42,1.23,-.72,1.98,-.96],[\"c\",.9,-.3,1.65,-.42,3.12,-.54],[\"z\"],[\"m\",1.29,.87],[\"c\",-.27,-.09,-.63,-.12,-.9,-.03],[\"c\",-.72,.24,-1.53,.69,-3.27,1.8],[\"c\",-2.34,1.5,-3.3,2.25,-3.57,2.79],[\"c\",-.36,.72,-.06,1.5,.66,1.77],[\"c\",.24,.12,.69,.09,.99,0],[\"c\",.84,-.3,1.92,-.93,4.14,-2.37],[\"c\",1.62,-1.08,2.37,-1.71,2.61,-2.19],[\"c\",.36,-.72,.06,-1.5,-.66,-1.77],[\"z\"]],w:10.37,h:8.132},\"noteheads.quarter\":{d:[[\"M\",6.09,-4.05],[\"c\",.36,-.03,1.2,0,1.53,.06],[\"c\",1.17,.24,1.89,.84,2.16,1.83],[\"c\",.06,.18,.06,.3,.06,.66],[\"c\",0,.45,0,.63,-.15,1.08],[\"c\",-.66,2.04,-3.06,3.93,-5.52,4.38],[\"c\",-.54,.09,-1.44,.09,-1.83,.03],[\"c\",-1.23,-.27,-1.98,-.87,-2.25,-1.86],[\"c\",-.06,-.18,-.06,-.3,-.06,-.66],[\"c\",0,-.45,0,-.63,.15,-1.08],[\"c\",.24,-.78,.75,-1.53,1.44,-2.22],[\"c\",1.2,-1.2,2.85,-2.01,4.47,-2.22],[\"z\"]],w:9.81,h:8.094},\"noteheads.slash.nostem\":{d:[[\"M\",9.3,-7.77],[\"c\",.06,-.06,.18,-.06,1.71,-.06],[\"l\",1.65,0],[\"l\",.09,.09],[\"c\",.06,.06,.06,.09,.06,.15],[\"c\",-.03,.12,-9.21,15.24,-9.3,15.33],[\"c\",-.06,.06,-.18,.06,-1.71,.06],[\"l\",-1.65,0],[\"l\",-.09,-.09],[\"c\",-.06,-.06,-.06,-.09,-.06,-.15],[\"c\",.03,-.12,9.21,-15.24,9.3,-15.33],[\"z\"]],w:12.81,h:15.63},\"noteheads.indeterminate\":{d:[[\"M\",.78,-4.05],[\"c\",.12,-.03,.24,-.03,.36,.03],[\"c\",.03,.03,.93,.72,1.95,1.56],[\"l\",1.86,1.5],[\"l\",1.86,-1.5],[\"c\",1.02,-.84,1.92,-1.53,1.95,-1.56],[\"c\",.21,-.12,.33,-.09,.75,.24],[\"c\",.3,.27,.36,.36,.36,.54],[\"c\",0,.03,-.03,.12,-.06,.18],[\"c\",-.03,.06,-.9,.75,-1.89,1.56],[\"l\",-1.8,1.47],[\"c\",0,.03,.81,.69,1.8,1.5],[\"c\",.99,.81,1.86,1.5,1.89,1.56],[\"c\",.03,.06,.06,.15,.06,.18],[\"c\",0,.18,-.06,.27,-.36,.54],[\"c\",-.42,.33,-.54,.36,-.75,.24],[\"c\",-.03,-.03,-.93,-.72,-1.95,-1.56],[\"l\",-1.86,-1.5],[\"l\",-1.86,1.5],[\"c\",-1.02,.84,-1.92,1.53,-1.95,1.56],[\"c\",-.21,.12,-.33,.09,-.75,-.24],[\"c\",-.3,-.27,-.36,-.36,-.36,-.54],[\"c\",0,-.03,.03,-.12,.06,-.18],[\"c\",.03,-.06,.9,-.75,1.89,-1.56],[\"l\",1.8,-1.47],[\"c\",0,-.03,-.81,-.69,-1.8,-1.5],[\"c\",-.99,-.81,-1.86,-1.5,-1.89,-1.56],[\"c\",-.06,-.12,-.09,-.21,-.03,-.36],[\"c\",.03,-.09,.57,-.57,.72,-.63],[\"z\"]],w:9.843,h:8.139},\"scripts.ufermata\":{d:[[\"M\",-.75,-10.77],[\"c\",.12,0,.45,-.03,.69,-.03],[\"c\",2.91,-.03,5.55,1.53,7.41,4.35],[\"c\",1.17,1.71,1.95,3.72,2.43,6.03],[\"c\",.12,.51,.12,.57,.03,.69],[\"c\",-.12,.21,-.48,.27,-.69,.12],[\"c\",-.12,-.09,-.18,-.24,-.27,-.69],[\"c\",-.78,-3.63,-3.42,-6.54,-6.78,-7.38],[\"c\",-.78,-.21,-1.2,-.24,-2.07,-.24],[\"c\",-.63,0,-.84,0,-1.2,.06],[\"c\",-1.83,.27,-3.42,1.08,-4.8,2.37],[\"c\",-1.41,1.35,-2.4,3.21,-2.85,5.19],[\"c\",-.09,.45,-.15,.6,-.27,.69],[\"c\",-.21,.15,-.57,.09,-.69,-.12],[\"c\",-.09,-.12,-.09,-.18,.03,-.69],[\"c\",.33,-1.62,.78,-3,1.47,-4.38],[\"c\",1.77,-3.54,4.44,-5.67,7.56,-5.97],[\"z\"],[\"m\",.33,7.47],[\"c\",1.38,-.3,2.58,.9,2.31,2.25],[\"c\",-.15,.72,-.78,1.35,-1.47,1.5],[\"c\",-1.38,.27,-2.58,-.93,-2.31,-2.31],[\"c\",.15,-.69,.78,-1.29,1.47,-1.44],[\"z\"]],w:19.748,h:11.289},\"scripts.dfermata\":{d:[[\"M\",-9.63,-.42],[\"c\",.15,-.09,.36,-.06,.51,.03],[\"c\",.12,.09,.18,.24,.27,.66],[\"c\",.78,3.66,3.42,6.57,6.78,7.41],[\"c\",.78,.21,1.2,.24,2.07,.24],[\"c\",.63,0,.84,0,1.2,-.06],[\"c\",1.83,-.27,3.42,-1.08,4.8,-2.37],[\"c\",1.41,-1.35,2.4,-3.21,2.85,-5.22],[\"c\",.09,-.42,.15,-.57,.27,-.66],[\"c\",.21,-.15,.57,-.09,.69,.12],[\"c\",.09,.12,.09,.18,-.03,.69],[\"c\",-.33,1.62,-.78,3,-1.47,4.38],[\"c\",-1.92,3.84,-4.89,6,-8.31,6],[\"c\",-3.42,0,-6.39,-2.16,-8.31,-6],[\"c\",-.48,-.96,-.84,-1.92,-1.14,-2.97],[\"c\",-.18,-.69,-.42,-1.74,-.42,-1.92],[\"c\",0,-.12,.09,-.27,.24,-.33],[\"z\"],[\"m\",9.21,0],[\"c\",1.2,-.27,2.34,.63,2.34,1.86],[\"c\",0,.9,-.66,1.68,-1.5,1.89],[\"c\",-1.38,.27,-2.58,-.93,-2.31,-2.31],[\"c\",.15,-.69,.78,-1.29,1.47,-1.44],[\"z\"]],w:19.744,h:11.274},\"scripts.sforzato\":{d:[[\"M\",-6.45,-3.69],[\"c\",.06,-.03,.15,-.06,.18,-.06],[\"c\",.06,0,2.85,.72,6.24,1.59],[\"l\",6.33,1.65],[\"c\",.33,.06,.45,.21,.45,.51],[\"c\",0,.3,-.12,.45,-.45,.51],[\"l\",-6.33,1.65],[\"c\",-3.39,.87,-6.18,1.59,-6.21,1.59],[\"c\",-.21,0,-.48,-.24,-.51,-.45],[\"c\",0,-.15,.06,-.36,.18,-.45],[\"c\",.09,-.06,.87,-.27,3.84,-1.05],[\"c\",2.04,-.54,3.84,-.99,4.02,-1.02],[\"c\",.15,-.06,1.14,-.24,2.22,-.42],[\"c\",1.05,-.18,1.92,-.36,1.92,-.36],[\"c\",0,0,-.87,-.18,-1.92,-.36],[\"c\",-1.08,-.18,-2.07,-.36,-2.22,-.42],[\"c\",-.18,-.03,-1.98,-.48,-4.02,-1.02],[\"c\",-2.97,-.78,-3.75,-.99,-3.84,-1.05],[\"c\",-.12,-.09,-.18,-.3,-.18,-.45],[\"c\",.03,-.15,.15,-.3,.3,-.39],[\"z\"]],w:13.5,h:7.5},\"scripts.staccato\":{d:[[\"M\",-.36,-1.47],[\"c\",.93,-.21,1.86,.51,1.86,1.47],[\"c\",0,.93,-.87,1.65,-1.8,1.47],[\"c\",-.54,-.12,-1.02,-.57,-1.14,-1.08],[\"c\",-.21,-.81,.27,-1.65,1.08,-1.86],[\"z\"]],w:2.989,h:3.004},\"scripts.tenuto\":{d:[[\"M\",-4.2,-.48],[\"l\",.12,-.06],[\"l\",4.08,0],[\"l\",4.08,0],[\"l\",.12,.06],[\"c\",.39,.21,.39,.75,0,.96],[\"l\",-.12,.06],[\"l\",-4.08,0],[\"l\",-4.08,0],[\"l\",-.12,-.06],[\"c\",-.39,-.21,-.39,-.75,0,-.96],[\"z\"]],w:8.985,h:1.08},\"scripts.umarcato\":{d:[[\"M\",-.15,-8.19],[\"c\",.15,-.12,.36,-.03,.45,.15],[\"c\",.21,.42,3.45,7.65,3.45,7.71],[\"c\",0,.12,-.12,.27,-.21,.3],[\"c\",-.03,.03,-.51,.03,-1.14,.03],[\"c\",-1.05,0,-1.08,0,-1.17,-.06],[\"c\",-.09,-.06,-.24,-.36,-1.17,-2.4],[\"c\",-.57,-1.29,-1.05,-2.34,-1.08,-2.34],[\"c\",0,-.03,-.51,1.02,-1.08,2.34],[\"c\",-.93,2.07,-1.08,2.34,-1.14,2.4],[\"c\",-.06,.03,-.15,.06,-.18,.06],[\"c\",-.15,0,-.33,-.18,-.33,-.33],[\"c\",0,-.06,3.24,-7.32,3.45,-7.71],[\"c\",.03,-.06,.09,-.15,.15,-.15],[\"z\"]],w:7.5,h:8.245},\"scripts.dmarcato\":{d:[[\"M\",-3.57,.03],[\"c\",.03,0,.57,-.03,1.17,-.03],[\"c\",1.05,0,1.08,0,1.17,.06],[\"c\",.09,.06,.24,.36,1.17,2.4],[\"c\",.57,1.29,1.05,2.34,1.08,2.34],[\"c\",0,.03,.51,-1.02,1.08,-2.34],[\"c\",.93,-2.07,1.08,-2.34,1.14,-2.4],[\"c\",.06,-.03,.15,-.06,.18,-.06],[\"c\",.15,0,.33,.18,.33,.33],[\"c\",0,.09,-3.45,7.74,-3.54,7.83],[\"c\",-.12,.12,-.3,.12,-.42,0],[\"c\",-.09,-.09,-3.54,-7.74,-3.54,-7.83],[\"c\",0,-.09,.12,-.27,.18,-.3],[\"z\"]],w:7.5,h:8.25},\"scripts.stopped\":{d:[[\"M\",-.27,-4.08],[\"c\",.18,-.09,.36,-.09,.54,0],[\"c\",.18,.09,.24,.15,.33,.3],[\"l\",.06,.15],[\"l\",0,1.5],[\"l\",0,1.47],[\"l\",1.47,0],[\"l\",1.5,0],[\"l\",.15,.06],[\"c\",.15,.09,.21,.15,.3,.33],[\"c\",.09,.18,.09,.36,0,.54],[\"c\",-.09,.18,-.15,.24,-.33,.33],[\"c\",-.12,.06,-.18,.06,-1.62,.06],[\"l\",-1.47,0],[\"l\",0,1.47],[\"l\",0,1.47],[\"l\",-.06,.15],[\"c\",-.09,.18,-.15,.24,-.33,.33],[\"c\",-.18,.09,-.36,.09,-.54,0],[\"c\",-.18,-.09,-.24,-.15,-.33,-.33],[\"l\",-.06,-.15],[\"l\",0,-1.47],[\"l\",0,-1.47],[\"l\",-1.47,0],[\"c\",-1.44,0,-1.5,0,-1.62,-.06],[\"c\",-.18,-.09,-.24,-.15,-.33,-.33],[\"c\",-.09,-.18,-.09,-.36,0,-.54],[\"c\",.09,-.18,.15,-.24,.33,-.33],[\"l\",.15,-.06],[\"l\",1.47,0],[\"l\",1.47,0],[\"l\",0,-1.47],[\"c\",0,-1.44,0,-1.5,.06,-1.62],[\"c\",.09,-.18,.15,-.24,.33,-.33],[\"z\"]],w:8.295,h:8.295},\"scripts.upbow\":{d:[[\"M\",-4.65,-15.54],[\"c\",.12,-.09,.36,-.06,.48,.03],[\"c\",.03,.03,.09,.09,.12,.15],[\"c\",.03,.06,.66,2.13,1.41,4.62],[\"c\",1.35,4.41,1.38,4.56,2.01,6.96],[\"l\",.63,2.46],[\"l\",.63,-2.46],[\"c\",.63,-2.4,.66,-2.55,2.01,-6.96],[\"c\",.75,-2.49,1.38,-4.56,1.41,-4.62],[\"c\",.06,-.15,.18,-.21,.36,-.24],[\"c\",.15,0,.3,.06,.39,.18],[\"c\",.15,.21,.24,-.18,-2.1,7.56],[\"c\",-1.2,3.96,-2.22,7.32,-2.25,7.41],[\"c\",0,.12,-.06,.27,-.09,.3],[\"c\",-.12,.21,-.6,.21,-.72,0],[\"c\",-.03,-.03,-.09,-.18,-.09,-.3],[\"c\",-.03,-.09,-1.05,-3.45,-2.25,-7.41],[\"c\",-2.34,-7.74,-2.25,-7.35,-2.1,-7.56],[\"c\",.03,-.03,.09,-.09,.15,-.12],[\"z\"]],w:9.73,h:15.608},\"scripts.downbow\":{d:[[\"M\",-5.55,-9.93],[\"l\",.09,-.06],[\"l\",5.46,0],[\"l\",5.46,0],[\"l\",.09,.06],[\"l\",.06,.09],[\"l\",0,4.77],[\"c\",0,5.28,0,4.89,-.18,5.01],[\"c\",-.18,.12,-.42,.06,-.54,-.12],[\"c\",-.06,-.09,-.06,-.18,-.06,-2.97],[\"l\",0,-2.85],[\"l\",-4.83,0],[\"l\",-4.83,0],[\"l\",0,2.85],[\"c\",0,2.79,0,2.88,-.06,2.97],[\"c\",-.15,.24,-.51,.24,-.66,0],[\"c\",-.06,-.09,-.06,-.21,-.06,-4.89],[\"l\",0,-4.77],[\"z\"]],w:11.22,h:9.992},\"scripts.turn\":{d:[[\"M\",-4.77,-3.9],[\"c\",.36,-.06,1.05,-.06,1.44,.03],[\"c\",.78,.15,1.5,.51,2.34,1.14],[\"c\",.6,.45,1.05,.87,2.22,2.01],[\"c\",1.11,1.08,1.62,1.5,2.22,1.86],[\"c\",.6,.36,1.32,.57,1.92,.57],[\"c\",.9,0,1.71,-.57,1.89,-1.35],[\"c\",.24,-.93,-.39,-1.89,-1.35,-2.1],[\"l\",-.15,-.06],[\"l\",-.09,.15],[\"c\",-.03,.09,-.15,.24,-.24,.33],[\"c\",-.72,.72,-2.04,.54,-2.49,-.36],[\"c\",-.48,-.93,.03,-1.86,1.17,-2.19],[\"c\",.3,-.09,1.02,-.09,1.35,0],[\"c\",.99,.27,1.74,.87,2.25,1.83],[\"c\",.69,1.41,.63,3,-.21,4.26],[\"c\",-.21,.3,-.69,.81,-.99,1.02],[\"c\",-.3,.21,-.84,.45,-1.17,.54],[\"c\",-1.23,.36,-2.49,.15,-3.72,-.6],[\"c\",-.75,-.48,-1.41,-1.02,-2.85,-2.46],[\"c\",-1.11,-1.08,-1.62,-1.5,-2.22,-1.86],[\"c\",-.6,-.36,-1.32,-.57,-1.92,-.57],[\"c\",-.9,0,-1.71,.57,-1.89,1.35],[\"c\",-.24,.93,.39,1.89,1.35,2.1],[\"l\",.15,.06],[\"l\",.09,-.15],[\"c\",.03,-.09,.15,-.24,.24,-.33],[\"c\",.72,-.72,2.04,-.54,2.49,.36],[\"c\",.48,.93,-.03,1.86,-1.17,2.19],[\"c\",-.3,.09,-1.02,.09,-1.35,0],[\"c\",-.99,-.27,-1.74,-.87,-2.25,-1.83],[\"c\",-.69,-1.41,-.63,-3,.21,-4.26],[\"c\",.21,-.3,.69,-.81,.99,-1.02],[\"c\",.48,-.33,1.11,-.57,1.74,-.66],[\"z\"]],w:16.366,h:7.893},\"scripts.trill\":{d:[[\"M\",-.51,-16.02],[\"c\",.12,-.09,.21,-.18,.21,-.18],[\"l\",-.81,4.02],[\"l\",-.81,4.02],[\"c\",.03,0,.51,-.27,1.08,-.6],[\"c\",.6,-.3,1.14,-.63,1.26,-.66],[\"c\",1.14,-.54,2.31,-.6,3.09,-.18],[\"c\",.27,.15,.54,.36,.6,.51],[\"l\",.06,.12],[\"l\",.21,-.21],[\"c\",.9,-.81,2.22,-.99,3.12,-.42],[\"c\",.6,.42,.9,1.14,.78,2.07],[\"c\",-.15,1.29,-1.05,2.31,-1.95,2.25],[\"c\",-.48,-.03,-.78,-.3,-.96,-.81],[\"c\",-.09,-.27,-.09,-.9,-.03,-1.2],[\"c\",.21,-.75,.81,-1.23,1.59,-1.32],[\"l\",.24,-.03],[\"l\",-.09,-.12],[\"c\",-.51,-.66,-1.62,-.63,-2.31,.03],[\"c\",-.39,.42,-.3,.09,-1.23,4.77],[\"l\",-.81,4.14],[\"c\",-.03,0,-.12,-.03,-.21,-.09],[\"c\",-.33,-.15,-.54,-.18,-.99,-.18],[\"c\",-.42,0,-.66,.03,-1.05,.18],[\"c\",-.12,.06,-.21,.09,-.21,.09],[\"c\",0,-.03,.36,-1.86,.81,-4.11],[\"c\",.9,-4.47,.87,-4.26,.69,-4.53],[\"c\",-.21,-.36,-.66,-.51,-1.17,-.36],[\"c\",-.15,.06,-2.22,1.14,-2.58,1.38],[\"c\",-.12,.09,-.12,.09,-.21,.6],[\"l\",-.09,.51],[\"l\",.21,.24],[\"c\",.63,.75,1.02,1.47,1.2,2.19],[\"c\",.06,.27,.06,.36,.06,.81],[\"c\",0,.42,0,.54,-.06,.78],[\"c\",-.15,.54,-.33,.93,-.63,1.35],[\"c\",-.18,.24,-.57,.63,-.81,.78],[\"c\",-.24,.15,-.63,.36,-.84,.42],[\"c\",-.27,.06,-.66,.06,-.87,.03],[\"c\",-.81,-.18,-1.32,-1.05,-1.38,-2.46],[\"c\",-.03,-.6,.03,-.99,.33,-2.46],[\"c\",.21,-1.08,.24,-1.32,.21,-1.29],[\"c\",-1.2,.48,-2.4,.75,-3.21,.72],[\"c\",-.69,-.06,-1.17,-.3,-1.41,-.72],[\"c\",-.39,-.75,-.12,-1.8,.66,-2.46],[\"c\",.24,-.18,.69,-.42,1.02,-.51],[\"c\",.69,-.18,1.53,-.15,2.31,.09],[\"c\",.3,.09,.75,.3,.99,.45],[\"c\",.12,.09,.15,.09,.15,.03],[\"c\",.03,-.03,.33,-1.59,.72,-3.45],[\"c\",.36,-1.86,.66,-3.42,.69,-3.45],[\"c\",0,-.03,.03,-.03,.21,.03],[\"c\",.21,.06,.27,.06,.48,.06],[\"c\",.42,-.03,.78,-.18,1.26,-.48],[\"c\",.15,-.12,.36,-.27,.48,-.39],[\"z\"],[\"m\",-5.73,7.68],[\"c\",-.27,-.03,-.96,-.06,-1.2,-.03],[\"c\",-.81,.12,-1.35,.57,-1.5,1.2],[\"c\",-.18,.66,.12,1.14,.75,1.29],[\"c\",.66,.12,1.92,-.12,3.18,-.66],[\"l\",.33,-.15],[\"l\",.09,-.39],[\"c\",.06,-.21,.09,-.42,.09,-.45],[\"c\",0,-.03,-.45,-.3,-.75,-.45],[\"c\",-.27,-.15,-.66,-.27,-.99,-.36],[\"z\"],[\"m\",4.29,3.63],[\"c\",-.24,-.39,-.51,-.75,-.51,-.69],[\"c\",-.06,.12,-.39,1.92,-.45,2.28],[\"c\",-.09,.54,-.12,1.14,-.06,1.38],[\"c\",.06,.42,.21,.6,.51,.57],[\"c\",.39,-.06,.75,-.48,.93,-1.14],[\"c\",.09,-.33,.09,-1.05,0,-1.38],[\"c\",-.09,-.39,-.24,-.69,-.42,-1.02],[\"z\"]],w:17.963,h:16.49},\"scripts.segno\":{d:[[\"M\",-3.72,-11.22],[\"c\",.78,-.09,1.59,.03,2.31,.42],[\"c\",1.2,.6,2.01,1.71,2.31,3.09],[\"c\",.09,.42,.09,1.2,.03,1.5],[\"c\",-.15,.45,-.39,.81,-.66,.93],[\"c\",-.33,.18,-.84,.21,-1.23,.15],[\"c\",-.81,-.18,-1.32,-.93,-1.26,-1.89],[\"c\",.03,-.36,.09,-.57,.24,-.9],[\"c\",.15,-.33,.45,-.6,.72,-.75],[\"c\",.12,-.06,.18,-.09,.18,-.12],[\"c\",0,-.03,-.03,-.15,-.09,-.24],[\"c\",-.18,-.45,-.54,-.87,-.96,-1.08],[\"c\",-1.11,-.57,-2.34,-.18,-2.88,.9],[\"c\",-.24,.51,-.33,1.11,-.24,1.83],[\"c\",.27,1.92,1.5,3.54,3.93,5.13],[\"c\",.48,.33,1.26,.78,1.29,.78],[\"c\",.03,0,1.35,-2.19,2.94,-4.89],[\"l\",2.88,-4.89],[\"l\",.84,0],[\"l\",.87,0],[\"l\",-.03,.06],[\"c\",-.15,.21,-6.15,10.41,-6.15,10.44],[\"c\",0,0,.21,.15,.48,.27],[\"c\",2.61,1.47,4.35,3.03,5.13,4.65],[\"c\",1.14,2.34,.51,5.07,-1.44,6.39],[\"c\",-.66,.42,-1.32,.63,-2.13,.69],[\"c\",-2.01,.09,-3.81,-1.41,-4.26,-3.54],[\"c\",-.09,-.42,-.09,-1.2,-.03,-1.5],[\"c\",.15,-.45,.39,-.81,.66,-.93],[\"c\",.33,-.18,.84,-.21,1.23,-.15],[\"c\",.81,.18,1.32,.93,1.26,1.89],[\"c\",-.03,.36,-.09,.57,-.24,.9],[\"c\",-.15,.33,-.45,.6,-.72,.75],[\"c\",-.12,.06,-.18,.09,-.18,.12],[\"c\",0,.03,.03,.15,.09,.24],[\"c\",.18,.45,.54,.87,.96,1.08],[\"c\",1.11,.57,2.34,.18,2.88,-.9],[\"c\",.24,-.51,.33,-1.11,.24,-1.83],[\"c\",-.27,-1.92,-1.5,-3.54,-3.93,-5.13],[\"c\",-.48,-.33,-1.26,-.78,-1.29,-.78],[\"c\",-.03,0,-1.35,2.19,-2.91,4.89],[\"l\",-2.88,4.89],[\"l\",-.87,0],[\"l\",-.87,0],[\"l\",.03,-.06],[\"c\",.15,-.21,6.15,-10.41,6.15,-10.44],[\"c\",0,0,-.21,-.15,-.48,-.3],[\"c\",-2.61,-1.44,-4.35,-3,-5.13,-4.62],[\"c\",-.9,-1.89,-.72,-4.02,.48,-5.52],[\"c\",.69,-.84,1.68,-1.41,2.73,-1.53],[\"z\"],[\"m\",8.76,9.09],[\"c\",.03,-.03,.15,-.03,.27,-.03],[\"c\",.33,.03,.57,.18,.72,.48],[\"c\",.09,.18,.09,.57,0,.75],[\"c\",-.09,.18,-.21,.3,-.36,.39],[\"c\",-.15,.06,-.21,.06,-.39,.06],[\"c\",-.21,0,-.27,0,-.39,-.06],[\"c\",-.3,-.15,-.48,-.45,-.48,-.75],[\"c\",0,-.39,.24,-.72,.63,-.84],[\"z\"],[\"m\",-10.53,2.61],[\"c\",.03,-.03,.15,-.03,.27,-.03],[\"c\",.33,.03,.57,.18,.72,.48],[\"c\",.09,.18,.09,.57,0,.75],[\"c\",-.09,.18,-.21,.3,-.36,.39],[\"c\",-.15,.06,-.21,.06,-.39,.06],[\"c\",-.21,0,-.27,0,-.39,-.06],[\"c\",-.3,-.15,-.48,-.45,-.48,-.75],[\"c\",0,-.39,.24,-.72,.63,-.84],[\"z\"]],w:15,h:22.504},\"scripts.coda\":{d:[[\"M\",-.21,-10.47],[\"c\",.18,-.12,.42,-.06,.54,.12],[\"c\",.06,.09,.06,.18,.06,1.5],[\"l\",0,1.38],[\"l\",.18,0],[\"c\",.39,.06,.96,.24,1.38,.48],[\"c\",1.68,.93,2.82,3.24,3.03,6.12],[\"c\",.03,.24,.03,.45,.03,.45],[\"c\",0,.03,.6,.03,1.35,.03],[\"c\",1.5,0,1.47,0,1.59,.18],[\"c\",.09,.12,.09,.3,0,.42],[\"c\",-.12,.18,-.09,.18,-1.59,.18],[\"c\",-.75,0,-1.35,0,-1.35,.03],[\"c\",0,0,0,.21,-.03,.42],[\"c\",-.24,3.15,-1.53,5.58,-3.45,6.36],[\"c\",-.27,.12,-.72,.24,-.96,.27],[\"l\",-.18,0],[\"l\",0,1.38],[\"c\",0,1.32,0,1.41,-.06,1.5],[\"c\",-.15,.24,-.51,.24,-.66,0],[\"c\",-.06,-.09,-.06,-.18,-.06,-1.5],[\"l\",0,-1.38],[\"l\",-.18,0],[\"c\",-.39,-.06,-.96,-.24,-1.38,-.48],[\"c\",-1.68,-.93,-2.82,-3.24,-3.03,-6.15],[\"c\",-.03,-.21,-.03,-.42,-.03,-.42],[\"c\",0,-.03,-.6,-.03,-1.35,-.03],[\"c\",-1.5,0,-1.47,0,-1.59,-.18],[\"c\",-.09,-.12,-.09,-.3,0,-.42],[\"c\",.12,-.18,.09,-.18,1.59,-.18],[\"c\",.75,0,1.35,0,1.35,-.03],[\"c\",0,0,0,-.21,.03,-.45],[\"c\",.24,-3.12,1.53,-5.55,3.45,-6.33],[\"c\",.27,-.12,.72,-.24,.96,-.27],[\"l\",.18,0],[\"l\",0,-1.38],[\"c\",0,-1.53,0,-1.5,.18,-1.62],[\"z\"],[\"m\",-.18,6.93],[\"c\",0,-2.97,0,-3.15,-.06,-3.15],[\"c\",-.09,0,-.51,.15,-.66,.21],[\"c\",-.87,.51,-1.38,1.62,-1.56,3.51],[\"c\",-.06,.54,-.12,1.59,-.12,2.16],[\"l\",0,.42],[\"l\",1.2,0],[\"l\",1.2,0],[\"l\",0,-3.15],[\"z\"],[\"m\",1.17,-3.06],[\"c\",-.09,-.03,-.21,-.06,-.27,-.09],[\"l\",-.12,0],[\"l\",0,3.15],[\"l\",0,3.15],[\"l\",1.2,0],[\"l\",1.2,0],[\"l\",0,-.81],[\"c\",-.06,-2.4,-.33,-3.69,-.93,-4.59],[\"c\",-.27,-.39,-.66,-.69,-1.08,-.81],[\"z\"],[\"m\",-1.17,10.14],[\"l\",0,-3.15],[\"l\",-1.2,0],[\"l\",-1.2,0],[\"l\",0,.81],[\"c\",.03,.96,.06,1.47,.15,2.13],[\"c\",.24,2.04,.96,3.12,2.13,3.36],[\"l\",.12,0],[\"l\",0,-3.15],[\"z\"],[\"m\",3.18,-2.34],[\"l\",0,-.81],[\"l\",-1.2,0],[\"l\",-1.2,0],[\"l\",0,3.15],[\"l\",0,3.15],[\"l\",.12,0],[\"c\",1.17,-.24,1.89,-1.32,2.13,-3.36],[\"c\",.09,-.66,.12,-1.17,.15,-2.13],[\"z\"]],w:16.035,h:21.062},\"scripts.comma\":{d:[[\"M\",1.14,-4.62],[\"c\",.3,-.12,.69,-.03,.93,.15],[\"c\",.12,.12,.36,.45,.51,.78],[\"c\",.9,1.77,.54,4.05,-1.08,6.75],[\"c\",-.36,.63,-.87,1.38,-.96,1.44],[\"c\",-.18,.12,-.42,.06,-.54,-.12],[\"c\",-.09,-.18,-.09,-.3,.12,-.6],[\"c\",.96,-1.44,1.44,-2.97,1.38,-4.35],[\"c\",-.06,-.93,-.3,-1.68,-.78,-2.46],[\"c\",-.27,-.39,-.33,-.63,-.24,-.96],[\"c\",.09,-.27,.36,-.54,.66,-.63],[\"z\"]],w:3.042,h:9.237},\"scripts.roll\":{d:[[\"M\",1.95,-6],[\"c\",.21,-.09,.36,-.09,.57,0],[\"c\",.39,.15,.63,.39,1.47,1.35],[\"c\",.66,.75,.78,.87,1.08,1.05],[\"c\",.75,.45,1.65,.42,2.4,-.06],[\"c\",.12,-.09,.27,-.27,.54,-.6],[\"c\",.42,-.54,.51,-.63,.69,-.63],[\"c\",.09,0,.3,.12,.36,.21],[\"c\",.09,.12,.12,.3,.03,.42],[\"c\",-.06,.12,-3.15,3.9,-3.3,4.08],[\"c\",-.06,.06,-.18,.12,-.27,.18],[\"c\",-.27,.12,-.6,.06,-.99,-.27],[\"c\",-.27,-.21,-.42,-.39,-1.08,-1.14],[\"c\",-.63,-.72,-.81,-.9,-1.17,-1.08],[\"c\",-.36,-.18,-.57,-.21,-.99,-.21],[\"c\",-.39,0,-.63,.03,-.93,.18],[\"c\",-.36,.15,-.51,.27,-.9,.81],[\"c\",-.24,.27,-.45,.51,-.48,.54],[\"c\",-.12,.09,-.27,.06,-.39,0],[\"c\",-.24,-.15,-.33,-.39,-.21,-.6],[\"c\",.09,-.12,3.18,-3.87,3.33,-4.02],[\"c\",.06,-.06,.18,-.15,.24,-.21],[\"z\"]],w:10.817,h:6.125},\"scripts.prall\":{d:[[\"M\",-4.38,-3.69],[\"c\",.06,-.03,.18,-.06,.24,-.06],[\"c\",.3,0,.27,-.03,1.89,1.95],[\"l\",1.53,1.83],[\"c\",.03,0,.57,-.84,1.23,-1.83],[\"c\",1.14,-1.68,1.23,-1.83,1.35,-1.89],[\"c\",.06,-.03,.18,-.06,.24,-.06],[\"c\",.3,0,.27,-.03,1.89,1.95],[\"l\",1.53,1.83],[\"l\",.48,-.69],[\"c\",.51,-.78,.54,-.84,.69,-.9],[\"c\",.42,-.18,.87,.15,.81,.6],[\"c\",-.03,.12,-.3,.51,-1.5,2.37],[\"c\",-1.38,2.07,-1.5,2.22,-1.62,2.28],[\"c\",-.06,.03,-.18,.06,-.24,.06],[\"c\",-.3,0,-.27,.03,-1.89,-1.95],[\"l\",-1.53,-1.83],[\"c\",-.03,0,-.57,.84,-1.23,1.83],[\"c\",-1.14,1.68,-1.23,1.83,-1.35,1.89],[\"c\",-.06,.03,-.18,.06,-.24,.06],[\"c\",-.3,0,-.27,.03,-1.89,-1.95],[\"l\",-1.53,-1.83],[\"l\",-.48,.69],[\"c\",-.51,.78,-.54,.84,-.69,.9],[\"c\",-.42,.18,-.87,-.15,-.81,-.6],[\"c\",.03,-.12,.3,-.51,1.5,-2.37],[\"c\",1.38,-2.07,1.5,-2.22,1.62,-2.28],[\"z\"]],w:15.011,h:7.5},\"scripts.arpeggio\":{d:[[\"M\",1.5,0],[\"c\",1.5,2,1.5,3,1.5,3],[\"s\",0,1,-2,1.5],[\"s\",-.5,3,1,5.5],[\"l\",1.5,0],[\"s\",-1.75,-2,-1.9,-3.25],[\"s\",2.15,-.6,2.95,-1.6],[\"s\",.45,-1,.5,-1.25],[\"s\",0,-1,-2,-3.9],[\"l\",-1.5,0],[\"z\"]],w:5,h:10},\"scripts.mordent\":{d:[[\"M\",-.21,-4.95],[\"c\",.27,-.15,.63,0,.75,.27],[\"c\",.06,.12,.06,.24,.06,1.44],[\"l\",0,1.29],[\"l\",.57,-.84],[\"c\",.51,-.75,.57,-.84,.69,-.9],[\"c\",.06,-.03,.18,-.06,.24,-.06],[\"c\",.3,0,.27,-.03,1.89,1.95],[\"l\",1.53,1.83],[\"l\",.48,-.69],[\"c\",.51,-.78,.54,-.84,.69,-.9],[\"c\",.42,-.18,.87,.15,.81,.6],[\"c\",-.03,.12,-.3,.51,-1.5,2.37],[\"c\",-1.38,2.07,-1.5,2.22,-1.62,2.28],[\"c\",-.06,.03,-.18,.06,-.24,.06],[\"c\",-.3,0,-.27,.03,-1.83,-1.89],[\"c\",-.81,-.99,-1.5,-1.8,-1.53,-1.86],[\"c\",-.06,-.03,-.06,-.03,-.12,.03],[\"c\",-.06,.06,-.06,.15,-.06,2.28],[\"c\",0,1.95,0,2.25,-.06,2.34],[\"c\",-.18,.45,-.81,.48,-1.05,.03],[\"c\",-.03,-.06,-.06,-.24,-.06,-1.41],[\"l\",0,-1.35],[\"l\",-.57,.84],[\"c\",-.54,.78,-.6,.87,-.72,.93],[\"c\",-.06,.03,-.18,.06,-.24,.06],[\"c\",-.3,0,-.27,.03,-1.89,-1.95],[\"l\",-1.53,-1.83],[\"l\",-.48,.69],[\"c\",-.51,.78,-.54,.84,-.69,.9],[\"c\",-.42,.18,-.87,-.15,-.81,-.6],[\"c\",.03,-.12,.3,-.51,1.5,-2.37],[\"c\",1.38,-2.07,1.5,-2.22,1.62,-2.28],[\"c\",.06,-.03,.18,-.06,.24,-.06],[\"c\",.3,0,.27,-.03,1.89,1.95],[\"l\",1.53,1.83],[\"c\",.03,0,.06,-.06,.09,-.09],[\"c\",.06,-.12,.06,-.15,.06,-2.28],[\"c\",0,-1.92,0,-2.22,.06,-2.31],[\"c\",.06,-.15,.15,-.24,.3,-.3],[\"z\"]],w:15.011,h:10.012},\"flags.u8th\":{d:[[\"M\",-.42,3.75],[\"l\",0,-3.75],[\"l\",.21,0],[\"l\",.21,0],[\"l\",0,.18],[\"c\",0,.3,.06,.84,.12,1.23],[\"c\",.24,1.53,.9,3.12,2.13,5.16],[\"l\",.99,1.59],[\"c\",.87,1.44,1.38,2.34,1.77,3.09],[\"c\",.81,1.68,1.2,3.06,1.26,4.53],[\"c\",.03,1.53,-.21,3.27,-.75,5.01],[\"c\",-.21,.69,-.51,1.5,-.6,1.59],[\"c\",-.09,.12,-.27,.21,-.42,.21],[\"c\",-.15,0,-.42,-.12,-.51,-.21],[\"c\",-.15,-.18,-.18,-.42,-.09,-.66],[\"c\",.15,-.33,.45,-1.2,.57,-1.62],[\"c\",.42,-1.38,.6,-2.58,.6,-3.9],[\"c\",0,-.66,0,-.81,-.06,-1.11],[\"c\",-.39,-2.07,-1.8,-4.26,-4.59,-7.14],[\"l\",-.42,-.45],[\"l\",-.21,0],[\"l\",-.21,0],[\"l\",0,-3.75],[\"z\"]],w:6.692,h:22.59},\"flags.u16th\":{d:[[\"M\",-.42,7.5],[\"l\",0,-7.5],[\"l\",.21,0],[\"l\",.21,0],[\"l\",0,.39],[\"c\",.06,1.08,.39,2.19,.99,3.39],[\"c\",.45,.9,.87,1.59,1.95,3.12],[\"c\",1.29,1.86,1.77,2.64,2.22,3.57],[\"c\",.45,.93,.72,1.8,.87,2.64],[\"c\",.06,.51,.06,1.5,0,1.92],[\"c\",-.12,.6,-.3,1.2,-.54,1.71],[\"l\",-.09,.24],[\"l\",.18,.45],[\"c\",.51,1.2,.72,2.22,.69,3.42],[\"c\",-.06,1.53,-.39,3.03,-.99,4.53],[\"c\",-.3,.75,-.36,.81,-.57,.9],[\"c\",-.15,.09,-.33,.06,-.48,0],[\"c\",-.18,-.09,-.27,-.18,-.33,-.33],[\"c\",-.09,-.18,-.06,-.3,.12,-.75],[\"c\",.66,-1.41,1.02,-2.88,1.08,-4.32],[\"c\",0,-.6,-.03,-1.05,-.18,-1.59],[\"c\",-.3,-1.2,-.99,-2.4,-2.25,-3.87],[\"c\",-.42,-.48,-1.53,-1.62,-2.19,-2.22],[\"l\",-.45,-.42],[\"l\",-.03,1.11],[\"l\",0,1.11],[\"l\",-.21,0],[\"l\",-.21,0],[\"l\",0,-7.5],[\"z\"],[\"m\",1.65,.09],[\"c\",-.3,-.3,-.69,-.72,-.9,-.87],[\"l\",-.33,-.33],[\"l\",0,.15],[\"c\",0,.3,.06,.81,.15,1.26],[\"c\",.27,1.29,.87,2.61,2.04,4.29],[\"c\",.15,.24,.6,.87,.96,1.38],[\"l\",1.08,1.53],[\"l\",.42,.63],[\"c\",.03,0,.12,-.36,.21,-.72],[\"c\",.06,-.33,.06,-1.2,0,-1.62],[\"c\",-.33,-1.71,-1.44,-3.48,-3.63,-5.7],[\"z\"]],w:6.693,h:26.337},\"flags.u32nd\":{d:[[\"M\",-.42,11.25],[\"l\",0,-11.25],[\"l\",.21,0],[\"l\",.21,0],[\"l\",0,.36],[\"c\",.09,1.68,.69,3.27,2.07,5.46],[\"l\",.87,1.35],[\"c\",1.02,1.62,1.47,2.37,1.86,3.18],[\"c\",.48,1.02,.78,1.92,.93,2.88],[\"c\",.06,.48,.06,1.5,0,1.89],[\"c\",-.09,.42,-.21,.87,-.36,1.26],[\"l\",-.12,.3],[\"l\",.15,.39],[\"c\",.69,1.56,.84,2.88,.54,4.38],[\"c\",-.09,.45,-.27,1.08,-.45,1.47],[\"l\",-.12,.24],[\"l\",.18,.36],[\"c\",.33,.72,.57,1.56,.69,2.34],[\"c\",.12,1.02,-.06,2.52,-.42,3.84],[\"c\",-.27,.93,-.75,2.13,-.93,2.31],[\"c\",-.18,.15,-.45,.18,-.66,.09],[\"c\",-.18,-.09,-.27,-.18,-.33,-.33],[\"c\",-.09,-.18,-.06,-.3,.06,-.6],[\"c\",.21,-.36,.42,-.9,.57,-1.38],[\"c\",.51,-1.41,.69,-3.06,.48,-4.08],[\"c\",-.15,-.81,-.57,-1.68,-1.2,-2.55],[\"c\",-.72,-.99,-1.83,-2.13,-3.3,-3.33],[\"l\",-.48,-.42],[\"l\",-.03,1.53],[\"l\",0,1.56],[\"l\",-.21,0],[\"l\",-.21,0],[\"l\",0,-11.25],[\"z\"],[\"m\",1.26,-3.96],[\"c\",-.27,-.3,-.54,-.6,-.66,-.72],[\"l\",-.18,-.21],[\"l\",0,.42],[\"c\",.06,.87,.24,1.74,.66,2.67],[\"c\",.36,.87,.96,1.86,1.92,3.18],[\"c\",.21,.33,.63,.87,.87,1.23],[\"c\",.27,.39,.6,.84,.75,1.08],[\"l\",.27,.39],[\"l\",.03,-.12],[\"c\",.12,-.45,.15,-1.05,.09,-1.59],[\"c\",-.27,-1.86,-1.38,-3.78,-3.75,-6.33],[\"z\"],[\"m\",-.27,6.09],[\"c\",-.27,-.21,-.48,-.42,-.51,-.45],[\"c\",-.06,-.03,-.06,-.03,-.06,.21],[\"c\",0,.9,.3,2.04,.81,3.09],[\"c\",.48,1.02,.96,1.77,2.37,3.63],[\"c\",.6,.78,1.05,1.44,1.29,1.77],[\"c\",.06,.12,.15,.21,.15,.18],[\"c\",.03,-.03,.18,-.57,.24,-.87],[\"c\",.06,-.45,.06,-1.32,-.03,-1.74],[\"c\",-.09,-.48,-.24,-.9,-.51,-1.44],[\"c\",-.66,-1.35,-1.83,-2.7,-3.75,-4.38],[\"z\"]],w:6.697,h:32.145},\"flags.u64th\":{d:[[\"M\",-.42,15],[\"l\",0,-15],[\"l\",.21,0],[\"l\",.21,0],[\"l\",0,.36],[\"c\",.06,1.2,.39,2.37,1.02,3.66],[\"c\",.39,.81,.84,1.56,1.8,3.09],[\"c\",.81,1.26,1.05,1.68,1.35,2.22],[\"c\",.87,1.5,1.35,2.79,1.56,4.08],[\"c\",.06,.54,.06,1.56,-.03,2.04],[\"c\",-.09,.48,-.21,.99,-.36,1.35],[\"l\",-.12,.27],[\"l\",.12,.27],[\"c\",.09,.15,.21,.45,.27,.66],[\"c\",.69,1.89,.63,3.66,-.18,5.46],[\"l\",-.18,.39],[\"l\",.15,.33],[\"c\",.3,.66,.51,1.44,.63,2.1],[\"c\",.06,.48,.06,1.35,0,1.71],[\"c\",-.15,.57,-.42,1.2,-.78,1.68],[\"l\",-.21,.27],[\"l\",.18,.33],[\"c\",.57,1.05,.93,2.13,1.02,3.18],[\"c\",.06,.72,0,1.83,-.21,2.79],[\"c\",-.18,1.02,-.63,2.34,-1.02,3.09],[\"c\",-.15,.33,-.48,.45,-.78,.3],[\"c\",-.18,-.09,-.27,-.18,-.33,-.33],[\"c\",-.09,-.18,-.06,-.3,.03,-.54],[\"c\",.75,-1.5,1.23,-3.45,1.17,-4.89],[\"c\",-.06,-1.02,-.42,-2.01,-1.17,-3.15],[\"c\",-.48,-.72,-1.02,-1.35,-1.89,-2.22],[\"c\",-.57,-.57,-1.56,-1.5,-1.92,-1.77],[\"l\",-.12,-.09],[\"l\",0,1.68],[\"l\",0,1.68],[\"l\",-.21,0],[\"l\",-.21,0],[\"l\",0,-15],[\"z\"],[\"m\",.93,-8.07],[\"c\",-.27,-.3,-.48,-.54,-.51,-.54],[\"c\",0,0,0,.69,.03,1.02],[\"c\",.15,1.47,.75,2.94,2.04,4.83],[\"l\",1.08,1.53],[\"c\",.39,.57,.84,1.2,.99,1.44],[\"c\",.15,.24,.3,.45,.3,.45],[\"c\",0,0,.03,-.09,.06,-.21],[\"c\",.36,-1.59,-.15,-3.33,-1.47,-5.4],[\"c\",-.63,-.93,-1.35,-1.83,-2.52,-3.12],[\"z\"],[\"m\",.06,6.72],[\"c\",-.24,-.21,-.48,-.42,-.51,-.45],[\"l\",-.06,-.06],[\"l\",0,.33],[\"c\",0,1.2,.3,2.34,.93,3.6],[\"c\",.45,.9,.96,1.68,2.25,3.51],[\"c\",.39,.54,.84,1.17,1.02,1.44],[\"c\",.21,.33,.33,.51,.33,.48],[\"c\",.06,-.09,.21,-.63,.3,-.99],[\"c\",.06,-.33,.06,-.45,.06,-.96],[\"c\",0,-.6,-.03,-.84,-.18,-1.35],[\"c\",-.3,-1.08,-1.02,-2.28,-2.13,-3.57],[\"c\",-.39,-.45,-1.44,-1.47,-2.01,-1.98],[\"z\"],[\"m\",0,6.72],[\"c\",-.24,-.21,-.48,-.39,-.51,-.42],[\"l\",-.06,-.06],[\"l\",0,.33],[\"c\",0,1.41,.45,2.82,1.38,4.35],[\"c\",.42,.72,.72,1.14,1.86,2.73],[\"c\",.36,.45,.75,.99,.87,1.2],[\"c\",.15,.21,.3,.36,.3,.36],[\"c\",.06,0,.3,-.48,.39,-.75],[\"c\",.09,-.36,.12,-.63,.12,-1.05],[\"c\",-.06,-1.05,-.45,-2.04,-1.2,-3.18],[\"c\",-.57,-.87,-1.11,-1.53,-2.07,-2.49],[\"c\",-.36,-.33,-.84,-.78,-1.08,-1.02],[\"z\"]],w:6.682,h:39.694},\"flags.d8th\":{d:[[\"M\",5.67,-21.63],[\"c\",.24,-.12,.54,-.06,.69,.15],[\"c\",.06,.06,.21,.36,.39,.66],[\"c\",.84,1.77,1.26,3.36,1.32,5.1],[\"c\",.03,1.29,-.21,2.37,-.81,3.63],[\"c\",-.6,1.23,-1.26,2.13,-3.21,4.38],[\"c\",-1.35,1.53,-1.86,2.19,-2.4,2.97],[\"c\",-.63,.93,-1.11,1.92,-1.38,2.79],[\"c\",-.15,.54,-.27,1.35,-.27,1.8],[\"l\",0,.15],[\"l\",-.21,0],[\"l\",-.21,0],[\"l\",0,-3.75],[\"l\",0,-3.75],[\"l\",.21,0],[\"l\",.21,0],[\"l\",.48,-.3],[\"c\",1.83,-1.11,3.12,-2.1,4.17,-3.12],[\"c\",.78,-.81,1.32,-1.53,1.71,-2.31],[\"c\",.45,-.93,.6,-1.74,.51,-2.88],[\"c\",-.12,-1.56,-.63,-3.18,-1.47,-4.68],[\"c\",-.12,-.21,-.15,-.33,-.06,-.51],[\"c\",.06,-.15,.15,-.24,.33,-.33],[\"z\"]],w:8.492,h:21.691},\"flags.ugrace\":{d:[[\"M\",6.03,6.93],[\"c\",.15,-.09,.33,-.06,.51,0],[\"c\",.15,.09,.21,.15,.3,.33],[\"c\",.09,.18,.06,.39,-.03,.54],[\"c\",-.06,.15,-10.89,8.88,-11.07,8.97],[\"c\",-.15,.09,-.33,.06,-.48,0],[\"c\",-.18,-.09,-.24,-.15,-.33,-.33],[\"c\",-.09,-.18,-.06,-.39,.03,-.54],[\"c\",.06,-.15,10.89,-8.88,11.07,-8.97],[\"z\"]],w:12.019,h:9.954},\"flags.dgrace\":{d:[[\"M\",-6.06,-15.93],[\"c\",.18,-.09,.33,-.12,.48,-.06],[\"c\",.18,.09,14.01,8.04,14.1,8.1],[\"c\",.12,.12,.18,.33,.18,.51],[\"c\",-.03,.21,-.15,.39,-.36,.48],[\"c\",-.18,.09,-.33,.12,-.48,.06],[\"c\",-.18,-.09,-14.01,-8.04,-14.1,-8.1],[\"c\",-.12,-.12,-.18,-.33,-.18,-.51],[\"c\",.03,-.21,.15,-.39,.36,-.48],[\"z\"]],w:15.12,h:9.212},\"flags.d16th\":{d:[[\"M\",6.84,-22.53],[\"c\",.27,-.12,.57,-.06,.72,.15],[\"c\",.15,.15,.33,.87,.45,1.56],[\"c\",.06,.33,.06,1.35,0,1.65],[\"c\",-.06,.33,-.15,.78,-.27,1.11],[\"c\",-.12,.33,-.45,.96,-.66,1.32],[\"l\",-.18,.27],[\"l\",.09,.18],[\"c\",.48,1.02,.72,2.25,.69,3.3],[\"c\",-.06,1.23,-.42,2.28,-1.26,3.45],[\"c\",-.57,.87,-.99,1.32,-3,3.39],[\"c\",-1.56,1.56,-2.22,2.4,-2.76,3.45],[\"c\",-.42,.84,-.66,1.8,-.66,2.55],[\"l\",0,.15],[\"l\",-.21,0],[\"l\",-.21,0],[\"l\",0,-7.5],[\"l\",0,-7.5],[\"l\",.21,0],[\"l\",.21,0],[\"l\",0,1.14],[\"l\",0,1.11],[\"l\",.27,-.15],[\"c\",1.11,-.57,1.77,-.99,2.52,-1.47],[\"c\",2.37,-1.56,3.69,-3.15,4.05,-4.83],[\"c\",.03,-.18,.03,-.39,.03,-.78],[\"c\",0,-.6,-.03,-.93,-.24,-1.5],[\"c\",-.06,-.18,-.12,-.39,-.15,-.45],[\"c\",-.03,-.24,.12,-.48,.36,-.6],[\"z\"],[\"m\",-.63,7.5],[\"c\",-.06,-.18,-.15,-.36,-.15,-.36],[\"c\",-.03,0,-.03,.03,-.06,.06],[\"c\",-.06,.12,-.96,1.02,-1.95,1.98],[\"c\",-.63,.57,-1.26,1.17,-1.44,1.35],[\"c\",-1.53,1.62,-2.28,2.85,-2.55,4.32],[\"c\",-.03,.18,-.03,.54,-.06,.99],[\"l\",0,.69],[\"l\",.18,-.09],[\"c\",.93,-.54,2.1,-1.29,2.82,-1.83],[\"c\",.69,-.51,1.02,-.81,1.53,-1.29],[\"c\",1.86,-1.89,2.37,-3.66,1.68,-5.82],[\"z\"]],w:8.475,h:22.591},\"flags.d32nd\":{d:[[\"M\",6.84,-29.13],[\"c\",.27,-.12,.57,-.06,.72,.15],[\"c\",.12,.12,.27,.63,.36,1.11],[\"c\",.33,1.59,.06,3.06,-.81,4.47],[\"l\",-.18,.27],[\"l\",.09,.15],[\"c\",.12,.24,.33,.69,.45,1.05],[\"c\",.63,1.83,.45,3.57,-.57,5.22],[\"l\",-.18,.3],[\"l\",.15,.27],[\"c\",.42,.87,.6,1.71,.57,2.61],[\"c\",-.06,1.29,-.48,2.46,-1.35,3.78],[\"c\",-.54,.81,-.93,1.29,-2.46,3],[\"c\",-.51,.54,-1.05,1.17,-1.26,1.41],[\"c\",-1.56,1.86,-2.25,3.36,-2.37,5.01],[\"l\",0,.33],[\"l\",-.21,0],[\"l\",-.21,0],[\"l\",0,-11.25],[\"l\",0,-11.25],[\"l\",.21,0],[\"l\",.21,0],[\"l\",0,1.35],[\"l\",.03,1.35],[\"l\",.78,-.39],[\"c\",1.38,-.69,2.34,-1.26,3.24,-1.92],[\"c\",1.38,-1.02,2.28,-2.13,2.64,-3.21],[\"c\",.15,-.48,.18,-.72,.18,-1.29],[\"c\",0,-.57,-.06,-.9,-.24,-1.47],[\"c\",-.06,-.18,-.12,-.39,-.15,-.45],[\"c\",-.03,-.24,.12,-.48,.36,-.6],[\"z\"],[\"m\",-.63,7.2],[\"c\",-.09,-.18,-.12,-.21,-.12,-.15],[\"c\",-.03,.09,-1.02,1.08,-2.04,2.04],[\"c\",-1.17,1.08,-1.65,1.56,-2.07,2.04],[\"c\",-.84,.96,-1.38,1.86,-1.68,2.76],[\"c\",-.21,.57,-.27,.99,-.3,1.65],[\"l\",0,.54],[\"l\",.66,-.33],[\"c\",3.57,-1.86,5.49,-3.69,5.94,-5.7],[\"c\",.06,-.39,.06,-1.2,-.03,-1.65],[\"c\",-.06,-.39,-.24,-.9,-.36,-1.2],[\"z\"],[\"m\",-.06,7.2],[\"c\",-.06,-.15,-.12,-.33,-.15,-.45],[\"l\",-.06,-.18],[\"l\",-.18,.21],[\"l\",-1.83,1.83],[\"c\",-.87,.9,-1.77,1.8,-1.95,2.01],[\"c\",-1.08,1.29,-1.62,2.31,-1.89,3.51],[\"c\",-.06,.3,-.06,.51,-.09,.93],[\"l\",0,.57],[\"l\",.09,-.06],[\"c\",.75,-.45,1.89,-1.26,2.52,-1.74],[\"c\",.81,-.66,1.74,-1.53,2.22,-2.16],[\"c\",1.26,-1.53,1.68,-3.06,1.32,-4.47],[\"z\"]],w:8.385,h:29.191},\"flags.d64th\":{d:[[\"M\",7.08,-32.88],[\"c\",.3,-.12,.66,-.03,.78,.24],[\"c\",.18,.33,.27,2.1,.15,2.64],[\"c\",-.09,.39,-.21,.78,-.39,1.08],[\"l\",-.15,.3],[\"l\",.09,.27],[\"c\",.03,.12,.09,.45,.12,.69],[\"c\",.27,1.44,.18,2.55,-.3,3.6],[\"l\",-.12,.33],[\"l\",.06,.42],[\"c\",.27,1.35,.33,2.82,.21,3.63],[\"c\",-.12,.6,-.3,1.23,-.57,1.8],[\"l\",-.15,.27],[\"l\",.03,.42],[\"c\",.06,1.02,.06,2.7,.03,3.06],[\"c\",-.15,1.47,-.66,2.76,-1.74,4.41],[\"c\",-.45,.69,-.75,1.11,-1.74,2.37],[\"c\",-1.05,1.38,-1.5,1.98,-1.95,2.73],[\"c\",-.93,1.5,-1.38,2.82,-1.44,4.2],[\"l\",0,.42],[\"l\",-.21,0],[\"l\",-.21,0],[\"l\",0,-15],[\"l\",0,-15],[\"l\",.21,0],[\"l\",.21,0],[\"l\",0,1.86],[\"l\",0,1.89],[\"c\",0,0,.21,-.03,.45,-.09],[\"c\",2.22,-.39,4.08,-1.11,5.19,-2.01],[\"c\",.63,-.54,1.02,-1.14,1.2,-1.8],[\"c\",.06,-.3,.06,-1.14,-.03,-1.65],[\"c\",-.03,-.18,-.06,-.39,-.09,-.48],[\"c\",-.03,-.24,.12,-.48,.36,-.6],[\"z\"],[\"m\",-.45,6.15],[\"c\",-.03,-.18,-.06,-.42,-.06,-.54],[\"l\",-.03,-.18],[\"l\",-.33,.3],[\"c\",-.42,.36,-.87,.72,-1.68,1.29],[\"c\",-1.98,1.38,-2.25,1.59,-2.85,2.16],[\"c\",-.75,.69,-1.23,1.44,-1.47,2.19],[\"c\",-.15,.45,-.18,.63,-.21,1.35],[\"l\",0,.66],[\"l\",.39,-.18],[\"c\",1.83,-.9,3.45,-1.95,4.47,-2.91],[\"c\",.93,-.9,1.53,-1.83,1.74,-2.82],[\"c\",.06,-.33,.06,-.87,.03,-1.32],[\"z\"],[\"m\",-.27,4.86],[\"c\",-.03,-.21,-.06,-.36,-.06,-.36],[\"c\",0,-.03,-.12,.09,-.24,.24],[\"c\",-.39,.48,-.99,1.08,-2.16,2.19],[\"c\",-1.47,1.38,-1.92,1.83,-2.46,2.49],[\"c\",-.66,.87,-1.08,1.74,-1.29,2.58],[\"c\",-.09,.42,-.15,.87,-.15,1.44],[\"l\",0,.54],[\"l\",.48,-.33],[\"c\",1.5,-1.02,2.58,-1.89,3.51,-2.82],[\"c\",1.47,-1.47,2.25,-2.85,2.4,-4.26],[\"c\",.03,-.39,.03,-1.17,-.03,-1.71],[\"z\"],[\"m\",-.66,7.68],[\"c\",.03,-.15,.03,-.6,.03,-.99],[\"l\",0,-.72],[\"l\",-.27,.33],[\"l\",-1.74,1.98],[\"c\",-1.77,1.92,-2.43,2.76,-2.97,3.9],[\"c\",-.51,1.02,-.72,1.77,-.75,2.91],[\"c\",0,.63,0,.63,.06,.6],[\"c\",.03,-.03,.3,-.27,.63,-.54],[\"c\",.66,-.6,1.86,-1.8,2.31,-2.31],[\"c\",1.65,-1.89,2.52,-3.54,2.7,-5.16],[\"z\"]],w:8.485,h:32.932},\"clefs.C\":{d:[[\"M\",.06,-14.94],[\"l\",.09,-.06],[\"l\",1.92,0],[\"l\",1.92,0],[\"l\",.09,.06],[\"l\",.06,.09],[\"l\",0,14.85],[\"l\",0,14.82],[\"l\",-.06,.09],[\"l\",-.09,.06],[\"l\",-1.92,0],[\"l\",-1.92,0],[\"l\",-.09,-.06],[\"l\",-.06,-.09],[\"l\",0,-14.82],[\"l\",0,-14.85],[\"z\"],[\"m\",5.37,0],[\"c\",.09,-.06,.09,-.06,.57,-.06],[\"c\",.45,0,.45,0,.54,.06],[\"l\",.06,.09],[\"l\",0,7.14],[\"l\",0,7.11],[\"l\",.09,-.06],[\"c\",.18,-.18,.72,-.84,.96,-1.2],[\"c\",.3,-.45,.66,-1.17,.84,-1.65],[\"c\",.36,-.9,.57,-1.83,.6,-2.79],[\"c\",.03,-.48,.03,-.54,.09,-.63],[\"c\",.12,-.18,.36,-.21,.54,-.12],[\"c\",.18,.09,.21,.15,.24,.66],[\"c\",.06,.87,.21,1.56,.57,2.22],[\"c\",.51,1.02,1.26,1.68,2.22,1.92],[\"c\",.21,.06,.33,.06,.78,.06],[\"c\",.45,0,.57,0,.84,-.06],[\"c\",.45,-.12,.81,-.33,1.08,-.6],[\"c\",.57,-.57,.87,-1.41,.99,-2.88],[\"c\",.06,-.54,.06,-3,0,-3.57],[\"c\",-.21,-2.58,-.84,-3.87,-2.16,-4.5],[\"c\",-.48,-.21,-1.17,-.36,-1.77,-.36],[\"c\",-.69,0,-1.29,.27,-1.5,.72],[\"c\",-.06,.15,-.06,.21,-.06,.42],[\"c\",0,.24,0,.3,.06,.45],[\"c\",.12,.24,.24,.39,.63,.66],[\"c\",.42,.3,.57,.48,.69,.72],[\"c\",.06,.15,.06,.21,.06,.48],[\"c\",0,.39,-.03,.63,-.21,.96],[\"c\",-.3,.6,-.87,1.08,-1.5,1.26],[\"c\",-.27,.06,-.87,.06,-1.14,0],[\"c\",-.78,-.24,-1.44,-.87,-1.65,-1.68],[\"c\",-.12,-.42,-.09,-1.17,.09,-1.71],[\"c\",.51,-1.65,1.98,-2.82,3.81,-3.09],[\"c\",.84,-.09,2.46,.03,3.51,.27],[\"c\",2.22,.57,3.69,1.8,4.44,3.75],[\"c\",.36,.93,.57,2.13,.57,3.36],[\"c\",0,1.44,-.48,2.73,-1.38,3.81],[\"c\",-1.26,1.5,-3.27,2.43,-5.28,2.43],[\"c\",-.48,0,-.51,0,-.75,-.09],[\"c\",-.15,-.03,-.48,-.21,-.78,-.36],[\"c\",-.69,-.36,-.87,-.42,-1.26,-.42],[\"c\",-.27,0,-.3,0,-.51,.09],[\"c\",-.57,.3,-.81,.9,-.81,2.1],[\"c\",0,1.23,.24,1.83,.81,2.13],[\"c\",.21,.09,.24,.09,.51,.09],[\"c\",.39,0,.57,-.06,1.26,-.42],[\"c\",.3,-.15,.63,-.33,.78,-.36],[\"c\",.24,-.09,.27,-.09,.75,-.09],[\"c\",2.01,0,4.02,.93,5.28,2.4],[\"c\",.9,1.11,1.38,2.4,1.38,3.84],[\"c\",0,1.5,-.3,2.88,-.84,3.96],[\"c\",-.78,1.59,-2.19,2.64,-4.17,3.15],[\"c\",-1.05,.24,-2.67,.36,-3.51,.27],[\"c\",-1.83,-.27,-3.3,-1.44,-3.81,-3.09],[\"c\",-.18,-.54,-.21,-1.29,-.09,-1.74],[\"c\",.15,-.6,.63,-1.2,1.23,-1.47],[\"c\",.36,-.18,.57,-.21,.99,-.21],[\"c\",.42,0,.63,.03,1.02,.21],[\"c\",.42,.21,.84,.63,1.05,1.05],[\"c\",.18,.36,.21,.6,.21,.96],[\"c\",0,.3,0,.36,-.06,.51],[\"c\",-.12,.24,-.27,.42,-.69,.72],[\"c\",-.57,.42,-.69,.63,-.69,1.08],[\"c\",0,.24,0,.3,.06,.45],[\"c\",.12,.21,.3,.39,.57,.54],[\"c\",.42,.18,.87,.21,1.53,.15],[\"c\",1.08,-.15,1.8,-.57,2.34,-1.32],[\"c\",.54,-.75,.84,-1.83,.99,-3.51],[\"c\",.06,-.57,.06,-3.03,0,-3.57],[\"c\",-.12,-1.47,-.42,-2.31,-.99,-2.88],[\"c\",-.27,-.27,-.63,-.48,-1.08,-.6],[\"c\",-.27,-.06,-.39,-.06,-.84,-.06],[\"c\",-.45,0,-.57,0,-.78,.06],[\"c\",-1.14,.27,-2.01,1.17,-2.46,2.49],[\"c\",-.21,.57,-.3,.99,-.33,1.65],[\"c\",-.03,.51,-.06,.57,-.24,.66],[\"c\",-.12,.06,-.27,.06,-.39,0],[\"c\",-.21,-.09,-.21,-.15,-.24,-.75],[\"c\",-.09,-1.92,-.78,-3.72,-2.01,-5.19],[\"c\",-.18,-.21,-.36,-.42,-.39,-.45],[\"l\",-.09,-.06],[\"l\",0,7.11],[\"l\",0,7.14],[\"l\",-.06,.09],[\"c\",-.09,.06,-.09,.06,-.54,.06],[\"c\",-.48,0,-.48,0,-.57,-.06],[\"l\",-.06,-.09],[\"l\",0,-14.82],[\"l\",0,-14.85],[\"z\"]],w:20.31,h:29.97},\"clefs.F\":{d:[[\"M\",6.3,-7.8],[\"c\",.36,-.03,1.65,0,2.13,.03],[\"c\",3.6,.42,6.03,2.1,6.93,4.86],[\"c\",.27,.84,.36,1.5,.36,2.58],[\"c\",0,.9,-.03,1.35,-.18,2.16],[\"c\",-.78,3.78,-3.54,7.08,-8.37,9.96],[\"c\",-1.74,1.05,-3.87,2.13,-6.18,3.12],[\"c\",-.39,.18,-.75,.33,-.81,.36],[\"c\",-.06,.03,-.15,.06,-.18,.06],[\"c\",-.15,0,-.33,-.18,-.33,-.33],[\"c\",0,-.15,.06,-.21,.51,-.48],[\"c\",3,-1.77,5.13,-3.21,6.84,-4.74],[\"c\",.51,-.45,1.59,-1.5,1.95,-1.95],[\"c\",1.89,-2.19,2.88,-4.32,3.15,-6.78],[\"c\",.06,-.42,.06,-1.77,0,-2.19],[\"c\",-.24,-2.01,-.93,-3.63,-2.04,-4.71],[\"c\",-.63,-.63,-1.29,-1.02,-2.07,-1.2],[\"c\",-1.62,-.39,-3.36,.15,-4.56,1.44],[\"c\",-.54,.6,-1.05,1.47,-1.32,2.22],[\"l\",-.09,.21],[\"l\",.24,-.12],[\"c\",.39,-.21,.63,-.24,1.11,-.24],[\"c\",.3,0,.45,0,.66,.06],[\"c\",1.92,.48,2.85,2.55,1.95,4.38],[\"c\",-.45,.99,-1.41,1.62,-2.46,1.71],[\"c\",-1.47,.09,-2.91,-.87,-3.39,-2.25],[\"c\",-.18,-.57,-.21,-1.32,-.03,-2.28],[\"c\",.39,-2.25,1.83,-4.2,3.81,-5.19],[\"c\",.69,-.36,1.59,-.6,2.37,-.69],[\"z\"],[\"m\",11.58,2.52],[\"c\",.84,-.21,1.71,.3,1.89,1.14],[\"c\",.3,1.17,-.72,2.19,-1.89,1.89],[\"c\",-.99,-.21,-1.5,-1.32,-1.02,-2.25],[\"c\",.18,-.39,.6,-.69,1.02,-.78],[\"z\"],[\"m\",0,7.5],[\"c\",.84,-.21,1.71,.3,1.89,1.14],[\"c\",.21,.87,-.3,1.71,-1.14,1.89],[\"c\",-.87,.21,-1.71,-.3,-1.89,-1.14],[\"c\",-.21,-.84,.3,-1.71,1.14,-1.89],[\"z\"]],w:20.153,h:23.142},\"clefs.G\":{d:[[\"M\",9.69,-37.41],[\"c\",.09,-.09,.24,-.06,.36,0],[\"c\",.12,.09,.57,.6,.96,1.11],[\"c\",1.77,2.34,3.21,5.85,3.57,8.73],[\"c\",.21,1.56,.03,3.27,-.45,4.86],[\"c\",-.69,2.31,-1.92,4.47,-4.23,7.44],[\"c\",-.3,.39,-.57,.72,-.6,.75],[\"c\",-.03,.06,0,.15,.18,.78],[\"c\",.54,1.68,1.38,4.44,1.68,5.49],[\"l\",.09,.42],[\"l\",.39,0],[\"c\",1.47,.09,2.76,.51,3.96,1.29],[\"c\",1.83,1.23,3.06,3.21,3.39,5.52],[\"c\",.09,.45,.12,1.29,.06,1.74],[\"c\",-.09,1.02,-.33,1.83,-.75,2.73],[\"c\",-.84,1.71,-2.28,3.06,-4.02,3.72],[\"l\",-.33,.12],[\"l\",.03,1.26],[\"c\",0,1.74,-.06,3.63,-.21,4.62],[\"c\",-.45,3.06,-2.19,5.49,-4.47,6.21],[\"c\",-.57,.18,-.9,.21,-1.59,.21],[\"c\",-.69,0,-1.02,-.03,-1.65,-.21],[\"c\",-1.14,-.27,-2.13,-.84,-2.94,-1.65],[\"c\",-.99,-.99,-1.56,-2.16,-1.71,-3.54],[\"c\",-.09,-.81,.06,-1.53,.45,-2.13],[\"c\",.63,-.99,1.83,-1.56,3,-1.53],[\"c\",1.5,.09,2.64,1.32,2.73,2.94],[\"c\",.06,1.47,-.93,2.7,-2.37,2.97],[\"c\",-.45,.06,-.84,.03,-1.29,-.09],[\"l\",-.21,-.09],[\"l\",.09,.12],[\"c\",.39,.54,.78,.93,1.32,1.26],[\"c\",1.35,.87,3.06,1.02,4.35,.36],[\"c\",1.44,-.72,2.52,-2.28,2.97,-4.35],[\"c\",.15,-.66,.24,-1.5,.3,-3.03],[\"c\",.03,-.84,.03,-2.94,0,-3],[\"c\",-.03,0,-.18,0,-.36,.03],[\"c\",-.66,.12,-.99,.12,-1.83,.12],[\"c\",-1.05,0,-1.71,-.06,-2.61,-.3],[\"c\",-4.02,-.99,-7.11,-4.35,-7.8,-8.46],[\"c\",-.12,-.66,-.12,-.99,-.12,-1.83],[\"c\",0,-.84,0,-1.14,.15,-1.92],[\"c\",.36,-2.28,1.41,-4.62,3.3,-7.29],[\"l\",2.79,-3.6],[\"c\",.54,-.66,.96,-1.2,.96,-1.23],[\"c\",0,-.03,-.09,-.33,-.18,-.69],[\"c\",-.96,-3.21,-1.41,-5.28,-1.59,-7.68],[\"c\",-.12,-1.38,-.15,-3.09,-.06,-3.96],[\"c\",.33,-2.67,1.38,-5.07,3.12,-7.08],[\"c\",.36,-.42,.99,-1.05,1.17,-1.14],[\"z\"],[\"m\",2.01,4.71],[\"c\",-.15,-.3,-.3,-.54,-.3,-.54],[\"c\",-.03,0,-.18,.09,-.3,.21],[\"c\",-2.4,1.74,-3.87,4.2,-4.26,7.11],[\"c\",-.06,.54,-.06,1.41,-.03,1.89],[\"c\",.09,1.29,.48,3.12,1.08,5.22],[\"c\",.15,.42,.24,.78,.24,.81],[\"c\",0,.03,.84,-1.11,1.23,-1.68],[\"c\",1.89,-2.73,2.88,-5.07,3.15,-7.53],[\"c\",.09,-.57,.12,-1.74,.06,-2.37],[\"c\",-.09,-1.23,-.27,-1.92,-.87,-3.12],[\"z\"],[\"m\",-2.94,20.7],[\"c\",-.21,-.72,-.39,-1.32,-.42,-1.32],[\"c\",0,0,-1.2,1.47,-1.86,2.37],[\"c\",-2.79,3.63,-4.02,6.3,-4.35,9.3],[\"c\",-.03,.21,-.03,.69,-.03,1.08],[\"c\",0,.69,0,.75,.06,1.11],[\"c\",.12,.54,.27,.99,.51,1.47],[\"c\",.69,1.38,1.83,2.55,3.42,3.42],[\"c\",.96,.54,2.07,.9,3.21,1.08],[\"c\",.78,.12,2.04,.12,2.94,-.03],[\"c\",.51,-.06,.45,-.03,.42,-.3],[\"c\",-.24,-3.33,-.72,-6.33,-1.62,-10.08],[\"c\",-.09,-.39,-.18,-.75,-.18,-.78],[\"c\",-.03,-.03,-.42,0,-.81,.09],[\"c\",-.9,.18,-1.65,.57,-2.22,1.14],[\"c\",-.72,.72,-1.08,1.65,-1.05,2.64],[\"c\",.06,.96,.48,1.83,1.23,2.58],[\"c\",.36,.36,.72,.63,1.17,.9],[\"c\",.33,.18,.36,.21,.42,.33],[\"c\",.18,.42,-.18,.9,-.6,.87],[\"c\",-.18,-.03,-.84,-.36,-1.26,-.63],[\"c\",-.78,-.51,-1.38,-1.11,-1.86,-1.83],[\"c\",-1.77,-2.7,-.99,-6.42,1.71,-8.19],[\"c\",.3,-.21,.81,-.48,1.17,-.63],[\"c\",.3,-.09,1.02,-.3,1.14,-.3],[\"c\",.06,0,.09,0,.09,-.03],[\"c\",.03,-.03,-.51,-1.92,-1.23,-4.26],[\"z\"],[\"m\",3.78,7.41],[\"c\",-.18,-.03,-.36,-.06,-.39,-.06],[\"c\",-.03,0,0,.21,.18,1.02],[\"c\",.75,3.18,1.26,6.3,1.5,9.09],[\"c\",.06,.72,0,.69,.51,.42],[\"c\",.78,-.36,1.44,-.96,1.98,-1.77],[\"c\",1.08,-1.62,1.2,-3.69,.3,-5.55],[\"c\",-.81,-1.62,-2.31,-2.79,-4.08,-3.15],[\"z\"]],w:19.051,h:57.057},\"clefs.perc\":{d:[[\"M\",5.07,-7.44],[\"l\",.09,-.06],[\"l\",1.53,0],[\"l\",1.53,0],[\"l\",.09,.06],[\"l\",.06,.09],[\"l\",0,7.35],[\"l\",0,7.32],[\"l\",-.06,.09],[\"l\",-.09,.06],[\"l\",-1.53,0],[\"l\",-1.53,0],[\"l\",-.09,-.06],[\"l\",-.06,-.09],[\"l\",0,-7.32],[\"l\",0,-7.35],[\"z\"],[\"m\",6.63,0],[\"l\",.09,-.06],[\"l\",1.53,0],[\"l\",1.53,0],[\"l\",.09,.06],[\"l\",.06,.09],[\"l\",0,7.35],[\"l\",0,7.32],[\"l\",-.06,.09],[\"l\",-.09,.06],[\"l\",-1.53,0],[\"l\",-1.53,0],[\"l\",-.09,-.06],[\"l\",-.06,-.09],[\"l\",0,-7.32],[\"l\",0,-7.35],[\"z\"]],w:9.99,h:14.97},\"timesig.common\":{d:[[\"M\",6.66,-7.83],[\"c\",.72,-.06,1.41,-.03,1.98,.09],[\"c\",1.2,.27,2.34,.96,3.09,1.92],[\"c\",.63,.81,1.08,1.86,1.14,2.73],[\"c\",.06,1.02,-.51,1.92,-1.44,2.22],[\"c\",-.24,.09,-.3,.09,-.63,.09],[\"c\",-.33,0,-.42,0,-.63,-.06],[\"c\",-.66,-.24,-1.14,-.63,-1.41,-1.2],[\"c\",-.15,-.3,-.21,-.51,-.24,-.9],[\"c\",-.06,-1.08,.57,-2.04,1.56,-2.37],[\"c\",.18,-.06,.27,-.06,.63,-.06],[\"l\",.45,0],[\"c\",.06,.03,.09,.03,.09,0],[\"c\",0,0,-.09,-.12,-.24,-.27],[\"c\",-1.02,-1.11,-2.55,-1.68,-4.08,-1.5],[\"c\",-1.29,.15,-2.04,.69,-2.4,1.74],[\"c\",-.36,.93,-.42,1.89,-.42,5.37],[\"c\",0,2.97,.06,3.96,.24,4.77],[\"c\",.24,1.08,.63,1.68,1.41,2.07],[\"c\",.81,.39,2.16,.45,3.18,.09],[\"c\",1.29,-.45,2.37,-1.53,3.03,-2.97],[\"c\",.15,-.33,.33,-.87,.39,-1.17],[\"c\",.09,-.24,.15,-.36,.3,-.39],[\"c\",.21,-.03,.42,.15,.39,.36],[\"c\",-.06,.39,-.42,1.38,-.69,1.89],[\"c\",-.96,1.8,-2.49,2.94,-4.23,3.18],[\"c\",-.99,.12,-2.58,-.06,-3.63,-.45],[\"c\",-.96,-.36,-1.71,-.84,-2.4,-1.5],[\"c\",-1.11,-1.11,-1.8,-2.61,-2.04,-4.56],[\"c\",-.06,-.6,-.06,-2.01,0,-2.61],[\"c\",.24,-1.95,.9,-3.45,2.01,-4.56],[\"c\",.69,-.66,1.44,-1.11,2.37,-1.47],[\"c\",.63,-.24,1.47,-.42,2.22,-.48],[\"z\"]],w:13.038,h:15.689},\"timesig.cut\":{d:[[\"M\",6.24,-10.44],[\"c\",.09,-.06,.09,-.06,.48,-.06],[\"c\",.36,0,.36,0,.45,.06],[\"l\",.06,.09],[\"l\",0,1.23],[\"l\",0,1.26],[\"l\",.27,0],[\"c\",1.26,0,2.49,.45,3.48,1.29],[\"c\",1.05,.87,1.8,2.28,1.89,3.48],[\"c\",.06,1.02,-.51,1.92,-1.44,2.22],[\"c\",-.24,.09,-.3,.09,-.63,.09],[\"c\",-.33,0,-.42,0,-.63,-.06],[\"c\",-.66,-.24,-1.14,-.63,-1.41,-1.2],[\"c\",-.15,-.3,-.21,-.51,-.24,-.9],[\"c\",-.06,-1.08,.57,-2.04,1.56,-2.37],[\"c\",.18,-.06,.27,-.06,.63,-.06],[\"l\",.45,0],[\"c\",.06,.03,.09,.03,.09,0],[\"c\",0,-.03,-.45,-.51,-.66,-.69],[\"c\",-.87,-.69,-1.83,-1.05,-2.94,-1.11],[\"l\",-.42,0],[\"l\",0,7.17],[\"l\",0,7.14],[\"l\",.42,0],[\"c\",.69,-.03,1.23,-.18,1.86,-.51],[\"c\",1.05,-.51,1.89,-1.47,2.46,-2.7],[\"c\",.15,-.33,.33,-.87,.39,-1.17],[\"c\",.09,-.24,.15,-.36,.3,-.39],[\"c\",.21,-.03,.42,.15,.39,.36],[\"c\",-.03,.24,-.21,.78,-.39,1.2],[\"c\",-.96,2.37,-2.94,3.9,-5.13,3.9],[\"l\",-.3,0],[\"l\",0,1.26],[\"l\",0,1.23],[\"l\",-.06,.09],[\"c\",-.09,.06,-.09,.06,-.45,.06],[\"c\",-.39,0,-.39,0,-.48,-.06],[\"l\",-.06,-.09],[\"l\",0,-1.29],[\"l\",0,-1.29],[\"l\",-.21,-.03],[\"c\",-1.23,-.21,-2.31,-.63,-3.21,-1.29],[\"c\",-.15,-.09,-.45,-.36,-.66,-.57],[\"c\",-1.11,-1.11,-1.8,-2.61,-2.04,-4.56],[\"c\",-.06,-.6,-.06,-2.01,0,-2.61],[\"c\",.24,-1.95,.93,-3.45,2.04,-4.59],[\"c\",.42,-.39,.78,-.66,1.26,-.93],[\"c\",.75,-.45,1.65,-.75,2.61,-.9],[\"l\",.21,-.03],[\"l\",0,-1.29],[\"l\",0,-1.29],[\"z\"],[\"m\",-.06,10.44],[\"c\",0,-5.58,0,-6.99,-.03,-6.99],[\"c\",-.15,0,-.63,.27,-.87,.45],[\"c\",-.45,.36,-.75,.93,-.93,1.77],[\"c\",-.18,.81,-.24,1.8,-.24,4.74],[\"c\",0,2.97,.06,3.96,.24,4.77],[\"c\",.24,1.08,.66,1.68,1.41,2.07],[\"c\",.12,.06,.3,.12,.33,.15],[\"l\",.09,0],[\"l\",0,-6.96],[\"z\"]],w:13.038,h:20.97},\"timesig.imperfectum\":{d:[[\"M\",13,-5],[\"a\",8,8,0,1,0,0,10]],w:13.038,h:20.97},\"timesig.imperfectum2\":{d:[[\"M\",13,-5],[\"a\",8,8,0,1,0,0,10]],w:13.038,h:20.97},\"timesig.perfectum\":{d:[[\"M\",13,-5],[\"a\",8,8,0,1,0,0,10]],w:13.038,h:20.97},\"timesig.perfectum2\":{d:[[\"M\",13,-5],[\"a\",8,8,0,1,0,0,10]],w:13.038,h:20.97},f:{d:[[\"M\",9.93,-14.28],[\"c\",1.53,-.18,2.88,.45,3.12,1.5],[\"c\",.12,.51,0,1.32,-.27,1.86],[\"c\",-.15,.3,-.42,.57,-.63,.69],[\"c\",-.69,.36,-1.56,.03,-1.83,-.69],[\"c\",-.09,-.24,-.09,-.69,0,-.87],[\"c\",.06,-.12,.21,-.24,.45,-.42],[\"c\",.42,-.24,.57,-.45,.6,-.72],[\"c\",.03,-.33,-.09,-.39,-.63,-.42],[\"c\",-.3,0,-.45,0,-.6,.03],[\"c\",-.81,.21,-1.35,.93,-1.74,2.46],[\"c\",-.06,.27,-.48,2.25,-.48,2.31],[\"c\",0,.03,.39,.03,.9,.03],[\"c\",.72,0,.9,0,.99,.06],[\"c\",.42,.15,.45,.72,.03,.9],[\"c\",-.12,.06,-.24,.06,-1.17,.06],[\"l\",-1.05,0],[\"l\",-.78,2.55],[\"c\",-.45,1.41,-.87,2.79,-.96,3.06],[\"c\",-.87,2.37,-2.37,4.74,-3.78,5.91],[\"c\",-1.05,.9,-2.04,1.23,-3.09,1.08],[\"c\",-1.11,-.18,-1.89,-.78,-2.04,-1.59],[\"c\",-.12,-.66,.15,-1.71,.54,-2.19],[\"c\",.69,-.75,1.86,-.54,2.22,.39],[\"c\",.06,.15,.09,.27,.09,.48],[\"c\",0,.24,-.03,.27,-.12,.42],[\"c\",-.03,.09,-.15,.18,-.27,.27],[\"c\",-.09,.06,-.27,.21,-.36,.27],[\"c\",-.24,.18,-.36,.36,-.39,.6],[\"c\",-.03,.33,.09,.39,.63,.42],[\"c\",.42,0,.63,-.03,.9,-.15],[\"c\",.6,-.3,.96,-.96,1.38,-2.64],[\"c\",.09,-.42,.63,-2.55,1.17,-4.77],[\"l\",1.02,-4.08],[\"c\",0,-.03,-.36,-.03,-.81,-.03],[\"c\",-.72,0,-.81,0,-.93,-.06],[\"c\",-.42,-.18,-.39,-.75,.03,-.9],[\"c\",.09,-.06,.27,-.06,1.05,-.06],[\"l\",.96,0],[\"l\",0,-.09],[\"c\",.06,-.18,.3,-.72,.51,-1.17],[\"c\",1.2,-2.46,3.3,-4.23,5.34,-4.5],[\"z\"]],w:16.155,h:19.445},m:{d:[[\"M\",2.79,-8.91],[\"c\",.09,0,.3,-.03,.45,-.03],[\"c\",.24,.03,.3,.03,.45,.12],[\"c\",.36,.15,.63,.54,.75,1.02],[\"l\",.03,.21],[\"l\",.33,-.3],[\"c\",.69,-.69,1.38,-1.02,2.07,-1.02],[\"c\",.27,0,.33,0,.48,.06],[\"c\",.21,.09,.48,.36,.63,.6],[\"c\",.03,.09,.12,.27,.18,.42],[\"c\",.03,.15,.09,.27,.12,.27],[\"c\",0,0,.09,-.09,.18,-.21],[\"c\",.33,-.39,.87,-.81,1.29,-.99],[\"c\",.78,-.33,1.47,-.21,2.01,.33],[\"c\",.3,.33,.48,.69,.6,1.14],[\"c\",.09,.42,.06,.54,-.54,3.06],[\"c\",-.33,1.29,-.57,2.4,-.57,2.43],[\"c\",0,.12,.09,.21,.21,.21],[\"c\",.24,0,.75,-.3,1.2,-.72],[\"c\",.45,-.39,.6,-.45,.78,-.27],[\"c\",.18,.18,.09,.36,-.45,.87],[\"c\",-1.05,.96,-1.83,1.47,-2.58,1.71],[\"c\",-.93,.33,-1.53,.21,-1.8,-.33],[\"c\",-.06,-.15,-.06,-.21,-.06,-.45],[\"c\",0,-.24,.03,-.48,.6,-2.82],[\"c\",.42,-1.71,.6,-2.64,.63,-2.79],[\"c\",.03,-.57,-.3,-.75,-.84,-.48],[\"c\",-.24,.12,-.54,.39,-.66,.63],[\"c\",-.03,.09,-.42,1.38,-.9,3],[\"c\",-.9,3.15,-.84,3,-1.14,3.15],[\"l\",-.15,.09],[\"l\",-.78,0],[\"c\",-.6,0,-.78,0,-.84,-.06],[\"c\",-.09,-.03,-.18,-.18,-.18,-.27],[\"c\",0,-.03,.36,-1.38,.84,-2.97],[\"c\",.57,-2.04,.81,-2.97,.84,-3.12],[\"c\",.03,-.54,-.3,-.72,-.84,-.45],[\"c\",-.24,.12,-.57,.42,-.66,.63],[\"c\",-.06,.09,-.51,1.44,-1.05,2.97],[\"c\",-.51,1.56,-.99,2.85,-.99,2.91],[\"c\",-.06,.12,-.21,.24,-.36,.3],[\"c\",-.12,.06,-.21,.06,-.9,.06],[\"c\",-.6,0,-.78,0,-.84,-.06],[\"c\",-.09,-.03,-.18,-.18,-.18,-.27],[\"c\",0,-.03,.45,-1.38,.99,-2.97],[\"c\",1.05,-3.18,1.05,-3.18,.93,-3.45],[\"c\",-.12,-.27,-.39,-.3,-.72,-.15],[\"c\",-.54,.27,-1.14,1.17,-1.56,2.4],[\"c\",-.06,.15,-.15,.3,-.18,.36],[\"c\",-.21,.21,-.57,.27,-.72,.09],[\"c\",-.09,-.09,-.06,-.21,.06,-.63],[\"c\",.48,-1.26,1.26,-2.46,2.01,-3.21],[\"c\",.57,-.54,1.2,-.87,1.83,-1.02],[\"z\"]],w:14.687,h:9.126},p:{d:[[\"M\",1.92,-8.7],[\"c\",.27,-.09,.81,-.06,1.11,.03],[\"c\",.54,.18,.93,.51,1.17,.99],[\"c\",.09,.15,.15,.33,.18,.36],[\"l\",0,.12],[\"l\",.3,-.27],[\"c\",.66,-.6,1.35,-1.02,2.13,-1.2],[\"c\",.21,-.06,.33,-.06,.78,-.06],[\"c\",.45,0,.51,0,.84,.09],[\"c\",1.29,.33,2.07,1.32,2.25,2.79],[\"c\",.09,.81,-.09,2.01,-.45,2.79],[\"c\",-.54,1.26,-1.86,2.55,-3.18,3.03],[\"c\",-.45,.18,-.81,.24,-1.29,.24],[\"c\",-.69,-.03,-1.35,-.18,-1.86,-.45],[\"c\",-.3,-.15,-.51,-.18,-.69,-.09],[\"c\",-.09,.03,-.18,.09,-.18,.12],[\"c\",-.09,.12,-1.05,2.94,-1.05,3.06],[\"c\",0,.24,.18,.48,.51,.63],[\"c\",.18,.06,.54,.15,.75,.15],[\"c\",.21,0,.36,.06,.42,.18],[\"c\",.12,.18,.06,.42,-.12,.54],[\"c\",-.09,.03,-.15,.03,-.78,0],[\"c\",-1.98,-.15,-3.81,-.15,-5.79,0],[\"c\",-.63,.03,-.69,.03,-.78,0],[\"c\",-.24,-.15,-.24,-.57,.03,-.66],[\"c\",.06,-.03,.48,-.09,.99,-.12],[\"c\",.87,-.06,1.11,-.09,1.35,-.21],[\"c\",.18,-.06,.33,-.18,.39,-.3],[\"c\",.06,-.12,3.24,-9.42,3.27,-9.6],[\"c\",.06,-.33,.03,-.57,-.15,-.69],[\"c\",-.09,-.06,-.12,-.06,-.3,-.06],[\"c\",-.69,.06,-1.53,1.02,-2.28,2.61],[\"c\",-.09,.21,-.21,.45,-.27,.51],[\"c\",-.09,.12,-.33,.24,-.48,.24],[\"c\",-.18,0,-.36,-.15,-.36,-.3],[\"c\",0,-.24,.78,-1.83,1.26,-2.55],[\"c\",.72,-1.11,1.47,-1.74,2.28,-1.92],[\"z\"],[\"m\",5.37,1.47],[\"c\",-.27,-.12,-.75,-.03,-1.14,.21],[\"c\",-.75,.48,-1.47,1.68,-1.89,3.15],[\"c\",-.45,1.47,-.42,2.34,0,2.7],[\"c\",.45,.39,1.26,.21,1.83,-.36],[\"c\",.51,-.51,.99,-1.68,1.38,-3.27],[\"c\",.3,-1.17,.33,-1.74,.15,-2.13],[\"c\",-.09,-.15,-.15,-.21,-.33,-.3],[\"z\"]],w:14.689,h:13.127},r:{d:[[\"M\",6.33,-9.12],[\"c\",.27,-.03,.93,0,1.2,.06],[\"c\",.84,.21,1.23,.81,1.02,1.53],[\"c\",-.24,.75,-.9,1.17,-1.56,.96],[\"c\",-.33,-.09,-.51,-.3,-.66,-.75],[\"c\",-.03,-.12,-.09,-.24,-.12,-.3],[\"c\",-.09,-.15,-.3,-.24,-.48,-.24],[\"c\",-.57,0,-1.38,.54,-1.65,1.08],[\"c\",-.06,.15,-.33,1.17,-.9,3.27],[\"c\",-.57,2.31,-.81,3.12,-.87,3.21],[\"c\",-.03,.06,-.12,.15,-.18,.21],[\"l\",-.12,.06],[\"l\",-.81,.03],[\"c\",-.69,0,-.81,0,-.9,-.03],[\"c\",-.09,-.06,-.18,-.21,-.18,-.3],[\"c\",0,-.06,.39,-1.62,.9,-3.51],[\"c\",.84,-3.24,.87,-3.45,.87,-3.72],[\"c\",0,-.21,0,-.27,-.03,-.36],[\"c\",-.12,-.15,-.21,-.24,-.42,-.24],[\"c\",-.24,0,-.45,.15,-.78,.42],[\"c\",-.33,.36,-.45,.54,-.72,1.14],[\"c\",-.03,.12,-.21,.24,-.36,.27],[\"c\",-.12,0,-.15,0,-.24,-.06],[\"c\",-.18,-.12,-.18,-.21,-.06,-.54],[\"c\",.21,-.57,.42,-.93,.78,-1.32],[\"c\",.54,-.51,1.2,-.81,1.95,-.87],[\"c\",.81,-.03,1.53,.3,1.92,.87],[\"l\",.12,.18],[\"l\",.09,-.09],[\"c\",.57,-.45,1.41,-.84,2.19,-.96],[\"z\"]],w:9.41,h:9.132},s:{d:[[\"M\",4.47,-8.73],[\"c\",.09,0,.36,-.03,.57,-.03],[\"c\",.75,.03,1.29,.24,1.71,.63],[\"c\",.51,.54,.66,1.26,.36,1.83],[\"c\",-.24,.42,-.63,.57,-1.11,.42],[\"c\",-.33,-.09,-.6,-.36,-.6,-.57],[\"c\",0,-.03,.06,-.21,.15,-.39],[\"c\",.12,-.21,.15,-.33,.18,-.48],[\"c\",0,-.24,-.06,-.48,-.15,-.6],[\"c\",-.15,-.21,-.42,-.24,-.75,-.15],[\"c\",-.27,.06,-.48,.18,-.69,.36],[\"c\",-.39,.39,-.51,.96,-.33,1.38],[\"c\",.09,.21,.42,.51,.78,.72],[\"c\",1.11,.69,1.59,1.11,1.89,1.68],[\"c\",.21,.39,.24,.78,.15,1.29],[\"c\",-.18,1.2,-1.17,2.16,-2.52,2.52],[\"c\",-1.02,.24,-1.95,.12,-2.7,-.42],[\"c\",-.72,-.51,-.99,-1.47,-.6,-2.19],[\"c\",.24,-.48,.72,-.63,1.17,-.42],[\"c\",.33,.18,.54,.45,.57,.81],[\"c\",0,.21,-.03,.3,-.33,.51],[\"c\",-.33,.24,-.39,.42,-.27,.69],[\"c\",.06,.15,.21,.27,.45,.33],[\"c\",.3,.09,.87,.09,1.2,0],[\"c\",.75,-.21,1.23,-.72,1.29,-1.35],[\"c\",.03,-.42,-.15,-.81,-.54,-1.2],[\"c\",-.24,-.24,-.48,-.42,-1.41,-1.02],[\"c\",-.69,-.42,-1.05,-.93,-1.05,-1.47],[\"c\",0,-.39,.12,-.87,.3,-1.23],[\"c\",.27,-.57,.78,-1.05,1.38,-1.35],[\"c\",.24,-.12,.63,-.27,.9,-.3],[\"z\"]],w:6.632,h:8.758},z:{d:[[\"M\",2.64,-7.95],[\"c\",.36,-.09,.81,-.03,1.71,.27],[\"c\",.78,.21,.96,.27,1.74,.3],[\"c\",.87,.06,1.02,.03,1.38,-.21],[\"c\",.21,-.15,.33,-.15,.48,-.06],[\"c\",.15,.09,.21,.3,.15,.45],[\"c\",-.03,.06,-1.26,1.26,-2.76,2.67],[\"l\",-2.73,2.55],[\"l\",.54,.03],[\"c\",.54,.03,.72,.03,2.01,.15],[\"c\",.36,.03,.9,.06,1.2,.09],[\"c\",.66,0,.81,-.03,1.02,-.24],[\"c\",.3,-.3,.39,-.72,.27,-1.23],[\"c\",-.06,-.27,-.06,-.27,-.03,-.39],[\"c\",.15,-.3,.54,-.27,.69,.03],[\"c\",.15,.33,.27,1.02,.27,1.5],[\"c\",0,1.47,-1.11,2.7,-2.52,2.79],[\"c\",-.57,.03,-1.02,-.09,-2.01,-.51],[\"c\",-1.02,-.42,-1.23,-.48,-2.13,-.54],[\"c\",-.81,-.06,-.96,-.03,-1.26,.18],[\"c\",-.12,.06,-.24,.12,-.27,.12],[\"c\",-.27,0,-.45,-.3,-.36,-.51],[\"c\",.03,-.06,1.32,-1.32,2.91,-2.79],[\"l\",2.88,-2.73],[\"c\",-.03,0,-.21,.03,-.42,.06],[\"c\",-.21,.03,-.78,.09,-1.23,.12],[\"c\",-1.11,.12,-1.23,.15,-1.95,.27],[\"c\",-.72,.15,-1.17,.18,-1.29,.09],[\"c\",-.27,-.18,-.21,-.75,.12,-1.26],[\"c\",.39,-.6,.93,-1.02,1.59,-1.2],[\"z\"]],w:8.573,h:8.743},\"+\":{d:[[\"M\",3.48,-9.3],[\"c\",.18,-.09,.36,-.09,.54,0],[\"c\",.18,.09,.24,.15,.33,.3],[\"l\",.06,.15],[\"l\",0,1.29],[\"l\",0,1.29],[\"l\",1.29,0],[\"c\",1.23,0,1.29,0,1.41,.06],[\"c\",.06,.03,.15,.09,.18,.12],[\"c\",.12,.09,.21,.33,.21,.48],[\"c\",0,.15,-.09,.39,-.21,.48],[\"c\",-.03,.03,-.12,.09,-.18,.12],[\"c\",-.12,.06,-.18,.06,-1.41,.06],[\"l\",-1.29,0],[\"l\",0,1.29],[\"c\",0,1.23,0,1.29,-.06,1.41],[\"c\",-.09,.18,-.15,.24,-.3,.33],[\"c\",-.21,.09,-.39,.09,-.57,0],[\"c\",-.18,-.09,-.24,-.15,-.33,-.33],[\"c\",-.06,-.12,-.06,-.18,-.06,-1.41],[\"l\",0,-1.29],[\"l\",-1.29,0],[\"c\",-1.23,0,-1.29,0,-1.41,-.06],[\"c\",-.18,-.09,-.24,-.15,-.33,-.33],[\"c\",-.09,-.18,-.09,-.36,0,-.54],[\"c\",.09,-.18,.15,-.24,.33,-.33],[\"l\",.15,-.06],[\"l\",1.26,0],[\"l\",1.29,0],[\"l\",0,-1.29],[\"c\",0,-1.23,0,-1.29,.06,-1.41],[\"c\",.09,-.18,.15,-.24,.33,-.33],[\"z\"]],w:7.507,h:7.515},\",\":{d:[[\"M\",1.32,-3.36],[\"c\",.57,-.15,1.17,.03,1.59,.45],[\"c\",.45,.45,.6,.96,.51,1.89],[\"c\",-.09,1.23,-.42,2.46,-.99,3.93],[\"c\",-.3,.72,-.72,1.62,-.78,1.68],[\"c\",-.18,.21,-.51,.18,-.66,-.06],[\"c\",-.03,-.06,-.06,-.15,-.06,-.18],[\"c\",0,-.06,.12,-.33,.24,-.63],[\"c\",.84,-1.8,1.02,-2.61,.69,-3.24],[\"c\",-.12,-.24,-.27,-.36,-.75,-.6],[\"c\",-.36,-.15,-.42,-.21,-.6,-.39],[\"c\",-.69,-.69,-.69,-1.71,0,-2.4],[\"c\",.21,-.21,.51,-.39,.81,-.45],[\"z\"]],w:3.452,h:8.143},\"-\":{d:[[\"M\",.18,-5.34],[\"c\",.09,-.06,.15,-.06,2.31,-.06],[\"c\",2.46,0,2.37,0,2.46,.21],[\"c\",.12,.21,.03,.42,-.15,.54],[\"c\",-.09,.06,-.15,.06,-2.28,.06],[\"c\",-2.16,0,-2.22,0,-2.31,-.06],[\"c\",-.27,-.15,-.27,-.54,-.03,-.69],[\"z\"]],w:5.001,h:.81},\".\":{d:[[\"M\",1.32,-3.36],[\"c\",1.05,-.27,2.1,.57,2.1,1.65],[\"c\",0,1.08,-1.05,1.92,-2.1,1.65],[\"c\",-.9,-.21,-1.5,-1.14,-1.26,-2.04],[\"c\",.12,-.63,.63,-1.11,1.26,-1.26],[\"z\"]],w:3.413,h:3.402},\"scripts.wedge\":{d:[[\"M\",-3.66,-7.44],[\"c\",.06,-.09,0,-.09,.81,.03],[\"c\",1.86,.3,3.84,.3,5.73,0],[\"c\",.78,-.12,.72,-.12,.78,-.03],[\"c\",.15,.15,.12,.24,-.24,.6],[\"c\",-.93,.93,-1.98,2.76,-2.67,4.62],[\"c\",-.3,.78,-.51,1.71,-.51,2.13],[\"c\",0,.15,0,.18,-.06,.27],[\"c\",-.12,.09,-.24,.09,-.36,0],[\"c\",-.06,-.09,-.06,-.12,-.06,-.27],[\"c\",0,-.42,-.21,-1.35,-.51,-2.13],[\"c\",-.69,-1.86,-1.74,-3.69,-2.67,-4.62],[\"c\",-.36,-.36,-.39,-.45,-.24,-.6],[\"z\"]],w:7.49,h:7.752},\"scripts.thumb\":{d:[[\"M\",-.54,-3.69],[\"c\",.15,-.03,.36,-.06,.51,-.06],[\"c\",1.44,0,2.58,1.11,2.94,2.85],[\"c\",.09,.48,.09,1.32,0,1.8],[\"c\",-.27,1.41,-1.08,2.43,-2.16,2.73],[\"l\",-.18,.06],[\"l\",0,.12],[\"c\",.03,.06,.06,.45,.09,.87],[\"c\",.03,.57,.03,.78,0,.84],[\"c\",-.09,.27,-.39,.48,-.66,.48],[\"c\",-.27,0,-.57,-.21,-.66,-.48],[\"c\",-.03,-.06,-.03,-.27,0,-.84],[\"c\",.03,-.42,.06,-.81,.09,-.87],[\"l\",0,-.12],[\"l\",-.18,-.06],[\"c\",-1.08,-.3,-1.89,-1.32,-2.16,-2.73],[\"c\",-.09,-.48,-.09,-1.32,0,-1.8],[\"c\",.15,-.84,.51,-1.53,1.02,-2.04],[\"c\",.39,-.39,.84,-.63,1.35,-.75],[\"z\"],[\"m\",1.05,.9],[\"c\",-.15,-.09,-.21,-.09,-.45,-.12],[\"c\",-.15,0,-.3,.03,-.39,.03],[\"c\",-.57,.18,-.9,.72,-1.08,1.74],[\"c\",-.06,.48,-.06,1.8,0,2.28],[\"c\",.15,.9,.42,1.44,.9,1.65],[\"c\",.18,.09,.21,.09,.51,.09],[\"c\",.3,0,.33,0,.51,-.09],[\"c\",.48,-.21,.75,-.75,.9,-1.65],[\"c\",.03,-.27,.03,-.54,.03,-1.14],[\"c\",0,-.6,0,-.87,-.03,-1.14],[\"c\",-.15,-.9,-.45,-1.44,-.9,-1.65],[\"z\"]],w:5.955,h:9.75},\"scripts.open\":{d:[[\"M\",-.54,-3.69],[\"c\",.15,-.03,.36,-.06,.51,-.06],[\"c\",1.44,0,2.58,1.11,2.94,2.85],[\"c\",.09,.48,.09,1.32,0,1.8],[\"c\",-.33,1.74,-1.47,2.85,-2.91,2.85],[\"c\",-1.44,0,-2.58,-1.11,-2.91,-2.85],[\"c\",-.09,-.48,-.09,-1.32,0,-1.8],[\"c\",.15,-.84,.51,-1.53,1.02,-2.04],[\"c\",.39,-.39,.84,-.63,1.35,-.75],[\"z\"],[\"m\",1.11,.9],[\"c\",-.21,-.09,-.27,-.09,-.51,-.12],[\"c\",-.3,0,-.42,.03,-.66,.15],[\"c\",-.24,.12,-.51,.39,-.66,.63],[\"c\",-.54,.93,-.63,2.64,-.21,3.81],[\"c\",.21,.54,.51,.9,.93,1.11],[\"c\",.21,.09,.24,.09,.54,.09],[\"c\",.3,0,.33,0,.54,-.09],[\"c\",.42,-.21,.72,-.57,.93,-1.11],[\"c\",.36,-.99,.36,-2.37,0,-3.36],[\"c\",-.21,-.54,-.51,-.9,-.9,-1.11],[\"z\"]],w:5.955,h:7.5},\"scripts.longphrase\":{d:[[\"M\",1.47,-15.09],[\"c\",.36,-.09,.66,-.18,.69,-.18],[\"c\",.06,0,.06,.54,.06,11.25],[\"l\",0,11.25],[\"l\",-.63,.15],[\"c\",-.66,.18,-1.44,.39,-1.5,.39],[\"c\",-.03,0,-.03,-3.39,-.03,-11.25],[\"l\",0,-11.25],[\"l\",.36,-.09],[\"c\",.21,-.06,.66,-.18,1.05,-.27],[\"z\"]],w:2.16,h:23.04},\"scripts.mediumphrase\":{d:[[\"M\",1.47,-7.59],[\"c\",.36,-.09,.66,-.18,.69,-.18],[\"c\",.06,0,.06,.39,.06,7.5],[\"l\",0,7.5],[\"l\",-.63,.15],[\"c\",-.66,.18,-1.44,.39,-1.5,.39],[\"c\",-.03,0,-.03,-2.28,-.03,-7.5],[\"l\",0,-7.5],[\"l\",.36,-.09],[\"c\",.21,-.06,.66,-.18,1.05,-.27],[\"z\"]],w:2.16,h:15.54},\"scripts.shortphrase\":{d:[[\"M\",1.47,-7.59],[\"c\",.36,-.09,.66,-.18,.69,-.18],[\"c\",.06,0,.06,.21,.06,3.75],[\"l\",0,3.75],[\"l\",-.42,.09],[\"c\",-.57,.18,-1.65,.45,-1.71,.45],[\"c\",-.03,0,-.03,-.72,-.03,-3.75],[\"l\",0,-3.75],[\"l\",.36,-.09],[\"c\",.21,-.06,.66,-.18,1.05,-.27],[\"z\"]],w:2.16,h:8.04},\"scripts.snap\":{d:[[\"M\",4.5,-3.39],[\"c\",.36,-.03,.96,-.03,1.35,0],[\"c\",1.56,.15,3.15,.9,4.2,2.01],[\"c\",.24,.27,.33,.42,.33,.6],[\"c\",0,.27,.03,.24,-2.46,2.22],[\"c\",-1.29,1.02,-2.4,1.86,-2.49,1.92],[\"c\",-.18,.09,-.3,.09,-.48,0],[\"c\",-.09,-.06,-1.2,-.9,-2.49,-1.92],[\"c\",-2.49,-1.98,-2.46,-1.95,-2.46,-2.22],[\"c\",0,-.18,.09,-.33,.33,-.6],[\"c\",1.05,-1.08,2.64,-1.86,4.17,-2.01],[\"z\"],[\"m\",1.29,1.17],[\"c\",-1.47,-.15,-2.97,.3,-4.14,1.2],[\"l\",-.18,.15],[\"l\",.06,.09],[\"c\",.15,.12,3.63,2.85,3.66,2.85],[\"c\",.03,0,3.51,-2.73,3.66,-2.85],[\"l\",.06,-.09],[\"l\",-.18,-.15],[\"c\",-.84,-.66,-1.89,-1.08,-2.94,-1.2],[\"z\"]],w:10.38,h:6.84},\"noteheads.slash.whole\":{d:[[\"M\",5,-5],[\"l\",1,1],[\"l\",-5,5],[\"l\",-1,-1],[\"z\"],[\"m\",4,6],[\"l\",-5,-5],[\"l\",2,-2],[\"l\",5,5],[\"z\"],[\"m\",0,-2],[\"l\",1,1],[\"l\",-5,5],[\"l\",-1,-1],[\"z\"],[\"m\",-4,6],[\"l\",-5,-5],[\"l\",2,-2],[\"l\",5,5],[\"z\"]],w:10.81,h:15.63},\"noteheads.slash.quarter\":{d:[[\"M\",9,-6],[\"l\",0,4],[\"l\",-9,9],[\"l\",0,-4],[\"z\"]],w:9,h:9},\"noteheads.harmonic.quarter\":{d:[[\"M\",3.63,-4.02],[\"c\",.09,-.06,.18,-.09,.24,-.03],[\"c\",.03,.03,.87,.93,1.83,2.01],[\"c\",1.5,1.65,1.8,1.98,1.8,2.04],[\"c\",0,.06,-.3,.39,-1.8,2.04],[\"c\",-.96,1.08,-1.8,1.98,-1.83,2.01],[\"c\",-.06,.06,-.15,.03,-.24,-.03],[\"c\",-.12,-.09,-3.54,-3.84,-3.6,-3.93],[\"c\",-.03,-.03,-.03,-.09,-.03,-.15],[\"c\",.03,-.06,3.45,-3.84,3.63,-3.96],[\"z\"]],w:7.5,h:8.165}};this.printSymbol=function(e,i,r,s,n){if(!t[r])return null;var a=this.pathClone(t[r].d);a[0][1]+=e,a[0][2]+=i;for(var c=\"\",o=0;o<a.length;o++)c+=a[o].join(\" \");return s.path({path:c,stroke:\"none\",fill:\"#000000\",class:n})},this.getPathForSymbol=function(e,i,r,s,n){if(s=s||1,n=n||1,!t[r])return null;var a=this.pathClone(t[r].d);return 1===s&&1===n||this.pathScale(a,s,n),a[0][1]+=e,a[0][2]+=i,a},this.getSymbolWidth=function(e){return t[e]?t[e].w:0},this.getSymbolHeight=function(e){return t[e]?t[e].h:0},this.symbolHeightInPitches=function(t){return this.getSymbolHeight(t)/r.STEP},this.getSymbolAlign=function(t){return\"scripts\"===t.substring(0,7)&&\"scripts.roll\"!==t?\"center\":\"left\"},this.pathClone=function(t){for(var e=[],i=0,r=t.length;i<r;i++){e[i]=[];for(var s=0,n=t[i].length;s<n;s++)e[i][s]=t[i][s]}return e},this.pathScale=function(t,e,i){for(var r=0,s=t.length;r<s;r++){var n,a,c=t[r];for(n=1,a=c.length;n<a;n++)c[n]*=n%2?e:i}},this.getYCorr=function(t){switch(t){case\"0\":case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"6\":case\"7\":case\"8\":case\"9\":case\"+\":return-2;case\"timesig.common\":case\"timesig.cut\":return 0;case\"flags.d32nd\":return-1;case\"flags.d64th\":return-2;case\"flags.u32nd\":return 1;case\"flags.u64th\":return 3;case\"rests.whole\":return 1;case\"rests.half\":case\"rests.8th\":case\"rests.quarter\":case\"rests.16th\":case\"rests.32nd\":case\"rests.64th\":return-1;case\"f\":case\"m\":case\"p\":case\"s\":case\"z\":return-4;case\"scripts.trill\":case\"scripts.upbow\":case\"scripts.downbow\":return-2;case\"scripts.ufermata\":case\"scripts.wedge\":case\"scripts.roll\":case\"scripts.shortphrase\":case\"scripts.longphrase\":return-1;case\"scripts.dfermata\":return 1;default:return 0}}}},function(t,e,i){\"use strict\";var r=i(1),s=function(t,e,i,r,s,n){n||(n={}),this.tuneNumber=s,this.abcelem=t,this.duration=e,this.durationClass=n.durationClassOveride?n.durationClassOveride:this.duration,this.minspacing=i||0,this.x=0,this.children=[],this.heads=[],this.extra=[],this.extraw=0,this.w=0,this.right=[],this.invisible=!1,this.bottom=void 0,this.top=void 0,this.type=r,this.specialY={tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}};s.prototype.setUpperAndLowerElements=function(t){for(var e=0;e<this.children.length;e++){var i=this.children[e];for(var r in this.specialY)this.specialY.hasOwnProperty(r)&&i[r]&&(i.pitch=t[r],void 0===i.top&&(i.setUpperAndLowerElements(t),this.pushTop(i.top),this.pushBottom(i.bottom)))}},s.prototype.getMinWidth=function(){return this.w},s.prototype.getExtraWidth=function(){return-this.extraw},s.prototype.addExtra=function(t){t.dx<this.extraw&&(this.extraw=t.dx),this.extra[this.extra.length]=t,this.addChild(t)},s.prototype.addHead=function(t){t.dx<this.extraw&&(this.extraw=t.dx),this.heads[this.heads.length]=t,this.addRight(t)},s.prototype.addRight=function(t){t.dx+t.w>this.w&&(this.w=t.dx+t.w),this.right[this.right.length]=t,this.addChild(t)},s.prototype.addCentered=function(t){var e=t.w/2;-e<this.extraw&&(this.extraw=-e),this.extra[this.extra.length]=t,t.dx+e>this.w&&(this.w=t.dx+e),this.right[this.right.length]=t,this.addChild(t)},s.prototype.setLimit=function(t,e){e[t]&&(this.specialY[t]?this.specialY[t]=Math.max(this.specialY[t],e[t]):this.specialY[t]=e[t])},s.prototype.addChild=function(t){t.parent=this,this.children[this.children.length]=t,this.pushTop(t.top),this.pushBottom(t.bottom),this.setLimit(\"tempoHeightAbove\",t),this.setLimit(\"partHeightAbove\",t),this.setLimit(\"volumeHeightAbove\",t),this.setLimit(\"dynamicHeightAbove\",t),this.setLimit(\"endingHeightAbove\",t),this.setLimit(\"chordHeightAbove\",t),this.setLimit(\"lyricHeightAbove\",t),this.setLimit(\"lyricHeightBelow\",t),this.setLimit(\"chordHeightBelow\",t),this.setLimit(\"volumeHeightBelow\",t),this.setLimit(\"dynamicHeightBelow\",t)},s.prototype.pushTop=function(t){void 0!==t&&(void 0===this.top?this.top=t:this.top=Math.max(t,this.top))},s.prototype.pushBottom=function(t){void 0!==t&&(void 0===this.bottom?this.bottom=t:this.bottom=Math.min(t,this.bottom))},s.prototype.setX=function(t){this.x=t;for(var e=0;e<this.children.length;e++)this.children[e].setX(t)},s.prototype.setHint=function(){this.hint=!0},s.prototype.draw=function(t,e){if(!this.invisible){this.elemset=[],t.beginGroup();for(var i=0;i<this.children.length;i++){0;var s=this.children[i].draw(t,e);s&&this.elemset.push(s)}var n=this.type;if((\"note\"===this.type||\"rest\"===this.type)&&(n=(n+=\" d\"+this.durationClass).replace(/\\./g,\"-\"),this.abcelem.pitches))for(var a=0;a<this.abcelem.pitches.length;a++)n+=\" p\"+this.abcelem.pitches[a].pitch;var c=t.endGroup(n);c&&this.elemset.push(c),this.klass&&this.setClass(\"mark\",\"\",\"#00ff00\"),this.hint&&this.setClass(\"abcjs-hint\",\"\",null);var o=t.printShadedBox(this.x,t.calcY(this.top),this.w,t.calcY(this.bottom)-t.calcY(this.top),\"#000000\",0),h=this,l=t.controller;o.addEventListener(\"mouseup\",function(){var t=[];if(h.elemset)for(var e=0;e<h.elemset.length;e++){var i=h.elemset[e];i&&t.push(i.getAttribute(\"class\"))}l.notifySelect(h,h.tuneNumber,t)}),this.abcelem.abselem=this;r.STEP}},s.prototype.isIE=!1,s.prototype.setClass=function(t,e,i){for(var r=0;r<this.elemset.length;r++){var s=this.elemset[r];s.setAttribute(\"fill\",i);var n=s.getAttribute(\"class\");n||(n=\"\"),n=(n=n.replace(e,\"\")).replace(t,\"\"),t.length>0&&(n.length>0&&\" \"!==n.charAt(n.length-1)&&(n+=\" \"),n+=t),s.setAttribute(\"class\",n)}},s.prototype.highlight=function(t,e){void 0===t&&(t=\"abcjs-note_selected\"),void 0===e&&(e=\"#ff0000\"),this.setClass(t,\"\",e)},s.prototype.unhighlight=function(t,e){void 0===t&&(t=\"abcjs-note_selected\"),void 0===e&&(e=\"#000000\"),this.setClass(\"\",t,e)},t.exports=s},function(t,e,i){\"use strict\";var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};t.exports=function(){for(var t,e,i,s,n,a=0,c=arguments[a++],o=[];c;){if(e=/^[^\\x25]+/.exec(c))o.push(e[0]);else if(e=/^\\x25{2}/.exec(c))o.push(\"%\");else{if(!(e=/^\\x25(?:(\\d+)\\$)?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-fosuxX])/.exec(c)))throw\"Huh ?!\";if(null==(t=arguments[e[1]||a++])||void 0==t)throw\"Too few arguments.\";if(/[^s]/.test(e[7])&&\"number\"!=typeof t)throw\"Expecting number but found \"+(void 0===t?\"undefined\":r(t));switch(e[7]){case\"b\":t=t.toString(2);break;case\"c\":t=String.fromCharCode(t);break;case\"d\":t=parseInt(t);break;case\"e\":t=e[6]?t.toExponential(e[6]):t.toExponential();break;case\"f\":t=e[6]?parseFloat(t).toFixed(e[6]):parseFloat(t);break;case\"o\":t=t.toString(8);break;case\"s\":t=(t=String(t))&&e[6]?t.substring(0,e[6]):t;break;case\"u\":t=Math.abs(t);break;case\"x\":t=t.toString(16);break;case\"X\":t=t.toString(16).toUpperCase()}t=/[def]/.test(e[7])&&e[2]&&t>0?\"+\"+t:t,s=e[3]?\"0\"==e[3]?\"0\":e[3].charAt(1):\" \",n=e[5]-String(t).length,i=e[5]?str_repeat(s,n):\"\",o.push(e[4]?t+i:i+t)}c=c.substring(e[0].length)}return o.join(\"\")}},function(t,e,i){\"use strict\";var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},s=i(0),n=i(7),a={};!function(){a.numberOfTunes=function(t){var e=t.split(\"\\nX:\").length;return 0===e&&(e=1),e};var t=a.TuneBook=function(t){for(var e=this,i=\"\",r=(t=s.strip(t)).split(\"\\nX:\"),n=1;n<r.length;n++)r[n]=\"X:\"+r[n];var a=0;if(e.tunes=[],s.each(r,function(t){e.tunes.push({abc:t,startPos:a}),a+=t.length+1}),e.tunes.length>1&&!s.startsWith(e.tunes[0].abc,\"X:\")){var c=e.tunes.shift().abc.split(\"\\n\");s.each(c,function(t){s.startsWith(t,\"%%\")&&(i+=t+\"\\n\")})}e.header=i,s.each(e.tunes,function(t){var e=t.abc.indexOf(\"\\n\\n\");e>0&&(t.abc=t.abc.substring(0,e)),t.pure=t.abc,t.abc=i+t.abc;var r=t.pure.split(\"T:\");r.length>1?(r=r[1].split(\"\\n\"),t.title=r[0].replace(/^\\s+|\\s+$/g,\"\")):t.title=\"\";var s=t.pure.substring(2,t.pure.indexOf(\"\\n\"));t.id=s.replace(/^\\s+|\\s+$/g,\"\")})};t.prototype.getTuneById=function(t){for(var e=0;e<this.tunes.length;e++)if(this.tunes[e].id===t)return this.tunes[e];return null},t.prototype.getTuneByTitle=function(t){for(var e=0;e<this.tunes.length;e++)if(this.tunes[e].title===t)return this.tunes[e];return null},a.parseOnly=function(t,e){for(var i=a.numberOfTunes(t),r=[],s=0;s<i;s++)r.push(1);return a.renderEngine(function(){},r,t,e)},a.renderEngine=function(e,i,s,a){var c=[];if(void 0!==i&&void 0!==s){(function(t){return t&&!t.propertyIsEnumerable(\"length\")&&\"object\"===(void 0===t?\"undefined\":r(t))&&\"number\"==typeof t.length})(i)||(i=[i]),void 0===a&&(a={});for(var o=a.startingTune?parseInt(a.startingTune,10):0,h=new t(s),l=new n,d=0;d<i.length;d++){var u=i[d];if(\"string\"==typeof u&&(u=document.getElementById(u)),u)if(o>=0&&o<h.tunes.length){l.parse(h.tunes[o].abc,a);var f=l.getTune(),p=e(u,f,d,h.tunes[o].abc);c.push(p||f)}else u.hasOwnProperty(\"innerHTML\")&&(u.innerHTML=\"\");o++}return c}},a.extractMeasures=function(e){for(var i=[],r=new t(e),s=0;s<r.tunes.length;s++){for(var n=r.tunes[s],c=n.abc.split(\"K:\"),o=c[1].split(\"\\n\"),h=c[0]+\"K:\"+o[0]+\"\\n\",l=null,d=null,u=null,f=[],p=!1,m=a.parseOnly(n.abc)[0],g=m.getPickupLength()>0,v=0;v<m.lines.length;v++){var b=m.lines[v];if(b.staff)for(var y=0;y<1;y++)for(var w=b.staff[y],x=0;x<1;x++)for(var k=w.voices[x],A=0;A<k.length;A++){var T=k[A];if(null===u&&T.startChar>=0&&(u=T.startChar,d=void 0===T.chord?l:null),T.chord&&(l=T),\"bar\"===T.el_type){if(p){var S={abc:n.abc.substring(u,T.endChar)};(l=d&&d.chord&&d.chord.length>0?d.chord[0].name:null)&&(S.lastChord=l),T.startEnding&&(S.startEnding=T.startEnding),T.endEnding&&(S.endEnding=T.endEnding),f.push(S),u=null,p=!1}}else\"note\"===T.el_type&&(p=!0)}}i.push({header:h,measures:f,hasPickup:g})}return i}}(),t.exports=a},function(t,e,i){\"use strict\";var r=i(0),s=i(8),n=i(19),a=i(9),c=i(20),o=i(11),h=i(12),l=i(21);t.exports=function(){var t=new l,e=new c;function i(t,e,i){t.positioning||(t.positioning={}),t.positioning[e]=i}function d(t,e,i){t.fonts||(t.fonts={}),t.fonts[e]=i}this.getTune=function(){return t};var u={reset:function(){for(var t in this)this.hasOwnProperty(t)&&\"function\"!=typeof this[t]&&delete this[t];this.iChar=0,this.key={accidentals:[],root:\"none\",acc:\"\",mode:\"\"},this.meter=null,this.origMeter=null,this.hasMainTitle=!1,this.default_length=.125,this.clef={type:\"treble\",verticalPos:0},this.next_note_duration=0,this.start_new_line=!0,this.is_in_header=!0,this.is_in_history=!1,this.partForNextLine={},this.havent_set_length=!0,this.voices={},this.staves=[],this.macros={},this.currBarNumber=1,this.barCounter={},this.inTextBlock=!1,this.inPsBlock=!1,this.ignoredDecorations=[],this.textBlock=\"\",this.score_is_present=!1,this.inEnding=!1,this.inTie=[!1],this.inTieChord={},this.vocalPosition=\"auto\",this.dynamicPosition=\"auto\",this.chordPosition=\"auto\",this.ornamentPosition=\"auto\",this.volumePosition=\"auto\",this.openSlurs=[]},differentFont:function(t,e){return this[t].decoration!==e[t].decoration||this[t].face!==e[t].face||this[t].size!==e[t].size||this[t].style!==e[t].style||this[t].weight!==e[t].weight},addFormattingOptions:function(t,e,r){\"note\"===r?(\"auto\"!==this.vocalPosition&&i(t,\"vocalPosition\",this.vocalPosition),\"auto\"!==this.dynamicPosition&&i(t,\"dynamicPosition\",this.dynamicPosition),\"auto\"!==this.chordPosition&&i(t,\"chordPosition\",this.chordPosition),\"auto\"!==this.ornamentPosition&&i(t,\"ornamentPosition\",this.ornamentPosition),\"auto\"!==this.volumePosition&&i(t,\"volumePosition\",this.volumePosition),this.differentFont(\"annotationfont\",e)&&d(t,\"annotationfont\",this.annotationfont),this.differentFont(\"gchordfont\",e)&&d(t,\"gchordfont\",this.gchordfont),this.differentFont(\"vocalfont\",e)&&d(t,\"vocalfont\",this.vocalfont),this.differentFont(\"tripletfont\",e)&&d(t,\"tripletfont\",this.tripletfont)):\"bar\"===r&&(\"auto\"!==this.dynamicPosition&&i(t,\"dynamicPosition\",this.dynamicPosition),\"auto\"!==this.chordPosition&&i(t,\"chordPosition\",this.chordPosition),\"auto\"!==this.ornamentPosition&&i(t,\"ornamentPosition\",this.ornamentPosition),\"auto\"!==this.volumePosition&&i(t,\"volumePosition\",this.volumePosition),this.differentFont(\"measurefont\",e)&&d(t,\"measurefont\",this.measurefont),this.differentFont(\"repeatfont\",e)&&d(t,\"repeatfont\",this.repeatfont))}},f=function(t){var e=r.gsub(t,\"\u0012\",\" \");return e=r.gsub(e,\"&\",\"&amp;\"),e=r.gsub(e,\"<\",\"&lt;\"),r.gsub(e,\">\",\"&gt;\")},p=function(e,i,r){i||(i=\" \");var s=i.charAt(r);\" \"===s&&(s=\"SPACE\");var n=f(i.substring(0,r))+'<span style=\"text-decoration:underline;font-size:1.3em;font-weight:bold;\">'+s+\"</span>\"+f(i.substring(r+1));!function(t){u.warnings||(u.warnings=[]),u.warnings.push(t)}(\"Music Line:\"+t.getNumLines()+\":\"+(r+1)+\": \"+e+\":  \"+n),function(t){u.warningObjects||(u.warningObjects=[]),u.warningObjects.push(t)}({message:e,line:i,startChar:u.iChar+r,column:r})},m=new n(e,p,u,t);this.getWarnings=function(){return u.warnings},this.getWarningObjects=function(){return u.warningObjects};var g=function(t,i){if('\"'===t.charAt(i)){var r=e.getBrackettedSubstring(t,i,5);if(r[2]||p(\"Missing the closing quote while parsing the chord symbol\",t,i),r[0]>0&&r[1].length>0&&\"^\"===r[1].charAt(0))r[1]=r[1].substring(1),r[2]=\"above\";else if(r[0]>0&&r[1].length>0&&\"_\"===r[1].charAt(0))r[1]=r[1].substring(1),r[2]=\"below\";else if(r[0]>0&&r[1].length>0&&\"<\"===r[1].charAt(0))r[1]=r[1].substring(1),r[2]=\"left\";else if(r[0]>0&&r[1].length>0&&\">\"===r[1].charAt(0))r[1]=r[1].substring(1),r[2]=\"right\";else if(r[0]>0&&r[1].length>0&&\"@\"===r[1].charAt(0)){r[1]=r[1].substring(1);var s=e.getFloat(r[1]);0===s.digits&&p(\"Missing first position in absolutely positioned annotation.\",t,i),r[1]=r[1].substring(s.digits),\",\"!==r[1][0]&&p(\"Missing comma absolutely positioned annotation.\",t,i),r[1]=r[1].substring(1);var n=e.getFloat(r[1]);0===n.digits&&p(\"Missing second position in absolutely positioned annotation.\",t,i),r[1]=r[1].substring(n.digits);var a=e.skipWhiteSpace(r[1]);r[1]=r[1].substring(a),r[2]=null,r[3]={x:s.value,y:n.value}}else r[1]=r[1].replace(/([ABCDEFG0-9])b/g,\"$1♭\"),r[1]=r[1].replace(/([ABCDEFG0-9])#/g,\"$1♯\"),r[2]=\"default\",r[1]=o.chordName(u,r[1]);return r}return[0,\"\"]},v=[\"trill\",\"lowermordent\",\"uppermordent\",\"mordent\",\"pralltriller\",\"accent\",\"fermata\",\"invertedfermata\",\"tenuto\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"+\",\"wedge\",\"open\",\"thumb\",\"snap\",\"turn\",\"roll\",\"breath\",\"shortphrase\",\"mediumphrase\",\"longphrase\",\"segno\",\"coda\",\"D.S.\",\"D.C.\",\"fine\",\"slide\",\"^\",\"marcato\",\"upbow\",\"downbow\",\"/\",\"//\",\"///\",\"////\",\"trem1\",\"trem2\",\"trem3\",\"trem4\",\"turnx\",\"invertedturn\",\"invertedturnx\",\"trill(\",\"trill)\",\"arpeggio\",\"xstem\",\"mark\",\"umarcato\",\"style=normal\",\"style=harmonic\",\"style=rhythm\",\"style=x\"],b=[\"p\",\"pp\",\"f\",\"ff\",\"mf\",\"mp\",\"ppp\",\"pppp\",\"fff\",\"ffff\",\"sfz\"],y=[\"crescendo(\",\"crescendo)\",\"diminuendo(\",\"diminuendo)\"],w=[[\"<\",\"accent\"],[\">\",\"accent\"],[\"tr\",\"trill\"],[\"plus\",\"+\"],[\"emphasis\",\"accent\"],[\"^\",\"umarcato\"],[\"marcato\",\"umarcato\"]],x=[[\"<(\",\"crescendo(\"],[\"<)\",\"crescendo)\"],[\">(\",\"diminuendo(\"],[\">)\",\"diminuendo)\"]],k=function(t,i){var s=u.macros[t.charAt(i)];if(void 0!==s)return\"!\"!==s.charAt(0)&&\"+\"!==s.charAt(0)||(s=s.substring(1)),\"!\"!==s.charAt(s.length-1)&&\"+\"!==s.charAt(s.length-1)||(s=s.substring(0,s.length-1)),r.detect(v,function(t){return s===t})?[1,s]:r.detect(b,function(t){return s===t})?(\"hidden\"===u.volumePosition&&(s=\"\"),[1,s]):r.detect(y,function(t){return\"hidden\"===u.dynamicPosition&&(s=\"\"),s===t})?[1,s]:(r.detect(u.ignoredDecorations,function(t){return s===t})||p(\"Unknown macro: \"+s,t,i),[1,\"\"]);switch(t.charAt(i)){case\".\":return[1,\"staccato\"];case\"u\":return[1,\"upbow\"];case\"v\":return[1,\"downbow\"];case\"~\":return[1,\"irishroll\"];case\"!\":case\"+\":var n=e.getBrackettedSubstring(t,i,5);return n[1].length>0&&(\"^\"===n[1].charAt(0)||\"_\"===n[1].charAt(0))&&(n[1]=n[1].substring(1)),r.detect(v,function(t){return n[1]===t})?n:r.detect(b,function(t){return n[1]===t})?(\"hidden\"===u.volumePosition&&(n[1]=\"\"),n):r.detect(y,function(t){return n[1]===t})?(\"hidden\"===u.dynamicPosition&&(n[1]=\"\"),n):r.detect(w,function(t){return n[1]===t[0]&&(n[1]=t[1],!0)})?n:r.detect(x,function(t){return n[1]===t[0]&&(n[1]=t[1],!0)})?(\"hidden\"===u.dynamicPosition&&(n[1]=\"\"),n):\"!\"!==t.charAt(i)||1!==n[0]&&\"!\"===t.charAt(i+n[0]-1)?(p(\"Unknown decoration: \"+n[1],t,i),n[1]=\"\",n):[1,null];case\"H\":return[1,\"fermata\"];case\"J\":return[1,\"slide\"];case\"L\":return[1,\"accent\"];case\"M\":return[1,\"mordent\"];case\"O\":return[1,\"coda\"];case\"P\":return[1,\"pralltriller\"];case\"R\":return[1,\"roll\"];case\"S\":return[1,\"segno\"];case\"T\":return[1,\"trill\"]}return[0,0]},A=function(t,i){for(var r=i;e.isWhiteSpace(t.charAt(i));)i++;return[i-r]},T=function(t,i){var r=e.getBarLine(t,i);if(0===r.len)return[0,\"\"];if(r.warn)return p(r.warn,t,i),[r.len,\"\"];for(var s=0;s<t.length&&\" \"===t.charAt(i+r.len+s);s++);var n=r.len;if(\"[\"===t.charAt(i+r.len+s)&&(r.len+=s+1),'\"'===t.charAt(i+r.len)&&\"[\"===t.charAt(i+r.len-1)){var a=e.getBrackettedSubstring(t,i+r.len,5);return[r.len+a[0],r.token,a[1]]}var c=e.getTokenOf(t.substring(i+r.len),\"1234567890-,\");return 0===c.len||\"-\"===c.token[0]?[n,r.token]:[r.len+c.len,r.token,c.token]},S={2:3,3:2,4:3,5:2,6:2,7:2,8:3,9:2},N=function(t,i){for(var r={},s=i;\"(\"===t.charAt(i)||e.isWhiteSpace(t.charAt(i));)\"(\"===t.charAt(i)&&(i+1<t.length&&t.charAt(i+1)>=\"2\"&&t.charAt(i+1)<=\"9\"?(void 0!==r.triplet?p(\"Can't nest triplets\",t,i):(r.triplet=t.charAt(i+1)-\"0\",r.tripletQ=S[r.triplet],r.num_notes=r.triplet,i+2<t.length&&\":\"===t.charAt(i+2)&&(i+3<t.length&&\":\"===t.charAt(i+3)?i+4<t.length&&t.charAt(i+4)>=\"1\"&&t.charAt(i+4)<=\"9\"?(r.num_notes=t.charAt(i+4)-\"0\",i+=3):p(\"expected number after the two colons after the triplet to mark the duration\",t,i):i+3<t.length&&t.charAt(i+3)>=\"1\"&&t.charAt(i+3)<=\"9\"?(r.tripletQ=t.charAt(i+3)-\"0\",i+4<t.length&&\":\"===t.charAt(i+4)?i+5<t.length&&t.charAt(i+5)>=\"1\"&&t.charAt(i+5)<=\"9\"&&(r.num_notes=t.charAt(i+5)-\"0\",i+=4):i+=2):p(\"expected number after the triplet to mark the duration\",t,i))),i++):void 0===r.startSlur?r.startSlur=1:r.startSlur++),i++;return r.consumed=i-s,r},C=function(t,e){switch(t.charAt(e)){case\">\":return e<t.length-1&&\">\"===t.charAt(e+1)?[2,1.75,.25]:[1,1.5,.5];case\"<\":return e<t.length-1&&\"<\"===t.charAt(e+1)?[2,.25,1.75]:[1,.5,1.5]}return null},_=function(t){return void 0!==t.duration&&t.duration<.25&&(t.end_beam=!0),t},E={A:5,B:6,C:0,D:1,E:2,F:3,G:4,a:12,b:13,c:7,d:8,e:9,f:10,g:11},M={x:\"invisible\",y:\"spacer\",z:\"rest\",Z:\"multimeasure\"},B=function(i,r,s,n){for(var a=function(t){return\"octave\"===t||\"duration\"===t||\"Zduration\"===t||\"broken_rhythm\"===t||\"end_slur\"===t},c=\"startSlur\",h=!1;;){switch(i.charAt(r)){case\"(\":if(\"startSlur\"!==c)return a(c)?(s.endChar=r,s):null;void 0===s.startSlur?s.startSlur=1:s.startSlur++;break;case\")\":if(!a(c))return null;void 0===s.endSlur?s.endSlur=1:s.endSlur++;break;case\"^\":if(\"startSlur\"===c)s.accidental=\"sharp\",c=\"sharp2\";else{if(\"sharp2\"!==c)return a(c)?(s.endChar=r,s):null;s.accidental=\"dblsharp\",c=\"pitch\"}break;case\"_\":if(\"startSlur\"===c)s.accidental=\"flat\",c=\"flat2\";else{if(\"flat2\"!==c)return a(c)?(s.endChar=r,s):null;s.accidental=\"dblflat\",c=\"pitch\"}break;case\"=\":if(\"startSlur\"!==c)return a(c)?(s.endChar=r,s):null;s.accidental=\"natural\",c=\"pitch\";break;case\"A\":case\"B\":case\"C\":case\"D\":case\"E\":case\"F\":case\"G\":case\"a\":case\"b\":case\"c\":case\"d\":case\"e\":case\"f\":case\"g\":if(\"startSlur\"!==c&&\"sharp2\"!==c&&\"flat2\"!==c&&\"pitch\"!==c)return a(c)?(s.endChar=r,s):null;if(s.pitch=E[i.charAt(r)],o.note(u,s),c=\"octave\",n&&0!==u.next_note_duration?(s.duration=u.default_length*u.next_note_duration,u.next_note_duration=0,h=!0):s.duration=u.default_length,u.clef&&\"perc\"===u.clef.type||u.currentVoice&&\"perc\"===u.currentVoice.clef){var l=i.charAt(r);s.accidental&&(l={dblflat:\"__\",flat:\"_\",natural:\"=\",sharp:\"^\",dblsharp:\"^^\"}[s.accidental]+l),t.formatting&&t.formatting.midi&&t.formatting.midi.drummap&&(s.midipitch=t.formatting.midi.drummap[l])}break;case\",\":if(\"octave\"!==c)return a(c)?(s.endChar=r,s):null;s.pitch-=7;break;case\"'\":if(\"octave\"!==c)return a(c)?(s.endChar=r,s):null;s.pitch+=7;break;case\"x\":case\"y\":case\"z\":case\"Z\":if(\"startSlur\"!==c)return a(c)?(s.endChar=r,s):null;s.rest={type:M[i.charAt(r)]},delete s.accidental,delete s.startSlur,delete s.startTie,delete s.endSlur,delete s.endTie,delete s.end_beam,delete s.grace_notes,\"multimeasure\"===s.rest.type?(s.duration=1,c=\"Zduration\"):(n&&0!==u.next_note_duration?(s.duration=u.default_length*u.next_note_duration,u.next_note_duration=0,h=!0):s.duration=u.default_length,c=\"duration\");break;case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"6\":case\"7\":case\"8\":case\"9\":case\"0\":case\"/\":if(\"octave\"===c||\"duration\"===c){var d=e.getFraction(i,r);for(s.duration=s.duration*d.value,s.endChar=d.index;d.index<i.length&&(e.isWhiteSpace(i.charAt(d.index))||\"-\"===i.charAt(d.index));)\"-\"===i.charAt(d.index)?s.startTie={}:s=_(s),d.index++;r=d.index-1,c=\"broken_rhythm\"}else if(\"sharp2\"===c)s.accidental=\"quartersharp\",c=\"pitch\";else{if(\"flat2\"!==c){if(\"Zduration\"===c){var f=e.getNumber(i,r);return s.duration=f.num,s.endChar=f.index,s}return null}s.accidental=\"quarterflat\",c=\"pitch\"}break;case\"-\":if(\"startSlur\"===c)t.addTieToLastNote(),s.endTie=!0;else{if(\"octave\"!==c&&\"duration\"!==c&&\"end_slur\"!==c)return\"broken_rhythm\"===c?(s.endChar=r,s):null;if(s.startTie={},h||!n)return e.isWhiteSpace(i.charAt(r+1))&&_(s),s.endChar=r+1,s;c=\"broken_rhythm\"}break;case\" \":case\"\\t\":if(!a(c))return null;s.end_beam=!0;do{\"-\"===i.charAt(r)&&(s.startTie={}),r++}while(r<i.length&&(e.isWhiteSpace(i.charAt(r))||\"-\"===i.charAt(r)));if(s.endChar=r,h||!n||\"<\"!==i.charAt(r)&&\">\"!==i.charAt(r))return s;r--,c=\"broken_rhythm\";break;case\">\":case\"<\":if(!a(c))return null;if(!n)return s.endChar=r,s;var p=C(i,r);r+=p[0]-1,u.next_note_duration=p[2],s.duration=p[1]*s.duration,c=\"end_slur\";break;default:return a(c)?(s.endChar=r,s):null}if(++r===i.length)return a(c)?(s.endChar=r,s):null}return null};function P(){var e={startChar:-1,endChar:-1};u.partForNextLine.title&&(e.part=u.partForNextLine),e.clef=u.currentVoice&&void 0!==u.staves[u.currentVoice.staffNum].clef?r.clone(u.staves[u.currentVoice.staffNum].clef):r.clone(u.clef);var i=u.currentVoice?u.currentVoice.scoreTranspose:0;if(e.key=a.standardKey(u.key.root+u.key.acc+u.key.mode,u.key.root,u.key.acc,i),e.key.mode=u.key.mode,u.key.impliedNaturals&&(e.key.impliedNaturals=u.key.impliedNaturals),u.key.explicitAccidentals)for(var s=0;s<u.key.explicitAccidentals.length;s++){for(var n=!1,c=0;c<e.key.accidentals.length;c++)e.key.accidentals[c].note===u.key.explicitAccidentals[s].note&&(e.key.accidentals[c].acc=u.key.explicitAccidentals[s].acc,n=!0);n||e.key.accidentals.push(u.key.explicitAccidentals[s])}if(u.targetKey=e.key,e.key.explicitAccidentals&&delete e.key.explicitAccidentals,a.addPosToKey(e.clef,e.key),null!==u.meter?(u.currentVoice?(r.each(u.staves,function(t){t.meter=u.meter}),e.meter=u.staves[u.currentVoice.staffNum].meter,u.staves[u.currentVoice.staffNum].meter=null):e.meter=u.meter,u.meter=null):u.currentVoice&&u.staves[u.currentVoice.staffNum].meter&&(e.meter=u.staves[u.currentVoice.staffNum].meter,u.staves[u.currentVoice.staffNum].meter=null),u.currentVoice&&u.currentVoice.name&&(e.name=u.currentVoice.name),u.vocalfont&&(e.vocalfont=u.vocalfont),u.tripletfont&&(e.tripletfont=u.tripletfont),u.style&&(e.style=u.style),u.currentVoice){var o=u.staves[u.currentVoice.staffNum];o.brace&&(e.brace=o.brace),o.bracket&&(e.bracket=o.bracket),o.connectBarLines&&(e.connectBarLines=o.connectBarLines),o.name&&(e.name=o.name[u.currentVoice.index]),o.subname&&(e.subname=o.subname[u.currentVoice.index]),u.currentVoice.stem&&(e.stem=u.currentVoice.stem),u.currentVoice.stafflines&&(e.stafflines=u.currentVoice.stafflines),u.currentVoice.staffscale&&(e.staffscale=u.currentVoice.staffscale),u.currentVoice.scale&&(e.scale=u.currentVoice.scale),u.currentVoice.style&&(e.style=u.currentVoice.style),u.currentVoice.transpose&&(e.clef.transpose=u.currentVoice.transpose)}var h=void 0===u.currentVoice||0===u.currentVoice.staffNum&&0===u.currentVoice.index;0===u.barNumbers&&h&&1!==u.currBarNumber&&(e.barNumber=u.currBarNumber),t.startNewLine(e),u.key.impliedNaturals&&delete u.key.impliedNaturals,u.partForNextLine={}}var L=function(t,i){if(\"{\"===t.charAt(i)){var r=e.getBrackettedSubstring(t,i,1,\"}\");r[2]||p(\"Missing the closing '}' while parsing grace note\",t,i),\")\"===t[i+r[0]]&&(r[0]++,r[1]+=\")\");for(var s=[],n=0,a=!1;n<r[1].length;){var c=!1;\"/\"===r[1].charAt(n)&&(c=!0,n++);var o=B(r[1],n,{},!1);null!==o?(o.duration=o.duration/(8*u.default_length),c&&(o.acciaccatura=!0),s.push(o),a&&(o.endTie=!0,a=!1),o.startTie&&(a=!0),n=o.endChar,delete o.endChar):(\" \"===r[1].charAt(n)?s.length>0&&(s[s.length-1].end_beam=!0):p(\"Unknown character '\"+r[1].charAt(n)+\"' while parsing grace note\",t,i),n++)}if(s.length)return[r[0],s]}return[0]};function H(t,e){if(\"&\"===t.charAt(e)){for(var i=e;t.charAt(e)&&\":\"!==t.charAt(e)&&\"|\"!==t.charAt(e);)e++;return[e-i,t.substring(i+1,e)]}return[0]}function z(t){var e=t.origMeter;return e&&\"specified\"===e.type&&e.value&&0!==e.value.length?parseInt(e.value[0].num,10)/parseInt(e.value[0].den,10):1}var I=function i(s){var n=m.parseHeader(s);n.regular&&function(i){m.resolveTempo(),u.is_in_header=!1;for(var s=0,n=u.iChar;e.isWhiteSpace(i.charAt(s))&&s<i.length;)s++;if(s!==i.length&&\"%\"!==i.charAt(s)){var a=u.start_new_line;void 0===u.continueall?u.start_new_line=!0:u.start_new_line=!1;var c=0,o=m.letter_to_body_header(i,s);o[0]>0&&(s+=o[0],\"V\"===o[1]&&(a=!0));for(var h={},l=0;s<i.length;){var d=s;if(\"%\"===i.charAt(s))break;var f=m.letter_to_inline_header(i,s);if(f[0]>0)s+=f[0],\"V\"===f[1]&&(a=!0);else{var v;for(a&&(P(),a=!1);;)if((v=e.eatWhiteSpace(i,s))>0&&(s+=v),s>0&&\"\u0012\"===i.charAt(s-1)&&(v=m.letter_to_body_header(i,s))[0]>0&&(\"V\"===v[1]&&P(),s=v[0],u.start_new_line=!1),(v=A(i,s))[0]>0&&(s+=v[0]),(v=g(i,s))[0]>0){h.chord||(h.chord=[]);var b=e.translateString(v[1]);b=b.replace(/;/g,\"\\n\");for(var y=!1,w=0;w<h.chord.length;w++)h.chord[w].position===v[2]&&(y=!0,h.chord[w].name+=\"\\n\"+b);!1===y&&(null===v[2]&&v[3]?h.chord.push({name:b,rel_position:v[3]}):h.chord.push({name:b,position:v[2]})),s+=v[0];var x=e.skipWhiteSpace(i.substring(s));x>0&&(h.force_end_beam_last=!0),s+=x}else if((v=-1===\"ABCDEFGabcdefgxyzZ[]|^_{\".indexOf(i.charAt(s))?k(i,s):[0])[0]>0)null===v[1]?s+1<i.length&&P():v[1].length>0&&(0===v[1].indexOf(\"style=\")?h.style=v[1].substr(6):(void 0===h.decoration&&(h.decoration=[]),h.decoration.push(v[1]))),s+=v[0];else{if(!((v=L(i,s))[0]>0))break;h.gracenotes=v[1],s+=v[0]}if((v=T(i,s))[0]>0){l=0,void 0!==h.gracenotes&&(h.rest={type:\"spacer\"},h.duration=.125,u.addFormattingOptions(h,t.formatting,\"note\"),t.appendElement(\"note\",n+s,n+s+v[0],h),u.measureNotEmpty=!0,h={});var S={type:v[1]};0===S.type.length?p(\"Unknown bar type\",i,s):(u.inEnding&&\"bar_thin\"!==S.type&&(S.endEnding=!0,u.inEnding=!1),v[2]&&(S.startEnding=v[2],u.inEnding&&(S.endEnding=!0),u.inEnding=!0),void 0!==h.decoration&&(S.decoration=h.decoration),void 0!==h.chord&&(S.chord=h.chord),S.startEnding&&void 0===u.barFirstEndingNum?u.barFirstEndingNum=u.currBarNumber:S.startEnding&&S.endEnding&&u.barFirstEndingNum?u.currBarNumber=u.barFirstEndingNum:S.endEnding&&(u.barFirstEndingNum=void 0),\"bar_invisible\"!==S.type&&u.measureNotEmpty&&(void 0===u.currentVoice||0===u.currentVoice.staffNum&&0===u.currentVoice.index)&&(u.currBarNumber++,u.barNumbers&&u.currBarNumber%u.barNumbers==0&&(S.barNumber=u.currBarNumber)),u.addFormattingOptions(h,t.formatting,\"bar\"),t.appendElement(\"bar\",n+s,n+s+v[0],S),u.measureNotEmpty=!1,h={}),s+=v[0],u.currentVoice&&(u.currentVoice.staffNum,u.currentVoice.index)}else if(\"&\"===i[s])(v=H(i,s))[0]>0&&(t.appendElement(\"overlay\",n,n+1,{}),s+=1,l++);else{if((v=N(i,s)).consumed>0&&(void 0!==v.startSlur&&(h.startSlur=v.startSlur),void 0!==v.triplet&&(c>0?p(\"Can't nest triplets\",i,s):(h.startTriplet=v.triplet,h.tripletMultiplier=v.tripletQ/v.triplet,c=void 0===v.num_notes?v.triplet:v.num_notes)),s+=v.consumed),\"[\"===i.charAt(s)){var E=s;s++;for(var M=null,I=!1,O=!1;!O;){var D=k(i,s);D[0]>0&&(s+=D[0]);var Y=B(i,s,{},!1);if(null!==Y)D[0]>0&&0!==D[1].indexOf(\"style=\")&&(void 0===h.decoration&&(h.decoration=[]),h.decoration.push(D[1])),Y.end_beam&&(h.end_beam=!0,delete Y.end_beam),void 0===h.pitches?(h.duration=Y.duration,h.pitches=[Y]):h.pitches.push(Y),delete Y.duration,D[0]>0&&0===D[1].indexOf(\"style=\")&&(h.pitches[h.pitches.length-1].style=D[1].substr(6)),u.inTieChord[h.pitches.length]&&(Y.endTie=!0,u.inTieChord[h.pitches.length]=void 0),Y.startTie&&(u.inTieChord[h.pitches.length]=!0),s=Y.endChar,delete Y.endChar;else if(\" \"===i.charAt(s))p(\"Spaces are not allowed in chords\",i,s),s++;else{if(s<i.length&&\"]\"===i.charAt(s)){s++,0!==u.next_note_duration&&(h.duration=h.duration*u.next_note_duration,u.next_note_duration=0),u.inTie[l]&&(r.each(h.pitches,function(t){t.endTie=!0}),u.inTie[l]=!1),c>0&&0==--c&&(h.endTriplet=!0);for(var F=!1;s<i.length&&!F;){switch(i.charAt(s)){case\" \":case\"\\t\":_(h);break;case\")\":void 0===h.endSlur?h.endSlur=1:h.endSlur++;break;case\"-\":r.each(h.pitches,function(t){t.startTie={}}),u.inTie[l]=!0;break;case\">\":case\"<\":var W=C(i,s);s+=W[0]-1,u.next_note_duration=W[2],M?M*=W[1]:M=W[1];break;case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"6\":case\"7\":case\"8\":case\"9\":case\"/\":var V=e.getFraction(i,s);M=V.value,s=V.index,\" \"===i.charAt(s)&&(I=!0),\"-\"===i.charAt(s)||\")\"===i.charAt(s)||\" \"===i.charAt(s)||\"<\"===i.charAt(s)||\">\"===i.charAt(s)?s--:F=!0;break;default:F=!0}F||s++}}else p(\"Expected ']' to end the chords\",i,s);void 0!==h.pitches&&(null!==M&&(h.duration=h.duration*M,I&&_(h)),u.addFormattingOptions(h,t.formatting,\"note\"),t.appendElement(\"note\",n+E,n+s,h),u.measureNotEmpty=!0,h={}),O=!0}}}else{var R={},G=B(i,s,R,!0);void 0!==R.endTie&&(u.inTie[l]=!0),null!==G&&(void 0!==G.pitch?(h.pitches=[{}],void 0!==G.accidental&&(h.pitches[0].accidental=G.accidental),h.pitches[0].pitch=G.pitch,G.midipitch&&(h.pitches[0].midipitch=G.midipitch),void 0!==G.endSlur&&(h.pitches[0].endSlur=G.endSlur),void 0!==G.endTie&&(h.pitches[0].endTie=G.endTie),void 0!==G.startSlur&&(h.pitches[0].startSlur=G.startSlur),void 0!==h.startSlur&&(h.pitches[0].startSlur=h.startSlur),void 0!==G.startTie&&(h.pitches[0].startTie=G.startTie),void 0!==h.startTie&&(h.pitches[0].startTie=h.startTie)):(h.rest=G.rest,void 0!==G.endSlur&&(h.endSlur=G.endSlur),void 0!==G.endTie&&(h.rest.endTie=G.endTie),void 0!==G.startSlur&&(h.startSlur=G.startSlur),void 0!==G.startTie&&(h.rest.startTie=G.startTie),void 0!==h.startTie&&(h.rest.startTie=h.startTie)),void 0!==G.chord&&(h.chord=G.chord),void 0!==G.duration&&(h.duration=G.duration),void 0!==G.decoration&&(h.decoration=G.decoration),void 0!==G.graceNotes&&(h.graceNotes=G.graceNotes),delete h.startSlur,u.inTie[l]&&(void 0!==h.pitches?(h.pitches[0].endTie=!0,u.inTie[l]=!1):\"spacer\"!==h.rest.type&&(h.rest.endTie=!0,u.inTie[l]=!1)),(G.startTie||h.startTie)&&(u.inTie[l]=!0),s=G.endChar,c>0&&0==--c&&(h.endTriplet=!0),G.end_beam&&_(h),h.rest&&\"rest\"===h.rest.type&&1===h.duration&&z(u)<=1&&(h.rest.type=\"whole\",h.duration=z(u)),u.addFormattingOptions(h,t.formatting,\"note\"),t.appendElement(\"note\",n+d,n+s,h),u.measureNotEmpty=!0,h={})}s===d&&(\" \"!==i.charAt(s)&&\"`\"!==i.charAt(s)&&p(\"Unknown character ignored\",i,s),s++)}}}}}(n.str),n.newline&&P(),n.words&&function(t,i){if(t){\"-\"!==(i=r.strip(i)).charAt(i.length-1)&&(i+=\" \");for(var s=[],n=0,a=!1,c=function(t){var c=r.strip(i.substring(n,t));if(n=t+1,c.length>0){a&&(c=r.gsub(c,\"~\",\" \"));var o=i.charAt(t);return\"_\"!==o&&\"-\"!==o&&(o=\" \"),s.push({syllable:e.translateString(c),divider:o}),a=!1,!0}return!1},o=0;o<i.length;o++)switch(i.charAt(o)){case\" \":case\"\u0012\":c(o);break;case\"-\":!c(o)&&s.length>0&&(r.last(s).divider=\"-\",s.push({skip:!0,to:\"next\"}));break;case\"_\":c(o),s.push({skip:!0,to:\"slur\"});break;case\"*\":c(o),s.push({skip:!0,to:\"next\"});break;case\"|\":c(o),s.push({skip:!0,to:\"bar\"});break;case\"~\":a=!0}r.each(t,function(t){if(0!==s.length)if(s[0].skip){switch(s[0].to){case\"next\":case\"slur\":\"note\"===t.el_type&&null!==t.pitches&&s.shift();break;case\"bar\":\"bar\"===t.el_type&&s.shift()}\"bar\"!==t.el_type&&(void 0===t.lyric?t.lyric=[{syllable:\"\",divider:\" \"}]:t.lyric.push({syllable:\"\",divider:\" \"}))}else if(\"note\"===t.el_type&&void 0===t.rest){var e=s.shift();e.syllable&&(e.syllable=e.syllable.replace(/ +/g,\" \")),void 0===t.lyric?t.lyric=[e]:t.lyric.push(e)}})}else p(\"Can't add words before the first line of music\",t,0)}(t.getCurrentVoice(),s.substring(2)),n.symbols&&function(t,i){if(t){\"-\"!==(i=r.strip(i)).charAt(i.length-1)&&(i+=\" \");for(var s=[],n=0,a=!1,c=function(t){var c=r.strip(i.substring(n,t));if(n=t+1,c.length>0){a&&(c=r.gsub(c,\"~\",\" \"));var o=i.charAt(t);return\"_\"!==o&&\"-\"!==o&&(o=\" \"),s.push({syllable:e.translateString(c),divider:o}),a=!1,!0}return!1},o=0;o<i.length;o++)switch(i.charAt(o)){case\" \":case\"\u0012\":c(o);break;case\"-\":!c(o)&&s.length>0&&(r.last(s).divider=\"-\",s.push({skip:!0,to:\"next\"}));break;case\"_\":c(o),s.push({skip:!0,to:\"slur\"});break;case\"*\":c(o),s.push({skip:!0,to:\"next\"});break;case\"|\":c(o),s.push({skip:!0,to:\"bar\"});break;case\"~\":a=!0}r.each(t,function(t){if(0!==s.length)if(s[0].skip)switch(s[0].to){case\"next\":case\"slur\":\"note\"===t.el_type&&null!==t.pitches&&s.shift();break;case\"bar\":\"bar\"===t.el_type&&s.shift()}else if(\"note\"===t.el_type&&void 0===t.rest){var e=s.shift();void 0===t.lyric?t.lyric=[e]:t.lyric.push(e)}})}else p(\"Can't add symbols before the first line of music\",t,0)}(t.getCurrentVoice(),s.substring(2)),n.recurse&&i(n.str)};function O(t,e){t.push({el_type:\"hint\"});for(var i=0;i<e.length;i++){var s=e[i],n=r.clone(s);if(t.push(n),\"bar\"===s.el_type)return}}function D(t,e){for(var i=0;i<t.length;i++){var r=t[i],s=e[i];if(s)for(var n=0;n<s.voices.length;n++){var a=s.voices[n],c=r.voices[n];c&&O(c,a)}}}this.parse=function(i,n){if(n||(n={}),t.reset(),n.print&&(t.media=\"print\"),u.reset(),n.visualTranspose?(u.globalTranspose=parseInt(n.visualTranspose),0===u.globalTranspose&&(u.globalTranspose=void 0)):u.globalTranspose=void 0,n.lineBreaks){u.lineBreaks={};for(var a=0;a<n.lineBreaks.length;a++)u.lineBreaks[\"\"+(n.lineBreaks[a]+1)]=!0}m.reset(e,p,u,t),i=r.gsub(i,\"\\r\\n\",\"\\n\"),i=r.gsub(i,\"\\r\",\"\\n\");var c=(i=(i=(i+=\"\\n\").replace(/\\n\\\\.*\\n/g,\"\\n\")).replace(/\\\\([ \\t]*)(%.*)*\\n/g,function(t,e,i){return e+\" \u0012\"+(i?\"                                                                                                                                                                                                     \".substring(0,i.length):\"\")})).split(\"\\n\");0===r.last(c).length&&c.pop();try{n.format&&s.globalFormatting(n.format),r.each(c,function(i){if(n.header_only&&!1===u.is_in_header)throw\"normal_abort\";if(n.stop_on_warning&&u.warnings)throw\"normal_abort\";u.is_in_history?\":\"===i.charAt(1)?(u.is_in_history=!1,I(i)):t.addMetaText(\"history\",e.translateString(e.stripComment(i))):u.inTextBlock?r.startsWith(i,\"%%endtext\")?(t.addText(u.textBlock),u.inTextBlock=!1):r.startsWith(i,\"%%\")?u.textBlock+=\" \"+i.substring(2):u.textBlock+=\" \"+i:u.inPsBlock?r.startsWith(i,\"%%endps\")?u.inPsBlock=!1:u.textBlock+=\" \"+i:I(i),u.iChar+=i.length+1});var o=792,l=612;switch(u.papersize){case\"legal\":o=1008,l=612;break;case\"A4\":o=842.4,l=597.6}if(u.landscape){var d=o;o=l,l=d}u.openSlurs=t.cleanUp(l,o,u.barsperstaff,u.staffnonote,u.openSlurs)}catch(t){if(\"normal_abort\"!==t)throw t}n.hint_measures&&function(){for(var e=0;e<t.lines.length;e++){var i=t.lines[e].staff;if(i){for(var r=e+1;r<t.lines.length&&void 0===t.lines[r].staff;)r++;r<t.lines.length&&D(i,t.lines[r].staff)}}}(),h.wrapLines(t,u.lineBreaks)}}},function(t,e,i){\"use strict\";var r=i(0),s={};!function(){var t,e,i,n;s.initialize=function(r,s,a,c){t=r,e=s,n=c,(i=a).annotationfont={face:\"Helvetica\",size:12,weight:\"normal\",style:\"normal\",decoration:\"none\"},i.gchordfont={face:\"Helvetica\",size:12,weight:\"normal\",style:\"normal\",decoration:\"none\"},i.historyfont={face:'\"Times New Roman\"',size:16,weight:\"normal\",style:\"normal\",decoration:\"none\"},i.infofont={face:'\"Times New Roman\"',size:14,weight:\"normal\",style:\"italic\",decoration:\"none\"},i.measurefont={face:'\"Times New Roman\"',size:14,weight:\"normal\",style:\"italic\",decoration:\"none\"},i.partsfont={face:'\"Times New Roman\"',size:15,weight:\"normal\",style:\"normal\",decoration:\"none\"},i.repeatfont={face:'\"Times New Roman\"',size:13,weight:\"normal\",style:\"normal\",decoration:\"none\"},i.textfont={face:'\"Times New Roman\"',size:16,weight:\"normal\",style:\"normal\",decoration:\"none\"},i.tripletfont={face:\"Times\",size:11,weight:\"normal\",style:\"italic\",decoration:\"none\"},i.vocalfont={face:'\"Times New Roman\"',size:13,weight:\"bold\",style:\"normal\",decoration:\"none\"},i.wordsfont={face:'\"Times New Roman\"',size:16,weight:\"normal\",style:\"normal\",decoration:\"none\"},n.formatting.composerfont={face:'\"Times New Roman\"',size:14,weight:\"normal\",style:\"italic\",decoration:\"none\"},n.formatting.subtitlefont={face:'\"Times New Roman\"',size:16,weight:\"normal\",style:\"normal\",decoration:\"none\"},n.formatting.tempofont={face:'\"Times New Roman\"',size:15,weight:\"bold\",style:\"normal\",decoration:\"none\"},n.formatting.titlefont={face:'\"Times New Roman\"',size:20,weight:\"normal\",style:\"normal\",decoration:\"none\"},n.formatting.footerfont={face:'\"Times New Roman\"',size:12,weight:\"normal\",style:\"normal\",decoration:\"none\"},n.formatting.headerfont={face:'\"Times New Roman\"',size:12,weight:\"normal\",style:\"normal\",decoration:\"none\"},n.formatting.voicefont={face:'\"Times New Roman\"',size:13,weight:\"bold\",style:\"normal\",decoration:\"none\"},n.formatting.annotationfont=i.annotationfont,n.formatting.gchordfont=i.gchordfont,n.formatting.historyfont=i.historyfont,n.formatting.infofont=i.infofont,n.formatting.measurefont=i.measurefont,n.formatting.partsfont=i.partsfont,n.formatting.repeatfont=i.repeatfont,n.formatting.textfont=i.textfont,n.formatting.tripletfont=i.tripletfont,n.formatting.vocalfont=i.vocalfont,n.formatting.wordsfont=i.wordsfont};var a={gchordfont:!0,measurefont:!0,partsfont:!0},c=function(t,i,r,s,n){function c(){var c=parseInt(t[0].token);return t.shift(),i?0===t.length?{face:i.face,weight:i.weight,style:i.style,decoration:i.decoration,size:c}:1===t.length&&\"box\"===t[0].token&&a[n]?{face:i.face,weight:i.weight,style:i.style,decoration:i.decoration,size:c,box:!0}:(e(\"Extra parameters in font definition.\",r,s),{face:i.face,weight:i.weight,style:i.style,decoration:i.decoration,size:c}):(e(\"Can't set just the size of the font since there is no default value.\",r,s),{face:'\"Times New Roman\"',weight:\"normal\",style:\"normal\",decoration:\"none\",size:c})}if(\"*\"===t[0].token){if(t.shift(),\"number\"===t[0].type)return c();e(\"Expected font size number after *.\",r,s)}if(\"number\"===t[0].type)return c();for(var o,h=[],l=\"normal\",d=\"normal\",u=\"none\",f=!1,p=\"face\",m=!1;t.length;){var g=t.shift(),v=g.token.toLowerCase();switch(p){case\"face\":m||\"utf\"!==v&&\"number\"!==g.type&&\"bold\"!==v&&\"italic\"!==v&&\"underline\"!==v&&\"box\"!==v?h.length>0&&\"-\"===g.token?(m=!0,h[h.length-1]=h[h.length-1]+g.token):m?(m=!1,h[h.length-1]=h[h.length-1]+g.token):h.push(g.token):\"number\"===g.type?(o?e(\"Font size specified twice in font definition.\",r,s):o=g.token,p=\"modifier\"):\"bold\"===v?l=\"bold\":\"italic\"===v?d=\"italic\":\"underline\"===v?u=\"underline\":\"box\"===v?(a[n]?f=!0:e('This font style doesn\\'t support \"box\"',r,s),p=\"finished\"):\"utf\"===v?(g=t.shift(),p=\"size\"):e(\"Unknown parameter \"+g.token+\" in font definition.\",r,s);break;case\"size\":\"number\"===g.type?o?e(\"Font size specified twice in font definition.\",r,s):o=g.token:e(\"Expected font size in font definition.\",r,s),p=\"modifier\";break;case\"modifier\":\"bold\"===v?l=\"bold\":\"italic\"===v?d=\"italic\":\"underline\"===v?u=\"underline\":\"box\"===v?(a[n]?f=!0:e('This font style doesn\\'t support \"box\"',r,s),p=\"finished\"):e(\"Unknown parameter \"+g.token+\" in font definition.\",r,s);break;case\"finished\":e('Extra characters found after \"box\" in font definition.',r,s)}}void 0===o?i?o=i.size:(e(\"Must specify the size of the font since there is no default value.\",r,s),o=12):o=parseFloat(o);var b=function(t){switch(t){case\"Arial-Italic\":return{face:\"Arial\",weight:\"normal\",style:\"italic\",decoration:\"none\"};case\"Arial-Bold\":return{face:\"Arial\",weight:\"bold\",style:\"normal\",decoration:\"none\"};case\"Bookman-Demi\":return{face:\"Bookman,serif\",weight:\"bold\",style:\"normal\",decoration:\"none\"};case\"Bookman-DemiItalic\":return{face:\"Bookman,serif\",weight:\"bold\",style:\"italic\",decoration:\"none\"};case\"Bookman-Light\":return{face:\"Bookman,serif\",weight:\"normal\",style:\"normal\",decoration:\"none\"};case\"Bookman-LightItalic\":return{face:\"Bookman,serif\",weight:\"normal\",style:\"italic\",decoration:\"none\"};case\"Courier\":return{face:'\"Courier New\"',weight:\"normal\",style:\"normal\",decoration:\"none\"};case\"Courier-Oblique\":return{face:'\"Courier New\"',weight:\"normal\",style:\"italic\",decoration:\"none\"};case\"Courier-Bold\":return{face:'\"Courier New\"',weight:\"bold\",style:\"normal\",decoration:\"none\"};case\"Courier-BoldOblique\":return{face:'\"Courier New\"',weight:\"bold\",style:\"italic\",decoration:\"none\"};case\"AvantGarde-Book\":return{face:\"AvantGarde,Arial\",weight:\"normal\",style:\"normal\",decoration:\"none\"};case\"AvantGarde-BookOblique\":return{face:\"AvantGarde,Arial\",weight:\"normal\",style:\"italic\",decoration:\"none\"};case\"AvantGarde-Demi\":case\"Avant-Garde-Demi\":return{face:\"AvantGarde,Arial\",weight:\"bold\",style:\"normal\",decoration:\"none\"};case\"AvantGarde-DemiOblique\":return{face:\"AvantGarde,Arial\",weight:\"bold\",style:\"italic\",decoration:\"none\"};case\"Helvetica-Oblique\":return{face:\"Helvetica\",weight:\"normal\",style:\"italic\",decoration:\"none\"};case\"Helvetica-Bold\":return{face:\"Helvetica\",weight:\"bold\",style:\"normal\",decoration:\"none\"};case\"Helvetica-BoldOblique\":return{face:\"Helvetica\",weight:\"bold\",style:\"italic\",decoration:\"none\"};case\"Helvetica-Narrow\":return{face:'\"Helvetica Narrow\",Helvetica',weight:\"normal\",style:\"normal\",decoration:\"none\"};case\"Helvetica-Narrow-Oblique\":return{face:'\"Helvetica Narrow\",Helvetica',weight:\"normal\",style:\"italic\",decoration:\"none\"};case\"Helvetica-Narrow-Bold\":return{face:'\"Helvetica Narrow\",Helvetica',weight:\"bold\",style:\"normal\",decoration:\"none\"};case\"Helvetica-Narrow-BoldOblique\":return{face:'\"Helvetica Narrow\",Helvetica',weight:\"bold\",style:\"italic\",decoration:\"none\"};case\"Palatino-Roman\":return{face:\"Palatino\",weight:\"normal\",style:\"normal\",decoration:\"none\"};case\"Palatino-Italic\":return{face:\"Palatino\",weight:\"normal\",style:\"italic\",decoration:\"none\"};case\"Palatino-Bold\":return{face:\"Palatino\",weight:\"bold\",style:\"normal\",decoration:\"none\"};case\"Palatino-BoldItalic\":return{face:\"Palatino\",weight:\"bold\",style:\"italic\",decoration:\"none\"};case\"NewCenturySchlbk-Roman\":return{face:'\"New Century\",serif',weight:\"normal\",style:\"normal\",decoration:\"none\"};case\"NewCenturySchlbk-Italic\":return{face:'\"New Century\",serif',weight:\"normal\",style:\"italic\",decoration:\"none\"};case\"NewCenturySchlbk-Bold\":return{face:'\"New Century\",serif',weight:\"bold\",style:\"normal\",decoration:\"none\"};case\"NewCenturySchlbk-BoldItalic\":return{face:'\"New Century\",serif',weight:\"bold\",style:\"italic\",decoration:\"none\"};case\"Times\":case\"Times-Roman\":case\"Times-Narrow\":case\"Times-Courier\":case\"Times-New-Roman\":return{face:'\"Times New Roman\"',weight:\"normal\",style:\"normal\",decoration:\"none\"};case\"Times-Italic\":case\"Times-Italics\":return{face:'\"Times New Roman\"',weight:\"normal\",style:\"italic\",decoration:\"none\"};case\"Times-Bold\":return{face:'\"Times New Roman\"',weight:\"bold\",style:\"normal\",decoration:\"none\"};case\"Times-BoldItalic\":return{face:'\"Times New Roman\"',weight:\"bold\",style:\"italic\",decoration:\"none\"};case\"ZapfChancery-MediumItalic\":return{face:'\"Zapf Chancery\",cursive,serif',weight:\"normal\",style:\"normal\",decoration:\"none\"};default:return null}}(h=h.join(\" \")),y={};return b?(y.face=b.face,y.weight=b.weight,y.style=b.style,y.decoration=b.decoration,y.size=o,f&&(y.box=!0),y):(y.face=h,y.weight=l,y.style=d,y.decoration=u,y.size=o,f&&(y.box=!0),y)},o=function(t,e,r){return 0===e.length?'Directive \"'+t+'\" requires a font as a parameter.':(i[t]=c(e,i[t],r,0,t),i.is_in_header&&(n.formatting[t]=i[t]),null)},h=function(t,e){var i=\"\";r.each(e,function(t){i+=t.token});var s=parseFloat(i);if(isNaN(s)||0===s)return'Directive \"'+t+'\" requires a number as a parameter.';n.formatting.scale=s},l=function(t,e,r,s,n){if(1!==r.length||\"number\"!==r[0].type)return'Directive \"'+e+'\" requires a number as a parameter.';var a=r[0].intt;return void 0!==s&&a<s?'Directive \"'+e+'\" requires a number greater than or equal to '+s+\" as a parameter.\":void 0!==n&&a>n?'Directive \"'+e+'\" requires a number less than or equal to '+n+\" as a parameter.\":(i[t]=a,null)},d=function(t,e,r){var s=l(t,e,r,0,1);return null!==s?s:(i[t]=1===i[t],null)},u=function(t,e,r,s){if(1!==r.length)return'Directive \"'+e+'\" requires one of [ '+s.join(\", \")+\" ] as a parameter.\";for(var n=r[0].token,a=!1,c=0;!a&&c<s.length;c++)s[c]===n&&(a=!0);return a?(i[t]=n,null):'Directive \"'+e+'\" requires one of [ '+s.join(\", \")+\" ] as a parameter.\"},f=[\"nobarlines\",\"barlines\",\"beataccents\",\"nobeataccents\",\"droneon\",\"droneoff\",\"drumon\",\"drumoff\",\"fermatafixed\",\"fermataproportional\",\"gchordon\",\"gchordoff\",\"controlcombo\",\"temperamentnormal\",\"noportamento\"],p=[\"gchord\",\"ptstress\",\"beatstring\"],m=[\"bassvol\",\"chordvol\",\"c\",\"channel\",\"beatmod\",\"deltaloudness\",\"drumbars\",\"gracedivider\",\"makechordchannels\",\"randomchordattack\",\"chordattack\",\"stressmodel\",\"transpose\",\"rtranspose\",\"volinc\"],g=[\"program\"],v=[\"ratio\",\"snt\",\"bendvelocity\",\"pitchbend\",\"control\",\"temperamentlinear\"],b=[\"beat\"],y=[\"drone\"],w=[\"portamento\"],x=[\"expand\",\"grace\",\"trim\"],k=[\"drum\",\"chordname\"];s.parseFontChangeLine=function(t){var e=t.split(\"$\");if(e.length>1&&i.setfont){for(var r=[{text:e[0]}],s=1;s<e.length;s++)\"0\"===e[s].charAt(0)?r.push({text:e[s].substring(1)}):\"1\"===e[s].charAt(0)&&i.setfont[1]?r.push({font:i.setfont[1],text:e[s].substring(1)}):\"2\"===e[s].charAt(0)&&i.setfont[2]?r.push({font:i.setfont[2],text:e[s].substring(1)}):\"3\"===e[s].charAt(0)&&i.setfont[3]?r.push({font:i.setfont[3],text:e[s].substring(1)}):\"4\"===e[s].charAt(0)&&i.setfont[4]?r.push({font:i.setfont[4],text:e[s].substring(1)}):r[r.length-1].text+=\"$\"+e[s];if(r.length>1)return r}return t};var A=[\"auto\",\"above\",\"below\",\"hidden\"];s.addDirective=function(a){var T=t.tokenize(a,0,a.length);if(0===T.length||\"alpha\"!==T[0].type)return null;var S=a.substring(a.indexOf(T[0].token)+T[0].token.length);S=t.stripComment(S);var N=T.shift().token.toLowerCase(),C=\"\";switch(N){case\"bagpipes\":n.formatting.bagpipes=!0;break;case\"flatbeams\":n.formatting.flatbeams=!0;break;case\"landscape\":i.landscape=!0;break;case\"papersize\":i.papersize=S;break;case\"slurgraces\":n.formatting.slurgraces=!0;break;case\"stretchlast\":n.formatting.stretchlast=!0;break;case\"titlecaps\":i.titlecaps=!0;break;case\"titleleft\":n.formatting.titleleft=!0;break;case\"measurebox\":n.formatting.measurebox=!0;break;case\"vocal\":return u(\"vocalPosition\",N,T,A);case\"dynamic\":return u(\"dynamicPosition\",N,T,A);case\"gchord\":return u(\"chordPosition\",N,T,A);case\"ornament\":return u(\"ornamentPosition\",N,T,A);case\"volume\":return u(\"volumePosition\",N,T,A);case\"botmargin\":case\"botspace\":case\"composerspace\":case\"indent\":case\"leftmargin\":case\"linesep\":case\"musicspace\":case\"partsspace\":case\"pageheight\":case\"pagewidth\":case\"rightmargin\":case\"staffsep\":case\"staffwidth\":case\"subtitlespace\":case\"sysstaffsep\":case\"systemsep\":case\"textspace\":case\"titlespace\":case\"topmargin\":case\"topspace\":case\"vocalspace\":case\"wordsspace\":return function(e,i){var r=t.getMeasurement(i);return 0===r.used||0!==i.length?'Directive \"'+e+'\" requires a measurement as a parameter.':(n.formatting[e]=r.value,null)}(N,T);case\"voicescale\":if(1!==T.length||\"number\"!==T[0].type)return\"voicescale requires one float as a parameter\";var _=T.shift();return i.currentVoice&&(i.currentVoice.scale=_.floatt,n.changeVoiceScale(i.currentVoice.scale)),null;case\"vskip\":var E=function(e,i){var r=t.getMeasurement(i);return 0===r.used||0!==i.length?{error:'Directive \"'+e+'\" requires a measurement as a parameter.'}:r.value}(N,T);return E.error?E.error:(n.addSpacing(E),null);case\"scale\":h(N,T);break;case\"sep\":if(0===T.length)n.addSeparator();else{var M=t.getMeasurement(T);if(0===M.used)return'Directive \"'+N+'\" requires 3 numbers: space above, space below, length of line';var B=M.value;if(0===(M=t.getMeasurement(T)).used)return'Directive \"'+N+'\" requires 3 numbers: space above, space below, length of line';var P=M.value;if(0===(M=t.getMeasurement(T)).used||0!==T.length)return'Directive \"'+N+'\" requires 3 numbers: space above, space below, length of line';var L=M.value;n.addSeparator(B,P,L)}break;case\"barsperstaff\":if(null!==(C=l(\"barsperstaff\",N,T)))return C;break;case\"staffnonote\":if(1!==T.length)return\"Directive staffnonote requires one parameter: 0 or 1\";if(\"0\"===T[0].token)i.staffnonote=!0;else{if(\"1\"!==T[0].token)return\"Directive staffnonote requires one parameter: 0 or 1 (received \"+T[0].token+\")\";i.staffnonote=!1}break;case\"printtempo\":if(null!==(C=d(\"printTempo\",N,T)))return C;break;case\"partsbox\":if(null!==(C=d(\"partsBox\",N,T)))return C;i.partsfont.box=i.partsBox;break;case\"measurenb\":case\"barnumbers\":if(null!==(C=l(\"barNumbers\",N,T)))return C;break;case\"begintext\":i.inTextBlock=!0;break;case\"continueall\":i.continueall=!0;break;case\"beginps\":i.inPsBlock=!0,e(\"Postscript ignored\",a,0);break;case\"deco\":S.length>0&&i.ignoredDecorations.push(S.substring(0,S.indexOf(\" \"))),e(\"Decoration redefinition ignored\",a,0);break;case\"text\":var H=t.translateString(S);n.addText(s.parseFontChangeLine(H));break;case\"center\":var z=t.translateString(S);n.addCentered(s.parseFontChangeLine(z));break;case\"font\":break;case\"setfont\":var I=t.tokenize(S,0,S.length);if(I.length>=4&&\"-\"===I[0].token&&\"number\"===I[1].type){var O=parseInt(I[1].token);O>=1&&O<=4&&(i.setfont||(i.setfont=[]),I.shift(),I.shift(),i.setfont[O]=c(I,i.setfont[O],a,0,\"setfont\"))}break;case\"gchordfont\":case\"partsfont\":case\"tripletfont\":case\"vocalfont\":case\"textfont\":case\"annotationfont\":case\"historyfont\":case\"infofont\":case\"measurefont\":case\"repeatfont\":case\"wordsfont\":return o(N,T,a);case\"composerfont\":case\"subtitlefont\":case\"tempofont\":case\"titlefont\":case\"voicefont\":case\"footerfont\":case\"headerfont\":return function(t,e,i){return 0===e.length?'Directive \"'+t+'\" requires a font as a parameter.':(n.formatting[t]=c(e,n.formatting[t],i,0,t),null)}(N,T,a);case\"barlabelfont\":case\"barnumberfont\":case\"barnumfont\":return o(\"measurefont\",T,a);case\"staves\":case\"score\":i.score_is_present=!0;for(var D,Y=function(t,e,s,n,a){(e||0===i.staves.length)&&i.staves.push({index:i.staves.length,numVoices:0});var c=r.last(i.staves);void 0!==s&&(c.bracket=s),void 0!==n&&(c.brace=n),a&&(c.connectBarLines=\"end\"),void 0===i.voices[t]&&(i.voices[t]={staffNum:c.index,index:c.numVoices},c.numVoices++)},F=!1,W=!1,V=!1,R=!1,G=!1,q=!1,j=!1,X=function(){if(j=!0,D){var t=\"start\";D.staffNum>0&&(\"start\"!==i.staves[D.staffNum-1].connectBarLines&&\"continue\"!==i.staves[D.staffNum-1].connectBarLines||(t=\"continue\")),i.staves[D.staffNum].connectBarLines=t}};T.length;){var U=T.shift();switch(U.token){case\"(\":F?e(\"Can't nest parenthesis in %%score\",a,U.start):(F=!0,R=!0);break;case\")\":!F||R?e(\"Unexpected close parenthesis in %%score\",a,U.start):F=!1;break;case\"[\":W?e(\"Can't nest brackets in %%score\",a,U.start):(W=!0,G=!0);break;case\"]\":!W||G?e(\"Unexpected close bracket in %%score\",a,U.start):(W=!1,i.staves[D.staffNum].bracket=\"end\");break;case\"{\":V?e(\"Can't nest braces in %%score\",a,U.start):(V=!0,q=!0);break;case\"}\":!V||q?e(\"Unexpected close brace in %%score\",a,U.start):(V=!1,i.staves[D.staffNum].brace=\"end\");break;case\"|\":X();break;default:for(var K=\"\";(\"alpha\"===U.type||\"number\"===U.type)&&(K+=U.token,U.continueId);)U=T.shift();Y(K,!F||R,G?\"start\":W?\"continue\":void 0,q?\"start\":V?\"continue\":void 0,j),R=!1,G=!1,q=!1,j=!1,D=i.voices[K],\"staves\"===N&&X()}}break;case\"newpage\":var Q=t.getInt(S);n.addNewPage(0===Q.digits?-1:Q.value);break;case\"abc\":var Z=S.split(\" \");switch(Z[0]){case\"-copyright\":case\"-creator\":case\"-edited-by\":case\"-version\":case\"-charset\":var $=Z.shift();n.addMetaText(N+$,Z.join(\" \"));break;default:return\"Unknown directive: \"+N+Z[0]}break;case\"header\":case\"footer\":var J=t.getMeat(S,0,S.length);'\"'===(J=S.substring(J.start,J.end)).charAt(0)&&'\"'===J.charAt(J.length-1)&&(J=J.substring(1,J.length-1));var tt=J.split(\"\\t\"),et={};et=1===tt.length?{left:\"\",center:tt[0],right:\"\"}:2===tt.length?{left:tt[0],center:tt[1],right:\"\"}:{left:tt[0],center:tt[1],right:tt[2]},tt.length>3&&e(\"Too many tabs in \"+N+\": \"+tt.length+\" found.\",S,0),n.addMetaTextObj(N,et);break;case\"midi\":var it=t.tokenize(S,0,S.length,!0);it.length>0&&\"=\"===it[0].token&&it.shift(),0===it.length?e(\"Expected midi command\",S,0):function(t,i,r){var s=t.shift().token,n=[];if(f.indexOf(s)>=0)0!==t.length&&e(\"Unexpected parameter in MIDI \"+s,r,0);else if(p.indexOf(s)>=0)1!==t.length?e(\"Expected one parameter in MIDI \"+s,r,0):n.push(t[0].token);else if(m.indexOf(s)>=0)1!==t.length?e(\"Expected one parameter in MIDI \"+s,r,0):\"number\"!==t[0].type?e(\"Expected one integer parameter in MIDI \"+s,r,0):n.push(t[0].intt);else if(g.indexOf(s)>=0)1!==t.length&&2!==t.length?e(\"Expected one or two parameters in MIDI \"+s,r,0):\"number\"!==t[0].type?e(\"Expected integer parameter in MIDI \"+s,r,0):2===t.length&&\"number\"!==t[1].type?e(\"Expected integer parameter in MIDI \"+s,r,0):(n.push(t[0].intt),2===t.length&&n.push(t[1].intt));else if(v.indexOf(s)>=0)2!==t.length?e(\"Expected two parameters in MIDI \"+s,r,0):\"number\"!==t[0].type||\"number\"!==t[1].type?e(\"Expected two integer parameters in MIDI \"+s,r,0):(n.push(t[0].intt),n.push(t[1].intt));else if(w.indexOf(s)>=0)2!==t.length?e(\"Expected two parameters in MIDI \"+s,r,0):\"alpha\"!==t[0].type||\"number\"!==t[1].type?e(\"Expected one string and one integer parameters in MIDI \"+s,r,0):(n.push(t[0].token),n.push(t[1].intt));else if(\"drummap\"===s)2===t.length&&\"alpha\"===t[0].type&&\"number\"===t[1].type?(i.formatting||(i.formatting={}),i.formatting.midi||(i.formatting.midi={}),i.formatting.midi.drummap||(i.formatting.midi.drummap={}),i.formatting.midi.drummap[t[0].token]=t[1].intt,n=i.formatting.midi.drummap):3===t.length&&\"punct\"===t[0].type&&\"alpha\"===t[1].type&&\"number\"===t[2].type?(i.formatting||(i.formatting={}),i.formatting.midi||(i.formatting.midi={}),i.formatting.midi.drummap||(i.formatting.midi.drummap={}),i.formatting.midi.drummap[t[0].token+t[1].token]=t[2].intt,n=i.formatting.midi.drummap):e(\"Expected one note name and one integer parameter in MIDI \"+s,r,0);else if(x.indexOf(s)>=0)3!==t.length?e(\"Expected fraction parameter in MIDI \"+s,r,0):\"number\"!==t[0].type||\"/\"!==t[1].token||\"number\"!==t[2].type?e(\"Expected fraction parameter in MIDI \"+s,r,0):(n.push(t[0].intt),n.push(t[2].intt));else if(b.indexOf(s)>=0)4!==t.length?e(\"Expected four parameters in MIDI \"+s,r,0):\"number\"!==t[0].type||\"number\"!==t[1].type||\"number\"!==t[2].type||\"number\"!==t[3].type?e(\"Expected four integer parameters in MIDI \"+s,r,0):(n.push(t[0].intt),n.push(t[1].intt),n.push(t[2].intt),n.push(t[3].intt));else if(y.indexOf(s)>=0)5!==t.length?e(\"Expected five parameters in MIDI \"+s,r,0):\"number\"!==t[0].type||\"number\"!==t[1].type||\"number\"!==t[2].type||\"number\"!==t[3].type||\"number\"!==t[4].type?e(\"Expected five integer parameters in MIDI \"+s,r,0):(n.push(t[0].intt),n.push(t[1].intt),n.push(t[2].intt),n.push(t[3].intt),n.push(t[4].intt));else if(g.indexOf(s)>=0)1!==t.length||4!==t.length?e(\"Expected one or two parameters in MIDI \"+s,r,0):\"number\"!==t[0].type?e(\"Expected integer parameter in MIDI \"+s,r,0):4===t.length?(\"octave\"!==t[1].token&&e(\"Expected octave parameter in MIDI \"+s,r,0),\"=\"!==t[2].token&&e(\"Expected octave parameter in MIDI \"+s,r,0),\"number\"!==t[3].type&&e(\"Expected integer parameter for octave in MIDI \"+s,r,0)):(n.push(t[0].intt),4===t.length&&n.push(t[3].intt));else if(k.indexOf(s)>=0)if(t.length<2)e(\"Expected string parameter and at least one integer parameter in MIDI \"+s,r,0);else if(\"alpha\"!==t[0].type)e(\"Expected string parameter and at least one integer parameter in MIDI \"+s,r,0);else{var a=t.shift();for(n.push(a.token);t.length>0;)\"number\"!==(a=t.shift()).type&&e(\"Expected integer parameter in MIDI \"+s,r,0),n.push(a.intt)}i.hasBeginMusic()?i.appendElement(\"midi\",-1,-1,{cmd:s,params:n}):(void 0===i.formatting.midi&&(i.formatting.midi={}),i.formatting.midi[s]=n)}(it,n,S);break;case\"map\":case\"percmap\":case\"playtempo\":case\"auquality\":case\"continuous\":case\"nobarcheck\":n.formatting[N]=S;break;default:return\"Unknown directive: \"+N}return null},s.globalFormatting=function(r){for(var s in r)if(r.hasOwnProperty(s)){var n,a=\"\"+r[s],c=t.tokenize(a,0,a.length);switch(s){case\"titlefont\":case\"gchordfont\":case\"composerfont\":case\"footerfont\":case\"headerfont\":case\"historyfont\":case\"infofont\":case\"measurefont\":case\"partsfont\":case\"repeatfont\":case\"subtitlefont\":case\"tempofont\":case\"textfont\":case\"voicefont\":case\"tripletfont\":case\"vocalfont\":case\"wordsfont\":case\"annotationfont\":o(s,c,a);break;case\"scale\":h(s,c);break;case\"partsbox\":null!==(n=d(\"partsBox\",s,c))&&e(n),i.partsfont.box=i.partsBox;break;default:e(\"Formatting directive unrecognized: \",s,0)}}}}(),t.exports=s},function(t,e,i){\"use strict\";var r=i(0),s=i(8),n=i(11),a={};!function(){var t,e,i,c;a.initialize=function(r,s,n,a){t=r,e=s,i=n,c=a},a.standardKey=function(t,e,r,s){var a={acc:\"sharp\",note:\"f\"},c={acc:\"sharp\",note:\"c\"},o={acc:\"sharp\",note:\"g\"},h={acc:\"sharp\",note:\"d\"},l={acc:\"sharp\",note:\"A\"},d={acc:\"sharp\",note:\"e\"},u={acc:\"sharp\",note:\"B\"},f={acc:\"flat\",note:\"B\"},p={acc:\"flat\",note:\"e\"},m={acc:\"flat\",note:\"A\"},g={acc:\"flat\",note:\"d\"},v={acc:\"flat\",note:\"G\"},b={acc:\"flat\",note:\"c\"},y={acc:\"flat\",note:\"F\"},w={\"C#\":[a,c,o,h,l,d,u],\"A#m\":[a,c,o,h,l,d,u],\"G#Mix\":[a,c,o,h,l,d,u],\"D#Dor\":[a,c,o,h,l,d,u],\"E#Phr\":[a,c,o,h,l,d,u],\"F#Lyd\":[a,c,o,h,l,d,u],\"B#Loc\":[a,c,o,h,l,d,u],\"F#\":[a,c,o,h,l,d],\"D#m\":[a,c,o,h,l,d],\"C#Mix\":[a,c,o,h,l,d],\"G#Dor\":[a,c,o,h,l,d],\"A#Phr\":[a,c,o,h,l,d],BLyd:[a,c,o,h,l,d],\"E#Loc\":[a,c,o,h,l,d],B:[a,c,o,h,l],\"G#m\":[a,c,o,h,l],\"F#Mix\":[a,c,o,h,l],\"C#Dor\":[a,c,o,h,l],\"D#Phr\":[a,c,o,h,l],ELyd:[a,c,o,h,l],\"A#Loc\":[a,c,o,h,l],E:[a,c,o,h],\"C#m\":[a,c,o,h],BMix:[a,c,o,h],\"F#Dor\":[a,c,o,h],\"G#Phr\":[a,c,o,h],ALyd:[a,c,o,h],\"D#Loc\":[a,c,o,h],A:[a,c,o],\"F#m\":[a,c,o],EMix:[a,c,o],BDor:[a,c,o],\"C#Phr\":[a,c,o],DLyd:[a,c,o],\"G#Loc\":[a,c,o],D:[a,c],Bm:[a,c],AMix:[a,c],EDor:[a,c],\"F#Phr\":[a,c],GLyd:[a,c],\"C#Loc\":[a,c],G:[a],Em:[a],DMix:[a],ADor:[a],BPhr:[a],CLyd:[a],\"F#Loc\":[a],C:[],Am:[],GMix:[],DDor:[],EPhr:[],FLyd:[],BLoc:[],F:[f],Dm:[f],CMix:[f],GDor:[f],APhr:[f],BbLyd:[f],ELoc:[f],Bb:[f,p],Gm:[f,p],FMix:[f,p],CDor:[f,p],DPhr:[f,p],EbLyd:[f,p],ALoc:[f,p],Eb:[f,p,m],Cm:[f,p,m],BbMix:[f,p,m],FDor:[f,p,m],GPhr:[f,p,m],AbLyd:[f,p,m],DLoc:[f,p,m],Ab:[f,p,m,g],Fm:[f,p,m,g],EbMix:[f,p,m,g],BbDor:[f,p,m,g],CPhr:[f,p,m,g],DbLyd:[f,p,m,g],GLoc:[f,p,m,g],Db:[f,p,m,g,v],Bbm:[f,p,m,g,v],AbMix:[f,p,m,g,v],EbDor:[f,p,m,g,v],FPhr:[f,p,m,g,v],GbLyd:[f,p,m,g,v],CLoc:[f,p,m,g,v],Gb:[f,p,m,g,v,b],Ebm:[f,p,m,g,v,b],DbMix:[f,p,m,g,v,b],AbDor:[f,p,m,g,v,b],BbPhr:[f,p,m,g,v,b],CbLyd:[f,p,m,g,v,b],FLoc:[f,p,m,g,v,b],Cb:[f,p,m,g,v,b,y],Abm:[f,p,m,g,v,b,y],GbMix:[f,p,m,g,v,b,y],DbDor:[f,p,m,g,v,b,y],EbPhr:[f,p,m,g,v,b,y],FbLyd:[f,p,m,g,v,b,y],BbLoc:[f,p,m,g,v,b,y],\"A#\":[f,p],\"B#\":[],\"D#\":[f,p,m],\"E#\":[f],\"G#\":[f,p,m,g],Gbm:[a,c,o,h,l,d,u]};return n.keySignature(i,w,t,e,r,s)};var o={treble:{clef:\"treble\",pitch:4,mid:0},\"treble+8\":{clef:\"treble+8\",pitch:4,mid:0},\"treble-8\":{clef:\"treble-8\",pitch:4,mid:0},\"treble^8\":{clef:\"treble+8\",pitch:4,mid:0},treble_8:{clef:\"treble-8\",pitch:4,mid:0},treble1:{clef:\"treble\",pitch:2,mid:2},treble2:{clef:\"treble\",pitch:4,mid:0},treble3:{clef:\"treble\",pitch:6,mid:-2},treble4:{clef:\"treble\",pitch:8,mid:-4},treble5:{clef:\"treble\",pitch:10,mid:-6},perc:{clef:\"perc\",pitch:6,mid:0},none:{clef:\"none\",mid:0},bass:{clef:\"bass\",pitch:8,mid:-12},\"bass+8\":{clef:\"bass+8\",pitch:8,mid:-12},\"bass-8\":{clef:\"bass-8\",pitch:8,mid:-12},\"bass^8\":{clef:\"bass+8\",pitch:8,mid:-12},bass_8:{clef:\"bass-8\",pitch:8,mid:-12},\"bass+16\":{clef:\"bass\",pitch:8,mid:-12},\"bass-16\":{clef:\"bass\",pitch:8,mid:-12},\"bass^16\":{clef:\"bass\",pitch:8,mid:-12},bass_16:{clef:\"bass\",pitch:8,mid:-12},bass1:{clef:\"bass\",pitch:2,mid:-6},bass2:{clef:\"bass\",pitch:4,mid:-8},bass3:{clef:\"bass\",pitch:6,mid:-10},bass4:{clef:\"bass\",pitch:8,mid:-12},bass5:{clef:\"bass\",pitch:10,mid:-14},tenor:{clef:\"alto\",pitch:8,mid:-8},tenor1:{clef:\"alto\",pitch:2,mid:-2},tenor2:{clef:\"alto\",pitch:4,mid:-4},tenor3:{clef:\"alto\",pitch:6,mid:-6},tenor4:{clef:\"alto\",pitch:8,mid:-8},tenor5:{clef:\"alto\",pitch:10,mid:-10},alto:{clef:\"alto\",pitch:6,mid:-6},alto1:{clef:\"alto\",pitch:2,mid:-2},alto2:{clef:\"alto\",pitch:4,mid:-4},alto3:{clef:\"alto\",pitch:6,mid:-6},alto4:{clef:\"alto\",pitch:8,mid:-8},alto5:{clef:\"alto\",pitch:10,mid:-10},\"alto+8\":{clef:\"alto+8\",pitch:6,mid:-6},\"alto-8\":{clef:\"alto-8\",pitch:6,mid:-6},\"alto^8\":{clef:\"alto+8\",pitch:6,mid:-6},alto_8:{clef:\"alto-8\",pitch:6,mid:-6}},h=function(t,e){var i=o[t];return(i?i.mid:0)+e};a.fixClef=function(t){var e=o[t.type];e&&(t.clefPos=e.pitch,t.type=e.clef)},a.deepCopyKey=function(t){var e={accidentals:[],root:t.root,acc:t.acc,mode:t.mode};return r.each(t.accidentals,function(t){e.accidentals.push(r.clone(t))}),e};var l={A:5,B:6,C:0,D:1,E:2,F:3,G:4,a:12,b:13,c:7,d:8,e:9,f:10,g:11};a.addPosToKey=function(t,e){var i=t.verticalPos;r.each(e.accidentals,function(t){var e=l[t.note];e-=i,t.verticalPos=e}),e.impliedNaturals&&r.each(e.impliedNaturals,function(t){var e=l[t.note];e-=i,t.verticalPos=e}),i<-10?(r.each(e.accidentals,function(t){t.verticalPos-=7,(t.verticalPos>=11||10===t.verticalPos&&\"flat\"===t.acc)&&(t.verticalPos-=7),\"A\"===t.note&&\"sharp\"===t.acc&&(t.verticalPos-=7),\"G\"!==t.note&&\"F\"!==t.note||\"flat\"!==t.acc||(t.verticalPos-=7)}),e.impliedNaturals&&r.each(e.impliedNaturals,function(t){t.verticalPos-=7,(t.verticalPos>=11||10===t.verticalPos&&\"flat\"===t.acc)&&(t.verticalPos-=7),\"A\"===t.note&&\"sharp\"===t.acc&&(t.verticalPos-=7),\"G\"!==t.note&&\"F\"!==t.note||\"flat\"!==t.acc||(t.verticalPos-=7)})):i<-4?(r.each(e.accidentals,function(t){t.verticalPos-=7,-8!==i||\"f\"!==t.note&&\"g\"!==t.note||\"sharp\"!==t.acc||(t.verticalPos-=7)}),e.impliedNaturals&&r.each(e.impliedNaturals,function(t){t.verticalPos-=7,-8!==i||\"f\"!==t.note&&\"g\"!==t.note||\"sharp\"!==t.acc||(t.verticalPos-=7)})):i>=7&&(r.each(e.accidentals,function(t){t.verticalPos+=7}),e.impliedNaturals&&r.each(e.impliedNaturals,function(t){t.verticalPos+=7}))},a.fixKey=function(t,e){var i=r.clone(e);return a.addPosToKey(t,i),i};var d=function(t){var e=0,i=t.charAt(e++);\"^\"!==i&&\"_\"!==i||(i=t.charAt(e++));var r=l[i];for(void 0===r&&(r=6);e<t.length;e++)if(\",\"===t.charAt(e))r-=7;else{if(\"'\"!==t.charAt(e))break;r+=7}return{mid:r-6,str:t.substring(e)}};a.parseKey=function(r){0===r.length&&(r=\"none\");var n=t.tokenize(r,0,r.length),c={};switch(n[0].token){case\"HP\":s.addDirective(\"bagpipes\"),i.key={root:\"HP\",accidentals:[],acc:\"\",mode:\"\"},c.foundKey=!0,n.shift();break;case\"Hp\":s.addDirective(\"bagpipes\"),i.key={root:\"Hp\",accidentals:[{acc:\"natural\",note:\"g\"},{acc:\"sharp\",note:\"f\"},{acc:\"sharp\",note:\"c\"}],acc:\"\",mode:\"\"},c.foundKey=!0,n.shift();break;case\"none\":i.key={root:\"none\",accidentals:[],acc:\"\",mode:\"\"},c.foundKey=!0,n.shift();break;default:var o=t.getKeyPitch(n[0].token);if(o.len>0){c.foundKey=!0;var l=\"\",d=\"\";n[0].token.length>1?n[0].token=n[0].token.substring(1):n.shift();var u=o.token;if(n.length>0){var f=t.getSharpFlat(n[0].token);if(f.len>0&&(n[0].token.length>1?n[0].token=n[0].token.substring(1):n.shift(),u+=f.token,l=f.token),n.length>0){var p=t.getMode(n[0].token);p.len>0&&(n.shift(),u+=p.token,d=p.token)}if(void 0===a.standardKey(u,o.token,l,0))return e(\"Unsupported key signature: \"+u,r,0),c}var m=a.deepCopyKey(i.key),g=i.globalTranspose?-i.globalTranspose:0;if(i.key=a.deepCopyKey(a.standardKey(u,o.token,l,g)),i.key.mode=d,m){for(var v,b=0;b<i.key.accidentals.length;b++)for(v=0;v<m.accidentals.length;v++)m.accidentals[v].note&&i.key.accidentals[b].note.toLowerCase()===m.accidentals[v].note.toLowerCase()&&(m.accidentals[v].note=null);for(v=0;v<m.accidentals.length;v++)m.accidentals[v].note&&(i.key.impliedNaturals||(i.key.impliedNaturals=[]),i.key.impliedNaturals.push({acc:\"natural\",note:m.accidentals[v].note}))}}}if(0===n.length)return c;if(\"exp\"===n[0].token&&n.shift(),0===n.length)return c;if(\"oct\"===n[0].token&&n.shift(),0===n.length)return c;var y,w=t.getKeyAccidentals2(n);if(w.warn&&e(w.warn,r,0),w.accs){c.foundKey||(c.foundKey=!0,i.key={root:\"none\",acc:\"\",mode:\"\",accidentals:[]}),function(t){for(var e=0;e<t.length;e++)\"b\"===t[e].note?t[e].note=\"B\":\"a\"===t[e].note?t[e].note=\"A\":\"F\"===t[e].note?t[e].note=\"f\":\"E\"===t[e].note?t[e].note=\"e\":\"D\"===t[e].note?t[e].note=\"d\":\"C\"===t[e].note?t[e].note=\"c\":\"G\"===t[e].note&&\"sharp\"===t[e].acc?t[e].note=\"g\":\"g\"===t[e].note&&\"flat\"===t[e].acc&&(t[e].note=\"G\")}(w.accs);for(var x=0;x<w.accs.length;x++){for(var k=!1,A=0;A<i.key.accidentals.length&&!k;A++)i.key.accidentals[A].note===w.accs[x].note&&(k=!0,i.key.accidentals[A].acc!==w.accs[x].acc&&(i.key.accidentals[A].acc=w.accs[x].acc,i.key.explicitAccidentals||(i.key.explicitAccidentals=[]),i.key.explicitAccidentals.push(w.accs[x])));if(!k&&(i.key.explicitAccidentals||(i.key.explicitAccidentals=[]),i.key.explicitAccidentals.push(w.accs[x]),i.key.accidentals.push(w.accs[x]),i.key.impliedNaturals))for(var T=0;T<i.key.impliedNaturals.length;T++)i.key.impliedNaturals[T].note===w.accs[x].note&&i.key.impliedNaturals.splice(T,1)}}for(;n.length>0;)switch(n[0].token){case\"m\":case\"middle\":if(n.shift(),0===n.length)return e(\"Expected = after middle\",r,0),c;if(\"=\"!==(y=n.shift()).token){e(\"Expected = after middle\",r,y.start);break}if(0===n.length)return e(\"Expected parameter after middle=\",r,0),c;var S=t.getPitchFromTokens(n);S.warn&&e(S.warn,r,0),S.position&&(i.clef.verticalPos=S.position-6);break;case\"transpose\":if(n.shift(),0===n.length)return e(\"Expected = after transpose\",r,0),c;if(\"=\"!==(y=n.shift()).token){e(\"Expected = after transpose\",r,y.start);break}if(0===n.length)return e(\"Expected parameter after transpose=\",r,0),c;if(\"number\"!==n[0].type){e(\"Expected number after transpose\",r,n[0].start);break}i.clef.transpose=n[0].intt,n.shift();break;case\"stafflines\":if(n.shift(),0===n.length)return e(\"Expected = after stafflines\",r,0),c;if(\"=\"!==(y=n.shift()).token){e(\"Expected = after stafflines\",r,y.start);break}if(0===n.length)return e(\"Expected parameter after stafflines=\",r,0),c;if(\"number\"!==n[0].type){e(\"Expected number after stafflines\",r,n[0].start);break}i.clef.stafflines=n[0].intt,n.shift();break;case\"staffscale\":if(n.shift(),0===n.length)return e(\"Expected = after staffscale\",r,0),c;if(\"=\"!==(y=n.shift()).token){e(\"Expected = after staffscale\",r,y.start);break}if(0===n.length)return e(\"Expected parameter after staffscale=\",r,0),c;if(\"number\"!==n[0].type){e(\"Expected number after staffscale\",r,n[0].start);break}i.clef.staffscale=n[0].floatt,n.shift();break;case\"style\":if(n.shift(),0===n.length)return e(\"Expected = after style\",r,0),c;if(\"=\"!==(y=n.shift()).token){e(\"Expected = after style\",r,y.start);break}if(0===n.length)return e(\"Expected parameter after style=\",r,0),c;switch(n[0].token){case\"normal\":case\"harmonic\":case\"rhythm\":case\"x\":i.style=n[0].token,n.shift();break;default:e(\"error parsing style element: \"+n[0].token,r,n[0].start)}break;case\"clef\":if(n.shift(),0===n.length)return e(\"Expected = after clef\",r,0),c;if(\"=\"!==(y=n.shift()).token){e(\"Expected = after clef\",r,y.start);break}if(0===n.length)return e(\"Expected parameter after clef=\",r,0),c;case\"treble\":case\"bass\":case\"alto\":case\"tenor\":case\"perc\":var N=n.shift();switch(N.token){case\"treble\":case\"tenor\":case\"alto\":case\"bass\":case\"perc\":case\"none\":break;case\"C\":N.token=\"alto\";break;case\"F\":N.token=\"bass\";break;case\"G\":N.token=\"treble\";break;case\"c\":N.token=\"alto\";break;case\"f\":N.token=\"bass\";break;case\"g\":N.token=\"treble\";break;default:e(\"Expected clef name. Found \"+N.token,r,N.start)}n.length>0&&\"number\"===n[0].type&&(N.token+=n[0].token,n.shift()),n.length>1&&(\"-\"===n[0].token||\"+\"===n[0].token||\"^\"===n[0].token||\"_\"===n[0].token)&&\"8\"===n[1].token&&(N.token+=n[0].token+n[1].token,n.shift(),n.shift()),i.clef={type:N.token,verticalPos:h(N.token,0)},i.currentVoice&&void 0!==i.currentVoice.transpose&&(i.clef.transpose=i.currentVoice.transpose),c.foundClef=!0;break;default:e(\"Unknown parameter: \"+n[0].token,r,n[0].start),n.shift()}return c};a.parseVoice=function(r,s,n){var a=t.getMeat(r,s,n),o=a.start,l=a.end,u=t.getToken(r,o,l);if(0!==u.length){var f=!1;void 0===i.voices[u]&&(i.voices[u]={},f=!0,i.score_is_present&&e(\"Can't have an unknown V: id when the %score directive is present\",r,o)),o+=u.length,o+=t.eatWhiteSpace(r,o);for(var p={startStaff:f},m=function(i){var s=t.getVoiceToken(r,o,l);void 0!==s.warn?e(\"Expected value for \"+i+\" in voice: \"+s.warn,r,o):0===s.token.length&&'\"'!==r.charAt(o)?e(\"Expected value for \"+i+\" in voice\",r,o):p[i]=s.token,o+=s.len},g=function(s,n,a){var c=t.getVoiceToken(r,o,l);void 0!==c.warn?e(\"Expected value for \"+n+\" in voice: \"+c.warn,r,o):0===c.token.length&&'\"'!==r.charAt(o)?e(\"Expected value for \"+n+\" in voice\",r,o):(\"number\"===a&&(c.token=parseFloat(c.token)),i.voices[s][n]=c.token),o+=c.len},v=function(i,s){var n=t.getVoiceToken(r,o,l);if(void 0!==n.warn)e(\"Expected value for \"+i+\" in voice: \"+n.warn,r,o);else{if(0!==n.token.length||'\"'===r.charAt(o))return\"number\"===s&&(n.token=parseFloat(n.token)),n.token;e(\"Expected value for \"+i+\" in voice\",r,o)}o+=n.len},b=function(s,n){var a=t.getVoiceToken(r,o,l);if(void 0!==a.warn)e(\"Expected one of (_B, _E, _b, _e) for \"+n+\" in voice: \"+a.warn,r,o);else if(0===a.token.length&&'\"'!==r.charAt(o))e(\"Expected one of (_B, _E, _b, _e) for \"+n+\" in voice\",r,o);else{var c={_B:2,_E:9,_b:-10,_e:-3}[a.token];c?i.voices[s][n]=c:e(\"Expected one of (_B, _E, _b, _e) for \"+n+\" in voice\",r,o)}o+=a.len};o<l;){var y=t.getVoiceToken(r,o,l);if(o+=y.len,y.warn)e(\"Error parsing voice: \"+y.warn,r,o);else{var w=null;switch(y.token){case\"clef\":case\"cl\":m(\"clef\");var x=0;void 0!==p.clef&&(p.clef=p.clef.replace(/[',]/g,\"\"),-1!==p.clef.indexOf(\"+16\")&&(x+=14,p.clef=p.clef.replace(\"+16\",\"\")),p.verticalPos=h(p.clef,x));break;case\"treble\":case\"bass\":case\"tenor\":case\"alto\":case\"perc\":case\"none\":case\"treble'\":case\"bass'\":case\"tenor'\":case\"alto'\":case\"none'\":case\"treble''\":case\"bass''\":case\"tenor''\":case\"alto''\":case\"none''\":case\"treble,\":case\"bass,\":case\"tenor,\":case\"alto,\":case\"none,\":case\"treble,,\":case\"bass,,\":case\"tenor,,\":case\"alto,,\":case\"none,,\":p.clef=y.token.replace(/[',]/g,\"\"),p.verticalPos=h(p.clef,0),i.voices[u].clef=y.token;break;case\"staves\":case\"stave\":case\"stv\":m(\"staves\");break;case\"brace\":case\"brc\":m(\"brace\");break;case\"bracket\":case\"brk\":m(\"bracket\");break;case\"name\":case\"nm\":m(\"name\");break;case\"subname\":case\"sname\":case\"snm\":m(\"subname\");break;case\"merge\":p.startStaff=!1;break;case\"stem\":case\"stems\":void 0!==(w=t.getVoiceToken(r,o,l)).warn?e(\"Expected value for stems in voice: \"+w.warn,r,o):\"up\"===w.token||\"down\"===w.token?i.voices[u].stem=w.token:e(\"Expected up or down for voice stem\",r,o),o+=w.len;break;case\"up\":case\"down\":i.voices[u].stem=y.token;break;case\"middle\":case\"m\":m(\"verticalPos\"),p.verticalPos=d(p.verticalPos).mid;break;case\"gchords\":case\"gch\":i.voices[u].suppressChords=!0,\"0\"===(w=t.getVoiceToken(r,o,l)).token&&(o+=w.len);break;case\"space\":case\"spc\":m(\"spacing\");break;case\"scale\":g(u,\"scale\",\"number\");break;case\"score\":b(u,\"scoreTranspose\");break;case\"transpose\":g(u,\"transpose\",\"number\");break;case\"stafflines\":g(u,\"stafflines\",\"number\");break;case\"staffscale\":g(u,\"staffscale\",\"number\");break;case\"octave\":g(u,\"octave\",\"number\");break;case\"volume\":g(u,\"volume\",\"number\");break;case\"cue\":var k=v(\"cue\",\"string\");i.voices[u].scale=\"on\"===k?.6:1;break;case\"style\":void 0!==(w=t.getVoiceToken(r,o,l)).warn?e(\"Expected value for style in voice: \"+w.warn,r,o):\"normal\"===w.token||\"harmonic\"===w.token||\"rhythm\"===w.token||\"x\"===w.token?i.voices[u].style=w.token:e(\"Expected one of [normal, harmonic, rhythm, x] for voice style\",r,o),o+=w.len}}o+=t.eatWhiteSpace(r,o)}if((p.startStaff||0===i.staves.length)&&(i.staves.push({index:i.staves.length,meter:i.origMeter}),i.score_is_present||(i.staves[i.staves.length-1].numVoices=0)),void 0===i.voices[u].staffNum){i.voices[u].staffNum=i.staves.length-1;var A=0;for(var T in i.voices)i.voices.hasOwnProperty(T)&&i.voices[T].staffNum===i.voices[u].staffNum&&A++;i.voices[u].index=A-1}var S=i.staves[i.voices[u].staffNum];i.score_is_present||S.numVoices++,p.clef&&(S.clef={type:p.clef,verticalPos:p.verticalPos}),p.spacing&&(S.spacing_below_offset=p.spacing),p.verticalPos&&(S.verticalPos=p.verticalPos),p.name&&(S.name?S.name.push(p.name):S.name=[p.name]),p.subname&&(S.subname?S.subname.push(p.subname):S.subname=[p.subname]),function(t){i.currentVoice=i.voices[t],c.setCurrentVoice(i.currentVoice.staffNum,i.currentVoice.index)}(u)}else e(\"Expected a voice id\",r,o)}}(),t.exports=a},function(t,e,i){\"use strict\";function r(t,e){for(var i=[],r=null,s=0;s<t.length;s++){var n=t[s];n.top!==r&&(i.push({milliseconds:n.milliseconds-e,top:n.top,bottom:n.top+n.height}),r=n.top)}return i}t.exports=function(t,e){var i=this;if(e||(e={}),i.qpm=e.qpm,!i.qpm){var s=t.metaText?t.metaText.tempo:null;i.qpm=t.getBpm(s)}i.extraMeasuresAtBeginning=e.extraMeasuresAtBeginning?e.extraMeasuresAtBeginning:0,i.beatCallback=e.beatCallback,i.eventCallback=e.eventCallback,i.lineEndCallback=e.lineEndCallback,i.lineEndAnticipation=e.lineEndAnticipation?e.lineEndAnticipation:0,i.replaceTarget=function(t){t.setTiming(i.qpm,i.extraMeasuresAtBeginning),0!==t.noteTimings.length&&(i.lineEndCallback&&(i.lineEndTimings=r(t.noteTimings,i.lineEndAnticipation)),i.noteTimings=t.noteTimings)},i.replaceTarget(t),0!==i.noteTimings.length&&(i.noteTimings=t.noteTimings,i.millisecondsPerBeat=1e3/(i.qpm/60),i.lastMoment=i.noteTimings[i.noteTimings.length-1].milliseconds,i.startTime=null,i.currentBeat=0,i.currentEvent=0,i.isPaused=!1,i.pausedTime=null,i.justUnpaused=!1,i.doTiming=function(t){if(i.startTime){if(i.justUnpaused){var e=t-i.pausedTime;i.startTime+=e}}else i.startTime=t;if(i.justUnpaused=!1,i.isPaused)i.pausedTime=t;else{var r=t-i.startTime;for((r+=50)<i.lastMoment&&requestAnimationFrame(i.doTiming),i.currentBeat*i.millisecondsPerBeat<r&&(i.beatCallback&&i.beatCallback(i.currentBeat),i.currentBeat++);i.noteTimings.length>i.currentEvent&&i.noteTimings[i.currentEvent].milliseconds<r;)i.eventCallback&&\"event\"===i.noteTimings[i.currentEvent].type&&i.eventCallback(i.noteTimings[i.currentEvent]),i.currentEvent++;i.lineEndCallback&&i.lineEndTimings.length&&i.lineEndTimings[0].milliseconds<=r&&(i.lineEndCallback(i.lineEndTimings[0]),i.lineEndTimings.shift()),r>=i.lastMoment&&i.eventCallback&&i.eventCallback(null)}},i.start=function(){i.isPaused&&(i.isPaused=!1,i.justUnpaused=!0),requestAnimationFrame(i.doTiming)},i.pause=function(){i.isPaused=!0},i.reset=function(){i.currentBeat=0,i.currentEvent=0,i.startTime=null,i.pausedTime=null,i.lineEndCallback&&(i.lineEndTimings=r(i.noteTimings,i.lineEndAnticipation))},i.stop=function(){i.pause(),i.reset()})}},function(t,e,i){\"use strict\";var r={},s={C:0,\"C#\":1,Db:1,D:2,\"D#\":3,Eb:3,E:4,F:5,\"F#\":6,Gb:6,G:7,\"G#\":8,Ab:8,A:9,\"A#\":10,Bb:10,B:11},n=[\"C\",\"Db\",\"D\",\"Eb\",\"E\",\"F\",\"F#\",\"G\",\"Ab\",\"A\",\"Bb\",\"B\"],a=[\"C\",\"C#\",\"D\",\"D#\",\"E\",\"F\",\"F#\",\"G\",\"G#\",\"A\",\"Bb\",\"B\"];r.keySignature=function(t,e,i,r,c,o){o||(o=0),t.localTransposeVerticalMovement=0,t.localTransposePreferFlats=!1;var h=e[i];if(!h)return t.key;if(t.localTranspose=(t.globalTranspose?t.globalTranspose:0)+o,!t.localTranspose)return{accidentals:h,root:r,acc:c};if(t.globalTransposeOrigKeySig=h,t.localTranspose%12==0)return t.localTransposeVerticalMovement=t.localTranspose/12*7,{accidentals:h,root:r,acc:c};var l=i[0];\"b\"===i[1]||\"#\"===i[1]?(l+=i[1],i=i.substr(2)):i=i.substr(1);for(var d=s[l]+t.localTranspose;d<0;)d+=12;d>11&&(d%=12);var u=\"m\"===i[0]?a[d]:n[d],f=u+i,p=e[f];p.length>0&&\"flat\"===p[0].acc&&(t.localTransposePreferFlats=!0);var m=f.charCodeAt(0)-l.charCodeAt(0);return t.localTranspose>0?m<0?m+=7:0===m&&(\"#\"!==l[1]&&\"b\"!==f[1]||(m+=7)):t.localTranspose<0&&(m>0?m-=7:0===m&&(\"b\"!==l[1]&&\"#\"!==f[1]||(m-=7))),t.localTranspose>0?t.localTransposeVerticalMovement=m+7*Math.floor(t.localTranspose/12):t.localTransposeVerticalMovement=m+7*Math.ceil(t.localTranspose/12),{accidentals:p,root:u[0],acc:u.length>1?u[1]:\"\"}};var c=[\"C\",\"C♯\",\"D\",\"D♯\",\"E\",\"F\",\"F♯\",\"G\",\"G♯\",\"A\",\"A♯\",\"B\"],o=[\"C\",\"D♭\",\"D\",\"E♭\",\"E\",\"F\",\"G♭\",\"G\",\"A♭\",\"A\",\"B♭\",\"B\"];r.chordName=function(t,e){if(t.localTranspose&&t.localTranspose%12!=0){for(var i=t.localTranspose;i<0;)i+=12;i>11&&(i%=12);for(var r=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/C♭/g,\"`~11`\")).replace(/D♭/g,\"`~1`\")).replace(/E♭/g,\"`~3`\")).replace(/F♭/g,\"`~4`\")).replace(/G♭/g,\"`~6`\")).replace(/A♭/g,\"`~8`\")).replace(/B♭/g,\"`~10`\")).replace(/C♯/g,\"`~1`\")).replace(/D♯/g,\"`~3`\")).replace(/E♯/g,\"`~5`\")).replace(/F♯/g,\"`~6`\")).replace(/G♯/g,\"`~8`\")).replace(/A♯/g,\"`~10`\")).replace(/B♯/g,\"`~0`\")).replace(/C/g,\"`~0`\")).replace(/D/g,\"`~2`\")).replace(/E/g,\"`~4`\")).replace(/F/g,\"`~5`\")).replace(/G/g,\"`~7`\")).replace(/A/g,\"`~9`\")).replace(/B/g,\"`~11`\")).split(\"`\"),s=0;s<r.length;s++)if(\"~\"===r[s][0]){var n=parseInt(r[s].substr(1),10);(n+=i)>11&&(n-=12),r[s]=t.localTransposePreferFlats?o[n]:c[n]}e=r.join(\"\")}return e};var h=[\"c\",\"d\",\"e\",\"f\",\"g\",\"a\",\"b\"];var l={dblflat:-2,flat:-1,natural:0,sharp:1,dblsharp:2},d={\"-2\":\"dblflat\",\"-1\":\"flat\",0:\"natural\",1:\"sharp\",2:\"dblsharp\"};r.note=function(t,e){if(t.localTranspose){var i=e.pitch;if(e.pitch=e.pitch+t.localTransposeVerticalMovement,e.accidental){var r=function(t,e,i,r,s){for(var n=h[(t+49)%7],a=0,c=0;c<r.length;c++)r[c].note.toLowerCase()===n&&(a=l[r[c].acc]);for(var o=l[i]-a,d=h[(e+49)%7],u=0,f=0;f<s.accidentals.length;f++)s.accidentals[f].note.toLowerCase()===d&&(u=l[s.accidentals[f].acc]);var p=o+u;return p<-2&&(e--,p+=\"c\"===d||\"f\"===d?1:2),p>2&&(e++,p-=\"b\"===d||\"e\"===d?1:2),[e,p]}(i,e.pitch,e.accidental,t.globalTransposeOrigKeySig,t.targetKey);e.pitch=r[0],e.accidental=d[r[1]]}}},t.exports=r},function(t,e,i){\"use strict\";function r(t,e){for(var i=e.length+1,r=t.total/i,n=0,a=0,c=0;c<=e.length;c++){var o=c===e.length?t.measureWidths.length-1:e[c],h=s(t.measureWidths,a,o,r);a=o+1,n=Math.max(n,h)}return n}function s(t,e,i,r){var s=function(t,e,i){for(var r=0,s=e;s<=i;s++)r+=t[s];return r}(t,e,i);return Math.abs(r-s)}function n(t,e,i,n){var a=t.total/(i.length+1),c=r(t,i);if(0===i.length)return{failed:!0,reason:\"Only one line.\"};var o=i[i.length-1]+1;if(c>s(t.measureWidths,o,t.measureWidths.length,a))return{failed:!0,reason:\"Last line is not too short.\"};for(var h=function(t,e,i,r){for(var s=0,n=[],a=t.length-1;a>=0&&!((s+=t[a])>r);a--)s>i&&a<e&&n.push(a-1);return n}(t.measureWidths,o,a-c,a+c),l=function t(e,i,r,s,n,a){for(var c=0,o=[],h=i;h<e.length&&c<n&&!((c+=e[h])>n);h++)if(c>s){if(r>0&&o.length<1200)for(var l=t(e,h+1,r-1,s,n,a),d=0;d<l.length;d++)o.push([h].concat(l[d]));1===r&&a.indexOf(h)>=0&&o.push([h])}return o}(t.measureWidths,0,i.length,a-c,a+c,h),d=!0,u=0;u<l.length;u++){var f=r(t,l[u]);f<c&&(n.attempts.push({type:\"Optimize try\",lineBreaks:l[u],variance:Math.round(c),newVariance:Math.round(f),totalAttempts:l.length}),c=f,i=l[u],d=!1)}if(d&&(n.attempts.push({type:\"Optimize try\",lineBreaks:i,variance:c,reason:\"None of the \"+l.length+\" attempts were better.\"}),i.length>0)){var p=[].concat(i);p[p.length-1]--,f=r(t,p),n.attempts.push({type:\"Optimize last try\",lineBreaks:l[u],variance:Math.round(c),newVariance:Math.round(f),totalAttempts:l.length}),f<c&&(c=f,i=p,d=!1)}return{failed:d,lineBreaks:i,variance:c}}function a(t,e,i,r,s){var n=new s,a={lineBreaks:t,staffwidth:e};for(var c in r)r.hasOwnProperty(c)&&\"wrap\"!==c&&\"staffwidth\"!==c&&(a[c]=r[c]);return n.parse(i,a),{tune:n.getTune(),revisedParams:a}}t.exports={wrapLines:function(t,e){if(e&&0!==t.lines.length){for(var i=[],r=[],s=[],n=[],a=[],c=\"\",o=0;o<t.lines.length;o++){var h=t.lines[o];if(h.staff)for(var l=h.staff,d=0;d<l.length;d++){void 0===r[d]&&(r[d]=[],s[d]=[],n[d]=[],a[d]=[]);for(var u=l[d],f=u.voices,p=0;p<f.length;p++){void 0===r[d][p]&&(r[d][p]=!0,s[d][p]=0,n[d][p]=0,a[d][p]=0);for(var m=f[p],g=0;g<m.length;g++){if(r[d][p]){if(i[s[d][p]]||(i[s[d][p]]={staff:[]}),!i[s[d][p]].staff[d])for(var v in i[s[d][p]].staff[d]={voices:[]},u)u.hasOwnProperty(v)&&(\"meter\"===v?1!==i.length&&c===JSON.stringify(u[v])||(c=JSON.stringify(u[v]),i[s[d][p]].staff[d][v]=u[v]):\"voices\"!==v&&(i[s[d][p]].staff[d][v]=u[v]));a[d][p]&&(i[s[d][p]].staff[d].barNumber=a[d][p]),r[d][p]=!1}var b=m[g];i[s[d][p]].staff[d].voices[p]||(i[s[d][p]].staff[d].voices[p]=[]),i[s[d][p]].staff[d].voices[p].push(b),\"bar\"===b.el_type&&(n[d][p]++,e[n[d][p]]&&(r[d][p]=!0,s[d][p]++,a[d][p]=b.barNumber,delete b.barNumber))}}}else i.push(h),s++}t.lines=i}},calcLineWraps:function(t,e,i,r,s,c){var o=r.scale?Math.max(r.scale,.1):1,h=r.wrap.minSpacing?Math.max(parseFloat(r.wrap.minSpacing),1):1,l=r.wrap.minSpacingLimit?Math.max(parseFloat(r.wrap.minSpacingLimit),1):h-.1,d=r.wrap.maxSpacing?Math.max(parseFloat(r.wrap.maxSpacing),1):void 0;r.wrap.lastLineLimit&&!d&&(d=Math.max(parseFloat(r.wrap.lastLineLimit),1)),r.wrap.targetHeight&&Math.max(parseInt(r.wrap.targetHeight,10),100);var u=r.wrap.preferredMeasuresPerLine?Math.max(parseInt(r.wrap.preferredMeasuresPerLine,10),1):void 0,f=(r.staffwidth-e.left)/h/o,p=(r.staffwidth-e.left)/d/o,m=(r.staffwidth-e.left)/l/o,g={widths:e,lineBreakPoint:f,minLineSize:p,attempts:[],staffWidth:r.staffwidth,minWidth:Math.round(m)},v=null;if(u){var b=function(t,e,i){for(var r=[],s=[],n=0,a=!1,c=0;c<t.length;c++)n+=t[c],c%i==i-1&&(n>e&&(a=!0),c!==t.length-1&&r.push(c),s.push(Math.round(n)),n=0);return{failed:a,totals:s,lineBreaks:r}}(e.measureWidths,f,u);g.attempts.push({type:\"Fixed Measures Per Line\",preferredMeasuresPerLine:u,lineBreaks:b.lineBreaks,failed:b.failed,totals:b.totals}),b.failed||(v=b.lineBreaks)}if(!v){var y=function(t,e){for(var i=[],r=[],s=0,n=0;n<t.length;n++){var a=t[n],c=s+a;c<e?s=c:e-s<c-e&&s>0?(i.push(n-1),r.push(Math.round(s-a)),s=a):n<t.length-1&&(i.push(n),r.push(Math.round(s)),s=0)}return r.push(Math.round(s)),{lineBreaks:i,totals:r}}(e.measureWidths,f);g.attempts.push({type:\"Free Form\",lineBreaks:y.lineBreaks,totals:y.totals}),y=n(e,0,v=y.lineBreaks,g),g.attempts.push({type:\"Optimize\",failed:y.failed,reason:y.reason,lineBreaks:y.lineBreaks,totals:y.totals}),y.failed||(v=y.lineBreaks)}var w=r.staffwidth,x=a(v,w,i,r,s),k=c.getMeasureWidths(x.tune),A=!0;return g.attempts.push({type:\"heightCheck\",height:k.height}),0===v.length&&p>e.total&&(w=e.total*d*o+e.left,g.attempts.push({type:\"too sparse\",newWidth:Math.round(w)}),A=!1),A||(x=a(v,w,i,r,s)),x.explanation=g,x}}},function(t,e,i){\"use strict\";var r=i(1),s=i(23),n=i(37),a=function(t,e){e=e||{},this.responsive=e.responsive,this.space=3*r.SPACE,this.scale=e.scale?parseFloat(e.scale):0,this.scale>.1||(this.scale=void 0),e.staffwidth?(this.staffwidthScreen=e.staffwidth,this.staffwidthPrint=e.staffwidth):(this.staffwidthScreen=740,this.staffwidthPrint=680),this.editable=e.editable||!1,this.listeners=[],e.clickListener&&this.addSelectListener(e.clickListener),this.renderer=new n(t,e.regression,e.add_classes),this.renderer.setPaddingOverride(e),this.renderer.controller=this,this.reset()};function c(t,e,i,r,s,n,a){return t&&r/i<.66&&!e?null:Math.abs(i-r)<2?null:n>0?((s=(i-(r-n*s))/n)*a>50&&(s=50/a),s):null}a.prototype.reset=function(){this.selected=[],this.ingroup=!1,this.staffgroups=[],this.lastStaffGroupIndex=-1,this.engraver&&this.engraver.reset(),this.engraver=null,this.renderer.reset()},a.prototype.engraveABC=function(t,e){void 0===t[0]&&(t=[t]),this.reset();for(var i=0;i<t.length;i++)void 0===e&&(e=i),this.engraveTune(t[i],e);if(this.renderer.doRegression)return this.renderer.regressionLines.join(\"\\n\")},a.prototype.adjustNonScaledItems=function(t){this.width/=t,this.renderer.adjustNonScaledItems(t)},a.prototype.getMeasureWidths=function(t){this.reset(),this.renderer.lineNumber=null,this.renderer.newTune(t),this.engraver=new s(this.renderer,0,{bagpipes:t.formatting.bagpipes,flatbeams:t.formatting.flatbeams}),this.engraver.setStemHeight(this.renderer.spacing.stemHeight),t.formatting.staffwidth?this.width=1.33*t.formatting.staffwidth:this.width=this.renderer.isPrint?this.staffwidthPrint:this.staffwidthScreen;var e=t.formatting.scale?t.formatting.scale:this.scale;\"resize\"===this.responsive&&(e=void 0),void 0===e&&(e=this.renderer.isPrint?.75:1),this.adjustNonScaledItems(e);var i={left:0,measureWidths:[],height:0,total:0};i.height=this.renderer.padding.top+this.renderer.spacing.music+this.renderer.padding.bottom+24;for(var n=!1,a=0;a<t.lines.length;a++){var c=t.lines[a];if(c.staff){if(c.staffGroup=this.engraver.createABCLine(c.staff,n?null:t.metaText.tempo),c.staffGroup.layout(0,this.renderer,!1),c.staffGroup.voices.length>0)for(var o=c.staffGroup.voices[0],h=!1,l=0,d=0;d<o.children.length;d++){var u=o.children[d];h||u.isClef||u.isKeySig||(h=!0,i.left=u.x,l=u.x),\"bar\"===u.type&&(i.measureWidths.push(u.x-l),i.total+=u.x-l,l=u.x)}n=!0,i.height+=c.staffGroup.calcHeight()*r.STEP}}return i},a.prototype.engraveTune=function(t,e){this.renderer.lineNumber=null,this.renderer.newTune(t),this.engraver=new s(this.renderer,e,{bagpipes:t.formatting.bagpipes,flatbeams:t.formatting.flatbeams}),this.engraver.setStemHeight(this.renderer.spacing.stemHeight),t.formatting.staffwidth?this.width=1.33*t.formatting.staffwidth:this.width=this.renderer.isPrint?this.staffwidthPrint:this.staffwidthScreen;var i,r,n=t.formatting.scale?t.formatting.scale:this.scale;\"resize\"===this.responsive&&(n=void 0),void 0===n&&(n=this.renderer.isPrint?.75:1),this.adjustNonScaledItems(n);var a=!1;for(i=0;i<t.lines.length;i++)(r=t.lines[i]).staff&&(r.staffGroup=this.engraver.createABCLine(r.staff,a?null:t.metaText.tempo),a=!0);var c=this.width;for(i=0;i<t.lines.length;i++)(r=t.lines[i]).staff&&(this.setXSpacing(r.staffGroup,t.formatting,i===t.lines.length-1,!1),r.staffGroup.w>c&&(c=r.staffGroup.w));for(i=0;i<t.lines.length;i++)if((r=t.lines[i]).staffGroup&&r.staffGroup.voices){for(var o=0;o<r.staffGroup.voices.length;o++)r.staffGroup.voices[o].layoutBeams();r.staffGroup.setUpperAndLowerElements(this.renderer)}for(i=0;i<t.lines.length;i++)(r=t.lines[i]).staffGroup&&(r.staffGroup.height=r.staffGroup.calcHeight());this.renderer.topMargin(t),this.renderer.engraveTopText(this.width,t),this.renderer.addMusicPadding(),this.staffgroups=[],this.lastStaffGroupIndex=-1;for(var h=0;h<t.lines.length;h++)this.renderer.lineNumber=h,(r=t.lines[h]).staff?this.engraveStaffLine(r.staffGroup):r.subtitle&&0!==h?this.renderer.outputSubtitle(this.width,r.subtitle):void 0!==r.text&&this.renderer.outputFreeText(r.text);this.renderer.moveY(24),this.renderer.engraveExtraText(this.width,t),this.renderer.setPaperSize(c,n,this.responsive)},a.prototype.setXSpacing=function(t,e,i,r){for(var s=this.space,n=0;n<8;n++){var a=t.layout(s,this.renderer,r);if(s=c(i,!!e.stretchlast&&e.stretchlast,this.width+this.renderer.padding.left,t.w,s,a.spacingUnits,a.minSpace),r&&console.log(\"setXSpace\",n,t.w,s,t.minspace),null===s)break}!function(t){for(var e=0;e<t.length;e++)for(var i=t[e],r=1;r<i.children.length-1;r++){var s=i.children[r];if(s.abcelem.rest&&(\"whole\"===s.abcelem.rest.type||\"multimeasure\"===s.abcelem.rest.type)){var n=i.children[r-1],a=i.children[r+1],c=(a.x-n.x)/2+n.x;s.x=c-s.w/2;for(var o=0;o<s.children.length;o++)s.children[o].x=s.x}}}(t.voices)},a.prototype.engraveStaffLine=function(t){this.lastStaffGroupIndex>-1&&this.renderer.addStaffPadding(this.staffgroups[this.lastStaffGroupIndex],t),this.renderer.voiceNumber=null,t.draw(this.renderer);var e=t.height*r.STEP;this.staffgroups[this.staffgroups.length]=t,this.lastStaffGroupIndex=this.staffgroups.length-1,this.renderer.y+=e},a.prototype.notifySelect=function(t,e,i){this.clearSelection(),t.highlight&&(this.selected=[t],t.highlight());for(var r=t.abcelem||{},s=0;s<this.listeners.length;s++)this.listeners[s](r,e,i)},a.prototype.clearSelection=function(){for(var t=0;t<this.selected.length;t++)this.selected[t].unhighlight();this.selected=[]},a.prototype.addSelectListener=function(t){this.listeners[this.listeners.length]=t},a.prototype.rangeHighlight=function(t,e){this.clearSelection();for(var i=0;i<this.staffgroups.length;i++)for(var r=this.staffgroups[i].voices,s=0;s<r.length;s++)for(var n=r[s].children,a=0;a<n.length;a++){var c=n[a].abcelem.startChar,o=n[a].abcelem.endChar;(e>c&&t<o||e===t&&e===o)&&(this.selected[this.selected.length]=n[a],n[a].highlight())}},t.exports=a},function(t,e,i){\"use strict\";var r=function(t,e,i,r,s){this.anchor1=t,this.anchor2=e,this.above=i,this.force=r,this.isTie=s};r.prototype.setEndAnchor=function(t){this.anchor2=t,this.isTie&&(this.anchor1&&(this.anchor1.isTie=!0),this.anchor2&&(this.anchor2.isTie=!0))},r.prototype.setStartX=function(t){this.startLimitX=t},r.prototype.setEndX=function(t){this.endLimitX=t},r.prototype.setHint=function(){this.hint=!0},r.prototype.setUpperAndLowerElements=function(t){},r.prototype.layout=function(t,e){function i(t,e,i){return i?t.pitch:e&&void 0!==t.highestVert?t.highestVert:t.pitch}!this.force&&this.anchor2&&this.anchor2.pitch===this.anchor2.highestVert&&(this.above=!0),this.isTie?(this.anchor1&&(this.anchor1.tieAbove=this.above),this.anchor2&&(this.anchor2.tieAbove=this.above)):this.anchor2&&this.anchor2.isTie?this.above=this.anchor2.tieAbove:this.anchor1&&this.anchor1.isTie&&(this.above=this.anchor1.tieAbove),this.anchor1?(this.startX=this.anchor1.x,this.anchor1.scalex<1&&(this.startX-=3)):this.startLimitX?this.startX=this.startLimitX.x+this.startLimitX.w:this.startX=t,this.anchor2?this.endX=this.anchor2.x:this.endLimitX?this.endX=this.endLimitX.x:this.endX=e,this.anchor1&&this.anchor2?(this.startY=i(this.anchor1,this.above,this.isTie),this.endY=i(this.anchor2,this.above,this.isTie)):this.anchor1?(this.startY=i(this.anchor1,this.above,this.isTie),this.endY=i(this.anchor1,this.above,this.isTie)):this.anchor2?(this.startY=i(this.anchor2,this.above,this.isTie),this.endY=i(this.anchor2,this.above,this.isTie)):(this.startY=this.above?14:0,this.endY=this.above?14:0)},r.prototype.draw=function(t,e,i){var r;this.layout(e,i),this.hint&&(r=\"abcjs-hint\"),t.drawArc(this.startX,this.endX,this.startY,this.endY,this.above,r,this.isTie)},t.exports=r},function(t,e,i){\"use strict\";i(16);var r=i(17);window.ABCJS=r},function(t,e,i){\"use strict\"},function(t,e,i){\"use strict\";var r=i(18),s=i(6),n={signature:\"abcjs-basic v5.6.3\"};Object.keys(r).forEach(function(t){n[t]=r[t]}),Object.keys(s).forEach(function(t){n[t]=s[t]}),n.renderAbc=i(22),n.TimingCallbacks=i(10);var a=i(39);n.Editor=a,t.exports=n},function(t,e,i){\"use strict\";i(1),i(0);var r=i(10),s={};!function(){var t,e;s.startAnimation=function(i,s,n){function a(t){for(var e=0;e<t.length;e++){var i=t[e];i.classList.contains(\"abcjs-bar\")||(i.style.display=\"none\")}}var c;function o(t){n.hideCurrentMeasure?function(t){a(i.querySelectorAll(t))}(t):n.hideFinishedMeasures&&function(t){c&&a(i.querySelectorAll(c)),c=t}(t)}t&&(t.stop(),t=void 0),n.showCursor&&!i.querySelector(\".abcjs-cursor\")&&((e=document.createElement(\"DIV\")).className=\"abcjs-cursor cursor\",e.style.position=\"absolute\",i.appendChild(e),i.style.position=\"relative\"),(t=new r(s,{qpm:n.bpm,eventCallback:function(i){if(i){if(i.measureStart){var r=function(t){return\".abcjs-l\"+t.line+\".abcjs-m\"+t.measureNumber}(i);r&&o(r)}e.style.left=i.left+\"px\",e.style.top=i.top+\"px\",e.style.width=i.width+\"px\",e.style.height=i.height+\"px\"}else t.stop(),t=void 0}})).start()},s.pauseAnimation=function(e){e?t.pause():t.start()},s.stopAnimation=function(){t.stop(),t=void 0}}(),t.exports=s},function(t,e,i){\"use strict\";var r=i(0),s=i(8),n=i(9);t.exports=function(t,e,i,a){this.reset=function(t,e,i,r){n.initialize(t,e,i,r),s.initialize(t,e,i,r)},this.reset(t,e,i,a),this.setTitle=function(e){if(i.hasMainTitle)a.addSubtitle(t.translateString(t.stripComment(e)));else{var r=t.translateString(t.theReverser(t.stripComment(e)));i.titlecaps&&(r=r.toUpperCase()),a.addMetaText(\"title\",r),i.hasMainTitle=!0}},this.setMeter=function(r){if(\"C\"===(r=t.stripComment(r)))return!0===i.havent_set_length&&(i.default_length=.125,i.havent_set_length=!1),{type:\"common_time\"};if(\"C|\"===r)return!0===i.havent_set_length&&(i.default_length=.125,i.havent_set_length=!1),{type:\"cut_time\"};if(\"o\"===r)return!0===i.havent_set_length&&(i.default_length=.125,i.havent_set_length=!1),{type:\"tempus_perfectum\"};if(\"c\"===r)return!0===i.havent_set_length&&(i.default_length=.125,i.havent_set_length=!1),{type:\"tempus_imperfectum\"};if(\"o.\"===r)return!0===i.havent_set_length&&(i.default_length=.125,i.havent_set_length=!1),{type:\"tempus_perfectum_prolatio\"};if(\"c.\"===r)return!0===i.havent_set_length&&(i.default_length=.125,i.havent_set_length=!1),{type:\"tempus_imperfectum_prolatio\"};if(0===r.length||\"none\"===r.toLowerCase())return!0===i.havent_set_length&&(i.default_length=.125,i.havent_set_length=!1),null;var s=t.tokenize(r,0,r.length);try{var n=function(){var t=function(){var t={value:0,num:\"\"},e=s.shift();for(\"(\"===e.token&&(e=s.shift());;){if(\"number\"!==e.type)throw\"Expected top number of meter\";if(t.value+=parseInt(e.token),t.num+=e.token,0===s.length||\"/\"===s[0].token)return t;if(\")\"===(e=s.shift()).token){if(0===s.length||\"/\"===s[0].token)return t;throw\"Unexpected paren in meter\"}if(\".\"!==e.token&&\"+\"!==e.token)throw\"Expected top number of meter\";if(t.num+=e.token,0===s.length)throw\"Expected top number of meter\";e=s.shift()}return t}();if(0===s.length)return t;var e=s.shift();if(\"/\"!==e.token)throw\"Expected slash in meter\";if(\"number\"!==(e=s.shift()).type)throw\"Expected bottom number of meter\";return t.den=e.token,t.value=t.value/parseInt(t.den),t};if(0===s.length)throw\"Expected meter definition in M: line\";for(var a={type:\"specified\",value:[]},c=0;;){var o=n();c+=o.value;var h={num:o.num};if(void 0!==o.den&&(h.den=o.den),a.value.push(h),0===s.length)break}return!0===i.havent_set_length&&(i.default_length=c<.75?.0625:.125,i.havent_set_length=!1),a}catch(t){e(t,r,0)}return null},this.calcTempo=function(t){var e=.25;i.meter&&\"specified\"===i.meter.type?e=1/parseInt(i.meter.value[0].den):i.origMeter&&\"specified\"===i.origMeter.type&&(e=1/parseInt(i.origMeter.value[0].den));for(var r=0;r<t.duration;r++)t.duration[r]=e*t.duration[r];return t},this.resolveTempo=function(){i.tempo&&(this.calcTempo(i.tempo),a.metaText.tempo=i.tempo,delete i.tempo)},this.addUserDefinition=function(t,s,n){var a=t.indexOf(\"=\",s);if(-1!==a){var c=r.strip(t.substring(s,a)),o=r.strip(t.substring(a+1));1===c.length?-1!==\"HIJKLMNOPQRSTUVWXYhijklmnopqrstuvw~\".indexOf(c)?0!==o.length?(void 0===i.macros&&(i.macros={}),i.macros[c]=o):e(\"Missing macro definition\",t,s):e(\"Macro definitions must be H-Y, h-w, or tilde\",t,s):e(\"Macro definitions can only be one character\",t,s)}else e(\"Need an = in a macro definition\",t,s)},this.setDefaultLength=function(t,e,s){var n=r.gsub(t.substring(e,s),\" \",\"\").split(\"/\");if(2===n.length){var a=parseInt(n[0]),c=parseInt(n[1]);c>0&&(i.default_length=a/c,i.havent_set_length=!1)}else 1===n.length&&\"1\"===n[0]&&(i.default_length=1,i.havent_set_length=!1)};var c={larghissimo:20,adagissimo:24,sostenuto:28,grave:32,largo:40,lento:50,larghetto:60,adagio:68,adagietto:74,andante:80,andantino:88,\"marcia moderato\":84,\"andante moderato\":100,moderato:112,allegretto:116,\"allegro moderato\":120,allegro:126,animato:132,agitato:140,veloce:148,\"mosso vivo\":156,vivace:164,vivacissimo:172,allegrissimo:176,presto:184,prestissimo:210};this.setTempo=function(r,s,n){try{var a=t.tokenize(r,s,n);if(0===a.length)throw\"Missing parameter in Q: field\";var o={},h=!0,l=a.shift();if(\"quote\"===l.type&&(o.preString=l.token,l=a.shift(),0===a.length))return c[o.preString.toLowerCase()]&&(o.bpm=c[o.preString.toLowerCase()],o.suppressBpm=!0),{type:\"immediate\",tempo:o};if(\"alpha\"===l.type&&\"C\"===l.token){if(0===a.length)throw\"Missing tempo after C in Q: field\";if(\"punct\"===(l=a.shift()).type&&\"=\"===l.token){if(0===a.length)throw\"Missing tempo after = in Q: field\";if(\"number\"!==(l=a.shift()).type)throw\"Expected number after = in Q: field\";o.duration=[1],o.bpm=parseInt(l.token)}else{if(\"number\"!==l.type)throw\"Expected number or equal after C in Q: field\";if(o.duration=[parseInt(l.token)],0===a.length)throw\"Missing = after duration in Q: field\";if(\"punct\"!==(l=a.shift()).type||\"=\"!==l.token)throw\"Expected = after duration in Q: field\";if(0===a.length)throw\"Missing tempo after = in Q: field\";if(\"number\"!==(l=a.shift()).type)throw\"Expected number after = in Q: field\";o.bpm=parseInt(l.token)}}else{if(\"number\"!==l.type)throw\"Unknown value in Q: field\";var d=parseInt(l.token);if(0===a.length||\"quote\"===a[0].type)o.duration=[1],o.bpm=d;else{if(h=!1,\"punct\"!==(l=a.shift()).type&&\"/\"!==l.token)throw\"Expected fraction in Q: field\";if(\"number\"!==(l=a.shift()).type)throw\"Expected fraction in Q: field\";var u=parseInt(l.token);for(o.duration=[d/u];a.length>0&&\"=\"!==a[0].token&&\"quote\"!==a[0].type;){if(\"number\"!==(l=a.shift()).type)throw\"Expected fraction in Q: field\";if(d=parseInt(l.token),\"punct\"!==(l=a.shift()).type&&\"/\"!==l.token)throw\"Expected fraction in Q: field\";if(\"number\"!==(l=a.shift()).type)throw\"Expected fraction in Q: field\";u=parseInt(l.token),o.duration.push(d/u)}if(\"punct\"!==(l=a.shift()).type&&\"=\"!==l.token)throw\"Expected = in Q: field\";if(\"number\"!==(l=a.shift()).type)throw\"Expected tempo in Q: field\";o.bpm=parseInt(l.token)}}if(0!==a.length&&(\"quote\"===(l=a.shift()).type&&(o.postString=l.token,l=a.shift()),0!==a.length))throw\"Unexpected string at end of Q: field\";return!1===i.printTempo&&(o.suppress=!0),{type:h?\"delaySet\":\"immediate\",tempo:o}}catch(t){return e(t,r,s),{type:\"none\"}}},this.letter_to_inline_header=function(r,c){var o=t.eatWhiteSpace(r,c);if(c+=o,r.length>=c+5&&\"[\"===r.charAt(c)&&\":\"===r.charAt(c+2)){var h=r.indexOf(\"]\",c),l=i.iChar+c,d=i.iChar+h+1;switch(r.substring(c,c+3)){case\"[I:\":var u=s.addDirective(r.substring(c+3,h));return u&&e(u,r,c),[h-c+1+o];case\"[M:\":var f=this.setMeter(r.substring(c+3,h));return a.hasBeginMusic()&&f?a.appendStartingElement(\"meter\",l,d,f):i.meter=f,[h-c+1+o];case\"[K:\":var p=n.parseKey(r.substring(c+3,h));return p.foundClef&&a.hasBeginMusic()&&a.appendStartingElement(\"clef\",l,d,i.clef),p.foundKey&&a.hasBeginMusic()&&a.appendStartingElement(\"key\",l,d,n.fixKey(i.clef,i.key)),[h-c+1+o];case\"[P:\":return a.lines.length<=a.lineNum?i.partForNextLine={title:r.substring(c+3,h),startChar:l,endChar:d}:a.appendElement(\"part\",l,d,{title:r.substring(c+3,h)}),[h-c+1+o];case\"[L:\":return this.setDefaultLength(r,c+3,h),[h-c+1+o];case\"[Q:\":if(h>0){var m=this.setTempo(r,c+3,h);return\"delaySet\"===m.type?a.appendElement(\"tempo\",l,d,this.calcTempo(m.tempo)):\"immediate\"===m.type&&a.appendElement(\"tempo\",l,d,m.tempo),[h-c+1+o,r.charAt(c+1),r.substring(c+3,h)]}break;case\"[V:\":if(h>0)return n.parseVoice(r,c+3,h),[h-c+1+o,r.charAt(c+1),r.substring(c+3,h)]}}return[0]},this.letter_to_body_header=function(t,c){if(t.length>=c+3)switch(t.substring(c,c+2)){case\"I:\":var o=s.addDirective(t.substring(c+2));return o&&e(o,t,c),[t.length];case\"M:\":var h=this.setMeter(t.substring(c+2));return a.hasBeginMusic()&&h&&a.appendStartingElement(\"meter\",i.iChar+c,i.iChar+t.length,h),[t.length];case\"K:\":var l=n.parseKey(t.substring(c+2));return l.foundClef&&a.hasBeginMusic()&&a.appendStartingElement(\"clef\",i.iChar+c,i.iChar+t.length,i.clef),l.foundKey&&a.hasBeginMusic()&&a.appendStartingElement(\"key\",i.iChar+c,i.iChar+t.length,n.fixKey(i.clef,i.key)),[t.length];case\"P:\":return a.hasBeginMusic()&&a.appendElement(\"part\",i.iChar+c,i.iChar+t.length,{title:t.substring(c+2)}),[t.length];case\"L:\":return this.setDefaultLength(t,c+2,t.length),[t.length];case\"Q:\":var d=t.indexOf(\"\u0012\",c+2);-1===d&&(d=t.length);var u=this.setTempo(t,c+2,d);return\"delaySet\"===u.type?a.appendElement(\"tempo\",i.iChar+c,i.iChar+t.length,this.calcTempo(u.tempo)):\"immediate\"===u.type&&a.appendElement(\"tempo\",i.iChar+c,i.iChar+t.length,u.tempo),[d,t.charAt(c),r.strip(t.substring(c+2))];case\"V:\":return n.parseVoice(t,c+2,t.length),[t.length,t.charAt(c),r.strip(t.substring(c+2))]}return[0]};var o={A:\"author\",B:\"book\",C:\"composer\",D:\"discography\",F:\"url\",G:\"group\",I:\"instruction\",N:\"notes\",O:\"origin\",R:\"rhythm\",S:\"source\",W:\"unalignedWords\",Z:\"transcription\"};this.parseHeader=function(c){if(r.startsWith(c,\"%%\")){var h=s.addDirective(c.substring(2));return h&&e(h,c,2),{}}var l=c.indexOf(\"%\");if(l>=0&&(c=c.substring(0,l)),0===(c=c.replace(/\\s+$/,\"\")).length)return{};if(c.length>=2&&\":\"===c.charAt(1)){var d=\"\";c.indexOf(\"\u0012\")>=0&&\"w\"!==c.charAt(0)&&(d=c.substring(c.indexOf(\"\u0012\")+1),c=c.substring(0,c.indexOf(\"\u0012\")));var u=o[c.charAt(0)];if(void 0!==u)return\"unalignedWords\"===u?a.addMetaTextArray(u,s.parseFontChangeLine(t.translateString(t.stripComment(c.substring(2))))):a.addMetaText(u,t.translateString(t.stripComment(c.substring(2)))),{};var f=i.iChar,p=f+c.length;switch(c.charAt(0)){case\"H\":a.addMetaText(\"history\",t.translateString(t.stripComment(c.substring(2)))),i.is_in_history=!0;break;case\"K\":this.resolveTempo();var m=n.parseKey(c.substring(2));!i.is_in_header&&a.hasBeginMusic()&&(m.foundClef&&a.appendStartingElement(\"clef\",f,p,i.clef),m.foundKey&&a.appendStartingElement(\"key\",f,p,n.fixKey(i.clef,i.key))),i.is_in_header=!1;break;case\"L\":this.setDefaultLength(c,2,c.length);break;case\"M\":i.origMeter=i.meter=this.setMeter(c.substring(2));break;case\"P\":i.is_in_header?a.addMetaText(\"partOrder\",t.translateString(t.stripComment(c.substring(2)))):i.partForNextLine={title:t.translateString(t.stripComment(c.substring(2))),startChar:f,endChar:p};break;case\"Q\":var g=this.setTempo(c,2,c.length);\"delaySet\"===g.type?i.tempo=g.tempo:\"immediate\"===g.type&&(a.metaText.tempo=g.tempo);break;case\"T\":this.setTitle(c.substring(2));break;case\"U\":this.addUserDefinition(c,2,c.length);break;case\"V\":if(n.parseVoice(c,2,c.length),!i.is_in_header)return{newline:!0};break;case\"s\":return{symbols:!0};case\"w\":return{words:!0};case\"X\":break;case\"E\":case\"m\":e(\"Ignored header\",c,0);break;default:return d.length&&(d=\"\u0012\"+d),{regular:!0,str:c+d}}return d.length>0?{recurse:!0,str:d}:{}}return{regular:!0,str:c}}}},function(t,e,i){\"use strict\";var r=i(0);t.exports=function(){this.skipWhiteSpace=function(t){for(var e=0;e<t.length;e++)if(!this.isWhiteSpace(t.charAt(e)))return e;return t.length};var t=function(t,e){return e>=t.length};this.eatWhiteSpace=function(t,e){for(var i=e;i<t.length;i++)if(!this.isWhiteSpace(t.charAt(i)))return i-e;return i-e},this.getKeyPitch=function(e){var i=this.skipWhiteSpace(e);if(t(e,i))return{len:0};switch(e.charAt(i)){case\"A\":return{len:i+1,token:\"A\"};case\"B\":return{len:i+1,token:\"B\"};case\"C\":return{len:i+1,token:\"C\"};case\"D\":return{len:i+1,token:\"D\"};case\"E\":return{len:i+1,token:\"E\"};case\"F\":return{len:i+1,token:\"F\"};case\"G\":return{len:i+1,token:\"G\"}}return{len:0}},this.getSharpFlat=function(t){if(\"bass\"===t)return{len:0};switch(t.charAt(0)){case\"#\":return{len:1,token:\"#\"};case\"b\":return{len:1,token:\"b\"}}return{len:0}},this.getMode=function(e){var i=function(t,e){for(;e<t.length&&(t.charAt(e)>=\"a\"&&t.charAt(e)<=\"z\"||t.charAt(e)>=\"A\"&&t.charAt(e)<=\"Z\");)e++;return e},r=this.skipWhiteSpace(e);if(t(e,r))return{len:0};var s=e.substring(r,r+3).toLowerCase();switch((s.length>1&&\" \"===s.charAt(1)||\"^\"===s.charAt(1)||\"_\"===s.charAt(1)||\"=\"===s.charAt(1))&&(s=s.charAt(0)),s){case\"mix\":return{len:i(e,r),token:\"Mix\"};case\"dor\":return{len:i(e,r),token:\"Dor\"};case\"phr\":return{len:i(e,r),token:\"Phr\"};case\"lyd\":return{len:i(e,r),token:\"Lyd\"};case\"loc\":return{len:i(e,r),token:\"Loc\"};case\"aeo\":return{len:i(e,r),token:\"m\"};case\"maj\":case\"ion\":return{len:i(e,r),token:\"\"};case\"min\":case\"m\":return{len:i(e,r),token:\"m\"}}return{len:0}},this.getClef=function(e,i){var s=e,n=this.skipWhiteSpace(e);if(t(e,n))return{len:0};var a=!1,c=e.substring(n);if(r.startsWith(c,\"clef=\")&&(a=!0,c=c.substring(5),n+=5),0===c.length&&a)return{len:n+5,warn:\"No clef specified: \"+s};var o=this.skipWhiteSpace(c);if(t(c,o))return{len:0};o>0&&(n+=o,c=c.substring(o));var h=null;if(r.startsWith(c,\"treble\"))h=\"treble\";else if(r.startsWith(c,\"bass3\"))h=\"bass3\";else if(r.startsWith(c,\"bass\"))h=\"bass\";else if(r.startsWith(c,\"tenor\"))h=\"tenor\";else if(r.startsWith(c,\"alto2\"))h=\"alto2\";else if(r.startsWith(c,\"alto1\"))h=\"alto1\";else if(r.startsWith(c,\"alto\"))h=\"alto\";else if(!i&&a&&r.startsWith(c,\"none\"))h=\"none\";else if(r.startsWith(c,\"perc\"))h=\"perc\";else if(!i&&a&&r.startsWith(c,\"C\"))h=\"tenor\";else if(!i&&a&&r.startsWith(c,\"F\"))h=\"bass\";else{if(i||!a||!r.startsWith(c,\"G\"))return{len:n+5,warn:\"Unknown clef specified: \"+s};h=\"treble\"}return c=c.substring(h.length),(o=this.isMatch(c,\"+8\"))>0?h+=\"+8\":(o=this.isMatch(c,\"-8\"))>0&&(h+=\"-8\"),{len:n+h.length,token:h,explicit:a}},this.getBarLine=function(t,e){switch(t.charAt(e)){case\"]\":switch(++e,t.charAt(e)){case\"|\":return{len:2,token:\"bar_thick_thin\"};case\"[\":return++e,t.charAt(e)>=\"1\"&&t.charAt(e)<=\"9\"||'\"'===t.charAt(e)?{len:2,token:\"bar_invisible\"}:{len:1,warn:\"Unknown bar symbol\"};default:return{len:1,token:\"bar_invisible\"}}break;case\":\":switch(++e,t.charAt(e)){case\":\":return{len:2,token:\"bar_dbl_repeat\"};case\"|\":switch(++e,t.charAt(e)){case\"]\":switch(++e,t.charAt(e)){case\"|\":return++e,\":\"===t.charAt(e)?{len:5,token:\"bar_dbl_repeat\"}:{len:3,token:\"bar_right_repeat\"};default:return{len:3,token:\"bar_right_repeat\"}}break;case\"|\":return++e,\":\"===t.charAt(e)?{len:4,token:\"bar_dbl_repeat\"}:{len:3,token:\"bar_right_repeat\"};default:return{len:2,token:\"bar_right_repeat\"}}break;default:return{len:1,warn:\"Unknown bar symbol\"}}break;case\"[\":if(++e,\"|\"!==t.charAt(e))return t.charAt(e)>=\"1\"&&t.charAt(e)<=\"9\"||'\"'===t.charAt(e)?{len:1,token:\"bar_invisible\"}:{len:0};switch(++e,t.charAt(e)){case\":\":return{len:3,token:\"bar_left_repeat\"};case\"]\":return{len:3,token:\"bar_invisible\"};default:return{len:2,token:\"bar_thick_thin\"}}break;case\"|\":switch(++e,t.charAt(e)){case\"]\":return{len:2,token:\"bar_thin_thick\"};case\"|\":return++e,\":\"===t.charAt(e)?{len:3,token:\"bar_left_repeat\"}:{len:2,token:\"bar_thin_thin\"};case\":\":for(var i=0;\":\"===t.charAt(e+i);)i++;return{len:1+i,token:\"bar_left_repeat\"};default:return{len:1,token:\"bar_thin\"}}}return{len:0}},this.getTokenOf=function(t,e){for(var i=0;i<t.length;i++)if(e.indexOf(t.charAt(i))<0)return{len:i,token:t.substring(0,i)};return{len:i,token:t}},this.getToken=function(t,e,i){for(var r=e;r<i&&!this.isWhiteSpace(t.charAt(r));)r++;return t.substring(e,r)},this.isMatch=function(e,i){var s=this.skipWhiteSpace(e);return t(e,s)?0:r.startsWith(e.substring(s),i)?s+i.length:0},this.getPitchFromTokens=function(t){var e={};if(e.position={A:5,B:6,C:0,D:1,E:2,F:3,G:4,a:12,b:13,c:7,d:8,e:9,f:10,g:11}[t[0].token],void 0===e.position)return{warn:\"Pitch expected. Found: \"+t[0].token};for(t.shift();t.length;)switch(t[0].token){case\",\":e.position-=7,t.shift();break;case\"'\":e.position+=7,t.shift();break;default:return e}return e},this.getKeyAccidentals2=function(t){for(var e;t.length>0;){var i;if(\"^\"===t[0].token){if(i=\"sharp\",t.shift(),0===t.length)return{accs:e,warn:\"Expected note name after \"+i};switch(t[0].token){case\"^\":i=\"dblsharp\",t.shift();break;case\"/\":i=\"quartersharp\",t.shift()}}else if(\"=\"===t[0].token)i=\"natural\",t.shift();else{if(\"_\"!==t[0].token)return{accs:e};if(i=\"flat\",t.shift(),0===t.length)return{accs:e,warn:\"Expected note name after \"+i};switch(t[0].token){case\"_\":i=\"dblflat\",t.shift();break;case\"/\":i=\"quarterflat\",t.shift()}}if(0===t.length)return{accs:e,warn:\"Expected note name after \"+i};switch(t[0].token.charAt(0)){case\"a\":case\"b\":case\"c\":case\"d\":case\"e\":case\"f\":case\"g\":case\"A\":case\"B\":case\"C\":case\"D\":case\"E\":case\"F\":case\"G\":void 0===e&&(e=[]),e.push({acc:i,note:t[0].token.charAt(0)}),1===t[0].token.length?t.shift():t[0].token=t[0].token.substring(1);break;default:return{accs:e,warn:\"Expected note name after \"+i+\" Found: \"+t[0].token}}}return{accs:e}},this.getKeyAccidental=function(e){var i={\"^\":\"sharp\",\"^^\":\"dblsharp\",\"=\":\"natural\",_:\"flat\",__:\"dblflat\",\"_/\":\"quarterflat\",\"^/\":\"quartersharp\"},r=this.skipWhiteSpace(e);if(t(e,r))return{len:0};var s=null;switch(e.charAt(r)){case\"^\":case\"_\":case\"=\":s=e.charAt(r);break;default:return{len:0}}if(t(e,++r))return{len:1,warn:\"Expected note name after accidental\"};switch(e.charAt(r)){case\"a\":case\"b\":case\"c\":case\"d\":case\"e\":case\"f\":case\"g\":case\"A\":case\"B\":case\"C\":case\"D\":case\"E\":case\"F\":case\"G\":return{len:r+1,token:{acc:i[s],note:e.charAt(r)}};case\"^\":case\"_\":case\"/\":if(s+=e.charAt(r),t(e,++r))return{len:2,warn:\"Expected note name after accidental\"};switch(e.charAt(r)){case\"a\":case\"b\":case\"c\":case\"d\":case\"e\":case\"f\":case\"g\":case\"A\":case\"B\":case\"C\":case\"D\":case\"E\":case\"F\":case\"G\":return{len:r+1,token:{acc:i[s],note:e.charAt(r)}};default:return{len:2,warn:\"Expected note name after accidental\"}}break;default:return{len:1,warn:\"Expected note name after accidental\"}}},this.isWhiteSpace=function(t){return\" \"===t||\"\\t\"===t||\"\u0012\"===t},this.getMeat=function(t,e,i){var r=t.indexOf(\"%\",e);for(r>=0&&r<i&&(i=r);e<i&&(\" \"===t.charAt(e)||\"\\t\"===t.charAt(e)||\"\u0012\"===t.charAt(e));)e++;for(;e<i&&(\" \"===t.charAt(i-1)||\"\\t\"===t.charAt(i-1)||\"\u0012\"===t.charAt(i-1));)i--;return{start:e,end:i}};var e=function(t){return t>=\"A\"&&t<=\"Z\"||t>=\"a\"&&t<=\"z\"},i=function(t){return t>=\"0\"&&t<=\"9\"};this.tokenize=function(t,r,s,n){var a=this.getMeat(t,r,s);r=a.start,s=a.end;for(var c,o=[];r<s;){if('\"'===t.charAt(r)){for(c=r+1;c<s&&'\"'!==t.charAt(c);)c++;o.push({type:\"quote\",token:t.substring(r+1,c),start:r+1,end:c}),c++}else if(e(t.charAt(r))){if(c=r+1,n)for(;c<s&&!this.isWhiteSpace(t.charAt(c));)c++;else for(;c<s&&e(t.charAt(c));)c++;o.push({type:\"alpha\",token:t.substring(r,c),continueId:i(t.charAt(c)),start:r,end:c}),r=c+1}else if(\".\"===t.charAt(r)&&i(t.charAt(c+1))){c=r+1;for(var h;c<s&&i(t.charAt(c));)c++;h=parseFloat(t.substring(r,c)),o.push({type:\"number\",token:t.substring(r,c),intt:null,floatt:h,continueId:e(t.charAt(c)),start:r,end:c}),r=c+1}else if(i(t.charAt(r))||\"-\"===t.charAt(r)&&i(t.charAt(c+1))){c=r+1;for(var l,d=null;c<s&&i(t.charAt(c));)c++;if(\".\"===t.charAt(c)&&i(t.charAt(c+1)))for(c++;c<s&&i(t.charAt(c));)c++;else d=parseInt(t.substring(r,c));l=parseFloat(t.substring(r,c)),o.push({type:\"number\",token:t.substring(r,c),intt:d,floatt:l,continueId:e(t.charAt(c)),start:r,end:c}),r=c+1}else\" \"===t.charAt(r)||\"\\t\"===t.charAt(r)?c=r+1:(o.push({type:\"punct\",token:t.charAt(r),start:r,end:r+1}),c=r+1);r=c}return o},this.getVoiceToken=function(t,e,i){for(var r=e;r<i&&this.isWhiteSpace(t.charAt(r))||\"=\"===t.charAt(r);)r++;if('\"'===t.charAt(r)){var s=t.indexOf('\"',r+1);return-1===s||s>=i?{len:1,err:\"Missing close quote\"}:{len:s-e+1,token:this.translateString(t.substring(r+1,s))}}for(var n=r;n<i&&!this.isWhiteSpace(t.charAt(n))&&\"=\"!==t.charAt(n);)n++;return{len:n-e+1,token:t.substring(r,n)}};var s={\"`a\":\"à\",\"'a\":\"á\",\"^a\":\"â\",\"~a\":\"ã\",'\"a':\"ä\",oa:\"å\",aa:\"å\",\"=a\":\"ā\",ua:\"ă\",\";a\":\"ą\",\"`e\":\"è\",\"'e\":\"é\",\"^e\":\"ê\",'\"e':\"ë\",\"=e\":\"ē\",ue:\"ĕ\",\";e\":\"ę\",\".e\":\"ė\",\"`i\":\"ì\",\"'i\":\"í\",\"^i\":\"î\",'\"i':\"ï\",\"=i\":\"ī\",ui:\"ĭ\",\";i\":\"į\",\"`o\":\"ò\",\"'o\":\"ó\",\"^o\":\"ô\",\"~o\":\"õ\",'\"o':\"ö\",\"=o\":\"ō\",uo:\"ŏ\",\"/o\":\"ø\",\"`u\":\"ù\",\"'u\":\"ú\",\"^u\":\"û\",\"~u\":\"ũ\",'\"u':\"ü\",ou:\"ů\",\"=u\":\"ū\",uu:\"ŭ\",\";u\":\"ų\",\"`A\":\"À\",\"'A\":\"Á\",\"^A\":\"Â\",\"~A\":\"Ã\",'\"A':\"Ä\",oA:\"Å\",AA:\"Å\",\"=A\":\"Ā\",uA:\"Ă\",\";A\":\"Ą\",\"`E\":\"È\",\"'E\":\"É\",\"^E\":\"Ê\",'\"E':\"Ë\",\"=E\":\"Ē\",uE:\"Ĕ\",\";E\":\"Ę\",\".E\":\"Ė\",\"`I\":\"Ì\",\"'I\":\"Í\",\"^I\":\"Î\",\"~I\":\"Ĩ\",'\"I':\"Ï\",\"=I\":\"Ī\",uI:\"Ĭ\",\";I\":\"Į\",\".I\":\"İ\",\"`O\":\"Ò\",\"'O\":\"Ó\",\"^O\":\"Ô\",\"~O\":\"Õ\",'\"O':\"Ö\",\"=O\":\"Ō\",uO:\"Ŏ\",\"/O\":\"Ø\",\"`U\":\"Ù\",\"'U\":\"Ú\",\"^U\":\"Û\",\"~U\":\"Ũ\",'\"U':\"Ü\",oU:\"Ů\",\"=U\":\"Ū\",uU:\"Ŭ\",\";U\":\"Ų\",ae:\"æ\",AE:\"Æ\",oe:\"œ\",OE:\"Œ\",ss:\"ß\",\"'c\":\"ć\",\"^c\":\"ĉ\",uc:\"č\",cc:\"ç\",\".c\":\"ċ\",cC:\"Ç\",\"'C\":\"Ć\",\"^C\":\"Ĉ\",uC:\"Č\",\".C\":\"Ċ\",\"~N\":\"Ñ\",\"~n\":\"ñ\",\"=s\":\"š\",vs:\"š\",DH:\"Ð\",dh:\"ð\",HO:\"Ő\",Ho:\"ő\",HU:\"Ű\",Hu:\"ű\",\"'Y\":\"Ý\",\"'y\":\"ý\",\"^Y\":\"Ŷ\",\"^y\":\"ŷ\",'\"Y':\"Ÿ\",'\"y':\"ÿ\",vS:\"Š\",vZ:\"Ž\",vz:\"ž\"},n={\"#\":\"♯\",b:\"♭\",\"=\":\"♮\"},a={201:\"♯\",202:\"♭\",203:\"♮\",241:\"¡\",242:\"¢\",252:\"a\",262:\"2\",272:\"o\",302:\"Â\",312:\"Ê\",322:\"Ò\",332:\"Ú\",342:\"â\",352:\"ê\",362:\"ò\",372:\"ú\",243:\"£\",253:\"«\",263:\"3\",273:\"»\",303:\"Ã\",313:\"Ë\",323:\"Ó\",333:\"Û\",343:\"ã\",353:\"ë\",363:\"ó\",373:\"û\",244:\"¤\",254:\"¬\",264:\"  ́\",274:\"1⁄4\",304:\"Ä\",314:\"Ì\",324:\"Ô\",334:\"Ü\",344:\"ä\",354:\"ì\",364:\"ô\",374:\"ü\",245:\"¥\",255:\"-\",265:\"μ\",275:\"1⁄2\",305:\"Å\",315:\"Í\",325:\"Õ\",335:\"Ý\",345:\"å\",355:\"í\",365:\"õ\",375:\"ý\",246:\"¦\",256:\"®\",266:\"¶\",276:\"3⁄4\",306:\"Æ\",316:\"Î\",326:\"Ö\",336:\"Þ\",346:\"æ\",356:\"î\",366:\"ö\",376:\"þ\",247:\"§\",257:\" ̄\",267:\"·\",277:\"¿\",307:\"Ç\",317:\"Ï\",327:\"×\",337:\"ß\",347:\"ç\",357:\"ï\",367:\"÷\",377:\"ÿ\",250:\" ̈\",260:\"°\",270:\" ̧\",300:\"À\",310:\"È\",320:\"Ð\",330:\"Ø\",340:\"à\",350:\"è\",360:\"ð\",370:\"ø\",251:\"©\",261:\"±\",271:\"1\",301:\"Á\",311:\"É\",321:\"Ñ\",331:\"Ù\",341:\"á\",351:\"é\",361:\"ñ\",371:\"ù\"};this.translateString=function(t){var e=t.split(\"\\\\\");if(1===e.length)return t;var i=null;return r.each(e,function(t){if(null===i)i=t;else{var e=s[t.substring(0,2)];void 0!==e?i+=e+t.substring(2):void 0!==(e=a[t.substring(0,3)])?i+=e+t.substring(3):(e=n[t.substring(0,1)],i+=void 0!==e?e+t.substring(1):\"\\\\\"+t)}}),i},this.getNumber=function(t,e){for(var i=0;e<t.length;)switch(t.charAt(e)){case\"0\":i*=10,e++;break;case\"1\":i=10*i+1,e++;break;case\"2\":i=10*i+2,e++;break;case\"3\":i=10*i+3,e++;break;case\"4\":i=10*i+4,e++;break;case\"5\":i=10*i+5,e++;break;case\"6\":i=10*i+6,e++;break;case\"7\":i=10*i+7,e++;break;case\"8\":i=10*i+8,e++;break;case\"9\":i=10*i+9,e++;break;default:return{num:i,index:e}}return{num:i,index:e}},this.getFraction=function(t,e){var i=1,r=1;if(\"/\"!==t.charAt(e)){var s=this.getNumber(t,e);i=s.num,e=s.index}if(\"/\"===t.charAt(e)){if(e++,\"/\"===t.charAt(e)){for(var n=.5;\"/\"===t.charAt(e++);)n/=2;return{value:i*n,index:e-1}}var a=e,c=this.getNumber(t,e);0===c.num&&a===e&&(c.num=2),0!==c.num&&(r=c.num),e=c.index}return{value:i/r,index:e}},this.theReverser=function(t){return r.endsWith(t,\", The\")?\"The \"+t.substring(0,t.length-5):r.endsWith(t,\", A\")?\"A \"+t.substring(0,t.length-3):t},this.stripComment=function(t){var e=t.indexOf(\"%\");return e>=0?r.strip(t.substring(0,e)):r.strip(t)},this.getInt=function(t){var e=parseInt(t);if(isNaN(e))return{digits:0};var i=\"\"+e;return{value:e,digits:t.indexOf(i)+i.length}},this.getFloat=function(t){var e=parseFloat(t);if(isNaN(e))return{digits:0};var i=\"\"+e;return{value:e,digits:t.indexOf(i)+i.length}},this.getMeasurement=function(t){if(0===t.length)return{used:0};var e=1,i=\"\";if(\"-\"===t[0].token)t.shift(),i=\"-\",e++;else if(\"number\"!==t[0].type)return{used:0};if(i+=t.shift().token,0===t.length)return{used:1,value:parseInt(i)};var r=t.shift();if(\".\"===r.token){if(e++,0===t.length)return{used:e,value:parseInt(i)};if(\"number\"===t[0].type&&(i=i+\".\"+(r=t.shift()).token,e++,0===t.length))return{used:e,value:parseFloat(i)};r=t.shift()}switch(r.token){case\"pt\":return{used:e+1,value:parseFloat(i)};case\"cm\":return{used:e+1,value:parseFloat(i)/2.54*72};case\"in\":return{used:e+1,value:72*parseFloat(i)};default:return t.unshift(r),{used:e,value:parseFloat(i)}}return{used:0}};var c=function(t){for(;-1!==t.indexOf(\"\\\\n\");)t=t.replace(\"\\\\n\",\"\\n\");return t};this.getBrackettedSubstring=function(t,e,i,r){for(var s=r||t.charAt(e),n=e+1;n<t.length&&t.charAt(n)!==s;)++n;return t.charAt(n)===s?[n-e+1,c(t.substring(e+1,n)),!0]:((n=e+i)>t.length-1&&(n=t.length-1),[n-e+1,c(t.substring(e+1,n)),!1])}}},function(t,e,i){\"use strict\";var r=i(0),s=i(9),n=i(1);t.exports=function(){this.getBeatLength=function(){for(var t=0;t<this.lines.length;t++)if(this.lines[t].staff)for(var e=0;e<this.lines[t].staff.length;e++)if(this.lines[t].staff[e].meter){var i=this.lines[t].staff[e].meter;if(\"specified\"===i.type){if(i.value.length>0){var r=parseInt(i.value[0].num,10),s=parseInt(i.value[0].den,10);return 3===r&&8===s?3/8:6===r&&8===s?3/8:9===r&&8===s?3/8:12===r&&8===s?3/8:1/s}return.25}return\"cut_time\"===i.type?.5:.25}return.25},this.getPickupLength=function(){for(var t=0,e=this.getBarLength(),i=0;i<this.lines.length;i++)if(this.lines[i].staff)for(var r=0;r<this.lines[i].staff.length;r++)for(var s=0;s<this.lines[i].staff[r].voices.length;s++)for(var n=this.lines[i].staff[r].voices[s],a=1,c=0;c<n.length;c++){var o=n[c].rest&&\"spacer\"===n[c].rest.type;if(n[c].startTriplet&&(a=n[c].tripletMultiplier),n[c].duration&&!o&&(t+=n[c].duration*a),n[c].endTriplet&&(a=1),t>=e&&(t-=e),\"bar\"===n[c].el_type)return t}return t},this.getBarLength=function(){var t=this.getMeterFraction();return t.num/t.den},this.millisecondsPerMeasure=function(t){var e,i;if(t)e=t;else{var r=this.metaText?this.metaText.tempo:null;e=this.getBpm(r)}e<=0&&(e=1);var s=this.getMeterFraction();return(i=8===s.den?s.num/3:s.num)<=0&&(i=1),i/e*6e4},this.reset=function(){this.version=\"1.0.1\",this.media=\"screen\",this.metaText={},this.formatting={},this.lines=[],this.staffNum=0,this.voiceNum=0,this.lineNum=0},this.resolveOverlays=function(){for(var t=!1,e=0;e<this.lines.length;e++){var i=this.lines[e];if(i.staff)for(var r=0;r<i.staff.length;r++){for(var s=i.staff[r],n=[],a=0;a<s.voices.length;a++){var c=s.voices[a];n.push({hasOverlay:!1,voice:[],snip:[]});for(var o=0,h=!1,l=-1,d=0;d<c.length;d++){var u=c[d];\"overlay\"!==u.el_type||h?\"bar\"===u.el_type?(h?(h=!1,n[a].snip.push({start:l,len:d-l}),n[a].voice.push(u)):(n[a].voice.push({el_type:\"note\",duration:o,rest:{type:\"invisible\"},startChar:u.startChar,endChar:u.endChar}),n[a].voice.push(u)),o=0):\"note\"===u.el_type?h?n[a].voice.push(u):o+=u.duration:\"scale\"!==u.el_type&&\"stem\"!==u.el_type&&\"overlay\"!==u.el_type&&\"style\"!==u.el_type&&\"transpose\"!==u.el_type||n[a].voice.push(u):(t=!0,h=!0,l=d,n[a].hasOverlay=!0)}n[a].hasOverlay&&0===n[a].snip.length&&n[a].snip.push({start:l,len:c.length-l})}for(a=0;a<n.length;a++){var f=n[a];if(f.hasOverlay){s.voices.push(f.voice);for(var p=f.snip.length-1;p>=0;p--){var m=f.snip[p];s.voices[a].splice(m.start,m.len)}}}}}return t},this.cleanUp=function(t,e,i,n,a){this.closeLine(),this.metaText.tempo&&this.metaText.tempo.bpm&&!this.metaText.tempo.duration&&(this.metaText.tempo.duration=[this.getBeatLength()]);var c,o,h,l=!1;for(c=0;c<this.lines.length;c++)if(void 0!==this.lines[c].staff){var d=!1;for(o=0;o<this.lines[c].staff.length;o++)if(void 0===this.lines[c].staff[o])l=!0,this.lines[c].staff[o]=null;else for(h=0;h<this.lines[c].staff[o].voices.length;h++)void 0===this.lines[c].staff[o].voices[h]?this.lines[c].staff[o].voices[h]=[]:this.containsNotes(this.lines[c].staff[o].voices[h])&&(d=!0);d||(this.lines[c]=null,l=!0)}if(l&&(this.lines=r.compact(this.lines),r.each(this.lines,function(t){t.staff&&(t.staff=r.compact(t.staff))})),i)for(;m(this.lines,i););if(n){for(l=!1,c=0;c<this.lines.length;c++)if(void 0!==this.lines[c].staff)for(o=0;o<this.lines[c].staff.length;o++){var u=!1;for(h=0;h<this.lines[c].staff[o].voices.length;h++)this.containsNotesStrict(this.lines[c].staff[o].voices[h])&&(u=!0);u||(l=!0,this.lines[c].staff[o]=null)}l&&r.each(this.lines,function(t){t.staff&&(t.staff=r.compact(t.staff))})}for(function(t){for(var e=!0,i=0;i<t.length;i++){var r=t[i];if(r.staff){for(var s=0;s<r.staff.length;s++){var n=r.staff[s];if(n.title){for(var a=!1,c=0;c<n.title.length;c++)n.title[c]?(n.title[c]=e?n.title[c].name:n.title[c].subname,n.title[c]?a=!0:n.title[c]=\"\"):n.title[c]=\"\";a||delete n.title}}e=!1}}}(this.lines),c=0;c<this.lines.length;c++)if(this.lines[c].staff)for(o=0;o<this.lines[c].staff.length;o++)delete this.lines[c].staff[o].workingClef;for(;this.resolveOverlays(););function f(t){for(var e,i=function(t,i,s){if(void 0===a[s]){for(e=0;e<a.length;e++)if(void 0!==a[e]){s=e;break}if(void 0===a[s]){var n=100*s+1;r.each(t.endSlur,function(t){n===t&&--n}),a[s]=[n]}}for(var c,o=0;o<i;o++)c=a[s].pop(),t.endSlur.push(c);return 0===a[s].length&&delete a[s],c},s=function(t,e,i,s){t.startSlur=[],void 0===a[i]&&(a[i]=[]);for(var n=100*i+1,c=0;c<e;c++)s&&(r.each(s,function(t){n===t&&++n}),r.each(s,function(t){n===t&&++n}),r.each(s,function(t){n===t&&++n})),r.each(a[i],function(t){n===t&&++n}),r.each(a[i],function(t){n===t&&++n}),a[i].push(n),t.startSlur.push({label:n}),n++},n=0;n<t.length;n++){var c=t[n];if(\"note\"===c.el_type){if(c.gracenotes)for(var o=0;o<c.gracenotes.length;o++){if(c.gracenotes[o].endSlur){var h=c.gracenotes[o].endSlur;c.gracenotes[o].endSlur=[];for(var l=0;l<h;l++)i(c.gracenotes[o],1,20)}c.gracenotes[o].startSlur&&(e=c.gracenotes[o].startSlur,s(c.gracenotes[o],e,20))}if(c.endSlur&&(e=c.endSlur,c.endSlur=[],i(c,e,0)),c.startSlur&&s(c,e=c.startSlur,0),c.pitches){for(var d=[],u=0;u<c.pitches.length;u++)if(c.pitches[u].endSlur){var f=c.pitches[u].endSlur;c.pitches[u].endSlur=[];for(var p=0;p<f;p++){var m=i(c.pitches[u],1,u+1);d.push(m)}}for(u=0;u<c.pitches.length;u++)c.pitches[u].startSlur&&(e=c.pitches[u].startSlur,s(c.pitches[u],e,u+1,d));c.gracenotes&&c.pitches[0].endSlur&&100===c.pitches[0].endSlur[0]&&c.pitches[0].startSlur&&(c.gracenotes[0].endSlur?c.gracenotes[0].endSlur.push(c.pitches[0].startSlur[0].label):c.gracenotes[0].endSlur=[c.pitches[0].startSlur[0].label],1===c.pitches[0].endSlur.length?delete c.pitches[0].endSlur:100===c.pitches[0].endSlur[0]?c.pitches[0].endSlur.shift():100===c.pitches[0].endSlur[c.pitches[0].endSlur.length-1]&&c.pitches[0].endSlur.pop(),1===a[1].length?delete a[1]:a[1].pop())}}}}function p(t){s.fixClef(t)}function m(t,e){for(c=0;c<t.length;c++)if(void 0!==t[c].staff)for(o=0;o<t[c].staff.length;o++){var i=[];for(h=0;h<t[c].staff[o].voices.length;h++)for(var s=t[c].staff[o].voices[h],n=0,a=0;a<s.length;a++)if(\"bar\"===s[a].el_type){if(++n>=e&&a<s.length-1){var l=g(t,c);if(!l){var d=JSON.parse(JSON.stringify(t[c]));t.push(r.clone(d)),l=t[t.length-1];for(var u=0;u<l.staff.length;u++)for(var f=0;f<l.staff[u].voices.length;f++)l.staff[u].voices[f]=[]}var p=a+1,m=t[c].staff[o].voices[h].slice(p);return t[c].staff[o].voices[h]=t[c].staff[o].voices[h].slice(0,p),l.staff[o].voices[h]=i.concat(m.concat(l.staff[o].voices[h])),!0}}else s[a].duration||i.push(s[a])}return!1}function g(t,e){for(e++;t.length>e;){if(t[e].staff)return t[e];e++}return null}for(this.lineNum=0;this.lineNum<this.lines.length;this.lineNum++){var v=this.lines[this.lineNum].staff;if(v)for(this.staffNum=0;this.staffNum<v.length;this.staffNum++)for(v[this.staffNum].clef&&p(v[this.staffNum].clef),this.voiceNum=0;this.voiceNum<v[this.staffNum].voices.length;this.voiceNum++){var b=v[this.staffNum].voices[this.voiceNum];f(b);for(var y=0;y<b.length;y++)\"clef\"===b[y].el_type&&p(b[y]);if(b.length>0&&b[b.length-1].barNumber){var w=g(this.lines,this.lineNum);w&&(w.staff[0].barNumber=b[b.length-1].barNumber),delete b[b.length-1].barNumber}}}return this.formatting.pagewidth||(this.formatting.pagewidth=t),this.formatting.pageheight||(this.formatting.pageheight=e),delete this.staffNum,delete this.voiceNum,delete this.lineNum,delete this.potentialStartBeam,delete this.potentialEndBeam,delete this.vskipPending,a},this.reset(),this.getLastNote=function(){if(this.lines[this.lineNum]&&this.lines[this.lineNum].staff&&this.lines[this.lineNum].staff[this.staffNum]&&this.lines[this.lineNum].staff[this.staffNum].voices[this.voiceNum])for(var t=this.lines[this.lineNum].staff[this.staffNum].voices[this.voiceNum].length-1;t>=0;t--){var e=this.lines[this.lineNum].staff[this.staffNum].voices[this.voiceNum][t];if(\"note\"===e.el_type)return e}return null},this.addTieToLastNote=function(){var t=this.getLastNote();return!!(t&&t.pitches&&t.pitches.length>0)&&(t.pitches[0].startTie={},!0)},this.getDuration=function(t){return t.duration?t.duration:0},this.closeLine=function(){this.potentialStartBeam&&this.potentialEndBeam&&(this.potentialStartBeam.startBeam=!0,this.potentialEndBeam.endBeam=!0),delete this.potentialStartBeam,delete this.potentialEndBeam},this.appendElement=function(t,e,i,s){var n=this;s.el_type=t,null!==e&&(s.startChar=e),null!==i&&(s.endChar=i);var a=function(){void 0!==n.potentialStartBeam&&void 0!==n.potentialEndBeam&&(n.potentialStartBeam.startBeam=!0,n.potentialEndBeam.endBeam=!0),delete n.potentialStartBeam,delete n.potentialEndBeam};\"note\"===t?n.getDuration(s)>=.25?a():s.force_end_beam_last&&void 0!==n.potentialStartBeam?a():s.end_beam&&void 0!==n.potentialStartBeam?void 0===s.rest?(n.potentialStartBeam.startBeam=!0,s.endBeam=!0,delete n.potentialStartBeam,delete n.potentialEndBeam):a():void 0===s.rest&&(void 0===n.potentialStartBeam?s.end_beam||(n.potentialStartBeam=s,delete n.potentialEndBeam):n.potentialEndBeam=s):a(),delete s.end_beam,delete s.force_end_beam_last,function(t){if(void 0!==t.pitches){var e=n.lines[n.lineNum].staff[n.staffNum].workingClef.verticalPos;r.each(t.pitches,function(t){t.verticalPos=t.pitch-e})}if(void 0!==t.gracenotes){var i=n.lines[n.lineNum].staff[n.staffNum].workingClef.verticalPos;r.each(t.gracenotes,function(t){t.verticalPos=t.pitch-i})}n.lines[n.lineNum].staff[n.staffNum].voices[n.voiceNum].push(t)}(s)},this.appendStartingElement=function(t,e,i,s){var n;this.closeLine(),\"key\"===t&&(n=s.impliedNaturals,delete s.impliedNaturals,delete s.explicitAccidentals);var a=r.clone(s);if(this.lines[this.lineNum].staff){this.lines[this.lineNum].staff.length<=this.staffNum&&(this.lines[this.lineNum].staff[this.staffNum]={},this.lines[this.lineNum].staff[this.staffNum].clef=r.clone(this.lines[this.lineNum].staff[0].clef),this.lines[this.lineNum].staff[this.staffNum].key=r.clone(this.lines[this.lineNum].staff[0].key),this.lines[this.lineNum].staff[0].meter&&(this.lines[this.lineNum].staff[this.staffNum].meter=r.clone(this.lines[this.lineNum].staff[0].meter)),this.lines[this.lineNum].staff[this.staffNum].workingClef=r.clone(this.lines[this.lineNum].staff[0].workingClef),this.lines[this.lineNum].staff[this.staffNum].voices=[[]]),\"clef\"===t&&(this.lines[this.lineNum].staff[this.staffNum].workingClef=a);for(var c=this.lines[this.lineNum].staff[this.staffNum].voices[this.voiceNum],o=0;o<c.length;o++){if(\"note\"===c[o].el_type||\"bar\"===c[o].el_type)return a.el_type=t,a.startChar=e,a.endChar=i,n&&(a.accidentals=n.concat(a.accidentals)),void c.push(a);if(c[o].el_type===t)return a.el_type=t,a.startChar=e,a.endChar=i,n&&(a.accidentals=n.concat(a.accidentals)),void(c[o]=a)}this.lines[this.lineNum].staff[this.staffNum][t]=s}},this.getNumLines=function(){return this.lines.length},this.pushLine=function(t){this.vskipPending&&(t.vskip=this.vskipPending,delete this.vskipPending),this.lines.push(t)},this.addSubtitle=function(t){this.pushLine({subtitle:t})},this.addSpacing=function(t){this.vskipPending=t},this.addNewPage=function(t){this.pushLine({newpage:t})},this.addSeparator=function(t,e,i){this.pushLine({separator:{spaceAbove:t,spaceBelow:e,lineLength:i}})},this.addText=function(t){this.pushLine({text:t})},this.addCentered=function(t){this.pushLine({text:[{text:t,center:!0}]})},this.containsNotes=function(t){for(var e=0;e<t.length;e++)if(\"note\"===t[e].el_type||\"bar\"===t[e].el_type)return!0;return!1},this.containsNotesStrict=function(t){for(var e=0;e<t.length;e++)if(\"note\"===t[e].el_type&&void 0===t[e].rest)return!0;return!1},this.changeVoiceScale=function(t){this.appendElement(\"scale\",null,null,{size:t})},this.startNewLine=function(t){var e=this;this.closeLine();var i=function(t){var i=e.lines[e.lineNum].staff[e.staffNum];if(i.voices[e.voiceNum]=[],i.title||(i.title=[]),i.title[e.voiceNum]={name:t.name,subname:t.subname},t.style&&e.appendElement(\"style\",null,null,{head:t.style}),t.stem)e.appendElement(\"stem\",null,null,{direction:t.stem});else if(e.voiceNum>0){if(void 0!==i.voices[0]){for(var r=!1,s=0;s<i.voices[0].length;s++)\"stem\"===i.voices[0].el_type&&(r=!0);r||i.voices[0].splice(0,0,{el_type:\"stem\",direction:\"up\"})}e.appendElement(\"stem\",null,null,{direction:\"down\"})}t.scale&&e.appendElement(\"scale\",null,null,{size:t.scale})},r=function(t){t.key&&t.key.impliedNaturals&&(t.key.accidentals=t.key.accidentals.concat(t.key.impliedNaturals),delete t.key.impliedNaturals),e.lines[e.lineNum].staff[e.staffNum]={voices:[],clef:t.clef,key:t.key,workingClef:t.clef},void 0!==t.stafflines&&(e.lines[e.lineNum].staff[e.staffNum].clef.stafflines=t.stafflines,e.lines[e.lineNum].staff[e.staffNum].workingClef.stafflines=t.stafflines),t.staffscale&&(e.lines[e.lineNum].staff[e.staffNum].staffscale=t.staffscale),t.tripletfont&&(e.lines[e.lineNum].staff[e.staffNum].tripletfont=t.tripletfont),t.vocalfont&&(e.lines[e.lineNum].staff[e.staffNum].vocalfont=t.vocalfont),t.bracket&&(e.lines[e.lineNum].staff[e.staffNum].bracket=t.bracket),t.brace&&(e.lines[e.lineNum].staff[e.staffNum].brace=t.brace),t.connectBarLines&&(e.lines[e.lineNum].staff[e.staffNum].connectBarLines=t.connectBarLines),t.barNumber&&(e.lines[e.lineNum].staff[e.staffNum].barNumber=t.barNumber),i(t),t.part&&e.appendElement(\"part\",t.part.startChar,t.part.endChar,{title:t.part.title}),void 0!==t.meter&&(e.lines[e.lineNum].staff[e.staffNum].meter=t.meter)};if(void 0===this.lines[this.lineNum])!function(t){e.lines[e.lineNum]={staff:[]},r(t)}(t);else if(void 0===this.lines[this.lineNum].staff)this.lineNum++,this.startNewLine(t);else if(void 0===this.lines[this.lineNum].staff[this.staffNum])r(t);else if(void 0===this.lines[this.lineNum].staff[this.staffNum].voices[this.voiceNum])i(t);else{if(!this.containsNotes(this.lines[this.lineNum].staff[this.staffNum].voices[this.voiceNum]))return;this.lineNum++,this.startNewLine(t)}},this.hasBeginMusic=function(){for(var t=0;t<this.lines.length;t++)if(this.lines[t].staff)return!0;return!1},this.isFirstLine=function(t){for(var e=t-1;e>=0;e--)if(void 0!==this.lines[e].staff)return!1;return!0},this.getMeter=function(){for(var t=0;t<this.lines.length;t++){var e=this.lines[t];if(e.staff)for(var i=0;i<e.staff.length;i++){var r=e.staff[i].meter;if(r)return r}}return{type:\"common_time\"}},this.getMeterFraction=function(){var t=this.getMeter(),e=4,i=4;return t&&(\"specified\"===t.type?(e=parseInt(t.value[0].num,10),i=parseInt(t.value[0].den,10)):\"cut_time\"===t.type?(e=2,i=2):\"common_time\"===t.type&&(e=4,i=4)),this.meter={num:e,den:i},this.meter},this.getCurrentVoice=function(){return void 0!==this.lines[this.lineNum]&&void 0!==this.lines[this.lineNum].staff[this.staffNum]&&void 0!==this.lines[this.lineNum].staff[this.staffNum].voices[this.voiceNum]?this.lines[this.lineNum].staff[this.staffNum].voices[this.voiceNum]:null},this.setCurrentVoice=function(t,e){this.staffNum=t,this.voiceNum=e;for(var i=0;i<this.lines.length;i++)if(this.lines[i].staff&&(void 0===this.lines[i].staff[t]||void 0===this.lines[i].staff[t].voices[e]||!this.containsNotes(this.lines[i].staff[t].voices[e])))return void(this.lineNum=i);this.lineNum=i},this.addMetaText=function(t,e){void 0===this.metaText[t]?this.metaText[t]=e:this.metaText[t]+=\"\\n\"+e},this.addMetaTextArray=function(t,e){void 0===this.metaText[t]?this.metaText[t]=[e]:this.metaText[t].push(e)},this.addMetaTextObj=function(t,e){this.metaText[t]=e},this.addElementToEvents=function(t,e,i,r,s,n,a,c,o,h){if(e.hint)return{isTiedState:void 0,duration:0};var l=e.durationClass?e.durationClass:e.duration;if(e.abcelem.rest&&\"spacer\"===e.abcelem.rest.type&&(l=0),l>0){for(var d=[],u=0;u<e.elemset.length;u++)null!==e.elemset[u]&&d.push(e.elemset[u]);var f=e.startTie;void 0!==o?(t[\"event\"+o].elements.push(d),h&&(t[\"event\"+i]||(t[\"event\"+i]={type:\"event\",milliseconds:i,line:n,measureNumber:a,top:r,height:s,left:null,width:0,elements:[],startChar:null,endChar:null,startCharArray:[],endCharArray:[]}),t[\"event\"+i].measureStart=!0,h=!1),f||(o=void 0)):(t[\"event\"+i]?(t[\"event\"+i].left?t[\"event\"+i].left=Math.min(t[\"event\"+i].left,e.x):t[\"event\"+i].left=e.x,t[\"event\"+i].elements.push(d),t[\"event\"+i].startCharArray.push(e.abcelem.startChar),t[\"event\"+i].endCharArray.push(e.abcelem.endChar),null===t[\"event\"+i].startChar&&(t[\"event\"+i].startChar=e.abcelem.startChar),null===t[\"event\"+i].endChar&&(t[\"event\"+i].endChar=e.abcelem.endChar)):t[\"event\"+i]={type:\"event\",milliseconds:i,line:n,measureNumber:a,top:r,height:s,left:e.x,width:e.w,elements:[d],startChar:e.abcelem.startChar,endChar:e.abcelem.endChar,startCharArray:[e.abcelem.startChar],endCharArray:[e.abcelem.endChar]},h&&(t[\"event\"+i].measureStart=!0,h=!1),f&&(o=i))}return{isTiedState:o,duration:l/c,nextIsBar:h||\"bar\"===e.type}},this.makeVoicesArray=function(){for(var t=[],e=0;e<this.engraver.staffgroups.length;e++)for(var i=this.engraver.staffgroups[e],r=i.staffs[0],s=r.absoluteY,a=s-r.top*n.STEP,c=i.staffs[i.staffs.length-1],o=(s=c.absoluteY)-c.bottom*n.STEP-a,h=i.voices,l=0;l<h.length;l++){var d=0,u=!1;t[l]||(t[l]=[]);for(var f=h[l].children,p=0;p<f.length;p++)t[l].push({top:a,height:o,line:e,measureNumber:d,elem:f[p]}),\"bar\"===f[p].type&&u&&d++,\"note\"===f[p].type&&(u=!0)}return t},this.setupEvents=function(t,e){for(var i,r=[],s={},n=t,a=!0,c=this.makeVoicesArray(),o=0;o<c.length;o++)for(var h=n,l=Math.round(1e3*h),d=0,u=-1,f=c[o],p=0;p<f.length;p++){var m=f[p].elem;if(\"tempo\"===m.abcelem.el_type){var g=this.getBpm(m.abcelem);e=this.getBeatLength()*(g/60)}var v=this.addElementToEvents(s,m,l,f[p].top,f[p].height,f[p].line,f[p].measureNumber,e,i,a);if(i=v.isTiedState,a=v.nextIsBar,h+=v.duration,l=Math.round(1e3*h),\"bar\"===m.type){var b=m.abcelem.type,y=\"bar_right_repeat\"===b||\"bar_dbl_repeat\"===b,w=\"1\"===m.abcelem.startEnding,x=\"bar_left_repeat\"===b||\"bar_dbl_repeat\"===b||\"bar_right_repeat\"===b;if(y){-1===u&&(u=p);for(var k=d;k<u;k++){var A=f[k].elem;i=(v=this.addElementToEvents(s,A,l,f[k].top,f[k].height,f[k].line,f[k].measureNumber,e,i,a)).isTiedState,a=v.nextIsBar,h+=v.duration,l=Math.round(1e3*h)}a=!0,u=-1}w&&(u=p),x&&(d=p)}}return function(t){for(var e,i,r,s,n=t.length-1;n>=0;n--){var a=t[n];\"bar\"===a.type?(a.top=r,a.nextTop=e,e=r,a.bottom=s,a.nextBottom=i,i=s):\"event\"===a.type&&(r=a.top,s=a.top+a.height)}}(r=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e=e.sort(function(t,e){var i=t.milliseconds-e.milliseconds;return 0!==i?i:\"bar\"===t.type?-1:1})}(s)),r.push({type:\"end\",milliseconds:l}),r},this.getBpm=function(t){var e;if(t){e=t.bpm;var i=this.getBeatLength();e=e*(t.duration&&t.duration.length>0?t.duration[0]:i)/i}if(!e){e=180;var r=this.getMeterFraction();r&&8===r.den&&(e=120)}return e},this.setTiming=function(t,e){if(!t){var i=this.metaText?this.metaText.tempo:null;t=this.getBpm(i)}var r=this.getBeatLength(),s=t/60,n=this.getBarLength()/r*e/s;n&&(n-=this.getPickupLength()/r/s);var a=r*s;this.noteTimings=this.setupEvents(n,a)}}},function(t,e,i){\"use strict\";var r=i(6),s=i(13),n=i(7),a=i(12),c={};function o(){var t=window.innerWidth;for(var e in c)if(c.hasOwnProperty(e)){var i=c[e];t-=2*i.offsetLeft,i.style.width=t+\"px\"}}function h(t,e,i,r){i.viewportHorizontal?(t.innerHTML='<div class=\"abcjs-inner\"></div>',i.scrollHorizontal?(t.style.overflowX=\"auto\",t.style.overflowY=\"hidden\"):t.style.overflow=\"hidden\",c[t.id]=t,t=t.children[0]):i.viewportVertical?(t.innerHTML='<div class=\"abcjs-inner scroll-amount\"></div>',t.style.overflowX=\"hidden\",t.style.overflowY=\"auto\",t=t.children[0]):t.innerHTML=\"\";var n=new s(t,i);(n.engraveABC(e,r),e.engraver=n,i.viewportVertical||i.viewportHorizontal)&&(t.parentNode.style.width=t.style.width)}function l(t,e,i,r){function s(t){return{formatting:t.formatting,media:t.media,version:t.version,metaText:{},lines:[]}}for(var n,a=[],c=0;c<e.lines.length;c++){var o=e.lines[c];n||(n=s(e)),0===c&&(n.metaText.tempo=e.metaText.tempo,n.metaText.title=e.metaText.title,n.metaText.header=e.metaText.header,n.metaText.rhythm=e.metaText.rhythm,n.metaText.origin=e.metaText.origin,n.metaText.composer=e.metaText.composer,n.metaText.author=e.metaText.author,n.metaText.partOrder=e.metaText.partOrder),n.lines.push(o),o.staff&&(a.push(n),n=void 0)}if(n)for(var l=a[a.length-1],d=0;d<n.lines.length;d++)l.lines.push(n.lines[d]);(n=a[a.length-1]).metaText.unalignedWords=e.metaText.unalignedWords,n.metaText.book=e.metaText.book,n.metaText.source=e.metaText.source,n.metaText.discography=e.metaText.discography,n.metaText.notes=e.metaText.notes,n.metaText.transcription=e.metaText.transcription,n.metaText.history=e.metaText.history,n.metaText[\"abc-copyright\"]=e.metaText[\"abc-copyright\"],n.metaText[\"abc-creator\"]=e.metaText[\"abc-creator\"],n.metaText[\"abc-edited-by\"]=e.metaText[\"abc-edited-by\"],n.metaText.footer=e.metaText.footer;var u={};for(var f in i)i.hasOwnProperty(f)&&(u[f]=i[f]);var p=u.paddingtop,m=u.paddingbottom;t.innerHTML=\"\";for(var g=0;g<a.length;g++){var v=document.createElement(\"div\");t.appendChild(v),0===g?(u.paddingtop=p,u.paddingbottom=-20):g===a.length-1?(u.paddingtop=10,u.paddingbottom=m):(u.paddingtop=10,u.paddingbottom=-20),h(v,a[g],u,r)}}window.addEventListener(\"resize\",o),window.addEventListener(\"orientationChange\",o);t.exports=function(t,e,i,c,o){var d,u={};if(i)for(d in i)i.hasOwnProperty(d)&&(u[d]=i[d]);if(c)for(d in c)c.hasOwnProperty(d)&&(\"listener\"===d?c[d].highlight&&(u.clickListener=c[d].highlight):u[d]=c[d]);if(o)for(d in o)o.hasOwnProperty(d)&&(u[d]=o[d]);return r.renderEngine(function(t,e,i,r){return u.wrap&&u.staffwidth?e=function(t,e,i,r,c){var o=new s(t,c),d=o.getMeasureWidths(e),u=a.calcLineWraps(e,d,r,c,n,o);return!c.oneSvgPerLine||u.tune.lines.length<2?h(t,u.tune,u.revisedParams,i):l(t,u.tune,u.revisedParams,i),u.tune.explanation=u.explanation,u.tune}(t,e,i,r,u):(!u.oneSvgPerLine||e.lines.length<2?h(t,e,u,i):l(t,e,u,i),null)},t,e,u)}},function(t,e,i){\"use strict\";var r,s=i(4),n=i(24),a=i(25),c=i(26),o=i(27),h=i(28),l=i(29),d=i(32),u=i(3),f=i(2),p=i(1),m=i(33),g=i(34),v=i(14),b=i(35),y=i(36),w=i(0);!function(){var t=!1,e={rest:{0:\"rests.whole\",1:\"rests.half\",2:\"rests.quarter\",3:\"rests.8th\",4:\"rests.16th\",5:\"rests.32nd\",6:\"rests.64th\",7:\"rests.128th\",multi:\"rests.multimeasure\"},note:{\"-1\":\"noteheads.dbl\",0:\"noteheads.whole\",1:\"noteheads.half\",2:\"noteheads.quarter\",3:\"noteheads.quarter\",4:\"noteheads.quarter\",5:\"noteheads.quarter\",6:\"noteheads.quarter\",7:\"noteheads.quarter\",nostem:\"noteheads.quarter\"},rhythm:{\"-1\":\"noteheads.slash.whole\",0:\"noteheads.slash.whole\",1:\"noteheads.slash.whole\",2:\"noteheads.slash.quarter\",3:\"noteheads.slash.quarter\",4:\"noteheads.slash.quarter\",5:\"noteheads.slash.quarter\",6:\"noteheads.slash.quarter\",7:\"noteheads.slash.quarter\",nostem:\"noteheads.slash.nostem\"},x:{\"-1\":\"noteheads.indeterminate\",0:\"noteheads.indeterminate\",1:\"noteheads.indeterminate\",2:\"noteheads.indeterminate\",3:\"noteheads.indeterminate\",4:\"noteheads.indeterminate\",5:\"noteheads.indeterminate\",6:\"noteheads.indeterminate\",7:\"noteheads.indeterminate\",nostem:\"noteheads.indeterminate\"},harmonic:{\"-1\":\"noteheads.harmonic.quarter\",0:\"noteheads.harmonic.quarter\",1:\"noteheads.harmonic.quarter\",2:\"noteheads.harmonic.quarter\",3:\"noteheads.harmonic.quarter\",4:\"noteheads.harmonic.quarter\",5:\"noteheads.harmonic.quarter\",6:\"noteheads.harmonic.quarter\",7:\"noteheads.harmonic.quarter\",nostem:\"noteheads.harmonic.quarter\"},uflags:{3:\"flags.u8th\",4:\"flags.u16th\",5:\"flags.u32nd\",6:\"flags.u64th\"},dflags:{3:\"flags.d8th\",4:\"flags.d16th\",5:\"flags.d32nd\",6:\"flags.d64th\"}};function i(t,e){var i=t[e];if(\"note\"!==i.el_type||!i.startBeam||i.endBeam)return{count:1,elem:i};for(var r=[];e<t.length&&\"note\"===t[e].el_type&&(r.push(t[e]),!t[e].endBeam);)e++;return{count:r.length,elem:r}}function x(t){if(t.pitches){k(t);for(var e=0,i=0;i<t.pitches.length;i++)e+=t.pitches[i].verticalPos;t.averagepitch=e/t.pitches.length,t.minpitch=t.pitches[0].verticalPos,t.maxpitch=t.pitches[t.pitches.length-1].verticalPos}}(r=function(t,e,i){this.decoration=new l,this.renderer=t,this.tuneNumber=e,this.isBagpipes=i.bagpipes,this.flatBeams=i.flatbeams,this.reset()}).prototype.reset=function(){this.slurs={},this.ties=[],this.voiceScale=1,this.slursbyvoice={},this.tiesbyvoice={},this.endingsbyvoice={},this.scaleByVoice={},this.tripletmultiplier=1,this.abcline=void 0,this.accidentalSlot=void 0,this.accidentalshiftx=void 0,this.dotshiftx=void 0,this.hasVocals=!1,this.minY=void 0,this.partstartelem=void 0,this.startlimitelem=void 0,this.stemdir=void 0},r.prototype.setStemHeight=function(t){this.stemHeight=t/p.STEP},r.prototype.getCurrentVoiceId=function(t,e){return\"s\"+t+\"v\"+e},r.prototype.pushCrossLineElems=function(t,e){this.slursbyvoice[this.getCurrentVoiceId(t,e)]=this.slurs,this.tiesbyvoice[this.getCurrentVoiceId(t,e)]=this.ties,this.endingsbyvoice[this.getCurrentVoiceId(t,e)]=this.partstartelem,this.scaleByVoice[this.getCurrentVoiceId(t,e)]=this.voiceScale},r.prototype.popCrossLineElems=function(t,e){this.slurs=this.slursbyvoice[this.getCurrentVoiceId(t,e)]||{},this.ties=this.tiesbyvoice[this.getCurrentVoiceId(t,e)]||[],this.partstartelem=this.endingsbyvoice[this.getCurrentVoiceId(t,e)],this.voiceScale=this.scaleByVoice[this.getCurrentVoiceId(t,e)],void 0===this.voiceScale&&(this.voiceScale=1)},r.prototype.containsLyrics=function(t){for(var e=0;e<t.length;e++)for(var i=0;i<t[e].voices.length;i++)for(var r=0;r<t[e].voices[i].length;r++){var s=t[e].voices[i][r];if(s.lyric)return void(s.positioning&&\"below\"!==s.positioning.vocalPosition||(this.hasVocals=!0))}},r.prototype.createABCLine=function(e,i){this.minY=2,this.containsLyrics(e);var r=new m;this.tempoSet=!1;for(var s=0;s<e.length;s++)t&&this.restoreState(),t=!1,this.createABCStaff(r,e[s],i,s);return r},r.prototype.createABCStaff=function(t,e,i,r){for(var s=0;s<e.voices.length;s++){var n=new y(s,e.voices.length);0===s?(n.barfrom=\"start\"===e.connectBarLines||\"continue\"===e.connectBarLines,n.barto=\"continue\"===e.connectBarLines||\"end\"===e.connectBarLines):n.duplicate=!0,e.title&&e.title[s]&&(n.header=e.title[s]);var l=c(e.clef,this.tuneNumber);l&&(0===s&&e.barNumber&&this.addMeasureNumber(e.barNumber,l),n.addChild(l));var d=o(e.key,this.tuneNumber);if(d&&(n.addChild(d),this.startlimitelem=d),e.meter){var u=h(e.meter,this.tuneNumber);n.addChild(u),this.startlimitelem=u}n.duplicate&&(n.children=[]);var f=e.clef.stafflines||0===e.clef.stafflines?e.clef.stafflines:5;t.addVoice(n,r,f);var p=1===f;this.createABCVoice(e.voices[s],i,r,s,p,n),t.setStaffLimits(n),\"start\"===e.brace?t.brace=new a(1,!0):\"end\"===e.brace&&t.brace?t.brace.increaseStavesIncluded():\"continue\"===e.brace&&t.brace&&t.brace.increaseStavesIncluded()}},r.prototype.createABCVoice=function(e,r,s,n,a,c){for(var o in this.popCrossLineElems(s,n),this.stemdir=this.isBagpipes?\"down\":null,this.abcline=e,this.partstartelem&&(this.partstartelem=new d(\"\",null,null),c.addOther(this.partstartelem)),this.slurs)this.slurs.hasOwnProperty(o)&&(this.slurs[o]=new v(null,null,this.slurs[o].above,this.slurs[o].force,!1),t&&this.slurs[o].setHint(),c.addOther(this.slurs[o]));for(var h=0;h<this.ties.length;h++)this.ties[h]=new v(null,null,this.ties[h].above,this.ties[h].force,!0),t&&this.ties[h].setHint(),c.addOther(this.ties[h]);for(var l=0;l<this.abcline.length;l++)x(this.abcline[l]),this.minY=Math.min(this.abcline[l].minpitch,this.minY);for(var u=0===s,f=0;f<this.abcline.length;){var p=i(this.abcline,f),m=this.createABCElement(u,a,c,p.elem);if(m)for(h=0;h<m.length;h++)this.tempoSet||!r||r.suppress||(this.tempoSet=!0,m[h].addChild(new g(r,this.tuneNumber,S))),c.addChild(m[h]);f+=p.count}this.pushCrossLineElems(s,n)},r.prototype.saveState=function(){this.tiesSave=w.cloneArray(this.ties),this.slursSave=w.cloneHashOfHash(this.slurs),this.slursbyvoiceSave=w.cloneHashOfHash(this.slursbyvoice),this.tiesbyvoiceSave=w.cloneHashOfArrayOfHash(this.tiesbyvoice)},r.prototype.restoreState=function(){this.ties=w.cloneArray(this.tiesSave),this.slurs=w.cloneHashOfHash(this.slursSave),this.slursbyvoice=w.cloneHashOfHash(this.slursbyvoiceSave),this.tiesbyvoice=w.cloneHashOfArrayOfHash(this.tiesbyvoiceSave)},r.prototype.createABCElement=function(e,i,r,n){var a=[];switch(n.el_type){case void 0:a=this.createBeam(i,r,n);break;case\"note\":a[0]=this.createNote(n,!1,i,r),this.triplet&&this.triplet.isClosed()&&(r.addOther(this.triplet),this.triplet=null,this.tripletmultiplier=1);break;case\"bar\":a[0]=this.createBarLine(r,n,e),r.duplicate&&a.length>0&&(a[0].invisible=!0);break;case\"meter\":a[0]=h(n,this.tuneNumber),this.startlimitelem=a[0],r.duplicate&&a.length>0&&(a[0].invisible=!0);break;case\"clef\":if(a[0]=c(n,this.tuneNumber),!a[0])return null;r.duplicate&&a.length>0&&(a[0].invisible=!0);break;case\"key\":var l=o(n,this.tuneNumber);l&&(a[0]=l,this.startlimitelem=a[0]),r.duplicate&&a.length>0&&(a[0].invisible=!0);break;case\"stem\":this.stemdir=n.direction;break;case\"part\":var d=new s(n,0,0,\"part\",this.tuneNumber),u=this.renderer.getTextSize(n.title,\"partsfont\",\"part\");d.addChild(new f(n.title,0,0,void 0,{type:\"part\",height:u.height/p.STEP})),a[0]=d;break;case\"tempo\":var m=new s(n,0,0,\"tempo\",this.tuneNumber);m.addChild(new g(n,this.tuneNumber,S)),a[0]=m;break;case\"style\":\"normal\"===n.head?delete this.style:this.style=n.head;break;case\"hint\":t=!0,this.saveState();break;case\"midi\":break;case\"scale\":this.voiceScale=n.size;break;default:var v=new s(n,0,0,\"unsupported\",this.tuneNumber);v.addChild(new f(\"element type \"+n.el_type,0,0,void 0,{type:\"debug\"})),a[0]=v}return a},r.prototype.calcBeamDir=function(t,e,i){if(this.stemdir)return this.stemdir;for(var r=new n(this.stemHeight*this.voiceScale,this.stemdir,this.flatBeams),s=0;s<i.length;s++)r.add({abcelem:i[s]});return r.calcDir()?\"up\":\"down\"},r.prototype.createBeam=function(e,i,r){var s=[],a=this.calcBeamDir(e,i,r),c=new n(this.stemHeight*this.voiceScale,a,this.flatBeams);t&&c.setHint();var o=this.stemdir;this.stemdir=a;for(var h=0;h<r.length;h++){var l=r[h],d=this.createNote(l,!0,e,i);s.push(d),c.add(d),this.triplet&&this.triplet.isClosed()&&(i.addOther(this.triplet),this.triplet=null,this.tripletmultiplier=1)}return this.stemdir=o,i.addBeam(c),s};var k=function(t){var e;do{e=!0;for(var i=0;i<t.pitches.length-1;i++)if(t.pitches[i].pitch>t.pitches[i+1].pitch){e=!1;var r=t.pitches[i];t.pitches[i]=t.pitches[i+1],t.pitches[i+1]=r}}while(!e)},A=function(t,e,i,r,s,n,a,c,o){for(var h=i;h>11;h--)h%2!=0||r||t.addChild(new f(null,c,(s+4)*o,h,{type:\"ledger\"}));for(h=e;h<1;h++)h%2!=0||r||t.addChild(new f(null,c,(s+4)*o,h,{type:\"ledger\"}));for(h=0;h<n.length;h++){var l=s;\"down\"===a&&(l=-l),t.addChild(new f(null,l+c,(s+4)*o,n[h],{type:\"ledger\"}))}};function T(t,e){for(var i=0;i<t.length;i++)if(JSON.stringify(t[i])===JSON.stringify(e))return;t.push(e)}r.prototype.addGraceNotes=function(i,r,s,a,c,o,h){var l,d=null;i.gracenotes.length>1&&(d=new n(.7*c,\"grace\",o),t&&d.setHint(),d.mainNote=s);var p,m=[];for(p=i.gracenotes.length-1;p>=0;p--)h+=10,m[p]=h,i.gracenotes[p].accidental&&(h+=7);for(p=0;p<i.gracenotes.length;p++){var g=i.gracenotes[p].verticalPos;l=d?null:e.uflags[o?5:3];var b=S(s,\"noteheads.quarter\",i.gracenotes[p],\"up\",-m[p],-m[p],l,0,0,.6*this.voiceScale,[]).notehead;if(this.addSlursAndTies(s,i.gracenotes[p],b,r,\"up\"),s.addExtra(b),i.gracenotes[p].acciaccatura){var y=i.gracenotes[p].verticalPos+4.2,w=d?5:6;s.addRight(new f(\"flags.ugrace\",-m[p]+w,0,y,{scalex:.6,scaley:.6}))}if(d){var x=i.gracenotes[p].duration/2;o&&(x/=2);var k={heads:[b],abcelem:{averagepitch:g,minpitch:g,maxpitch:g,duration:x}};d.add(k)}else{var T=g+1/3*.6,N=g+4.2,C=b.dx+b.w;s.addExtra(new f(null,C,0,T,{type:\"stem\",pitch2:N,linewidth:-.6}))}if(A(s,g,g,!1,u.getSymbolWidth(\"noteheads.quarter\"),[],!0,b.dx-1,.6),0===p&&!o&&(!i.rest||\"spacer\"!==i.rest.type&&\"invisible\"!==i.rest.type)){var _=1===i.gracenotes.length&&b.pitch===a.pitch;r.addOther(new v(b,a,!1,!0,_))}}return d&&r.addBeam(d),h},r.prototype.addNoteToAbcElement=function(t,i,r,s,n,a,c,o,h){var l,d,p,m,g,v=0,b=0,y=0,w=[],x=[],k=0,A=i.averagepitch>=6?\"down\":\"up\";for(s&&(A=s),(n=i.style?i.style:n)&&\"normal\"!==n||(n=\"note\"),(m=a?e[n].nostem:e[n][-c])||console.log(\"noteSymbol:\",n,c,a),g=\"down\"===A?i.pitches.length-2:1;\"down\"===A?g>=0:g<i.pitches.length;g=\"down\"===A?g-1:g+1){var N=i.pitches[\"down\"===A?g+1:g-1],C=i.pitches[g],_=\"down\"===A?N.pitch-C.pitch:C.pitch-N.pitch;_<=1&&!N.printer_shift&&(C.printer_shift=_?\"different\":\"same\",(C.verticalPos>11||C.verticalPos<1)&&w.push(C.verticalPos-C.verticalPos%2),\"down\"===A?b=u.getSymbolWidth(m)+2:v=u.getSymbolWidth(m)+2)}var E=i.pitches.length;for(g=0;g<i.pitches.length;g++){var M,B;if(!o)M=\"down\"===A&&0!==g||\"up\"===A&&g!==E-1?null:e[\"down\"===A?\"dflags\":\"uflags\"][-c];if(B=i.pitches[g].style?e[i.pitches[g].style][-c]:m,i.pitches[g].highestVert=i.pitches[g].verticalPos,(\"up\"===s||\"up\"===A)&&0===g||(\"down\"===s||\"down\"===A)&&g===E-1){if((i.startSlur||1===E)&&(i.pitches[g].highestVert=i.pitches[E-1].verticalPos,\"up\"!==s&&\"up\"!==A||(i.pitches[g].highestVert+=6)),i.startSlur)for(i.pitches[g].startSlur||(i.pitches[g].startSlur=[]),p=0;p<i.startSlur.length;p++)T(i.pitches[g].startSlur,i.startSlur[p]);if(i.endSlur)for(i.pitches[g].highestVert=i.pitches[E-1].verticalPos,\"up\"!==s&&\"up\"!==A||(i.pitches[g].highestVert+=6),i.pitches[g].endSlur||(i.pitches[g].endSlur=[]),p=0;p<i.endSlur.length;p++)T(i.pitches[g].endSlur,i.endSlur[p])}var P=!o&&c<=-1,L=S(t,B,i.pitches[g],P?A:null,0,-b,M,r,v,this.voiceScale,x);k=Math.max(u.getSymbolWidth(B),k),t.extraw-=L.extraLeft,(l=L.notehead)&&(this.addSlursAndTies(t,i.pitches[g],l,h,P?A:null),i.gracenotes&&i.gracenotes.length>0&&(l.bottom=l.bottom-1),t.addHead(l)),b+=L.accidentalshiftx,y=Math.max(y,L.dotshiftx)}if(P){var H=7*this.voiceScale,z=\"down\"===A?i.minpitch-H:i.minpitch+1/3;z>6&&!s&&(z=6);var I=\"down\"===A?i.maxpitch-1/3:i.maxpitch+H;I<6&&!s&&(I=6);var O=\"down\"===A||0===t.heads.length?0:t.heads[0].w,D=\"down\"===A?1:-1;\"noteheads.slash.quarter\"===l.c&&(\"down\"===A?I-=1:z+=1),t.addExtra(new f(null,O,0,z,{type:\"stem\",pitch2:I,linewidth:D})),d=Math.min(z,I)}return{noteHead:l,roomTaken:b,roomTakenRight:y,min:d,additionalLedgers:w,dir:A,symbolWidth:k}},r.prototype.addLyric=function(t,e){var i=\"\";w.each(e.lyric,function(t){var e=\" \"===t.divider?\"\":t.divider;i+=t.syllable+e+\"\\n\"});var r=this.renderer.getTextSize(i,\"vocalfont\",\"lyric\"),s=e.positioning?e.positioning.vocalPosition:\"below\";t.addCentered(new f(i,0,r.width,void 0,{type:\"lyric\",position:s,height:r.height/p.STEP}))},r.prototype.addChord=function(t,e,i,r){for(var s=0;s<e.chord.length;s++){var n,a=0,c=this.renderer.getTextSize(e.chord[s].name,\"annotationfont\",\"annotation\"),o=c.width,h=c.height/p.STEP;switch(e.chord[s].position){case\"left\":a=-(i+=o+7),n=e.averagepitch,t.addExtra(new f(e.chord[s].name,a,o+4,n,{type:\"text\",height:h}));break;case\"right\":a=r+=4,n=e.averagepitch,t.addRight(new f(e.chord[s].name,a,o+4,n,{type:\"text\",height:h}));break;case\"below\":t.addRight(new f(e.chord[s].name,0,o+8,void 0,{type:\"text\",position:\"below\",height:h}));break;case\"above\":t.addRight(new f(e.chord[s].name,0,o+8,void 0,{type:\"text\",height:h}));break;default:if(e.chord[s].rel_position){var l=e.chord[s].rel_position.y+3*p.STEP;t.addChild(new f(e.chord[s].name,a+e.chord[s].rel_position.x,0,e.minpitch+l/p.STEP,{type:\"text\",height:h}))}else{var d=\"above\";e.positioning&&e.positioning.chordPosition&&(d=e.positioning.chordPosition),h=(c=this.renderer.getTextSize(e.chord[s].name,\"gchordfont\",\"chord\")).height/p.STEP,o=c.width,t.addCentered(new f(e.chord[s].name,a,o,void 0,{type:\"chord\",position:d,height:h}))}}}return{roomTaken:i,roomTakenRight:r}},r.prototype.createNote=function(i,r,n,a){var c,o=null,h=0,l=0,d=0,p=[],m=function(t){var e=0;return t.duration&&(e=t.duration),e}(i),g=!1;0===m&&(g=!0,m=.25,r=!0);for(var v=Math.floor(Math.log(m)/Math.log(2)),y=0,w=Math.pow(2,v),x=w/2;w<m;y++,w+=x,x/=2);i.startTriplet&&(this.tripletmultiplier=i.tripletMultiplier);var k=m*this.tripletmultiplier;i.rest&&\"multimeasure\"===i.rest.type&&(k=1);var T=i.rest?\"rest\":\"note\",N=new s(i,k,1,T,this.tuneNumber,{durationClassOveride:i.duration*this.tripletmultiplier});if(t&&N.setHint(),i.rest){var C=function(t,i,r,s,n,a,c,o,h){var l,d,p,m,g=7;switch(n&&(\"down\"===a&&(g=3),\"up\"===a&&(g=11)),c&&(g=r<.5?7:r<1?7:5),i.rest.type){case\"whole\":l=e.rest[0],i.averagepitch=g,i.minpitch=g,i.maxpitch=g,s=0;break;case\"rest\":l=\"rhythm\"===i.style?e.rhythm[-o]:e.rest[-o],i.averagepitch=g,i.minpitch=g,i.maxpitch=g;break;case\"invisible\":case\"spacer\":l=\"\",i.averagepitch=g,i.minpitch=g,i.maxpitch=g;break;case\"multimeasure\":l=e.rest.multi,i.averagepitch=g,i.minpitch=g,i.maxpitch=g,s=0;var v=u.getSymbolWidth(l);t.addHead(new f(l,-v,2*v,7));var b=new f(\"\"+i.duration,0,v,16,{type:\"multimeasure-text\"});t.addExtra(b)}if(\"multimeasure\"!==i.rest.type){var y=S(t,l,{verticalPos:g},null,0,0,null,s,0,h,[]);(d=y.notehead)&&(t.addHead(d),p=y.accidentalshiftx,m=y.dotshiftx)}return{noteHead:d,roomTaken:p,roomTakenRight:m}}(N,i,m,y,a.voicetotal>1,this.stemdir,n,v,this.voiceScale);o=C.noteHead,h=C.roomTaken,l=C.roomTakenRight}else{var _=this.addNoteToAbcElement(N,i,y,this.stemdir,this.style,g,v,r,a);void 0!==_.min&&(this.minY=Math.min(_.min,this.minY)),o=_.noteHead,h=_.roomTaken,l=_.roomTakenRight,p=_.additionalLedgers,c=_.dir,d=_.symbolWidth}if(void 0!==i.lyric&&this.addLyric(N,i),void 0!==i.gracenotes&&(h+=this.addGraceNotes(i,a,N,o,this.stemHeight*this.voiceScale,this.isBagpipes,h)),i.decoration&&this.decoration.createDecoration(a,i.decoration,N.top,o?o.w:0,N,h,c,N.bottom,i.positioning,this.hasVocals),i.barNumber&&N.addChild(new f(i.barNumber,-10,0,0,{type:\"barNumber\"})),A(N,i.minpitch,i.maxpitch,i.rest,d,p,c,-2,1),void 0!==i.chord){var E=this.addChord(N,i,h,l);h=E.roomTaken,l=E.roomTakenRight}return i.startTriplet&&(this.triplet=new b(i.startTriplet,o,{flatBeams:this.flatBeams})),i.endTriplet&&this.triplet&&this.triplet.setCloseAnchor(o),!this.triplet||i.startTriplet||i.endTriplet||this.triplet.middleNote(o),N};var S=function(t,e,i,r,s,n,a,c,o,h,l){var d,p=i.verticalPos,m=0,g=0,v=0;if(void 0===e)t.addChild(new f(\"pitch is undefined\",0,0,0,{type:\"debug\"}));else if(\"\"===e)d=new f(null,0,0,p);else{var b=s;if(i.printer_shift){var y=\"same\"===i.printer_shift?1:0;b=\"down\"===r?-u.getSymbolWidth(e)*h+y:u.getSymbolWidth(e)*h-y}var w={scalex:h,scaley:h,thickness:u.symbolHeightInPitches(e)*h};if(d=new f(e,b,u.getSymbolWidth(e)*h,p,w),a){var x=p+(\"down\"===r?-7:7)*h,k=\"down\"===r?s:s+d.w-.6;t.addRight(new f(a,k,u.getSymbolWidth(a)*h,x,{scalex:h,scaley:h}))}for(g=d.w+o-2+5*c;c>0;c--){var A=1-Math.abs(p)%2;t.addRight(new f(\"dots.dot\",d.w+o-2+5*c,u.getSymbolWidth(\"dots.dot\"),p+A))}}if(d&&(d.highestVert=i.highestVert),i.accidental){var T;switch(i.accidental){case\"quartersharp\":T=\"accidentals.halfsharp\";break;case\"dblsharp\":T=\"accidentals.dblsharp\";break;case\"sharp\":T=\"accidentals.sharp\";break;case\"quarterflat\":T=\"accidentals.halfflat\";break;case\"flat\":T=\"accidentals.flat\";break;case\"dblflat\":T=\"accidentals.dblflat\";break;case\"natural\":T=\"accidentals.nat\"}for(var S=!1,N=n,C=0;C<l.length;C++)if(p-l[C][0]>=6){l[C][0]=p,N=l[C][1],S=!0;break}!1===S&&(N-=u.getSymbolWidth(T)*h+2,l.push([p,N]),m=u.getSymbolWidth(T)*h+2),t.addExtra(new f(T,N,u.getSymbolWidth(T),p,{scalex:h,scaley:h})),v=u.getSymbolWidth(T)/2}return{notehead:d,accidentalshiftx:m,dotshiftx:g,extraLeft:v}};r.prototype.addSlursAndTies=function(e,i,r,s,n){if(i.endTie&&this.ties[0]&&(this.ties[0].setEndAnchor(r),this.ties=this.ties.slice(1,this.ties.length)),i.startTie){var a=new v(r,null,(\"down\"===this.stemdir||\"down\"===n)&&\"up\"!==this.stemdir,\"down\"===this.stemdir||\"up\"===this.stemdir,!0);t&&a.setHint(),this.ties[this.ties.length]=a,s.addOther(a),e.startTie=!0}if(i.endSlur)for(var c=0;c<i.endSlur.length;c++){var o=i.endSlur[c];this.slurs[o]?((h=this.slurs[o]).setEndAnchor(r),delete this.slurs[o]):(h=new v(null,r,\"down\"===n,(\"up\"===this.stemdir||\"down\"===n)&&\"down\"!==this.stemdir,!1),t&&h.setHint(),s.addOther(h)),this.startlimitelem&&h.setStartX(this.startlimitelem)}if(i.startSlur)for(c=0;c<i.startSlur.length;c++){o=i.startSlur[c].label;var h=new v(r,null,(\"down\"===this.stemdir||\"down\"===n)&&\"up\"!==this.stemdir,!1,!1);t&&h.setHint(),this.slurs[o]=h,s.addOther(h)}},r.prototype.addMeasureNumber=function(t,e){var i=this.renderer.getTextSize(t,\"measurefont\",\"bar-number\");e.addChild(new f(t,0,0,11+i.height/p.STEP,{type:\"barNumber\"}))},r.prototype.createBarLine=function(t,e,i){var r=new s(e,0,10,\"bar\",this.tuneNumber),n=null,a=0;e.barNumber&&this.addMeasureNumber(e.barNumber,r);var c=\"bar_right_repeat\"===e.type||\"bar_dbl_repeat\"===e.type,o=\"bar_left_repeat\"!==e.type&&\"bar_thick_thin\"!==e.type&&\"bar_invisible\"!==e.type,h=\"bar_right_repeat\"===e.type||\"bar_dbl_repeat\"===e.type||\"bar_left_repeat\"===e.type||\"bar_thin_thick\"===e.type||\"bar_thick_thin\"===e.type,l=\"bar_left_repeat\"===e.type||\"bar_thick_thin\"===e.type||\"bar_thin_thin\"===e.type||\"bar_dbl_repeat\"===e.type,u=\"bar_left_repeat\"===e.type||\"bar_dbl_repeat\"===e.type;if(c||u){for(var p in this.slurs)this.slurs.hasOwnProperty(p)&&this.slurs[p].setEndX(r);this.startlimitelem=r}if(c&&(r.addRight(new f(\"dots.dot\",a,1,7)),r.addRight(new f(\"dots.dot\",a,1,5)),a+=6),o&&(n=new f(null,a,1,2,{type:\"bar\",pitch2:10,linewidth:.6}),r.addRight(n)),\"bar_invisible\"===e.type&&(n=new f(null,a,1,2,{type:\"none\",pitch2:10,linewidth:.6}),r.addRight(n)),e.decoration&&this.decoration.createDecoration(t,e.decoration,12,h?3:1,r,0,\"down\",2,e.positioning,this.hasVocals),h&&(n=new f(null,a+=4,4,2,{type:\"bar\",pitch2:10,linewidth:4}),r.addRight(n),a+=5),this.partstartelem&&e.endEnding&&(this.partstartelem.anchor2=n,this.partstartelem=null),l&&(n=new f(null,a+=3,1,2,{type:\"bar\",pitch2:10,linewidth:.6}),r.addRight(n)),u&&(a+=3,r.addRight(new f(\"dots.dot\",a,1,7)),r.addRight(new f(\"dots.dot\",a,1,5))),e.startEnding&&i){var m=this.renderer.getTextSize(e.startEnding,\"repeatfont\",\"\").width;r.minspacing+=m+10,this.partstartelem=new d(e.startEnding,n,null),t.addOther(this.partstartelem)}return r.extraw-=5,r}}(),t.exports=r},function(t,e,i){\"use strict\";i(4);var r,s=i(2),n=i(1),a=function(t){return void 0===t?0:Math.floor(Math.log(t)/Math.log(2))};!function(){(r=function(t,e,i){this.isflat=i,this.isgrace=e&&\"grace\"===e,this.forceup=this.isgrace||e&&\"up\"===e,this.forcedown=e&&\"down\"===e,this.elems=[],this.total=0,this.allrests=!0,this.stemHeight=t,this.beams=[]}).prototype.setHint=function(){this.hint=!0},r.prototype.add=function(t){var e=t.abcelem.averagepitch;void 0!==e&&(this.allrests=this.allrests&&t.abcelem.rest,t.beam=this,this.elems.push(t),this.total+=e,(void 0===this.min||t.abcelem.minpitch<this.min)&&(this.min=t.abcelem.minpitch),(void 0===this.max||t.abcelem.maxpitch>this.max)&&(this.max=t.abcelem.maxpitch))};function t(t,e,i,r){if(!t.children)return r;for(var s=0;s<t.children.length;s++){var n=t.children[s];e&&void 0!==n.top&&\"flags.ugrace\"===n.c?r=Math.max(r,n.top-i):e||void 0===n.bottom||\"flags.ugrace\"!==n.c||(r=Math.max(r,i-n.bottom+7))}return r}function e(t,e){return e?t/e:0}function i(t,e,i,r,s){return e+(r-e)/(i-t)*(s-t)}function c(t,e,i,r,s,n,a){var c=\"beam-elem\";a&&(c+=\" abcjs-hint\");var o=\"M\"+e+\" \"+(i=t.calcY(i))+\" L\"+r+\" \"+(s=t.calcY(s))+\"L\"+r+\" \"+(s+n)+\" L\"+e+\" \"+(i+n)+\"z\";t.printPath({path:o,stroke:\"none\",fill:\"#000000\",class:t.addClasses(c)})}r.prototype.calcDir=function(){return!!this.forceup||!this.forcedown&&e(this.total,this.elems.length)<6},r.prototype.layout=function(){if(0!==this.elems.length&&!this.allrests){this.stemsUp=this.calcDir();var r=function(t,e){var i=t?n.STEP:-n.STEP;e&&(i*=.4);return i}(this.stemsUp,this.isgrace),c=this.elems[0],o=this.elems[this.elems.length-1],h=0,l=this.stemsUp?c.abcelem.maxpitch:c.abcelem.minpitch;h=t(c,this.stemsUp,l,h),h=t(o,this.stemsUp,l,h),h=Math.max(this.stemHeight,h+3);var d=function(t,i,r,s,n,a,c,o,h,l){var d=e(t,i),u=r-2,f=r-2,p=Math.round(s?Math.max(d+u,h+f):Math.min(d-u,o-f)),m=function(t,e,i,r){if(r)return 0;var s=t-e,n=i/2;s>n&&(s=n);s<-n&&(s=-n);return s}(n,a,i,c),g=p+Math.floor(m/2),v=p+Math.floor(-m/2);l||(s&&p<6?(g=6,v=6):!s&&p>6&&(g=6,v=6));return[g,v]}(this.total,this.elems.length,h,this.stemsUp,c.abcelem.averagepitch,o.abcelem.averagepitch,this.isflat,this.min,this.max,this.isgrace),u=function(t,e,i){var r=e.heads[t?0:e.heads.length-1],s=i.heads[t?0:i.heads.length-1],n=r.x;t&&(n+=r.w-.6);var a=s.x;t&&(a+=s.w);return[n,a]}(this.stemsUp,c,o);this.beams.push({startX:u[0],endX:u[1],startY:d[0],endY:d[1],dy:r});for(var f=function(t,e,r,s,n){for(var c=[],o=[],h=0;h<t.length;h++){var l=t[h];if(!l.abcelem.rest){var d=l.heads[e?0:l.heads.length-1],u=d.x+(e?d.w:0),f=i(r.startX,r.startY,r.endX,r.endY,u),p=e?-1.5:1.5;s&&(p=2*p/3);var m=l.abcelem.duration;0===m&&(m=.25);for(var g=a(m);g<-3;g++)o[-4-g]?o[-4-g].single=!1:o[-4-g]={x:u+(e?-.6:0),y:f+p*(-4-g+1),durlog:g,single:!0};for(var v=o.length-1;v>=0;v--)if(h===t.length-1||a(t[h+1].abcelem.duration)>-v-4){var b=u,y=f+p*(v+1);o[v].single&&(b=0===h?u+5:u-5,y=i(r.startX,r.startY,r.endX,r.endY,b)+p*(v+1)),c.push({startX:o[v].x,endX:b,startY:o[v].y,endY:y,dy:n}),o=o.slice(0,v)}}}return c}(this.elems,this.stemsUp,this.beams[0],this.isgrace,r),p=0;p<f.length;p++)this.beams.push(f[p]);!function(t,e,r,a,c){for(var o=0;o<t.length;o++){var h=t[o];if(!h.abcelem.rest){var l=!h.addExtra,d=l?c:h,u=h.heads[e?0:h.heads.length-1],f=u.pitch+(e?.2:-.2),p=e?u.w:0,m=u.x+p,g=i(r.startX,r.startY,r.endX,r.endY,m),v=e?-.6:.6;e||(g-=a/2/n.STEP),l&&(p+=h.heads[0].dx),\"noteheads.slash.quarter\"===u.c&&(e?f+=1:f-=1);var b=new s(null,p,0,f,{type:\"stem\",pitch2:g,linewidth:v});b.setX(d.x),d.addExtra(b)}}}(this.elems,this.stemsUp,this.beams[0],r,this.mainNote)}},r.prototype.isAbove=function(){return this.stemsUp},r.prototype.heightAtMidpoint=function(t,e){if(0===this.beams.length)return 0;var r=this.beams[0],s=t+(e-t)/2;return i(r.startX,r.startY,r.endX,r.endY,s)},r.prototype.yAtNote=function(t){var e=this.beams[0];return i(e.startX,e.startY,e.endX,e.endY,t.x)},r.prototype.xAtMidpoint=function(t,e){return t+(e-t)/2},r.prototype.draw=function(t){if(0!==this.beams.length){t.beginGroup();for(var e=0;e<this.beams.length;e++){var i=this.beams[e];c(t,i.startX,i.startY,i.endX,i.endY,i.dy,this.hint)}t.endGroup(\"beam-elem\")}}}(),t.exports=r},function(t,e,i){\"use strict\";var r=function(){this.length=1};r.prototype.increaseStavesIncluded=function(){this.length++},r.prototype.setLocation=function(t){this.x=t},r.prototype.getWidth=function(){return 10},r.prototype.layout=function(t,e,i){this.startY=e,this.endY=i},r.prototype.draw=function(t,e,i){this.layout(t,e,i),t.drawBrace(this.x,this.startY,this.endY)},t.exports=r},function(t,e,i){\"use strict\";var r,s=i(4),n=i(3),a=i(2);r=function(t,e){var i,r=0,c=new s(t,0,10,\"staff-extra\",e);switch(c.isClef=!0,t.type){case\"treble\":i=\"clefs.G\";break;case\"tenor\":case\"alto\":i=\"clefs.C\";break;case\"bass\":i=\"clefs.F\";break;case\"treble+8\":i=\"clefs.G\",r=1;break;case\"tenor+8\":i=\"clefs.C\",r=1;break;case\"bass+8\":i=\"clefs.F\",r=1;break;case\"alto+8\":i=\"clefs.C\",r=1;break;case\"treble-8\":i=\"clefs.G\",r=-1;break;case\"tenor-8\":i=\"clefs.C\",r=-1;break;case\"bass-8\":i=\"clefs.F\",r=-1;break;case\"alto-8\":i=\"clefs.C\",r=-1;break;case\"none\":return null;case\"perc\":i=\"clefs.perc\";break;default:c.addChild(new a(\"clef=\"+t.type,0,0,void 0,{type:\"debug\"}))}if(i&&(c.addRight(new a(i,5,n.getSymbolWidth(i),t.clefPos)),\"clefs.G\"===i?(c.top=13,c.bottom=-1):(c.top=10,c.bottom=2),0!==r)){var o=(n.getSymbolWidth(i)-n.getSymbolWidth(\"8\")*(2/3))/2;c.addRight(new a(\"8\",5+o,n.getSymbolWidth(\"8\")*(2/3),r>0?c.top+3:c.bottom-1,{scalex:2/3,scaley:2/3})),c.top+=2}return c},t.exports=r},function(t,e,i){\"use strict\";var r,s=i(4),n=i(3),a=i(2),c=i(0);r=function(t,e){if(!t.accidentals||0===t.accidentals.length)return null;var i=new s(t,0,10,\"staff-extra\",e);i.isKeySig=!0;var r=0;return c.each(t.accidentals,function(t){var e=\"sharp\"===t.acc?\"accidentals.sharp\":\"natural\"===t.acc?\"accidentals.nat\":\"accidentals.flat\";i.addRight(new a(e,r,n.getSymbolWidth(e),t.verticalPos,{thickness:n.symbolHeightInPitches(e)})),r+=n.getSymbolWidth(e)+2},this),i},t.exports=r},function(t,e,i){\"use strict\";var r,s=i(4),n=i(3),a=i(2);r=function(t,e){var i=new s(t,0,10,\"staff-extra\",e);if(\"specified\"===t.type)for(var r=0,c=0;c<t.value.length;c++)if(0!==c&&(i.addRight(new a(\"+\",r+1,n.getSymbolWidth(\"+\"),6,{thickness:n.symbolHeightInPitches(\"+\")})),r+=n.getSymbolWidth(\"+\")+2),t.value[c].den){for(var o=0,h=0;h<t.value[c].num.length;h++)o+=n.getSymbolWidth(t.value[c].num.charAt(h));var l=0;for(h=0;h<t.value[c].num.length;h++)l+=n.getSymbolWidth(t.value[c].den.charAt(h));var d=Math.max(o,l);i.addRight(new a(t.value[c].num,r+(d-o)/2,o,8,{thickness:n.symbolHeightInPitches(t.value[c].num.charAt(0))})),i.addRight(new a(t.value[c].den,r+(d-l)/2,l,4,{thickness:n.symbolHeightInPitches(t.value[c].den.charAt(0))})),r+=d}else{for(var u=0,f=0;f<t.value[c].num.length;f++)u+=n.getSymbolWidth(t.value[c].num.charAt(f));i.addRight(new a(t.value[c].num,r,u,6,{thickness:n.symbolHeightInPitches(t.value[c].num.charAt(0))})),r+=u}else\"common_time\"===t.type?i.addRight(new a(\"timesig.common\",0,n.getSymbolWidth(\"timesig.common\"),6,{thickness:n.symbolHeightInPitches(\"timesig.common\")})):\"cut_time\"===t.type?i.addRight(new a(\"timesig.cut\",0,n.getSymbolWidth(\"timesig.cut\"),6,{thickness:n.symbolHeightInPitches(\"timesig.cut\")})):\"tempus_imperfectum\"===t.type?i.addRight(new a(\"timesig.imperfectum\",0,n.getSymbolWidth(\"timesig.imperfectum\"),6,{thickness:n.symbolHeightInPitches(\"timesig.imperfectum\")})):\"tempus_imperfectum_prolatio\"===t.type?i.addRight(new a(\"timesig.imperfectum2\",0,n.getSymbolWidth(\"timesig.imperfectum2\"),6,{thickness:n.symbolHeightInPitches(\"timesig.imperfectum2\")})):\"tempus_perfectum\"===t.type?i.addRight(new a(\"timesig.perfectum\",0,n.getSymbolWidth(\"timesig.perfectum\"),6,{thickness:n.symbolHeightInPitches(\"timesig.perfectum\")})):\"tempus_perfectum_prolatio\"===t.type?i.addRight(new a(\"timesig.perfectum2\",0,n.getSymbolWidth(\"timesig.perfectum2\"),6,{thickness:n.symbolHeightInPitches(\"timesig.perfectum2\")})):console.log(\"time signature:\",t);return i},t.exports=r},function(t,e,i){\"use strict\";var r,s=i(30),n=i(31),a=i(3),c=i(2),o=i(14);!function(){var t=function(t,e,i,r,s){function n(t,e){var n=\"down\"===s?function(){if(0===r.heads.length)return 2;for(var t=r.heads[0].pitch,e=1;e<r.heads.length;e++)t=Math.min(t,r.heads[e].pitch);return t}()+1:function(){if(0===r.heads.length)return 10;for(var t=r.heads[0].pitch,e=1;e<r.heads.length;e++)t=Math.max(t,r.heads[e].pitch);return t}()+9;\"down\"!==s&&1===e&&n--;var o=i/2;o+=\"down\"===s?-5:3;for(var h=0;h<e;h++)n-=1,r.addChild(new c(t,o,a.getSymbolWidth(t),n))}for(var o=0;o<t.length;o++)switch(t[o]){case\"/\":n(\"flags.ugrace\",1);break;case\"//\":n(\"flags.ugrace\",2);break;case\"///\":n(\"flags.ugrace\",3);break;case\"////\":n(\"flags.ugrace\",4)}};(r=function(){this.startDiminuendoX=void 0,this.startCrescendoX=void 0,this.minTop=12,this.minBottom=0}).prototype.dynamicDecoration=function(t,e,i,r){for(var s,a,c=0;c<e.length;c++)switch(e[c]){case\"diminuendo(\":this.startDiminuendoX=i,s=void 0;break;case\"diminuendo)\":s={start:this.startDiminuendoX,stop:i},this.startDiminuendoX=void 0;break;case\"crescendo(\":this.startCrescendoX=i,a=void 0;break;case\"crescendo)\":a={start:this.startCrescendoX,stop:i},this.startCrescendoX=void 0}s&&t.addOther(new n(s.start,s.stop,\">\",r)),a&&t.addOther(new n(a.start,a.stop,\"<\",r))},r.prototype.createDecoration=function(e,i,r,n,h,l,d,u,f,p){f||(f={ornamentPosition:\"above\",volumePosition:p?\"above\":\"below\",dynamicPosition:p?\"above\":\"below\"}),function(t,e,i,r){for(var n=0;n<e.length;n++)switch(e[n]){case\"p\":case\"mp\":case\"pp\":case\"ppp\":case\"pppp\":case\"f\":case\"ff\":case\"fff\":case\"ffff\":case\"sfz\":case\"mf\":var a=new s(i,e[n],r);t.addOther(a)}}(e,i,h,f.volumePosition),this.dynamicDecoration(e,i,h,f.dynamicPosition),t(i,0,n,h,d);var m=function(t,e,i,r,s,n,h,l){for(var d,u=0;u<e.length;u++){if(\"staccato\"===e[u]||\"tenuto\"===e[u]||\"accent\"===e[u]){var f=\"scripts.\"+e[u];if(\"accent\"===e[u]&&(f=\"scripts.sforzato\"),d=void 0===d?\"down\"===h?i+2:l-2:\"down\"===h?d+2:d-2,\"accent\"===e[u])\"up\"===h?d--:d++;else switch(d){case 2:case 4:case 6:case 8:case 10:\"up\"===h?d--:d++}i>9&&d++;var p=r/2;\"center\"!==a.getSymbolAlign(f)&&(p-=a.getSymbolWidth(f)/2),s.addChild(new c(f,p,a.getSymbolWidth(f),d))}if(\"slide\"===e[u]&&s.heads[0]){var m=s.heads[0].pitch,g=new c(\"\",-n-15,0,(m-=2)-1),v=new c(\"\",-n-5,0,m+1);s.addChild(g),s.addChild(v),t.addOther(new o(g,v,!1,!1,!1))}}return void 0===d&&(d=i),{above:d,below:s.bottom}}(e,i,r,n,h,l,d,u);m.above=Math.max(m.above,this.minTop);!function(t,e,i,r,s,n,o){function h(t,e){\"above\"===t?r.above+=e:r.below-=e}function l(t){var e;return\"above\"===t?(e=r.above)<n&&(e=n):(e=r.below)>o&&(e=o),e}function d(t,r){var s=l(r);i.addChild(new c(t,e/2,0,s+2,{type:\"decoration\",klass:\"ornament\",thickness:3})),h(r,5)}function u(t,r){var s=e/2;\"center\"!==a.getSymbolAlign(t)&&(s-=a.getSymbolWidth(t)/2);var n=a.symbolHeightInPitches(t)+1,o=l(r);o=\"above\"===r?o+n/2:o-n/2,i.addChild(new c(t,s,a.getSymbolWidth(t),o,{klass:\"ornament\",thickness:a.symbolHeightInPitches(t)})),h(r,n)}for(var f={\"+\":\"scripts.stopped\",open:\"scripts.open\",snap:\"scripts.snap\",wedge:\"scripts.wedge\",thumb:\"scripts.thumb\",shortphrase:\"scripts.shortphrase\",mediumphrase:\"scripts.mediumphrase\",longphrase:\"scripts.longphrase\",trill:\"scripts.trill\",roll:\"scripts.roll\",irishroll:\"scripts.roll\",marcato:\"scripts.umarcato\",dmarcato:\"scripts.dmarcato\",umarcato:\"scripts.umarcato\",turn:\"scripts.turn\",uppermordent:\"scripts.prall\",pralltriller:\"scripts.prall\",mordent:\"scripts.mordent\",lowermordent:\"scripts.mordent\",downbow:\"scripts.downbow\",upbow:\"scripts.upbow\",fermata:\"scripts.ufermata\",invertedfermata:\"scripts.dfermata\",breath:\",\",coda:\"scripts.coda\",segno:\"scripts.segno\"},p=!1,m=0;m<t.length;m++)switch(t[m]){case\"0\":case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"D.C.\":case\"D.S.\":d(t[m],s),p=!0;break;case\"fine\":d(\"FINE\",s),p=!0;break;case\"+\":case\"open\":case\"snap\":case\"wedge\":case\"thumb\":case\"shortphrase\":case\"mediumphrase\":case\"longphrase\":case\"trill\":case\"roll\":case\"irishroll\":case\"marcato\":case\"dmarcato\":case\"turn\":case\"uppermordent\":case\"pralltriller\":case\"mordent\":case\"lowermordent\":case\"downbow\":case\"upbow\":case\"fermata\":case\"breath\":case\"umarcato\":case\"coda\":case\"segno\":u(f[t[m]],s),p=!0;break;case\"invertedfermata\":u(f[t[m]],\"below\"),p=!0;break;case\"mark\":i.klass=\"mark\"}}(i,n,h,m,f.ornamentPosition,this.minTop,this.minBottom);!function(t,e,i){for(var r=0;r<t.length;r++)switch(t[r]){case\"arpeggio\":for(var s=e.abcelem.minpitch-1;s<=e.abcelem.maxpitch;s+=2)e.addExtra(new c(\"scripts.arpeggio\",2*-a.getSymbolWidth(\"scripts.arpeggio\")-i,0,s+2,{klass:\"ornament\",thickness:a.symbolHeightInPitches(\"scripts.arpeggio\")}))}}(i,h,l)}}(),t.exports=r},function(t,e,i){\"use strict\";i(1);var r=function(t,e,i){this.anchor=t,this.dec=e,\"below\"===i?this.volumeHeightBelow=5:this.volumeHeightAbove=5,this.pitch=void 0};r.prototype.setUpperAndLowerElements=function(t){this.volumeHeightAbove?this.pitch=t.volumeHeightAbove:this.pitch=t.volumeHeightBelow},r.prototype.draw=function(t,e,i){void 0===this.pitch&&window.console.error(\"Dynamic Element y-coordinate not set.\");t.printSymbol(this.anchor.x,this.pitch,this.dec,1,1,t.addClasses(\"decoration\"))},t.exports=r},function(t,e,i){\"use strict\";var r=i(5),s=function(t,e,i,r){this.anchor1=t,this.anchor2=e,this.dir=i,\"above\"===r?this.dynamicHeightAbove=4:this.dynamicHeightBelow=4,this.pitch=void 0};s.prototype.setUpperAndLowerElements=function(t){this.dynamicHeightAbove?this.pitch=t.dynamicHeightAbove:this.pitch=t.dynamicHeightBelow},s.prototype.draw=function(t){void 0===this.pitch&&window.console.error(\"Crescendo Element y-coordinate not set.\");var e=t.calcY(this.pitch)+4;\"<\"===this.dir?(this.drawLine(t,e+4,e),this.drawLine(t,e+4,e+8)):(this.drawLine(t,e,e+4),this.drawLine(t,e+8,e+4))},s.prototype.drawLine=function(t,e,i){var s=this.anchor1?this.anchor1.x:0,n=this.anchor2?this.anchor2.x:800,a=r(\"M %f %f L %f %f\",s,e,n,i);t.printPath({path:a,stroke:\"#000000\",class:t.addClasses(\"decoration\")})},t.exports=s},function(t,e,i){\"use strict\";var r=i(5),s=function(t,e,i){this.text=t,this.anchor1=e,this.anchor2=i,this.endingHeightAbove=5,this.pitch=void 0};s.prototype.setUpperAndLowerElements=function(t){this.pitch=t.endingHeightAbove-2},s.prototype.draw=function(t,e,i){void 0===this.pitch&&window.console.error(\"Ending Element y-coordinate not set.\");var s,n=t.calcY(this.pitch);this.anchor1&&(e=this.anchor1.x+this.anchor1.w,s=r(\"M %f %f L %f %f\",e,n,e,n+20),t.printPath({path:s,stroke:\"#000000\",fill:\"#000000\",class:t.addClasses(\"ending\")}),t.renderText(e+5,t.calcY(this.pitch-.5),this.text,\"repeatfont\",\"ending\",\"start\")),this.anchor2&&(i=this.anchor2.x,s=r(\"M %f %f L %f %f\",i,n,i,n+20),t.printPath({path:s,stroke:\"#000000\",fill:\"#000000\",class:t.addClasses(\"ending\")})),s=r(\"M %f %f L %f %f\",e,n,i,n),t.printPath({path:s,stroke:\"#000000\",fill:\"#000000\",class:t.addClasses(\"ending\")})},t.exports=s},function(t,e,i){\"use strict\";var r=i(1),s=function(){this.voices=[],this.staffs=[],this.brace=void 0};s.prototype.setLimit=function(t,e){e.specialY[t]&&(e.staff.specialY[t]?e.staff.specialY[t]=Math.max(e.staff.specialY[t],e.specialY[t]):e.staff.specialY[t]=e.specialY[t])},s.prototype.addVoice=function(t,e,i){var r=this.voices.length;this.voices[r]=t,this.staffs[e]?this.staffs[e].voices.push(r):this.staffs[this.staffs.length]={top:10,bottom:2,lines:i,voices:[r],specialY:{tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}},t.staff=this.staffs[e]},s.prototype.setStaffLimits=function(t){t.staff.top=Math.max(t.staff.top,t.top),t.staff.bottom=Math.min(t.staff.bottom,t.bottom),this.setLimit(\"tempoHeightAbove\",t),this.setLimit(\"partHeightAbove\",t),this.setLimit(\"volumeHeightAbove\",t),this.setLimit(\"dynamicHeightAbove\",t),this.setLimit(\"endingHeightAbove\",t),this.setLimit(\"chordHeightAbove\",t),this.setLimit(\"lyricHeightAbove\",t),this.setLimit(\"lyricHeightBelow\",t),this.setLimit(\"chordHeightBelow\",t),this.setLimit(\"volumeHeightBelow\",t),this.setLimit(\"dynamicHeightBelow\",t)},s.prototype.setUpperAndLowerElements=function(t){for(var e,i=0;i<this.staffs.length;i++){var s=this.staffs[i],n={tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0};0,s.specialY.lyricHeightAbove&&(s.top+=s.specialY.lyricHeightAbove,n.lyricHeightAbove=s.top),s.specialY.chordHeightAbove&&(s.top+=s.specialY.chordHeightAbove,n.chordHeightAbove=s.top),s.specialY.endingHeightAbove&&(s.specialY.chordHeightAbove?s.top+=2:s.top+=s.specialY.endingHeightAbove,n.endingHeightAbove=s.top),s.specialY.dynamicHeightAbove&&s.specialY.volumeHeightAbove?(s.top+=Math.max(s.specialY.dynamicHeightAbove,s.specialY.volumeHeightAbove),n.dynamicHeightAbove=s.top,n.volumeHeightAbove=s.top):s.specialY.dynamicHeightAbove?(s.top+=s.specialY.dynamicHeightAbove,n.dynamicHeightAbove=s.top):s.specialY.volumeHeightAbove&&(s.top+=s.specialY.volumeHeightAbove,n.volumeHeightAbove=s.top),s.specialY.partHeightAbove&&(s.top+=s.specialY.partHeightAbove,n.partHeightAbove=s.top),s.specialY.tempoHeightAbove&&(s.top+=s.specialY.tempoHeightAbove,n.tempoHeightAbove=s.top),s.specialY.lyricHeightBelow&&(n.lyricHeightBelow=s.bottom,s.bottom-=s.specialY.lyricHeightBelow),s.specialY.chordHeightBelow&&(n.chordHeightBelow=s.bottom,s.bottom-=s.specialY.chordHeightBelow),s.specialY.volumeHeightBelow&&s.specialY.dynamicHeightBelow?(n.volumeHeightBelow=s.bottom,n.dynamicHeightBelow=s.bottom,s.bottom-=Math.max(s.specialY.volumeHeightBelow,s.specialY.dynamicHeightBelow)):s.specialY.volumeHeightBelow?(n.volumeHeightBelow=s.bottom,s.bottom-=s.specialY.volumeHeightBelow):s.specialY.dynamicHeightBelow&&(n.dynamicHeightBelow=s.bottom,s.bottom-=s.specialY.dynamicHeightBelow);for(var a=0;a<s.voices.length;a++){this.voices[s.voices[a]].setUpperAndLowerElements(n)}if(void 0!==e){var c=e+(s.top-10),o=t.spacing.systemStaffSeparation/r.STEP-c;o>0&&(s.top+=o)}e=2-s.bottom}},s.prototype.finished=function(){for(var t=0;t<this.voices.length;t++)if(!this.voices[t].layoutEnded())return!1;return!0},s.prototype.layout=function(t,e,i){var r,s=0,n=1e3,a=function(t,e,i){for(var r=t.padding.left,s=0,n=0;n<e.length;n++)if(e[n].header){var a=t.getTextSize(e[n].header,\"voicefont\",\"\");s=Math.max(s,a.width)}return s&&(s+=t.getTextSize(\"A\",\"voicefont\",\"\").width),r+=s,i&&(i.setLocation(r),r+=i.getWidth()),r}(e,this.voices,this.brace);this.startx=a;var c=0;for(i&&console.log(\"init layout\",t),r=0;r<this.voices.length;r++)this.voices[r].beginLayout(a);for(var o=0;!this.finished();){for(c=null,r=0;r<this.voices.length;r++)this.voices[r].layoutEnded()||c&&!(this.voices[r].getDurationIndex()<c)||(c=this.voices[r].getDurationIndex());var h=[],l=[];for(r=0;r<this.voices.length;r++){this.voices[r].getDurationIndex()-c>1e-7?l.push(this.voices[r]):h.push(this.voices[r])}o=0;var d=0;for(r=0;r<h.length;r++)h[r].getNextX()>a&&(a=h[r].getNextX(),o=h[r].getSpacingUnits(),d=h[r].spacingduration);for(s+=o,n=Math.min(n,o),i&&console.log(\"currentduration: \",c,s,n),r=0;r<h.length;r++){var u=h[r].layoutOneItem(a,t),f=u-a;if(f>0){a=u;for(var p=0;p<r;p++)h[p].shiftRight(f)}}for(r=0;r<l.length;r++)l[r].spacingduration-=d,l[r].updateNextX(a,t);for(r=0;r<h.length;r++){h[r].updateIndices()}}for(r=0;r<this.voices.length;r++)this.voices[r].getNextX()>a&&(a=this.voices[r].getNextX(),o=this.voices[r].getSpacingUnits());for(s+=o,this.w=a,r=0;r<this.voices.length;r++)this.voices[r].w=this.w;return{spacingUnits:s,minSpace:n}},s.prototype.calcHeight=function(){for(var t=0,e=0;e<this.voices.length;e++){var i=this.voices[e].staff;this.voices[e].duplicate||(t+=i.top,i.bottom<0&&(t+=-i.bottom))}return t},s.prototype.draw=function(t){t.addInvisibleMarker(\"abcjs-top-of-system\");for(var e,i,s=t.y,n=0;n<this.staffs.length;n++){var a=this.staffs[n];t.moveY(r.STEP,a.top),a.absoluteY=t.y,a.bottom<0&&t.moveY(r.STEP,-a.bottom)}var c=0;t.measureNumber=null,t.noteNumber=null;for(var o=0;o<this.voices.length;o++){var h=this.voices[o].staff;t.y=h.absoluteY,t.voiceNumber=o,this.voices[o].duplicate||(e||(e=t.calcY(10)),i=t.calcY(2),0!==h.lines&&(t.measureNumber=null,t.noteNumber=null,t.printStave(this.startx,this.w,h.lines))),this.voices[o].draw(t,c),t.measureNumber=null,t.noteNumber=null,this.voices[o].duplicate||(c=t.calcY(2)),this.brace&&o===this.brace.length-1&&this.brace&&this.brace.draw(t,e,i)}t.measureNumber=null,t.noteNumber=null,this.staffs.length>1&&t.printStem(this.startx,.6,e,i),t.y=s},t.exports=s},function(t,e,i){\"use strict\";var r,s=i(4),n=i(2);(r=function(t,e,i){this.tempo=t,this.tuneNumber=e,this.tempoHeightAbove=5,this.pitch=void 0,this.tempo.duration&&!this.tempo.suppressBpm&&(this.note=this.createNote(i,t,e))}).prototype.setUpperAndLowerElements=function(t){if(this.pitch=t.tempoHeightAbove,this.top=t.tempoHeightAbove,this.bottom=t.tempoHeightAbove,this.note){var e=this.pitch-5+1;this.note.top=e,this.note.bottom=e;for(var i=0;i<this.note.children.length;i++){var r=this.note.children[i];r.top+=e,r.bottom+=e,r.pitch+=e,void 0!==r.pitch2&&(r.pitch2+=e)}}},r.prototype.setX=function(t){this.x=t},r.prototype.createNote=function(t,e,i){var r,a,c,o=e.duration[0],h=new s(e,o,1,\"tempo\",i);o<=1/32?(c=\"noteheads.quarter\",a=\"flags.u32nd\",r=0):o<=1/16?(c=\"noteheads.quarter\",a=\"flags.u16th\",r=0):o<=3/32?(c=\"noteheads.quarter\",a=\"flags.u16nd\",r=1):o<=1/8?(c=\"noteheads.quarter\",a=\"flags.u8th\",r=0):o<=3/16?(c=\"noteheads.quarter\",a=\"flags.u8th\",r=1):o<=.25?(c=\"noteheads.quarter\",r=0):o<=3/8?(c=\"noteheads.quarter\",r=1):o<=.5?(c=\"noteheads.half\",r=0):o<=.75?(c=\"noteheads.half\",r=1):o<=1?(c=\"noteheads.whole\",r=0):o<=1.5?(c=\"noteheads.whole\",r=1):o<=2?(c=\"noteheads.dbl\",r=0):(c=\"noteheads.dbl\",r=1);var l,d=t(h,c,{verticalPos:0},\"up\",0,0,a,r,0,.75).notehead;if(h.addHead(d),\"noteheads.whole\"!==c&&\"noteheads.dbl\"!==c){var u=d.dx+d.w;l=new n(null,u,0,.25,{type:\"stem\",pitch2:5.25,linewidth:-.6}),h.addExtra(l)}return h},r.prototype.draw=function(t){var e=this.x;void 0===this.pitch&&window.console.error(\"Tempo Element y-coordinate not set.\");var i=t.calcY(this.pitch);if(this.tempo.preString){var r=t.renderText(e,i,this.tempo.preString,\"tempofont\",\"tempo\",\"start\").getBBox().width;e+=r+r/this.tempo.preString.length}if(this.note){this.note&&this.note.setX(e);for(var s=0;s<this.note.children.length;s++)this.note.children[s].draw(t,e);e+=this.note.w+5;var n=\"= \"+this.tempo.bpm,a=t.renderText(e,i,n,\"tempofont\",\"tempo\",\"start\").getBBox().width;e+=a+a/n.length}this.tempo.postString&&t.renderText(e,i,this.tempo.postString,\"tempofont\",\"tempo\",\"start\")},t.exports=r},function(t,e,i){\"use strict\";var r,s=i(5);!function(){function t(t,e,i,r,n,a){var c=s(\"M %f %f L %f %f\",e,i,r,n);t.printPath({path:c,stroke:\"#000000\",class:t.addClasses(\"triplet d\"+a)})}(r=function(t,e,i){this.anchor1=e,this.number=t,this.duration=(\"\"+e.parent.durationClass).replace(/\\./,\"-\"),this.middleElems=[],this.flatBeams=i.flatBeams}).prototype.isClosed=function(){return this.anchor2},r.prototype.middleNote=function(t){this.middleElems.push(t)},r.prototype.setCloseAnchor=function(t){this.anchor2=t,this.anchor1.parent.beam&&(this.endingHeightAbove=4)},r.prototype.setUpperAndLowerElements=function(){},r.prototype.layout=function(){if(this.anchor1&&this.anchor2)if(this.hasBeam=this.anchor1.parent.beam&&this.anchor1.parent.beam===this.anchor2.parent.beam,this.hasBeam){var t=this.anchor1.parent.beam,e=t.isAbove()?this.anchor1.x+this.anchor1.w:this.anchor1.x;this.yTextPos=t.heightAtMidpoint(e,this.anchor2.x),this.yTextPos+=t.isAbove()?4:-4,t.isAbove()&&(this.endingHeightAbove=4)}else{this.startNote=Math.max(this.anchor1.parent.top,9)+4,this.endNote=Math.max(this.anchor2.parent.top,9)+4,\"rest\"===this.anchor1.parent.type&&\"rest\"!==this.anchor2.parent.type?this.startNote=this.endNote:\"rest\"===this.anchor2.parent.type&&\"rest\"!==this.anchor1.parent.type&&(this.endNote=this.startNote);for(var i=0,r=0;r<this.middleElems.length;r++)i=Math.max(i,this.middleElems[r].top);((i+=4)>this.startNote||i>this.endNote)&&(this.startNote=i,this.endNote=i),this.flatBeams&&(this.startNote=Math.max(this.startNote,this.endNote),this.endNote=Math.max(this.startNote,this.endNote)),this.yTextPos=this.startNote+(this.endNote-this.startNote)/2}delete this.middleElems,delete this.flatBeams},r.prototype.draw=function(e){var i;if(this.hasBeam){var r=this.anchor1.parent.beam.isAbove()?this.anchor1.x+this.anchor1.w:this.anchor1.x;i=this.anchor1.parent.beam.xAtMidpoint(r,this.anchor2.x)}else i=this.anchor1.x+(this.anchor2.x+this.anchor2.w-this.anchor1.x)/2,function(e,i,r,s,n,a){r=e.calcY(r),n=e.calcY(n);t(e,i,r,i,r+5,a),t(e,s,n,s,n+5,a);var c=i+(s-i)/2,o=(n-r)/(s-i),h=c-8;t(e,i,r,h,r+(h-i)*o,a);var l=c+8;t(e,l,r+(l-i)*o,s,n,a)}(e,this.anchor1.x,this.startNote,this.anchor2.x+this.anchor2.w,this.endNote,this.duration);e.renderText(i,e.calcY(this.yTextPos),\"\"+this.number,\"tripletfont\",e.addClasses(\"triplet d\"+this.duration),\"middle\",!0)}}(),t.exports=r},function(t,e,i){\"use strict\";var r=i(0),s=function(t,e){this.children=[],this.beams=[],this.otherchildren=[],this.w=0,this.duplicate=!1,this.voicenumber=t,this.voicetotal=e,this.bottom=7,this.top=7,this.specialY={tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}};function n(t){return\"rest\"===t.type&&!(!t.abcelem||!t.abcelem.rest||\"spacer\"===t.abcelem.rest.type)}s.prototype.addChild=function(t){if(\"bar\"===t.type){for(var e=!0,i=0;e&&i<this.children.length;i++)\"staff-extra\"!==this.children[i].type&&(e=!1);e||(this.beams.push(\"bar\"),this.otherchildren.push(\"bar\"))}this.children[this.children.length]=t,this.setRange(t)},s.prototype.setLimit=function(t,e){var i=e.specialY;i||(i=e),i[t]&&(this.specialY[t]?this.specialY[t]=Math.max(this.specialY[t],i[t]):this.specialY[t]=i[t])},s.prototype.moveDecorations=function(t){for(var e=0;e<t.elems.length;e++){var i=t.elems[e];if(i.top)for(var r=t.yAtNote(i),s=0;s<i.children.length;s++){var n=i.children[s];if(\"ornament\"===n.klass&&n.bottom-1.5<r){var a=r-n.bottom+1.5;n.bottom+=a,n.top+=a,n.pitch+=a,r=i.top=n.top}}}},s.prototype.adjustRange=function(t){void 0!==t.bottom&&(this.bottom=Math.min(this.bottom,t.bottom)),void 0!==t.top&&(this.top=Math.max(this.top,t.top))},s.prototype.setRange=function(t){this.adjustRange(t),this.setLimit(\"tempoHeightAbove\",t),this.setLimit(\"partHeightAbove\",t),this.setLimit(\"volumeHeightAbove\",t),this.setLimit(\"dynamicHeightAbove\",t),this.setLimit(\"endingHeightAbove\",t),this.setLimit(\"chordHeightAbove\",t),this.setLimit(\"lyricHeightAbove\",t),this.setLimit(\"lyricHeightBelow\",t),this.setLimit(\"chordHeightBelow\",t),this.setLimit(\"volumeHeightBelow\",t),this.setLimit(\"dynamicHeightBelow\",t)},s.prototype.setUpperAndLowerElements=function(t){var e;for(e=0;e<this.children.length;e++){(i=this.children[e]).setUpperAndLowerElements(t)}for(e=0;e<this.otherchildren.length;e++){var i;\"string\"!=typeof(i=this.otherchildren[e])&&i.setUpperAndLowerElements(t)}},s.prototype.addOther=function(t){this.otherchildren.push(t),this.setRange(t)},s.prototype.addBeam=function(t){this.beams.push(t)},s.prototype.updateIndices=function(){this.layoutEnded()||(this.durationindex+=this.children[this.i].duration,0===this.children[this.i].duration&&(this.durationindex=Math.round(64*this.durationindex)/64),this.i++)},s.prototype.layoutEnded=function(){return this.i>=this.children.length},s.prototype.getDurationIndex=function(){return this.durationindex-(this.children[this.i]&&this.children[this.i].duration>0?0:5e-7)},s.prototype.getSpacingUnits=function(){return Math.sqrt(8*this.spacingduration)},s.prototype.getNextX=function(){return Math.max(this.minx,this.nextx)},s.prototype.beginLayout=function(t){this.i=0,this.durationindex=0,this.startx=t,this.minx=t,this.nextx=t,this.spacingduration=0},s.prototype.layoutOneItem=function(t,e){var i=this.children[this.i];if(!i)return 0;var r=t-this.minx;return r<i.getExtraWidth()&&(t+=i.getExtraWidth()-r),i.setX(t),this.spacingduration=i.duration,this.minx=t+i.getMinWidth(),this.i!==this.children.length-1&&(this.minx+=i.minspacing),this.updateNextX(t,e),t},s.prototype.updateNextX=function(t,e){this.nextx=t+e*Math.sqrt(8*this.spacingduration)},s.prototype.shiftRight=function(t){var e=this.children[this.i];e&&(e.setX(e.x+t),this.minx+=t,this.nextx+=t)},s.prototype.draw=function(t,e){var i=this.w-1;if(t.staffbottom=this.staff.bottom,t.measureNumber=null,t.noteNumber=null,this.header){var s=14-(this.voicenumber+1)*(12/(this.voicetotal+1));t.renderText(t.padding.left,t.calcY(s),this.header,\"voicefont\",\"staff-extra voice-name\",\"start\")}for(var a=0,c=this.children.length;a<c;a++){var o=this.children[a],h=!1;\"staff-extra\"!==o.type&&null===t.measureNumber&&(t.measureNumber=0,t.noteNumber=0,h=!0),o.draw(t,this.barto||a===c-1?e:0),(\"note\"===o.type||n(o))&&t.noteNumber++,\"bar\"!==o.type||h||(t.measureNumber++,t.noteNumber=0)}t.measureNumber=0,t.noteNumber=0,r.each(this.beams,function(e){\"bar\"===e?(t.measureNumber++,t.noteNumber=0):e.draw(t)}),t.measureNumber=0,t.noteNumber=0;var l=this;r.each(this.otherchildren,function(e){\"bar\"===e?(t.measureNumber++,t.noteNumber=0):e.draw(t,l.startx+10,i)})},s.prototype.layoutBeams=function(){for(var t=0;t<this.beams.length;t++)if(this.beams[t].layout){this.beams[t].layout(),this.moveDecorations(this.beams[t]);for(var e=0;e<this.beams[t].elems.length;e++)this.adjustRange(this.beams[t].elems[e])}for(t=0;t<this.otherchildren.length;t++){var i=this.otherchildren[t];i.layout&&i.layout()}this.staff.top=Math.max(this.staff.top,this.top),this.staff.bottom=Math.min(this.staff.bottom,this.bottom)},t.exports=s},function(t,e,i){\"use strict\";var r=i(3),s=i(1),n=i(5),a=i(38),c=function(t,e,i){this.paper=new a(t),this.controller=null,this.space=3*s.SPACE,this.padding={},this.doRegression=e,this.shouldAddClasses=i,this.doRegression&&(this.regressionLines=[]),this.reset()};function o(t,e,i){var r=i;return\"f\"===t&&\"f\"===e&&(r=2*r/3),\"p\"===t&&\"p\"===e&&(r=5*r/6),\"f\"===t&&\"z\"===e&&(r=5*r/8),r}c.prototype.reset=function(){this.paper.clear(),this.y=0,this.abctune=null,this.lastM=null,this.ingroup=!1,this.path=null,this.isPrint=!1,this.initVerticalSpace(),this.doRegression&&(this.regressionLines=[])},c.prototype.newTune=function(t){this.abctune=t,this.setVerticalSpace(t.formatting),this.measureNumber=null,this.noteNumber=null,this.setPrintMode(\"print\"===t.media),this.setPadding(t)},c.prototype.createElemSet=function(){return this.paper.openGroup()},c.prototype.closeElemSet=function(){return this.paper.closeGroup()},c.prototype.setPrintMode=function(t){this.isPrint=t},c.prototype.setPaperSize=function(t,e,i){var r=(t+this.padding.right)*e,s=(this.y+this.padding.bottom)*e;this.isPrint&&(s=Math.max(s,1056)),this.doRegression&&this.regressionLines.push(\"PAPER SIZE: (\"+r+\",\"+s+\")\");var n=\"Sheet Music\";this.abctune&&this.abctune.metaText&&this.abctune.metaText.title&&(n+=' for \"'+this.abctune.metaText.title+'\"'),this.paper.setTitle(n);var a={overflow:\"hidden\"};\"resize\"===i?this.paper.setResponsiveWidth(r,s):(a.width=\"\",a.height=s+\"px\",e<1?(a.width=r+\"px\",this.paper.setSize(r/e,s/e)):this.paper.setSize(r,s)),this.paper.setScale(e),this.paper.setParentStyles(a)},c.prototype.setPaddingOverride=function(t){this.paddingOverride={top:t.paddingtop,bottom:t.paddingbottom,right:t.paddingright,left:t.paddingleft}},c.prototype.setPadding=function(t){function e(e,i,r,s,n){void 0!==t.formatting[r]?e.padding[i]=t.formatting[r]:void 0!==e.paddingOverride[i]?e.padding[i]=e.paddingOverride[i]:e.isPrint?e.padding[i]=s:e.padding[i]=n}e(this,\"top\",\"topmargin\",38,15),e(this,\"bottom\",\"botmargin\",38,15),e(this,\"left\",\"leftmargin\",68,15),e(this,\"right\",\"rightmargin\",68,15)},c.prototype.adjustNonScaledItems=function(t){this.padding.top/=t,this.padding.bottom/=t,this.padding.left/=t,this.padding.right/=t,this.abctune.formatting.headerfont.size/=t,this.abctune.formatting.footerfont.size/=t},c.prototype.initVerticalSpace=function(){this.spacing={composer:7.56,graceBefore:8.67,graceInside:10.67,graceAfter:16,info:0,lineSkipFactor:1.1,music:7.56,paragraphSkipFactor:.4,parts:11.33,slurHeight:1,staffSeparation:61.33,stemHeight:36.67,subtitle:3.78,systemStaffSeparation:48,text:18.9,title:7.56,top:30.24,vocal:30.67,words:0}},c.prototype.setVerticalSpace=function(t){void 0!==t.staffsep&&(this.spacing.staffSeparation=4*t.staffsep/3),void 0!==t.composerspace&&(this.spacing.composer=4*t.composerspace/3),void 0!==t.partsspace&&(this.spacing.parts=4*t.partsspace/3),void 0!==t.textspace&&(this.spacing.text=4*t.textspace/3),void 0!==t.musicspace&&(this.spacing.music=4*t.musicspace/3),void 0!==t.titlespace&&(this.spacing.title=4*t.titlespace/3),void 0!==t.sysstaffsep&&(this.spacing.systemStaffSeparation=4*t.sysstaffsep/3),void 0!==t.subtitlespace&&(this.spacing.subtitle=4*t.subtitlespace/3),void 0!==t.topspace&&(this.spacing.top=4*t.topspace/3),void 0!==t.vocalspace&&(this.spacing.vocal=4*t.vocalspace/3),void 0!==t.wordsspace&&(this.spacing.words=4*t.wordsspace/3)},c.prototype.topMargin=function(t){this.moveY(this.padding.top)},c.prototype.addMusicPadding=function(){this.moveY(this.spacing.music)},c.prototype.addStaffPadding=function(t,e){var i=-(t.staffs[t.staffs.length-1].bottom-2),r=(e.staffs[0].top-10+i)*s.STEP;r<this.spacing.staffSeparation&&this.moveY(this.spacing.staffSeparation-r)},c.prototype.engraveTopText=function(t,e){if(e.metaText.header&&this.isPrint){var i=this.getTextSize(\"XXXX\",\"headerfont\",\"abcjs-header abcjs-meta-top\").height;this.y-=i,this.outputTextIf(this.padding.left,e.metaText.header.left,\"headerfont\",\"header meta-top\",0,null,\"start\"),this.outputTextIf(this.padding.left+t/2,e.metaText.header.center,\"headerfont\",\"header meta-top\",0,null,\"middle\"),this.outputTextIf(this.padding.left+t,e.metaText.header.right,\"headerfont\",\"header meta-top\",0,null,\"end\"),this.y+=i}if(this.isPrint&&this.moveY(this.spacing.top),this.outputTextIf(this.padding.left+t/2,e.metaText.title,\"titlefont\",\"title meta-top\",this.spacing.title,0,\"middle\"),e.lines[0]&&this.outputTextIf(this.padding.left+t/2,e.lines[0].subtitle,\"subtitlefont\",\"text meta-top\",this.spacing.subtitle,0,\"middle\"),e.metaText.rhythm||e.metaText.origin||e.metaText.composer){this.moveY(this.spacing.composer);var r=this.outputTextIf(this.padding.left,e.metaText.rhythm,\"infofont\",\"meta-top\",0,null,\"start\"),s=\"\";if(e.metaText.composer&&(s+=e.metaText.composer),e.metaText.origin&&(s+=\" (\"+e.metaText.origin+\")\"),s.length>0){var n=this.outputTextIf(this.padding.left+t,s,\"composerfont\",\"meta-top\",0,null,\"end\");this.moveY(n[1])}else this.moveY(r[1]);this.moveY(-6)}this.outputTextIf(this.padding.left+t,e.metaText.author,\"composerfont\",\"meta-top\",0,0,\"end\"),this.outputTextIf(this.padding.left,e.metaText.partOrder,\"partsfont\",\"meta-bottom\",0,0,\"start\")},c.prototype.engraveExtraText=function(t,e){if(this.lineNumber=null,this.measureNumber=null,this.noteNumber=null,this.voiceNumber=null,e.metaText.unalignedWords){var i=this.getFontAndAttr(\"wordsfont\",\"meta-bottom\"),r=this.getTextSize(\"i\",\"wordsfont\",\"meta-bottom\");e.metaText.unalignedWords.length>0&&this.moveY(this.spacing.words,1);for(var n=0;n<e.metaText.unalignedWords.length;n++)if(\"string\"==typeof e.metaText.unalignedWords[n])this.outputTextIf(this.padding.left+s.INDENT,e.metaText.unalignedWords[n],\"wordsfont\",\"meta-bottom\",0,0,\"start\");else{for(var a=0,c=0,o=0;o<e.metaText.unalignedWords[n].length;o++){var h=e.metaText.unalignedWords[n][o].font?e.metaText.unalignedWords[n][o].font:\"wordsfont\",l=this.renderText(this.padding.left+s.INDENT+c,this.y,e.metaText.unalignedWords[n][o].text,h,\"meta-bottom\",!1).getBBox();a=Math.max(a,l.height),c+=l.width,\" \"===e.metaText.unalignedWords[n][o].text[e.metaText.unalignedWords[n][o].text.length-1]&&(c+=r.width)}this.moveY(a,1)}e.metaText.unalignedWords.length>0&&this.moveY(i.font.size,2)}var d=\"\";e.metaText.book&&(d+=\"Book: \"+e.metaText.book+\"\\n\"),e.metaText.source&&(d+=\"Source: \"+e.metaText.source+\"\\n\"),e.metaText.discography&&(d+=\"Discography: \"+e.metaText.discography+\"\\n\"),e.metaText.notes&&(d+=\"Notes: \"+e.metaText.notes+\"\\n\"),e.metaText.transcription&&(d+=\"Transcription: \"+e.metaText.transcription+\"\\n\"),e.metaText.history&&(d+=\"History: \"+e.metaText.history+\"\\n\"),e.metaText[\"abc-copyright\"]&&(d+=\"Copyright: \"+e.metaText[\"abc-copyright\"]+\"\\n\"),e.metaText[\"abc-creator\"]&&(d+=\"Creator: \"+e.metaText[\"abc-creator\"]+\"\\n\"),e.metaText[\"abc-edited-by\"]&&(d+=\"Edited By: \"+e.metaText[\"abc-edited-by\"]+\"\\n\"),this.outputTextIf(this.padding.left,d,\"historyfont\",\"meta-bottom\",this.spacing.info,0,\"start\"),e.metaText.footer&&this.isPrint&&(this.outputTextIf(this.padding.left,e.metaText.footer.left,\"footerfont\",\"header meta-bottom\",0,null,\"start\"),this.outputTextIf(this.padding.left+t/2,e.metaText.footer.center,\"footerfont\",\"header meta-bottom\",0,null,\"middle\"),this.outputTextIf(this.padding.left+t,e.metaText.footer.right,\"footerfont\",\"header meta-bottom\",0,null,\"end\"))},c.prototype.outputFreeText=function(t){if(\"\"===t){var e=this.getFontAndAttr(\"textfont\",\"defined-text\");this.moveY(2*e.attr[\"font-size\"])}else if(\"string\"==typeof t)this.outputTextIf(this.padding.left,t,\"textfont\",\"defined-text\",0,1,\"start\");else{for(var i=\"\",r=!1,s=0;s<t.length;s++)t[s].font&&(i+=\"FONT(\"+t[s].font+\")\"),i+=t[s].text,t[s].center&&(r=!0);var n=r?\"middle\":\"start\",a=r?this.controller.width/2:this.padding.left;this.outputTextIf(a,i,\"textfont\",\"defined-text\",0,1,n)}},c.prototype.outputSubtitle=function(t,e){this.outputTextIf(this.padding.left+t/2,e,\"subtitlefont\",\"text meta-top\",this.spacing.subtitle,0,\"middle\")},c.prototype.beginGroup=function(){this.path=[],this.lastM=[0,0],this.ingroup=!0},c.prototype.addPath=function(t){if(0!==(t=t||[]).length){t[0][0]=\"m\",t[0][1]-=this.lastM[0],t[0][2]-=this.lastM[1],this.lastM[0]+=t[0][1],this.lastM[1]+=t[0][2],this.path.push(t[0]);for(var e=1,i=t.length;e<i;e++)\"m\"===t[e][0]&&(this.lastM[0]+=t[e][1],this.lastM[1]+=t[e][2]),this.path.push(t[e])}},c.prototype.endGroup=function(t){if(this.ingroup=!1,0===this.path.length)return null;for(var e=\"\",i=0;i<this.path.length;i++)e+=this.path[i].join(\" \");var r=this.paper.path({path:e,stroke:\"none\",fill:\"#000000\",class:this.addClasses(t)});return this.path=[],this.doRegression&&this.addToRegression(r),r},c.prototype.printStaveLine=function(t,e,i,r){var s=\"staff\";void 0!==r&&(s+=\" \"+r);var a=.35,c=\"#000000\";var o=this.calcY(i),h=n(\"M %f %f L %f %f L %f %f L %f %f z\",t,o-a,e,o-a,e,o+a,t,o+a),l=this.paper.pathToBack({path:h,stroke:\"none\",fill:c,class:this.addClasses(s)});return this.doRegression&&this.addToRegression(l),l},c.prototype.printStem=function(t,e,i,r){if(e<0){var s=r;r=i,i=s}var n=\"#000000\";~~t===t&&(t+=.05);var a=[[\"M\",t,i],[\"L\",t,r],[\"L\",t+e,r],[\"L\",t+e,i],[\"z\"]];if(!this.ingroup){for(var c=\"\",o=0;o<a.length;o++)c+=a[o].join(\" \");var h=this.paper.pathToBack({path:c,stroke:\"none\",fill:n,class:this.addClasses(\"stem\")});return this.doRegression&&this.addToRegression(h),h}this.addPath(a)},c.prototype.printSymbol=function(t,e,i,s,n,a){var c,h;if(!i)return null;if(i.length>1&&i.indexOf(\".\")<0){this.paper.openGroup();for(var l=0,d=0;d<i.length;d++){var u=i.charAt(d);h=r.getYCorr(u),(c=r.printSymbol(t+l,this.calcY(e+h),u,this.paper,a))?(this.doRegression&&this.addToRegression(c),d<i.length-1&&(l+=o(u,i.charAt(d+1),r.getSymbolWidth(u)))):this.renderText(t,this.y,\"no symbol:\"+i,\"debugfont\",\"debug-msg\",\"start\")}return this.paper.closeGroup()}if(h=r.getYCorr(i),this.ingroup)this.addPath(r.getPathForSymbol(t,this.calcY(e+h),i,s,n));else{if(c=r.printSymbol(t,this.calcY(e+h),i,this.paper,a))return this.doRegression&&this.addToRegression(c),c;this.renderText(t,this.y,\"no symbol:\"+i,\"debugfont\",\"debug-msg\",\"start\")}return null},c.prototype.scaleExistingElem=function(t,e,i,r,s){this.paper.setAttributeOnElement(t,{style:\"transform:scale(\"+e+\",\"+i+\");transform-origin:\"+r+\"px \"+s+\"px;\"})},c.prototype.printPath=function(t){var e=this.paper.path(t);return this.doRegression&&this.addToRegression(e),e},c.prototype.drawBrace=function(t,e,i){var r=i-e,s=[7.5,-8,21,0,18.5,-10.5,7.5],a=[0,r/5.5,r/3.14,r/2,r/2.93,r/4.88,0],c=n(\"M %f %f C %f %f %f %f %f %f C %f %f %f %f %f %f z\",t+s[0],e+a[0],t+s[1],e+a[1],t+s[2],e+a[2],t+s[3],e+a[3],t+s[4],e+a[4],t+s[5],e+a[5],t+s[6],e+a[6]),o=this.paper.path({path:c,stroke:\"#000000\",fill:\"#000000\",class:this.addClasses(\"brace\")});c=n(\"M %f %f C %f %f %f %f %f %f C %f %f %f %f %f %f z\",t+(s=[0,17.5,-7.5,6.6,-5,20,0])[0],e+(a=[r/2,r/1.46,r/1.22,r,r/1.19,r/1.42,r/2])[0],t+s[1],e+a[1],t+s[2],e+a[2],t+s[3],e+a[3],t+s[4],e+a[4],t+s[5],e+a[5],t+s[6],e+a[6]);var h=this.paper.path({path:c,stroke:\"#000000\",fill:\"#000000\",class:this.addClasses(\"brace\")});return this.doRegression&&(this.addToRegression(o),this.addToRegression(h)),o+h},c.prototype.drawArc=function(t,e,i,r,s,a,c){var o=c?1.2:1.5;t+=6,e+=4,i+=s?o:-o,r+=s?o:-o;var h=this.calcY(i),l=this.calcY(r),d=e-t,u=l-h,f=Math.sqrt(d*d+u*u),p=d/f,m=u/f,g=f/3.5,v=c?10:25,b=(s?-1:1)*Math.min(v,Math.max(4,g)),y=t+g*p-b*m,w=h+g*m+b*p,x=e-g*p-b*m,k=l-g*m+b*p,A=n(\"M %f %f C %f %f %f %f %f %f C %f %f %f %f %f %f z\",t,h,y,w,x,k,e,l,x-2*m,k+2*p,y-2*m,w+2*p,t,h);a?a+=\" slur\":a=\"slur\";var T=this.paper.path({path:A,stroke:\"none\",fill:\"#000000\",class:this.addClasses(a)});return this.doRegression&&this.addToRegression(T),T},c.prototype.calcY=function(t){return this.y-t*s.STEP},c.prototype.printStave=function(t,e,i){var r=\"top-line\";if(this.paper.openGroup({prepend:!0}),1!==i){for(var s=i-1;s>=0;s--)this.printStaveLine(t,e,2*(s+1),r),r=void 0;this.paper.closeGroup()}else this.printStaveLine(t,e,6,r)},c.prototype.addClasses=function(t,e){if(!this.shouldAddClasses)return\"\";var i=[];if(t.length>0&&i.push(t),null!==this.lineNumber&&void 0!==this.lineNumber&&i.push(\"l\"+this.lineNumber),null!==this.measureNumber&&void 0!==this.measureNumber&&i.push(\"m\"+this.measureNumber),null!==this.voiceNumber&&void 0!==this.voiceNumber&&i.push(\"v\"+this.voiceNumber),(t.indexOf(\"note\")>=0||t.indexOf(\"rest\")>=0)&&null!==this.noteNumber&&void 0!==this.noteNumber&&i.push(\"n\"+this.noteNumber),i.length>0){i=(i=i.join(\" \")).split(\" \");for(var r=0;r<i.length;r++)0!==i[r].indexOf(\"abcjs-\")&&i[r].length>0&&(i[r]=\"abcjs-\"+i[r])}return i.join(\" \")},c.prototype.getFontAndAttr=function(t,e){var i,r={\"font-size\":(i=\"string\"==typeof t?(i=this.abctune.formatting[t])?{face:i.face,size:4*i.size/3,decoration:i.decoration,style:i.style,weight:i.weight,box:i.box}:{face:\"Arial\",size:16,decoration:\"underline\",style:\"normal\",weight:\"normal\"}:{face:t.face,size:4*t.size/3,decoration:t.decoration,style:t.style,weight:t.weight,box:t.box}).size,\"font-style\":i.style,\"font-family\":i.face,\"font-weight\":i.weight,\"text-decoration\":i.decoration,class:this.addClasses(e),font:\"\"};return{font:i,attr:r}},c.prototype.getTextSize=function(t,e,i){var r=this.getFontAndAttr(e,i),s=this.paper.getTextSize(t,r.attr);return r.font.box&&(s.height+=8,s.width+=8),s},c.prototype.renderText=function(t,e,i,r,s,n,a){var c=this.getFontAndAttr(r,s);n&&(c.attr[\"text-anchor\"]=n),c.attr.x=t,c.attr.y=e+7,a||(c.attr.dy=\"0.5em\"),\"debugfont\"===r&&(console.log(\"Debug msg: \"+i),c.attr.stroke=\"#ff0000\"),i=(i=i.replace(/\\n\\n/g,\"\\n \\n\")).replace(/^\\n/,\" \\n\"),c.font.box&&(c.attr.x+=2,c.attr.y+=4);var o=this.paper.text(i,c.attr);if(c.font.box){var h=o.getBBox();this.paper.rect({x:h.x-2,y:h.y,width:h.width+4,height:h.height+4-2,stroke:\"#888888\",fill:\"transparent\"})}return this.doRegression&&this.addToRegression(o),o},c.prototype.moveY=function(t,e){void 0===e&&(e=1),this.y+=t*e},c.prototype.skipSpaceY=function(){this.y+=this.space},c.prototype.outputTextIf=function(t,e,i,r,s,n,a){if(e){s&&this.moveY(s);var c=this.renderText(t,this.y,e,i,r,a).getBBox(),o=isNaN(c.width)?0:c.width,h=isNaN(c.height)?0:c.height;if(this.getFontAndAttr(i,r).font.box&&(o+=8,h+=8),null!==n){var l=e.split(\"\\n\").length;isNaN(c.height)||this.moveY(h/l,l+n)}return[o,h]}return[0,0]},c.prototype.addInvisibleMarker=function(t){var e=this.y;e=Math.round(e);var i=n(\"M %f %f L %f %f L %f %f L %f %f z\",0,e-.35,100,e-.35,100,e+.35,0,e+.35);this.paper.pathToBack({path:i,stroke:\"none\",fill:\"rgba(0,0,0,0)\",\"fill-opacity\":0,class:this.addClasses(t),\"data-vertical\":e})},c.prototype.printHorizontalLine=function(t,e,i){var r=.35,s=\"rgba(0,0,255,.4)\",a=this.y;e&&(a=e),a=Math.round(a),this.paper.text(\"\"+Math.round(a),{x:10,y:a,\"text-anchor\":\"start\",\"font-size\":\"18px\",fill:s,stroke:s});var c=n(\"M %f %f L %f %f L %f %f L %f %f z\",50,a-r,50+t,a-r,t,a+r,50,a+r);this.paper.pathToBack({path:c,stroke:\"none\",fill:s,class:this.addClasses(\"staff\")});for(var o=1;o<t/100;o++)c=n(\"M %f %f L %f %f L %f %f L %f %f z\",100*o-r,a-5,100*o-r,a+5,100*o+r,a-5,100*o+r,a+5),this.paper.pathToBack({path:c,stroke:\"none\",fill:s,class:this.addClasses(\"staff\")});i&&this.paper.text(i,{x:t+70,y:a,\"text-anchor\":\"start\",\"font-size\":\"18px\",fill:s,stroke:s})},c.prototype.printShadedBox=function(t,e,i,r,s,n,a){var c=this.paper.rect({x:t,y:e,width:i,height:r,fill:s,stroke:s,\"fill-opacity\":n,\"stroke-opacity\":n});return a&&this.paper.text(a,{x:0,y:e+7,\"text-anchor\":\"start\",\"font-size\":\"14px\",fill:\"rgba(0,0,255,.4)\",stroke:\"rgba(0,0,255,.4)\"}),c},c.prototype.printVerticalLine=function(t,e,i){var r=n(\"M %f %f L %f %f L %f %f L %f %f z\",t-.35,e,t-.35,i,t+.35,e,t+.35,i);this.paper.pathToBack({path:r,stroke:\"none\",fill:\"#00aaaa\",class:this.addClasses(\"staff\")}),r=n(\"M %f %f L %f %f L %f %f L %f %f z\",t-20,e,t-20,e+3,t,e,t,e+3),this.paper.pathToBack({path:r,stroke:\"none\",fill:\"#00aaaa\",class:this.addClasses(\"staff\")}),r=n(\"M %f %f L %f %f L %f %f L %f %f z\",t+20,i,t+20,i+3,t,i,t,i+3),this.paper.pathToBack({path:r,stroke:\"none\",fill:\"#00aaaa\",class:this.addClasses(\"staff\")})},c.prototype.addToRegression=function(t){var e=t.getBBox(),i=t.type+\" \"+e.toString()+\" \",r=[];for(var s in t.attrs)t.attrs.hasOwnProperty(s)&&(\"class\"===s?i=t.attrs[s]+\" \"+i:r.push(s+\": \"+t.attrs[s]));r.sort(),i+=\"{ \"+r.join(\" \")+\" }\",this.regressionLines.push(i)},t.exports=c},function(t,e,i){\"use strict\";var r=\"http://www.w3.org/2000/svg\";function s(t){this.svg=n(),t.appendChild(this.svg)}function n(){var t=document.createElementNS(r,\"svg\");return t.setAttributeNS(\"http://www.w3.org/2000/xmlns/\",\"xmlns:xlink\",\"http://www.w3.org/1999/xlink\"),t.setAttribute(\"role\",\"img\"),t}s.prototype.clear=function(){if(this.svg){var t=this.svg.parentNode;this.svg=n(),t&&(t.innerHTML=\"\",t.appendChild(this.svg))}},s.prototype.setTitle=function(t){var e=document.createElement(\"title\"),i=document.createTextNode(t);e.appendChild(i),this.svg.insertBefore(e,this.svg.firstChild)},s.prototype.setResponsiveWidth=function(t,e){if(this.svg.setAttribute(\"viewBox\",\"0 0 \"+t+\" \"+e),this.svg.setAttribute(\"preserveAspectRatio\",\"xMinYMin meet\"),this.svg.removeAttribute(\"height\"),this.svg.removeAttribute(\"width\"),this.svg.style.display=\"inline-block\",this.svg.style.position=\"absolute\",this.svg.style.top=\"0\",this.svg.style.left=\"0\",this.svg.parentNode){var i=this.svg.parentNode.getAttribute(\"class\");i?i.indexOf(\"abcjs-container\")<0&&this.svg.parentNode.setAttribute(\"class\",i+\" abcjs-container\"):this.svg.parentNode.setAttribute(\"class\",\"abcjs-container\"),this.svg.parentNode.style.display=\"inline-block\",this.svg.parentNode.style.position=\"relative\",this.svg.parentNode.style.width=\"100%\";var r=e/t*100;this.svg.parentNode.style[\"padding-bottom\"]=r+\"%\",this.svg.parentNode.style[\"vertical-align\"]=\"middle\",this.svg.parentNode.style.overflow=\"hidden\"}},s.prototype.setSize=function(t,e){this.svg.setAttribute(\"width\",t),this.svg.setAttribute(\"height\",e)},s.prototype.setScale=function(t){1!==t?(this.svg.style.transform=\"scale(\"+t+\",\"+t+\")\",this.svg.style[\"-ms-transform\"]=\"scale(\"+t+\",\"+t+\")\",this.svg.style[\"-webkit-transform\"]=\"scale(\"+t+\",\"+t+\")\",this.svg.style[\"transform-origin\"]=\"0 0\",this.svg.style[\"-ms-transform-origin-x\"]=\"0\",this.svg.style[\"-ms-transform-origin-y\"]=\"0\",this.svg.style[\"-webkit-transform-origin-x\"]=\"0\",this.svg.style[\"-webkit-transform-origin-y\"]=\"0\"):(this.svg.style.transform=\"\",this.svg.style[\"-ms-transform\"]=\"\",this.svg.style[\"-webkit-transform\"]=\"\")},s.prototype.setParentStyles=function(t){for(var e in t)t.hasOwnProperty(e)&&this.svg.parentNode&&(this.svg.parentNode.style[e]=t[e])},s.prototype.rect=function(t){var e=document.createElementNS(r,\"rect\");for(var i in t){if(t.hasOwnProperty(i))(\"\"+t[i]).indexOf(\"NaN\"),e.setAttributeNS(null,i,t[i])}return this.append(e),e},s.prototype.text=function(t,e){var i=document.createElementNS(r,\"text\");for(var s in e)e.hasOwnProperty(s)&&i.setAttribute(s,e[s]);for(var n=(\"\"+t).split(\"\\n\"),a=0;a<n.length;a++){var c=document.createElementNS(r,\"tspan\");c.textContent=n[a],c.setAttribute(\"x\",e.x?e.x:0),0!==a&&c.setAttribute(\"dy\",\"1.2em\"),i.appendChild(c)}return this.append(i),i},s.prototype.getTextSize=function(t,e){var i=this.text(t,e),r=i.getBBox();return r=isNaN(r.height)?{width:0,height:0}:{width:r.width,height:r.height},this.currentGroup?this.currentGroup.removeChild(i):this.svg.removeChild(i),r},s.prototype.openGroup=function(t){t=t||{};var e=document.createElementNS(r,\"g\");return t.prepend?this.svg.insertBefore(e,this.svg.firstChild):this.svg.appendChild(e),this.currentGroup=e,e},s.prototype.closeGroup=function(){var t=this.currentGroup;return this.currentGroup=null,t},s.prototype.path=function(t){var e=document.createElementNS(r,\"path\");for(var i in t)t.hasOwnProperty(i)&&(\"path\"===i?e.setAttributeNS(null,\"d\",t.path):e.setAttributeNS(null,i,t[i]));return this.append(e),e},s.prototype.pathToBack=function(t){var e=document.createElementNS(r,\"path\");for(var i in t)t.hasOwnProperty(i)&&(\"path\"===i?e.setAttributeNS(null,\"d\",t.path):e.setAttributeNS(null,i,t[i]));return this.prepend(e),e},s.prototype.append=function(t){this.currentGroup?this.currentGroup.appendChild(t):this.svg.appendChild(t)},s.prototype.prepend=function(t){this.currentGroup?this.currentGroup.appendChild(t):this.svg.insertBefore(t,this.svg.firstChild)},s.prototype.setAttributeOnElement=function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttributeNS(null,i,e[i])},t.exports=s},function(t,e,i){\"use strict\";var r=i(6).TuneBook,s=i(0),n=i(7),a=i(40),c=i(13);if(\"function\"!=typeof window.CustomEvent){var o=function(t,e){e=e||{bubbles:!1,cancelable:!1,detail:void 0};var i=document.createEvent(\"CustomEvent\");return i.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),i};o.prototype=window.Event.prototype,window.CustomEvent=o}var h=function(t){this.textarea=document.getElementById(t),this.initialText=this.textarea.value,this.isDragging=!1};h.prototype.addSelectionListener=function(t){this.textarea.onmousemove=function(e){this.isDragging&&t.fireSelectionChanged()}},h.prototype.addChangeListener=function(t){this.changelistener=t,this.textarea.onkeyup=function(){t.fireChanged()},this.textarea.onmousedown=function(){this.isDragging=!0,t.fireSelectionChanged()},this.textarea.onmouseup=function(){this.isDragging=!1,t.fireChanged()},this.textarea.onchange=function(){t.fireChanged()}},h.prototype.getSelection=function(){return{start:this.textarea.selectionStart,end:this.textarea.selectionEnd}},h.prototype.setSelection=function(t,e){if(this.textarea.setSelectionRange)this.textarea.setSelectionRange(t,e);else if(this.textarea.createTextRange){var i=this.textarea.createTextRange();i.collapse(!0),i.moveEnd(\"character\",e),i.moveStart(\"character\",t),i.select()}this.textarea.focus()},h.prototype.getString=function(){return this.textarea.value},h.prototype.setString=function(t){this.textarea.value=t,this.initialText=this.getString(),this.changelistener&&this.changelistener.fireChanged()},h.prototype.getElem=function(){return this.textarea};var l=function(t,e){var i;if(this.abcjsParams={},e.abcjsParams)for(i in e.abcjsParams)e.abcjsParams.hasOwnProperty(i)&&(this.abcjsParams[i]=e.abcjsParams[i]);if(e.midi_options)for(i in e.midi_options)e.midi_options.hasOwnProperty(i)&&(this.abcjsParams[i]=e.midi_options[i]);if(e.parser_options)for(i in e.parser_options)e.parser_options.hasOwnProperty(i)&&(this.abcjsParams[i]=e.parser_options[i]);if(e.render_options)for(i in e.render_options)e.render_options.hasOwnProperty(i)&&(this.abcjsParams[i]=e.render_options[i]);e.indicate_changed&&(this.indicate_changed=!0),this.editarea=\"string\"==typeof t?new h(t):t,this.editarea.addSelectionListener(this),this.editarea.addChangeListener(this),e.canvas_id?this.div=document.getElementById(e.canvas_id):e.paper_id?this.div=document.getElementById(e.paper_id):(this.div=document.createElement(\"DIV\"),this.editarea.getElem().parentNode.insertBefore(this.div,this.editarea.getElem())),e.generate_midi&&(this.generate_midi=e.generate_midi,this.abcjsParams.generateDownload&&(\"string\"==typeof e.midi_download_id?this.downloadMidi=document.getElementById(e.midi_download_id):e.midi_download_id&&(this.downloadMidi=e.midi_download_id)),!1!==this.abcjsParams.generateInline&&(\"string\"==typeof e.midi_id?this.inlineMidi=document.getElementById(e.midi_id):e.midi_id&&(this.inlineMidi=e.midi_id))),(e.generate_warnings||e.warnings_id)&&(e.warnings_id?this.warningsdiv=document.getElementById(e.warnings_id):this.warningsdiv=this.div),this.onchangeCallback=e.onchange,e.gui&&(this.target=document.getElementById(t),this.abcjsParams.editable=!0),this.oldt=\"\",this.bReentry=!1,this.parseABC(),this.modelChanged(),this.addClassName=function(t,e){return function(t,e){var i=t.className;return i.length>0&&(i===e||new RegExp(\"(^|\\\\s)\"+e+\"(\\\\s|$)\").test(i))}(t,e)||(t.className+=(t.className?\" \":\"\")+e),t},this.removeClassName=function(t,e){return t.className=s.strip(t.className.replace(new RegExp(\"(^|\\\\s+)\"+e+\"(\\\\s+|$)\"),\" \")),t},this.setReadOnly=function(t){var e=this.editarea.getElem();t?(e.setAttribute(\"readonly\",\"yes\"),this.addClassName(e,\"abc_textarea_readonly\")):(e.removeAttribute(\"readonly\"),this.removeClassName(e,\"abc_textarea_readonly\"))}};l.prototype.renderTune=function(t,e,i){var s=new r(t),a=n();a.parse(s.tunes[0].abc,e);var o=a.getTune();new c(i,this.abcjsParams).engraveABC(o)},l.prototype.redrawMidi=function(){if(this.generate_midi&&!this.midiPause){var t=new window.CustomEvent(\"generateMidi\",{detail:{tunes:this.tunes,abcjsParams:this.abcjsParams,downloadMidiEl:this.downloadMidi,inlineMidiEl:this.inlineMidi,engravingEl:this.div}});window.dispatchEvent(t)}},l.prototype.modelChanged=function(){if(void 0===this.tunes)return void 0!==this.downloadMidi&&(this.downloadMidi.innerHTML=\"\"),void 0!==this.inlineMidi&&(this.inlineMidi.innerHTML=\"\"),void(this.div.innerHTML=\"\");if(!this.bReentry){if(this.bReentry=!0,this.timerId=null,this.div.innerHTML=\"\",this.engraver_controller=new c(this.div,this.abcjsParams),this.engraver_controller.engraveABC(this.tunes),this.tunes[0].engraver=this.engraver_controller,this.redrawMidi(),this.warningsdiv&&(this.warningsdiv.innerHTML=this.warnings?this.warnings.join(\"<br />\"):\"No errors\"),this.target)new a(this.target,!0).printABC(this.tunes[0]);this.engraver_controller.addSelectListener(this.highlight.bind(this)),this.updateSelection(),this.bReentry=!1}},l.prototype.paramChanged=function(t){if(t)for(var e in t)t.hasOwnProperty(e)&&(this.abcjsParams[e]=t[e]);this.oldt=\"\",this.fireChanged()},l.prototype.parseABC=function(){var t=this.editarea.getString();if(t===this.oldt)return this.updateSelection(),!1;if(this.oldt=t,\"\"===t)return this.tunes=void 0,this.warnings=\"\",!0;var e=new r(t);this.tunes=[],this.startPos=[],this.warnings=[];for(var i=0;i<e.tunes.length;i++){var s=new n;s.parse(e.tunes[i].abc,this.abcjsParams),this.tunes[i]=s.getTune(),this.startPos[i]=e.tunes[i].startPos;for(var a=s.getWarnings()||[],c=0;c<a.length;c++)this.warnings.push(a[c])}return!0},l.prototype.updateSelection=function(){var t=this.editarea.getSelection();try{this.engraver_controller.rangeHighlight(t.start,t.end)}catch(t){}},l.prototype.fireSelectionChanged=function(){this.updateSelection()},l.prototype.setDirtyStyle=function(t){if(void 0!==this.indicate_changed){var e=this.editarea.getElem();t?function(t,e){(function(t,e){var i=t.className;return i.length>0&&(i===e||new RegExp(\"(^|\\\\s)\"+e+\"(\\\\s|$)\").test(i))})(t,e)||(t.className+=(t.className?\" \":\"\")+e)}(e,\"abc_textarea_dirty\"):function(t,e){t.className=s.strip(t.className.replace(new RegExp(\"(^|\\\\s+)\"+e+\"(\\\\s+|$)\"),\" \"))}(e,\"abc_textarea_dirty\")}},l.prototype.fireChanged=function(){if(!this.bIsPaused&&this.parseABC()){var t=this;this.timerId&&clearTimeout(this.timerId),this.timerId=setTimeout(function(){t.modelChanged()},300);var e=this.isDirty();this.wasDirty!==e&&(this.wasDirty=e,this.setDirtyStyle(e)),this.onchangeCallback&&this.onchangeCallback(this)}},l.prototype.setNotDirty=function(){this.editarea.initialText=this.editarea.getString(),this.wasDirty=!1,this.setDirtyStyle(!1)},l.prototype.isDirty=function(){return void 0!==this.indicate_changed&&this.editarea.initialText!==this.editarea.getString()},l.prototype.highlight=function(t,e,i){var r=void 0!==e?this.startPos[e]+e:0;this.editarea.setSelection(r+t.startChar,r+t.endChar)},l.prototype.pause=function(t){this.bIsPaused=t,t||this.fireChanged()},l.prototype.pauseMidi=function(t){this.midiPause=t,t||this.redrawMidi()},t.exports=l},function(t,e,i){\"use strict\";var r=function(t,e){this.elem=t,this.text=\"\",this.l=1/8,this.reposition=e||!1};r.prototype.printString=function(t,e){this.reposition&&e&&(e.startChar=this.text.length),this.text+=t,this.reposition&&e&&(e.endChar=this.text.length)},r.prototype.printNewLine=function(){this.text+=\"\\n\"},r.prototype.printSpace=function(){this.text[this.text.length-1].match(/\\s/)||(this.text+=\" \")},r.prototype.printABC=function(t){this.text=\"\",this.abctune=t,this.printHeader(),this.printBody(),this.elem.value=this.text},r.prototype.printHeader=function(){this.printHeaderLine(\"x\",\"X\",\"1\"),this.printHeaderLine(\"title\",\"T\"),this.printHeaderLine(\"composer\",\"C\"),this.printHeaderLine(\"history\",\"H\"),this.printHeaderLine(\"author\",\"A\"),this.printHeaderLine(\"book\",\"B\"),this.printHeaderLine(\"discography\",\"D\"),this.printHeaderLine(\"url\",\"F\"),this.printHeaderLine(\"group\",\"G\"),this.printHeaderLine(\"instruction\",\"I\"),this.printHeaderLine(\"notes\",\"N\"),this.printHeaderLine(\"origin\",\"O\"),this.printHeaderLine(\"rhythm\",\"R\"),this.printHeaderLine(\"source\",\"S\"),this.printHeaderLine(\"unalignedwords\",\"W\"),this.printHeaderLine(\"transcription\",\"Z\"),this.printHeaderLine(\"NULL\",\"L\",\"1/8\"),this.printHeaderLine(\"NULL\",\"M\",this.getMeterString(this.abctune.lines[0].staff[0].meter)),this.printHeaderLine(\"NULL\",\"K\",this.getKeyString(this.abctune.lines[0].staff[0].key))},r.prototype.getKeyString=function(t){return t.root+t.acc+t.mode},r.prototype.getMeterString=function(t){switch(t.type){case\"cut_time\":return\"C|\";case\"common_time\":return\"C\";case\"specified\":return t.value[0].den?t.value[0].num+\"/\"+t.value[0].den:t.value[0].num}return\"\"},r.prototype.printHeaderLine=function(t,e,i){var r=this.abctune.metaText[t]||i;if(void 0!==r)for(var s=r.split(\"\\n\"),n=0;n<s.length;n++)this.printString(e+\": \"+s[n]),this.printNewLine()},r.prototype.getElem=function(){return this.abcline.length<=this.pos?null:this.abcline[this.pos]},r.prototype.getNextElem=function(){return this.abcline.length<=this.pos+1?null:this.abcline[this.pos+1]},r.prototype.printBody=function(){for(var t=0;t<this.abctune.lines.length;t++){var e=this.abctune.lines[t];e.staff?this.printABCLine(e.staff):e.subtitle&&0!==t||e.text}},r.prototype.printABCLine=function(t){for(this.s=0;this.s<t.length;this.s++)this.printABCStaff(t[this.s])},r.prototype.printABCStaff=function(t){for(this.v=0;this.v<t.voices.length;this.v++)this.printABCVoice(t.voices[this.v])},r.prototype.printABCVoice=function(t){for(this.abcline=t,this.pos=0;this.pos<this.abcline.length;this.pos++)this.printABCElement();this.printNewLine()},r.prototype.printABCElement=function(){var t=this.getElem();switch(t.el_type){case\"note\":this.printBeam();break;case\"bar\":this.printBarLine(t)}},r.prototype.printBeam=function(){if(this.printSpace(),this.getElem().startBeam&&!this.getElem().endBeam)for(;this.getElem()&&(this.printNote(this.getElem()),!this.getElem().endBeam);)this.pos++;else this.printNote(this.getElem());this.printSpace()},r.prototype.printNote=function(t){var e,i=\"\";if(void 0!==t.chord)for(e=0;e<t.chord.length;e++)i+='\"'+t.chord[e].name+'\"';var r={staccato:\".\",upbow:\"u\",downbow:\"v\",roll:\"~\",fermata:\"H\",slide:\"J\",accent:\"L\",mordent:\"M\",pralltriller:\"P\",trill:\"T\",lower:\".\"};if(void 0!==t.decoration)for(e=0;e<t.decoration.length;e++){var s=t.decoration[e];r[s]?i+=r[s]:(i+=\"!\",i+=s,i+=\"!\")}if(void 0!==t.gracenotes){for(i+=\"{\",e=0;e<t.gracenotes.length;e++)i+=this.getNoteString(t.gracenotes[e]);i+=\"}\"}var n=!1;if(1===t.pitches.length&&t.pitches[0].startSlur&&(n=!0,i+=this.multiplyString(\"(\",t.pitches[0].startSlur.length)),t.startSlur&&(i+=this.multiplyString(\"(\",t.startSlur.length)),(1===t.pitches.length&&t.pitches[0].endSlur||t.endSlur)&&(n=!0),t.startTriplet&&(i+=\"(3\"),t.pitches){for(t.pitches.length>1&&(i+=\"[\"),e=0;e<t.pitches.length;e++)t.pitches[e].duration=t.duration,i+=this.getNoteString(t.pitches[e],n);t.pitches.length>1&&(i+=\"]\")}1===t.pitches.length&&t.pitches[0].endSlur&&(i+=this.multiplyString(\")\",t.pitches[0].endSlur.length)),t.endSlur&&(i+=this.multiplyString(\")\",t.endSlur.length)),this.printString(i,t)},r.prototype.getNoteString=function(t,e){var i=\"\";!e&&t.startSlur&&(i+=\"(\");var r=\"\";switch(t.accidental){case\"quartersharp\":r=\"^/\";break;case\"dblsharp\":r=\"^^\";break;case\"sharp\":r=\"^\";break;case\"quarterflat\":r=\"_/\";break;case\"flat\":r=\"_\";break;case\"dblflat\":r=\"__\";break;case\"natural\":r=\"=\"}i+=r;var s=[\"C\",\"D\",\"E\",\"F\",\"G\",\"A\",\"B\"][this.extractNote(t.pitch)],n=this.extractOctave(t.pitch);if(n>0)for(s=s.toLowerCase(),n--;n>0;)s+=\"'\",n--;else for(;n<0;)s+=\",\",n++;return i+=s,t.duration&&(i+=this.getDurationString(t.duration)),!e&&t.endSlur&&(i+=\")\"),t.startTie&&(i+=\"-\"),i},r.prototype.getDurationString=function(t){if(t/this.l>1)return t/this.l;var e=\"\";return this.l/t>1&&(e+=\"/\",this.l/t>2&&(e+=this.l/t)),e},r.prototype.extractNote=function(t){var e=t%7;return e<0&&(e+=7),e},r.prototype.extractOctave=function(t){return Math.floor(t/7)},r.prototype.printBarLine=function(t){var e=\"\";switch(t.type){case\"bar_thin\":e+=\"|\";break;case\"bar_thin_thick\":e+=\"|]\";break;case\"bar_thin_thin\":e+=\"||\";break;case\"bar_thick_thin\":e+=\"[|\";break;case\"bar_dbl_repeat\":e+=\":||:\";break;case\"bar_left_repeat\":e+=\"|:\";break;case\"bar_right_repeat\":e+=\":|\";break;case\"bar_invisible\":e+=\"\"}this.printString(e,t)},r.prototype.multiplyString=function(t,e){for(var i=\"\";e>0;e--)i+=t;return i},t.exports=r}]);"
  },
  {
    "path": "static/js/pdfjs/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "static/js/pdfjs/build/pdf.js",
    "content": "/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = root.pdfjsLib = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__w_pdfjs_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__w_pdfjs_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__w_pdfjs_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__w_pdfjs_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__w_pdfjs_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__w_pdfjs_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__w_pdfjs_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar pdfjsVersion = '2.0.943';\nvar pdfjsBuild = 'dc98bf76';\nvar pdfjsSharedUtil = __w_pdfjs_require__(1);\nvar pdfjsDisplayAPI = __w_pdfjs_require__(129);\nvar pdfjsDisplayTextLayer = __w_pdfjs_require__(145);\nvar pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(146);\nvar pdfjsDisplayDOMUtils = __w_pdfjs_require__(130);\nvar pdfjsDisplaySVG = __w_pdfjs_require__(147);\nvar pdfjsDisplayWorkerOptions = __w_pdfjs_require__(135);\nvar pdfjsDisplayAPICompatibility = __w_pdfjs_require__(132);\n{\n  var isNodeJS = __w_pdfjs_require__(4);\n  if (isNodeJS()) {\n    var PDFNodeStream = __w_pdfjs_require__(148).PDFNodeStream;\n    pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {\n      return new PDFNodeStream(params);\n    });\n  } else if (typeof Response !== 'undefined' && 'body' in Response.prototype && typeof ReadableStream !== 'undefined') {\n    var PDFFetchStream = __w_pdfjs_require__(151).PDFFetchStream;\n    pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {\n      return new PDFFetchStream(params);\n    });\n  } else {\n    var PDFNetworkStream = __w_pdfjs_require__(152).PDFNetworkStream;\n    pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {\n      return new PDFNetworkStream(params);\n    });\n  }\n}\nexports.build = pdfjsDisplayAPI.build;\nexports.version = pdfjsDisplayAPI.version;\nexports.getDocument = pdfjsDisplayAPI.getDocument;\nexports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;\nexports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;\nexports.PDFWorker = pdfjsDisplayAPI.PDFWorker;\nexports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;\nexports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;\nexports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;\nexports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;\nexports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;\nexports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;\nexports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;\nexports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;\nexports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType;\nexports.PermissionFlag = pdfjsSharedUtil.PermissionFlag;\nexports.UnexpectedResponseException = pdfjsSharedUtil.UnexpectedResponseException;\nexports.OPS = pdfjsSharedUtil.OPS;\nexports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel;\nexports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;\nexports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;\nexports.createObjectURL = pdfjsSharedUtil.createObjectURL;\nexports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;\nexports.shadow = pdfjsSharedUtil.shadow;\nexports.Util = pdfjsSharedUtil.Util;\nexports.ReadableStream = pdfjsSharedUtil.ReadableStream;\nexports.URL = pdfjsSharedUtil.URL;\nexports.RenderingCancelledException = pdfjsDisplayDOMUtils.RenderingCancelledException;\nexports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl;\nexports.LinkTarget = pdfjsDisplayDOMUtils.LinkTarget;\nexports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes;\nexports.loadScript = pdfjsDisplayDOMUtils.loadScript;\nexports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions;\nexports.apiCompatibilityParams = pdfjsDisplayAPICompatibility.apiCompatibilityParams;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.URL = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isSpace = exports.isString = exports.isNum = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.info = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.getInheritableProperty = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.toRomanNumerals = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n__w_pdfjs_require__(2);\n\nvar _streams_polyfill = __w_pdfjs_require__(125);\n\nvar _url_polyfill = __w_pdfjs_require__(127);\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nvar NativeImageDecoding = {\n  NONE: 'none',\n  DECODE: 'decode',\n  DISPLAY: 'display'\n};\nvar PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800\n};\nvar TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4\n};\nvar ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3\n};\nvar AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26\n};\nvar AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200\n};\nvar AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000\n};\nvar AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5\n};\nvar StreamType = {\n  UNKNOWN: 0,\n  FLATE: 1,\n  LZW: 2,\n  DCT: 3,\n  JPX: 4,\n  JBIG: 5,\n  A85: 6,\n  AHX: 7,\n  CCF: 8,\n  RL: 9\n};\nvar FontType = {\n  UNKNOWN: 0,\n  TYPE1: 1,\n  TYPE1C: 2,\n  CIDFONTTYPE0: 3,\n  CIDFONTTYPE0C: 4,\n  TRUETYPE: 5,\n  CIDFONTTYPE2: 6,\n  TYPE3: 7,\n  OPENTYPE: 8,\n  TYPE0: 9,\n  MMTYPE1: 10\n};\nvar VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5\n};\nvar CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2\n};\nvar OPS = {\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91\n};\nvar UNSUPPORTED_FEATURES = {\n  unknown: 'unknown',\n  forms: 'forms',\n  javaScript: 'javaScript',\n  smask: 'smask',\n  shadingPattern: 'shadingPattern',\n  font: 'font'\n};\nvar PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2\n};\nvar verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\nfunction getVerbosityLevel() {\n  return verbosity;\n}\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log('Info: ' + msg);\n  }\n}\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log('Warning: ' + msg);\n  }\n}\nfunction deprecated(details) {\n  console.log('Deprecated API usage: ' + details);\n}\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\nfunction isSameOrigin(baseUrl, otherUrl) {\n  try {\n    var base = new _url_polyfill.URL(baseUrl);\n    if (!base.origin || base.origin === 'null') {\n      return false;\n    }\n  } catch (e) {\n    return false;\n  }\n  var other = new _url_polyfill.URL(otherUrl, base);\n  return base.origin === other.origin;\n}\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n  switch (url.protocol) {\n    case 'http:':\n    case 'https:':\n    case 'ftp:':\n    case 'mailto:':\n    case 'tel:':\n      return true;\n    default:\n      return false;\n  }\n}\nfunction createValidAbsoluteUrl(url, baseUrl) {\n  if (!url) {\n    return null;\n  }\n  try {\n    var absoluteUrl = baseUrl ? new _url_polyfill.URL(url, baseUrl) : new _url_polyfill.URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {}\n  return null;\n}\nfunction shadow(obj, prop, value) {\n  Object.defineProperty(obj, prop, {\n    value: value,\n    enumerable: true,\n    configurable: true,\n    writable: false\n  });\n  return value;\n}\nfunction getLookupTableFactory(initializer) {\n  var lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\nvar PasswordException = function PasswordExceptionClosure() {\n  function PasswordException(msg, code) {\n    this.name = 'PasswordException';\n    this.message = msg;\n    this.code = code;\n  }\n  PasswordException.prototype = new Error();\n  PasswordException.constructor = PasswordException;\n  return PasswordException;\n}();\nvar UnknownErrorException = function UnknownErrorExceptionClosure() {\n  function UnknownErrorException(msg, details) {\n    this.name = 'UnknownErrorException';\n    this.message = msg;\n    this.details = details;\n  }\n  UnknownErrorException.prototype = new Error();\n  UnknownErrorException.constructor = UnknownErrorException;\n  return UnknownErrorException;\n}();\nvar InvalidPDFException = function InvalidPDFExceptionClosure() {\n  function InvalidPDFException(msg) {\n    this.name = 'InvalidPDFException';\n    this.message = msg;\n  }\n  InvalidPDFException.prototype = new Error();\n  InvalidPDFException.constructor = InvalidPDFException;\n  return InvalidPDFException;\n}();\nvar MissingPDFException = function MissingPDFExceptionClosure() {\n  function MissingPDFException(msg) {\n    this.name = 'MissingPDFException';\n    this.message = msg;\n  }\n  MissingPDFException.prototype = new Error();\n  MissingPDFException.constructor = MissingPDFException;\n  return MissingPDFException;\n}();\nvar UnexpectedResponseException = function UnexpectedResponseExceptionClosure() {\n  function UnexpectedResponseException(msg, status) {\n    this.name = 'UnexpectedResponseException';\n    this.message = msg;\n    this.status = status;\n  }\n  UnexpectedResponseException.prototype = new Error();\n  UnexpectedResponseException.constructor = UnexpectedResponseException;\n  return UnexpectedResponseException;\n}();\nvar MissingDataException = function MissingDataExceptionClosure() {\n  function MissingDataException(begin, end) {\n    this.begin = begin;\n    this.end = end;\n    this.message = 'Missing data [' + begin + ', ' + end + ')';\n  }\n  MissingDataException.prototype = new Error();\n  MissingDataException.prototype.name = 'MissingDataException';\n  MissingDataException.constructor = MissingDataException;\n  return MissingDataException;\n}();\nvar XRefParseException = function XRefParseExceptionClosure() {\n  function XRefParseException(msg) {\n    this.message = msg;\n  }\n  XRefParseException.prototype = new Error();\n  XRefParseException.prototype.name = 'XRefParseException';\n  XRefParseException.constructor = XRefParseException;\n  return XRefParseException;\n}();\nvar FormatError = function FormatErrorClosure() {\n  function FormatError(msg) {\n    this.message = msg;\n  }\n  FormatError.prototype = new Error();\n  FormatError.prototype.name = 'FormatError';\n  FormatError.constructor = FormatError;\n  return FormatError;\n}();\nvar AbortException = function AbortExceptionClosure() {\n  function AbortException(msg) {\n    this.name = 'AbortException';\n    this.message = msg;\n  }\n  AbortException.prototype = new Error();\n  AbortException.constructor = AbortException;\n  return AbortException;\n}();\nvar NullCharactersRegExp = /\\x00/g;\nfunction removeNullCharacters(str) {\n  if (typeof str !== 'string') {\n    warn('The argument for removeNullCharacters must be a string.');\n    return str;\n  }\n  return str.replace(NullCharactersRegExp, '');\n}\nfunction bytesToString(bytes) {\n  assert(bytes !== null && (typeof bytes === 'undefined' ? 'undefined' : _typeof(bytes)) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString');\n  var length = bytes.length;\n  var MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  var strBuf = [];\n  for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    var chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join('');\n}\nfunction stringToBytes(str) {\n  assert(typeof str === 'string', 'Invalid argument for stringToBytes');\n  var length = str.length;\n  var bytes = new Uint8Array(length);\n  for (var i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xFF;\n  }\n  return bytes;\n}\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  assert(arr.byteLength !== undefined);\n  return arr.byteLength;\n}\nfunction arraysToBytes(arr) {\n  if (arr.length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n  var resultLength = 0;\n  var i,\n      ii = arr.length;\n  var item, itemLength;\n  for (i = 0; i < ii; i++) {\n    item = arr[i];\n    itemLength = arrayByteLength(item);\n    resultLength += itemLength;\n  }\n  var pos = 0;\n  var data = new Uint8Array(resultLength);\n  for (i = 0; i < ii; i++) {\n    item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === 'string') {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\nfunction string32(value) {\n  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\nfunction readInt8(data, start) {\n  return data[start] << 24 >> 24;\n}\nfunction readUint16(data, offset) {\n  return data[offset] << 8 | data[offset + 1];\n}\nfunction readUint32(data, offset) {\n  return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;\n}\nfunction isLittleEndian() {\n  var buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\nfunction isEvalSupported() {\n  try {\n    new Function('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nfunction getInheritableProperty(_ref) {\n  var dict = _ref.dict,\n      key = _ref.key,\n      _ref$getArray = _ref.getArray,\n      getArray = _ref$getArray === undefined ? false : _ref$getArray,\n      _ref$stopWhenFound = _ref.stopWhenFound,\n      stopWhenFound = _ref$stopWhenFound === undefined ? true : _ref$stopWhenFound;\n\n  var LOOP_LIMIT = 100;\n  var loopCount = 0;\n  var values = void 0;\n  while (dict) {\n    var value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      if (!values) {\n        values = [];\n      }\n      values.push(value);\n    }\n    if (++loopCount > LOOP_LIMIT) {\n      warn('getInheritableProperty: maximum loop count exceeded for \"' + key + '\"');\n      break;\n    }\n    dict = dict.get('Parent');\n  }\n  return values;\n}\nvar Util = function UtilClosure() {\n  function Util() {}\n  var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n  Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n    rgbBuf[1] = r;\n    rgbBuf[3] = g;\n    rgbBuf[5] = b;\n    return rgbBuf.join('');\n  };\n  Util.transform = function Util_transform(m1, m2) {\n    return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n  };\n  Util.applyTransform = function Util_applyTransform(p, m) {\n    var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  };\n  Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n    var d = m[0] * m[3] - m[1] * m[2];\n    var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  };\n  Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) {\n    var p1 = Util.applyTransform(r, m);\n    var p2 = Util.applyTransform(r.slice(2, 4), m);\n    var p3 = Util.applyTransform([r[0], r[3]], m);\n    var p4 = Util.applyTransform([r[2], r[1]], m);\n    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n  };\n  Util.inverseTransform = function Util_inverseTransform(m) {\n    var d = m[0] * m[3] - m[1] * m[2];\n    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n  };\n  Util.apply3dTransform = function Util_apply3dTransform(m, v) {\n    return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n  };\n  Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) {\n    var transpose = [m[0], m[2], m[1], m[3]];\n    var a = m[0] * transpose[0] + m[1] * transpose[2];\n    var b = m[0] * transpose[1] + m[1] * transpose[3];\n    var c = m[2] * transpose[0] + m[3] * transpose[2];\n    var d = m[2] * transpose[1] + m[3] * transpose[3];\n    var first = (a + d) / 2;\n    var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n    var sx = first + second || 1;\n    var sy = first - second || 1;\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  };\n  Util.normalizeRect = function Util_normalizeRect(rect) {\n    var r = rect.slice(0);\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  };\n  Util.intersect = function Util_intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n    var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n        orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n        result = [];\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n    if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return false;\n    }\n    if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return false;\n    }\n    return result;\n  };\n  return Util;\n}();\nvar ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'];\nfunction toRomanNumerals(number) {\n  var lowerCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  assert(Number.isInteger(number) && number > 0, 'The number should be a positive integer.');\n  var pos = void 0,\n      romanBuf = [];\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push('M');\n  }\n  pos = number / 100 | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  pos = number / 10 | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n  var romanStr = romanBuf.join('');\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\nvar PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];\nfunction stringToPDFString(str) {\n  var i,\n      n = str.length,\n      strBuf = [];\n  if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n    for (i = 2; i < n; i += 2) {\n      strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));\n    }\n  } else {\n    for (i = 0; i < n; ++i) {\n      var code = PDFStringTranslateTable[str.charCodeAt(i)];\n      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n    }\n  }\n  return strBuf.join('');\n}\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\nfunction isEmptyObj(obj) {\n  for (var key in obj) {\n    return false;\n  }\n  return true;\n}\nfunction isBool(v) {\n  return typeof v === 'boolean';\n}\nfunction isNum(v) {\n  return typeof v === 'number';\n}\nfunction isString(v) {\n  return typeof v === 'string';\n}\nfunction isArrayBuffer(v) {\n  return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.byteLength !== undefined;\n}\nfunction isSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A;\n}\nfunction createPromiseCapability() {\n  var capability = {};\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = resolve;\n    capability.reject = reject;\n  });\n  return capability;\n}\nvar createObjectURL = function createObjectURLClosure() {\n  var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n  return function createObjectURL(data, contentType) {\n    var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n    if (!forceDataSchema && _url_polyfill.URL.createObjectURL) {\n      var blob = new Blob([data], { type: contentType });\n      return _url_polyfill.URL.createObjectURL(blob);\n    }\n    var buffer = 'data:' + contentType + ';base64,';\n    for (var i = 0, ii = data.length; i < ii; i += 3) {\n      var b1 = data[i] & 0xFF;\n      var b2 = data[i + 1] & 0xFF;\n      var b3 = data[i + 2] & 0xFF;\n      var d1 = b1 >> 2,\n          d2 = (b1 & 3) << 4 | b2 >> 4;\n      var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64;\n      var d4 = i + 2 < ii ? b3 & 0x3F : 64;\n      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n    }\n    return buffer;\n  };\n}();\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nexports.OPS = OPS;\nexports.VerbosityLevel = VerbosityLevel;\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nexports.AnnotationFlag = AnnotationFlag;\nexports.AnnotationType = AnnotationType;\nexports.FontType = FontType;\nexports.ImageKind = ImageKind;\nexports.CMapCompressionType = CMapCompressionType;\nexports.AbortException = AbortException;\nexports.InvalidPDFException = InvalidPDFException;\nexports.MissingDataException = MissingDataException;\nexports.MissingPDFException = MissingPDFException;\nexports.NativeImageDecoding = NativeImageDecoding;\nexports.PasswordException = PasswordException;\nexports.PasswordResponses = PasswordResponses;\nexports.PermissionFlag = PermissionFlag;\nexports.StreamType = StreamType;\nexports.TextRenderingMode = TextRenderingMode;\nexports.UnexpectedResponseException = UnexpectedResponseException;\nexports.UnknownErrorException = UnknownErrorException;\nexports.Util = Util;\nexports.toRomanNumerals = toRomanNumerals;\nexports.XRefParseException = XRefParseException;\nexports.FormatError = FormatError;\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.createObjectURL = createObjectURL;\nexports.deprecated = deprecated;\nexports.getInheritableProperty = getInheritableProperty;\nexports.getLookupTableFactory = getLookupTableFactory;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isBool = isBool;\nexports.isEmptyObj = isEmptyObj;\nexports.isNum = isNum;\nexports.isString = isString;\nexports.isSpace = isSpace;\nexports.isSameOrigin = isSameOrigin;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.isLittleEndian = isLittleEndian;\nexports.isEvalSupported = isEvalSupported;\nexports.log2 = log2;\nexports.readInt8 = readInt8;\nexports.readUint16 = readUint16;\nexports.readUint32 = readUint32;\nexports.removeNullCharacters = removeNullCharacters;\nexports.ReadableStream = _streams_polyfill.ReadableStream;\nexports.URL = _url_polyfill.URL;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\nexports.unreachable = unreachable;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar globalScope = __w_pdfjs_require__(3);\nif (!globalScope._pdfjsCompatibilityChecked) {\n  globalScope._pdfjsCompatibilityChecked = true;\n  var isNodeJS = __w_pdfjs_require__(4);\n  var hasDOM = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object';\n  (function checkNodeBtoa() {\n    if (globalScope.btoa || !isNodeJS()) {\n      return;\n    }\n    globalScope.btoa = function (chars) {\n      return Buffer.from(chars, 'binary').toString('base64');\n    };\n  })();\n  (function checkNodeAtob() {\n    if (globalScope.atob || !isNodeJS()) {\n      return;\n    }\n    globalScope.atob = function (input) {\n      return Buffer.from(input, 'base64').toString('binary');\n    };\n  })();\n  (function checkCurrentScript() {\n    if (!hasDOM) {\n      return;\n    }\n    if ('currentScript' in document) {\n      return;\n    }\n    Object.defineProperty(document, 'currentScript', {\n      get: function get() {\n        var scripts = document.getElementsByTagName('script');\n        return scripts[scripts.length - 1];\n      },\n\n      enumerable: true,\n      configurable: true\n    });\n  })();\n  (function checkChildNodeRemove() {\n    if (!hasDOM) {\n      return;\n    }\n    if (typeof Element.prototype.remove !== 'undefined') {\n      return;\n    }\n    Element.prototype.remove = function () {\n      if (this.parentNode) {\n        this.parentNode.removeChild(this);\n      }\n    };\n  })();\n  (function checkDOMTokenListToggle() {\n    if (!hasDOM || isNodeJS()) {\n      return;\n    }\n    var div = document.createElement('div');\n    if (div.classList.toggle('test', 0) === false) {\n      return;\n    }\n    var originalDOMTokenListToggle = DOMTokenList.prototype.toggle;\n    DOMTokenList.prototype.toggle = function (token) {\n      if (arguments.length > 1) {\n        var force = !!arguments[1];\n        return this[force ? 'add' : 'remove'](token), force;\n      }\n      return originalDOMTokenListToggle(token);\n    };\n  })();\n  (function checkStringIncludes() {\n    if (String.prototype.includes) {\n      return;\n    }\n    __w_pdfjs_require__(5);\n  })();\n  (function checkArrayIncludes() {\n    if (Array.prototype.includes) {\n      return;\n    }\n    __w_pdfjs_require__(33);\n  })();\n  (function checkObjectAssign() {\n    if (Object.assign) {\n      return;\n    }\n    __w_pdfjs_require__(42);\n  })();\n  (function checkMathLog2() {\n    if (Math.log2) {\n      return;\n    }\n    Math.log2 = __w_pdfjs_require__(52);\n  })();\n  (function checkNumberIsNaN() {\n    if (Number.isNaN) {\n      return;\n    }\n    Number.isNaN = __w_pdfjs_require__(54);\n  })();\n  (function checkNumberIsInteger() {\n    if (Number.isInteger) {\n      return;\n    }\n    Number.isInteger = __w_pdfjs_require__(56);\n  })();\n  (function checkPromise() {\n    if (globalScope.Promise) {\n      return;\n    }\n    globalScope.Promise = __w_pdfjs_require__(59);\n  })();\n  (function checkWeakMap() {\n    if (globalScope.WeakMap) {\n      return;\n    }\n    globalScope.WeakMap = __w_pdfjs_require__(94);\n  })();\n  (function checkStringCodePointAt() {\n    if (String.codePointAt) {\n      return;\n    }\n    String.codePointAt = __w_pdfjs_require__(111);\n  })();\n  (function checkStringFromCodePoint() {\n    if (String.fromCodePoint) {\n      return;\n    }\n    String.fromCodePoint = __w_pdfjs_require__(113);\n  })();\n  (function checkSymbol() {\n    if (globalScope.Symbol) {\n      return;\n    }\n    __w_pdfjs_require__(115);\n  })();\n  (function checkObjectValues() {\n    if (Object.values) {\n      return;\n    }\n    Object.values = __w_pdfjs_require__(122);\n  })();\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nmodule.exports = function isNodeJS() {\n  return (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process + '' === '[object process]';\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(6);\nmodule.exports = __w_pdfjs_require__(9).String.includes;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\nvar context = __w_pdfjs_require__(25);\nvar INCLUDES = 'includes';\n$export($export.P + $export.F * __w_pdfjs_require__(32)(INCLUDES), 'String', {\n  includes: function includes(searchString) {\n    return !!~context(this, searchString, INCLUDES).indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(8);\nvar core = __w_pdfjs_require__(9);\nvar hide = __w_pdfjs_require__(10);\nvar redefine = __w_pdfjs_require__(20);\nvar ctx = __w_pdfjs_require__(23);\nvar PROTOTYPE = 'prototype';\nvar $export = function $export(type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    own = !IS_FORCED && target && target[key] !== undefined;\n    out = (own ? target : source)[key];\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    if (target) redefine(target, key, out, type & $export.U);\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n$export.F = 1;\n$export.G = 2;\n$export.S = 4;\n$export.P = 8;\n$export.B = 16;\n$export.W = 32;\n$export.U = 64;\n$export.R = 128;\nmodule.exports = $export;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif (typeof __g == 'number') __g = global;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar dP = __w_pdfjs_require__(11);\nvar createDesc = __w_pdfjs_require__(19);\nmodule.exports = __w_pdfjs_require__(15) ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar anObject = __w_pdfjs_require__(12);\nvar IE8_DOM_DEFINE = __w_pdfjs_require__(14);\nvar toPrimitive = __w_pdfjs_require__(18);\nvar dP = Object.defineProperty;\nexports.f = __w_pdfjs_require__(15) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) {}\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(13);\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nmodule.exports = function (it) {\n  return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) === 'object' ? it !== null : typeof it === 'function';\n};\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = !__w_pdfjs_require__(15) && !__w_pdfjs_require__(16)(function () {\n  return Object.defineProperty(__w_pdfjs_require__(17)('div'), 'a', {\n    get: function get() {\n      return 7;\n    }\n  }).a != 7;\n});\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = !__w_pdfjs_require__(16)(function () {\n  return Object.defineProperty({}, 'a', {\n    get: function get() {\n      return 7;\n    }\n  }).a != 7;\n});\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(13);\nvar document = __w_pdfjs_require__(8).document;\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(13);\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(8);\nvar hide = __w_pdfjs_require__(10);\nvar has = __w_pdfjs_require__(21);\nvar SRC = __w_pdfjs_require__(22)('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n__w_pdfjs_require__(9).inspectSource = function (it) {\n  return $toString.call(it);\n};\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar aFunction = __w_pdfjs_require__(24);\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1:\n      return function (a) {\n        return fn.call(that, a);\n      };\n    case 2:\n      return function (a, b) {\n        return fn.call(that, a, b);\n      };\n    case 3:\n      return function (a, b, c) {\n        return fn.call(that, a, b, c);\n      };\n  }\n  return function () {\n    return fn.apply(that, arguments);\n  };\n};\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isRegExp = __w_pdfjs_require__(26);\nvar defined = __w_pdfjs_require__(31);\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(13);\nvar cof = __w_pdfjs_require__(27);\nvar MATCH = __w_pdfjs_require__(28)('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar toString = {}.toString;\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar store = __w_pdfjs_require__(29)('wks');\nvar uid = __w_pdfjs_require__(22);\nvar _Symbol = __w_pdfjs_require__(8).Symbol;\nvar USE_SYMBOL = typeof _Symbol == 'function';\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] = USE_SYMBOL && _Symbol[name] || (USE_SYMBOL ? _Symbol : uid)('Symbol.' + name));\n};\n$exports.store = store;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar core = __w_pdfjs_require__(9);\nvar global = __w_pdfjs_require__(8);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __w_pdfjs_require__(30) ? 'pure' : 'global',\n  copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = false;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar MATCH = __w_pdfjs_require__(28)('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) {}\n  }\n  return true;\n};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(34);\nmodule.exports = __w_pdfjs_require__(9).Array.includes;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\nvar $includes = __w_pdfjs_require__(35)(true);\n$export($export.P, 'Array', {\n  includes: function includes(el) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n__w_pdfjs_require__(41)('includes');\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar toIObject = __w_pdfjs_require__(36);\nvar toLength = __w_pdfjs_require__(38);\nvar toAbsoluteIndex = __w_pdfjs_require__(40);\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      if (value != value) return true;\n    } else for (; length > index; index++) {\n      if (IS_INCLUDES || index in O) {\n        if (O[index] === el) return IS_INCLUDES || index || 0;\n      }\n    }return !IS_INCLUDES && -1;\n  };\n};\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar IObject = __w_pdfjs_require__(37);\nvar defined = __w_pdfjs_require__(31);\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar cof = __w_pdfjs_require__(27);\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar toInteger = __w_pdfjs_require__(39);\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0;\n};\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar toInteger = __w_pdfjs_require__(39);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar UNSCOPABLES = __w_pdfjs_require__(28)('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __w_pdfjs_require__(10)(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(43);\nmodule.exports = __w_pdfjs_require__(9).Object.assign;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\n$export($export.S + $export.F, 'Object', { assign: __w_pdfjs_require__(44) });\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar getKeys = __w_pdfjs_require__(45);\nvar gOPS = __w_pdfjs_require__(49);\nvar pIE = __w_pdfjs_require__(50);\nvar toObject = __w_pdfjs_require__(51);\nvar IObject = __w_pdfjs_require__(37);\nvar $assign = Object.assign;\nmodule.exports = !$assign || __w_pdfjs_require__(16)(function () {\n  var A = {};\n  var B = {};\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) {\n    B[k] = k;\n  });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) {\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n    }\n  }\n  return T;\n} : $assign;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $keys = __w_pdfjs_require__(46);\nvar enumBugKeys = __w_pdfjs_require__(48);\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar has = __w_pdfjs_require__(21);\nvar toIObject = __w_pdfjs_require__(36);\nvar arrayIndexOf = __w_pdfjs_require__(35)(false);\nvar IE_PROTO = __w_pdfjs_require__(47)('IE_PROTO');\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) {\n    if (key != IE_PROTO) has(O, key) && result.push(key);\n  }while (names.length > i) {\n    if (has(O, key = names[i++])) {\n      ~arrayIndexOf(result, key) || result.push(key);\n    }\n  }return result;\n};\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar shared = __w_pdfjs_require__(29)('keys');\nvar uid = __w_pdfjs_require__(22);\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(',');\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nexports.f = Object.getOwnPropertySymbols;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nexports.f = {}.propertyIsEnumerable;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar defined = __w_pdfjs_require__(31);\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(53);\nmodule.exports = __w_pdfjs_require__(9).Math.log2;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\n$export($export.S, 'Math', {\n  log2: function log2(x) {\n    return Math.log(x) / Math.LN2;\n  }\n});\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(55);\nmodule.exports = __w_pdfjs_require__(9).Number.isNaN;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\n$export($export.S, 'Number', {\n  isNaN: function isNaN(number) {\n    return number != number;\n  }\n});\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(57);\nmodule.exports = __w_pdfjs_require__(9).Number.isInteger;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\n$export($export.S, 'Number', { isInteger: __w_pdfjs_require__(58) });\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(13);\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(60);\n__w_pdfjs_require__(62);\n__w_pdfjs_require__(72);\n__w_pdfjs_require__(75);\n__w_pdfjs_require__(92);\n__w_pdfjs_require__(93);\nmodule.exports = __w_pdfjs_require__(9).Promise;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar classof = __w_pdfjs_require__(61);\nvar test = {};\ntest[__w_pdfjs_require__(28)('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n  __w_pdfjs_require__(20)(Object.prototype, 'toString', function toString() {\n    return '[object ' + classof(this) + ']';\n  }, true);\n}\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar cof = __w_pdfjs_require__(27);\nvar TAG = __w_pdfjs_require__(28)('toStringTag');\nvar ARG = cof(function () {\n  return arguments;\n}()) == 'Arguments';\nvar tryGet = function tryGet(it, key) {\n  try {\n    return it[key];\n  } catch (e) {}\n};\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T : ARG ? cof(O) : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $at = __w_pdfjs_require__(63)(true);\n__w_pdfjs_require__(64)(String, 'String', function (iterated) {\n  this._t = String(iterated);\n  this._i = 0;\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return {\n    value: undefined,\n    done: true\n  };\n  point = $at(O, index);\n  this._i += point.length;\n  return {\n    value: point,\n    done: false\n  };\n});\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar toInteger = __w_pdfjs_require__(39);\nvar defined = __w_pdfjs_require__(31);\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar LIBRARY = __w_pdfjs_require__(30);\nvar $export = __w_pdfjs_require__(7);\nvar redefine = __w_pdfjs_require__(20);\nvar hide = __w_pdfjs_require__(10);\nvar Iterators = __w_pdfjs_require__(65);\nvar $iterCreate = __w_pdfjs_require__(66);\nvar setToStringTag = __w_pdfjs_require__(70);\nvar getPrototypeOf = __w_pdfjs_require__(71);\nvar ITERATOR = __w_pdfjs_require__(28)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys());\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar returnThis = function returnThis() {\n  return this;\n};\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function getMethod(kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS:\n        return function keys() {\n          return new Constructor(this, kind);\n        };\n      case VALUES:\n        return function values() {\n          return new Constructor(this, kind);\n        };\n    }\n    return function entries() {\n      return new Constructor(this, kind);\n    };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      setToStringTag(IteratorPrototype, TAG, true);\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() {\n      return $native.call(this);\n    };\n  }\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {};\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar create = __w_pdfjs_require__(67);\nvar descriptor = __w_pdfjs_require__(19);\nvar setToStringTag = __w_pdfjs_require__(70);\nvar IteratorPrototype = {};\n__w_pdfjs_require__(10)(IteratorPrototype, __w_pdfjs_require__(28)('iterator'), function () {\n  return this;\n});\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar anObject = __w_pdfjs_require__(12);\nvar dPs = __w_pdfjs_require__(68);\nvar enumBugKeys = __w_pdfjs_require__(48);\nvar IE_PROTO = __w_pdfjs_require__(47)('IE_PROTO');\nvar Empty = function Empty() {};\nvar PROTOTYPE = 'prototype';\nvar _createDict = function createDict() {\n  var iframe = __w_pdfjs_require__(17)('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __w_pdfjs_require__(69).appendChild(iframe);\n  iframe.src = 'javascript:';\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  _createDict = iframeDocument.F;\n  while (i--) {\n    delete _createDict[PROTOTYPE][enumBugKeys[i]];\n  }return _createDict();\n};\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    result[IE_PROTO] = O;\n  } else result = _createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar dP = __w_pdfjs_require__(11);\nvar anObject = __w_pdfjs_require__(12);\nvar getKeys = __w_pdfjs_require__(45);\nmodule.exports = __w_pdfjs_require__(15) ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) {\n    dP.f(O, P = keys[i++], Properties[P]);\n  }return O;\n};\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar document = __w_pdfjs_require__(8).document;\nmodule.exports = document && document.documentElement;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar def = __w_pdfjs_require__(11).f;\nvar has = __w_pdfjs_require__(21);\nvar TAG = __w_pdfjs_require__(28)('toStringTag');\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {\n    configurable: true,\n    value: tag\n  });\n};\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar has = __w_pdfjs_require__(21);\nvar toObject = __w_pdfjs_require__(51);\nvar IE_PROTO = __w_pdfjs_require__(47)('IE_PROTO');\nvar ObjectProto = Object.prototype;\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  }\n  return O instanceof Object ? ObjectProto : null;\n};\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $iterators = __w_pdfjs_require__(73);\nvar getKeys = __w_pdfjs_require__(45);\nvar redefine = __w_pdfjs_require__(20);\nvar global = __w_pdfjs_require__(8);\nvar hide = __w_pdfjs_require__(10);\nvar Iterators = __w_pdfjs_require__(65);\nvar wks = __w_pdfjs_require__(28);\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\nvar DOMIterables = {\n  CSSRuleList: true,\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true,\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true,\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) {\n      if (!proto[key]) redefine(proto, key, $iterators[key], true);\n    }\n  }\n}\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar addToUnscopables = __w_pdfjs_require__(41);\nvar step = __w_pdfjs_require__(74);\nvar Iterators = __w_pdfjs_require__(65);\nvar toIObject = __w_pdfjs_require__(36);\nmodule.exports = __w_pdfjs_require__(64)(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated);\n  this._i = 0;\n  this._k = kind;\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\nIterators.Arguments = Iterators.Array;\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (done, value) {\n  return {\n    value: value,\n    done: !!done\n  };\n};\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar LIBRARY = __w_pdfjs_require__(30);\nvar global = __w_pdfjs_require__(8);\nvar ctx = __w_pdfjs_require__(23);\nvar classof = __w_pdfjs_require__(61);\nvar $export = __w_pdfjs_require__(7);\nvar isObject = __w_pdfjs_require__(13);\nvar aFunction = __w_pdfjs_require__(24);\nvar anInstance = __w_pdfjs_require__(76);\nvar forOf = __w_pdfjs_require__(77);\nvar speciesConstructor = __w_pdfjs_require__(81);\nvar task = __w_pdfjs_require__(82).set;\nvar microtask = __w_pdfjs_require__(84)();\nvar newPromiseCapabilityModule = __w_pdfjs_require__(85);\nvar perform = __w_pdfjs_require__(86);\nvar userAgent = __w_pdfjs_require__(87);\nvar promiseResolve = __w_pdfjs_require__(88);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function empty() {};\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\nvar USE_NATIVE = !!function () {\n  try {\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[__w_pdfjs_require__(28)('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) {}\n}();\nvar isThenable = function isThenable(it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function notify(promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function run(reaction) {\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;else {\n            if (domain) domain.enter();\n            result = handler(value);\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) {\n      run(chain[i++]);\n    }promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function onUnhandled(promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({\n            promise: promise,\n            reason: value\n          });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    }\n    promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function isUnhandled(promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function onHandleUnhandled(promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({\n        promise: promise,\n        reason: promise._v\n      });\n    }\n  });\n};\nvar $reject = function $reject(value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise;\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function $resolve(value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise;\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = {\n          _w: promise,\n          _d: false\n        };\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({\n      _w: promise,\n      _d: false\n    }, e);\n  }\n};\nif (!USE_NATIVE) {\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  Internal = function Promise(executor) {\n    this._c = [];\n    this._a = undefined;\n    this._s = 0;\n    this._d = false;\n    this._v = undefined;\n    this._h = 0;\n    this._n = false;\n  };\n  Internal.prototype = __w_pdfjs_require__(89)($Promise.prototype, {\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    'catch': function _catch(onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function OwnPromiseCapability() {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) {\n    return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);\n  };\n}\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__w_pdfjs_require__(70)($Promise, PROMISE);\n__w_pdfjs_require__(90)(PROMISE);\nWrapper = __w_pdfjs_require__(9)[PROMISE];\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __w_pdfjs_require__(91)(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[$index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  },\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) {\n    throw TypeError(name + ': incorrect invocation!');\n  }\n  return it;\n};\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar ctx = __w_pdfjs_require__(23);\nvar call = __w_pdfjs_require__(78);\nvar isArrayIter = __w_pdfjs_require__(79);\nvar anObject = __w_pdfjs_require__(12);\nvar toLength = __w_pdfjs_require__(38);\nvar getIterFn = __w_pdfjs_require__(80);\nvar BREAK = {};\nvar RETURN = {};\nvar _exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () {\n    return iterable;\n  } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\n_exports.BREAK = BREAK;\n_exports.RETURN = RETURN;\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar anObject = __w_pdfjs_require__(12);\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar Iterators = __w_pdfjs_require__(65);\nvar ITERATOR = __w_pdfjs_require__(28)('iterator');\nvar ArrayProto = Array.prototype;\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar classof = __w_pdfjs_require__(61);\nvar ITERATOR = __w_pdfjs_require__(28)('iterator');\nvar Iterators = __w_pdfjs_require__(65);\nmodule.exports = __w_pdfjs_require__(9).getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];\n};\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar anObject = __w_pdfjs_require__(12);\nvar aFunction = __w_pdfjs_require__(24);\nvar SPECIES = __w_pdfjs_require__(28)('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar ctx = __w_pdfjs_require__(23);\nvar invoke = __w_pdfjs_require__(83);\nvar html = __w_pdfjs_require__(69);\nvar cel = __w_pdfjs_require__(17);\nvar global = __w_pdfjs_require__(8);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function run() {\n  var id = +this;\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function listener(event) {\n  run.call(event.data);\n};\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) {\n      args.push(arguments[i++]);\n    }queue[++counter] = function () {\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  if (__w_pdfjs_require__(27)(process) == 'process') {\n    defer = function defer(id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  } else if (Dispatch && Dispatch.now) {\n    defer = function defer(id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function defer(id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function defer(id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  } else {\n    defer = function defer(id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0:\n      return un ? fn() : fn.call(that);\n    case 1:\n      return un ? fn(args[0]) : fn.call(that, args[0]);\n    case 2:\n      return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]);\n    case 3:\n      return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]);\n    case 4:\n      return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]);\n  }\n  return fn.apply(that, args);\n};\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(8);\nvar macrotask = __w_pdfjs_require__(82).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __w_pdfjs_require__(27)(process) == 'process';\nmodule.exports = function () {\n  var head, last, notify;\n  var flush = function flush() {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();else last = undefined;\n        throw e;\n      }\n    }\n    last = undefined;\n    if (parent) parent.enter();\n  };\n  if (isNode) {\n    notify = function notify() {\n      process.nextTick(flush);\n    };\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true });\n    notify = function notify() {\n      node.data = toggle = !toggle;\n    };\n  } else if (Promise && Promise.resolve) {\n    var promise = Promise.resolve(undefined);\n    notify = function notify() {\n      promise.then(flush);\n    };\n  } else {\n    notify = function notify() {\n      macrotask.call(global, flush);\n    };\n  }\n  return function (fn) {\n    var task = {\n      fn: fn,\n      next: undefined\n    };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    }\n    last = task;\n  };\n};\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar aFunction = __w_pdfjs_require__(24);\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (exec) {\n  try {\n    return {\n      e: false,\n      v: exec()\n    };\n  } catch (e) {\n    return {\n      e: true,\n      v: e\n    };\n  }\n};\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(8);\nvar navigator = global.navigator;\nmodule.exports = navigator && navigator.userAgent || '';\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar anObject = __w_pdfjs_require__(12);\nvar isObject = __w_pdfjs_require__(13);\nvar newPromiseCapability = __w_pdfjs_require__(85);\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar redefine = __w_pdfjs_require__(20);\nmodule.exports = function (target, src, safe) {\n  for (var key in src) {\n    redefine(target, key, src[key], safe);\n  }return target;\n};\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(8);\nvar dP = __w_pdfjs_require__(11);\nvar DESCRIPTORS = __w_pdfjs_require__(15);\nvar SPECIES = __w_pdfjs_require__(28)('species');\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function get() {\n      return this;\n    }\n  });\n};\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar ITERATOR = __w_pdfjs_require__(28)('iterator');\nvar SAFE_CLOSING = false;\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () {\n    SAFE_CLOSING = true;\n  };\n  Array.from(riter, function () {\n    throw 2;\n  });\n} catch (e) {}\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () {\n      return { done: safe = true };\n    };\n    arr[ITERATOR] = function () {\n      return iter;\n    };\n    exec(arr);\n  } catch (e) {}\n  return safe;\n};\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\nvar core = __w_pdfjs_require__(9);\nvar global = __w_pdfjs_require__(8);\nvar speciesConstructor = __w_pdfjs_require__(81);\nvar promiseResolve = __w_pdfjs_require__(88);\n$export($export.P + $export.R, 'Promise', {\n  'finally': function _finally(onFinally) {\n    var C = speciesConstructor(this, core.Promise || global.Promise);\n    var isFunction = typeof onFinally == 'function';\n    return this.then(isFunction ? function (x) {\n      return promiseResolve(C, onFinally()).then(function () {\n        return x;\n      });\n    } : onFinally, isFunction ? function (e) {\n      return promiseResolve(C, onFinally()).then(function () {\n        throw e;\n      });\n    } : onFinally);\n  }\n});\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\nvar newPromiseCapability = __w_pdfjs_require__(85);\nvar perform = __w_pdfjs_require__(86);\n$export($export.S, 'Promise', {\n  'try': function _try(callbackfn) {\n    var promiseCapability = newPromiseCapability.f(this);\n    var result = perform(callbackfn);\n    (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n    return promiseCapability.promise;\n  }\n});\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(60);\n__w_pdfjs_require__(72);\n__w_pdfjs_require__(95);\n__w_pdfjs_require__(107);\n__w_pdfjs_require__(109);\nmodule.exports = __w_pdfjs_require__(9).WeakMap;\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar each = __w_pdfjs_require__(96)(0);\nvar redefine = __w_pdfjs_require__(20);\nvar meta = __w_pdfjs_require__(100);\nvar assign = __w_pdfjs_require__(44);\nvar weak = __w_pdfjs_require__(101);\nvar isObject = __w_pdfjs_require__(13);\nvar fails = __w_pdfjs_require__(16);\nvar validate = __w_pdfjs_require__(102);\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\nvar wrapper = function wrapper(get) {\n  return function WeakMap() {\n    return get(this, arguments.length > 0 ? arguments[0] : undefined);\n  };\n};\nvar methods = {\n  get: function get(key) {\n    if (isObject(key)) {\n      var data = getWeak(key);\n      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n      return data ? data[this._i] : undefined;\n    }\n  },\n  set: function set(key, value) {\n    return weak.def(validate(this, WEAK_MAP), key, value);\n  }\n};\nvar $WeakMap = module.exports = __w_pdfjs_require__(103)(WEAK_MAP, wrapper, methods, weak, true, true);\nif (fails(function () {\n  return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7;\n})) {\n  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n  assign(InternalMap.prototype, methods);\n  meta.NEED = true;\n  each(['delete', 'has', 'get', 'set'], function (key) {\n    var proto = $WeakMap.prototype;\n    var method = proto[key];\n    redefine(proto, key, function (a, b) {\n      if (isObject(a) && !isExtensible(a)) {\n        if (!this._f) this._f = new InternalMap();\n        var result = this._f[key](a, b);\n        return key == 'set' ? this : result;\n      }\n      return method.call(this, a, b);\n    });\n  });\n}\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar ctx = __w_pdfjs_require__(23);\nvar IObject = __w_pdfjs_require__(37);\nvar toObject = __w_pdfjs_require__(51);\nvar toLength = __w_pdfjs_require__(38);\nvar asc = __w_pdfjs_require__(97);\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (; length > index; index++) {\n      if (NO_HOLES || index in self) {\n        val = self[index];\n        res = f(val, index, O);\n        if (TYPE) {\n          if (IS_MAP) result[index] = res;else if (res) switch (TYPE) {\n            case 3:\n              return true;\n            case 5:\n              return val;\n            case 6:\n              return index;\n            case 2:\n              result.push(val);\n          } else if (IS_EVERY) return false;\n        }\n      }\n    }return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar speciesConstructor = __w_pdfjs_require__(98);\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(13);\nvar isArray = __w_pdfjs_require__(99);\nvar SPECIES = __w_pdfjs_require__(28)('species');\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  }\n  return C === undefined ? Array : C;\n};\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar cof = __w_pdfjs_require__(27);\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar META = __w_pdfjs_require__(22)('meta');\nvar isObject = __w_pdfjs_require__(13);\nvar has = __w_pdfjs_require__(21);\nvar setDesc = __w_pdfjs_require__(11).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !__w_pdfjs_require__(16)(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function setMeta(it) {\n  setDesc(it, META, {\n    value: {\n      i: 'O' + ++id,\n      w: {}\n    }\n  });\n};\nvar fastKey = function fastKey(it, create) {\n  if (!isObject(it)) return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    if (!isExtensible(it)) return 'F';\n    if (!create) return 'E';\n    setMeta(it);\n  }\n  return it[META].i;\n};\nvar getWeak = function getWeak(it, create) {\n  if (!has(it, META)) {\n    if (!isExtensible(it)) return true;\n    if (!create) return false;\n    setMeta(it);\n  }\n  return it[META].w;\n};\nvar onFreeze = function onFreeze(it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar redefineAll = __w_pdfjs_require__(89);\nvar getWeak = __w_pdfjs_require__(100).getWeak;\nvar anObject = __w_pdfjs_require__(12);\nvar isObject = __w_pdfjs_require__(13);\nvar anInstance = __w_pdfjs_require__(76);\nvar forOf = __w_pdfjs_require__(77);\nvar createArrayMethod = __w_pdfjs_require__(96);\nvar $has = __w_pdfjs_require__(21);\nvar validate = __w_pdfjs_require__(102);\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\nvar uncaughtFrozenStore = function uncaughtFrozenStore(that) {\n  return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function UncaughtFrozenStore() {\n  this.a = [];\n};\nvar findUncaughtFrozen = function findUncaughtFrozen(store, key) {\n  return arrayFind(store.a, function (it) {\n    return it[0] === key;\n  });\n};\nUncaughtFrozenStore.prototype = {\n  get: function get(key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function has(key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function set(key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;else this.a.push([key, value]);\n  },\n  'delete': function _delete(key) {\n    var index = arrayFindIndex(this.a, function (it) {\n      return it[0] === key;\n    });\n    if (~index) this.a.splice(index, 1);\n    return !!~index;\n  }\n};\nmodule.exports = {\n  getConstructor: function getConstructor(wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;\n      that._i = id++;\n      that._l = undefined;\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      'delete': function _delete(key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n        return data && $has(data, this._i) && delete data[this._i];\n      },\n      has: function has(key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n        return data && $has(data, this._i);\n      }\n    });\n    return C;\n  },\n  def: function def(that, key, value) {\n    var data = getWeak(anObject(key), true);\n    if (data === true) uncaughtFrozenStore(that).set(key, value);else data[that._i] = value;\n    return that;\n  },\n  ufstore: uncaughtFrozenStore\n};\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(13);\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(8);\nvar $export = __w_pdfjs_require__(7);\nvar redefine = __w_pdfjs_require__(20);\nvar redefineAll = __w_pdfjs_require__(89);\nvar meta = __w_pdfjs_require__(100);\nvar forOf = __w_pdfjs_require__(77);\nvar anInstance = __w_pdfjs_require__(76);\nvar isObject = __w_pdfjs_require__(13);\nvar fails = __w_pdfjs_require__(16);\nvar $iterDetect = __w_pdfjs_require__(91);\nvar setToStringTag = __w_pdfjs_require__(70);\nvar inheritIfRequired = __w_pdfjs_require__(104);\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n  var Base = global[NAME];\n  var C = Base;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var proto = C && C.prototype;\n  var O = {};\n  var fixMethod = function fixMethod(KEY) {\n    var fn = proto[KEY];\n    redefine(proto, KEY, KEY == 'delete' ? function (a) {\n      return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n    } : KEY == 'has' ? function has(a) {\n      return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n    } : KEY == 'get' ? function get(a) {\n      return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n    } : KEY == 'add' ? function add(a) {\n      fn.call(this, a === 0 ? 0 : a);\n      return this;\n    } : function set(a, b) {\n      fn.call(this, a === 0 ? 0 : a, b);\n      return this;\n    });\n  };\n  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n    new C().entries().next();\n  }))) {\n    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n    redefineAll(C.prototype, methods);\n    meta.NEED = true;\n  } else {\n    var instance = new C();\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    var THROWS_ON_PRIMITIVES = fails(function () {\n      instance.has(1);\n    });\n    var ACCEPT_ITERABLES = $iterDetect(function (iter) {\n      new C(iter);\n    });\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      var $instance = new C();\n      var index = 5;\n      while (index--) {\n        $instance[ADDER](index, index);\n      }return !$instance.has(-0);\n    });\n    if (!ACCEPT_ITERABLES) {\n      C = wrapper(function (target, iterable) {\n        anInstance(target, C, NAME);\n        var that = inheritIfRequired(new Base(), target, C);\n        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n        return that;\n      });\n      C.prototype = proto;\n      proto.constructor = C;\n    }\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n    if (IS_WEAK && proto.clear) delete proto.clear;\n  }\n  setToStringTag(C, NAME);\n  O[NAME] = C;\n  $export($export.G + $export.W + $export.F * (C != Base), O);\n  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n  return C;\n};\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(13);\nvar setPrototypeOf = __w_pdfjs_require__(105).set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  }\n  return that;\n};\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(13);\nvar anObject = __w_pdfjs_require__(12);\nvar check = function check(O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? function (test, buggy, set) {\n    try {\n      set = __w_pdfjs_require__(23)(Function.call, __w_pdfjs_require__(106).f(Object.prototype, '__proto__').set, 2);\n      set(test, []);\n      buggy = !(test instanceof Array);\n    } catch (e) {\n      buggy = true;\n    }\n    return function setPrototypeOf(O, proto) {\n      check(O, proto);\n      if (buggy) O.__proto__ = proto;else set(O, proto);\n      return O;\n    };\n  }({}, false) : undefined),\n  check: check\n};\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar pIE = __w_pdfjs_require__(50);\nvar createDesc = __w_pdfjs_require__(19);\nvar toIObject = __w_pdfjs_require__(36);\nvar toPrimitive = __w_pdfjs_require__(18);\nvar has = __w_pdfjs_require__(21);\nvar IE8_DOM_DEFINE = __w_pdfjs_require__(14);\nvar gOPD = Object.getOwnPropertyDescriptor;\nexports.f = __w_pdfjs_require__(15) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) {}\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(108)('WeakMap');\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, {\n    of: function of() {\n      var length = arguments.length;\n      var A = new Array(length);\n      while (length--) {\n        A[length] = arguments[length];\n      }return new this(A);\n    }\n  });\n};\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(110)('WeakMap');\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\nvar aFunction = __w_pdfjs_require__(24);\nvar ctx = __w_pdfjs_require__(23);\nvar forOf = __w_pdfjs_require__(77);\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, {\n    from: function from(source) {\n      var mapFn = arguments[1];\n      var mapping, A, n, cb;\n      aFunction(this);\n      mapping = mapFn !== undefined;\n      if (mapping) aFunction(mapFn);\n      if (source == undefined) return new this();\n      A = [];\n      if (mapping) {\n        n = 0;\n        cb = ctx(mapFn, arguments[2], 2);\n        forOf(source, false, function (nextItem) {\n          A.push(cb(nextItem, n++));\n        });\n      } else {\n        forOf(source, false, A.push, A);\n      }\n      return new this(A);\n    }\n  });\n};\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(112);\nmodule.exports = __w_pdfjs_require__(9).String.codePointAt;\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\nvar $at = __w_pdfjs_require__(63)(false);\n$export($export.P, 'String', {\n  codePointAt: function codePointAt(pos) {\n    return $at(this, pos);\n  }\n});\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(114);\nmodule.exports = __w_pdfjs_require__(9).String.fromCodePoint;\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\nvar toAbsoluteIndex = __w_pdfjs_require__(40);\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n  fromCodePoint: function fromCodePoint(x) {\n    var res = [];\n    var aLen = arguments.length;\n    var i = 0;\n    var code;\n    while (aLen > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n      res.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00));\n    }\n    return res.join('');\n  }\n});\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(116);\n__w_pdfjs_require__(60);\nmodule.exports = __w_pdfjs_require__(9).Symbol;\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar global = __w_pdfjs_require__(8);\nvar has = __w_pdfjs_require__(21);\nvar DESCRIPTORS = __w_pdfjs_require__(15);\nvar $export = __w_pdfjs_require__(7);\nvar redefine = __w_pdfjs_require__(20);\nvar META = __w_pdfjs_require__(100).KEY;\nvar $fails = __w_pdfjs_require__(16);\nvar shared = __w_pdfjs_require__(29);\nvar setToStringTag = __w_pdfjs_require__(70);\nvar uid = __w_pdfjs_require__(22);\nvar wks = __w_pdfjs_require__(28);\nvar wksExt = __w_pdfjs_require__(117);\nvar wksDefine = __w_pdfjs_require__(118);\nvar enumKeys = __w_pdfjs_require__(119);\nvar isArray = __w_pdfjs_require__(99);\nvar anObject = __w_pdfjs_require__(12);\nvar isObject = __w_pdfjs_require__(13);\nvar toIObject = __w_pdfjs_require__(36);\nvar toPrimitive = __w_pdfjs_require__(18);\nvar createDesc = __w_pdfjs_require__(19);\nvar _create = __w_pdfjs_require__(67);\nvar gOPNExt = __w_pdfjs_require__(120);\nvar $GOPD = __w_pdfjs_require__(106);\nvar $DP = __w_pdfjs_require__(11);\nvar $keys = __w_pdfjs_require__(45);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function get() {\n      return dP(this, 'a', { value: 7 }).a;\n    }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\nvar wrap = function wrap(tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\nvar isSymbol = USE_NATIVE && _typeof($Symbol.iterator) == 'symbol' ? function (it) {\n  return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    }\n    return setSymbolDesc(it, key, D);\n  }\n  return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) {\n    $defineProperty(it, key = keys[i++], P[key]);\n  }return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  }\n  return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  }\n  return result;\n};\nif (!USE_NATIVE) {\n  $Symbol = function _Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function $set(value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {\n      configurable: true,\n      set: $set\n    });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  __w_pdfjs_require__(121).f = gOPNExt.f = $getOwnPropertyNames;\n  __w_pdfjs_require__(50).f = $propertyIsEnumerable;\n  __w_pdfjs_require__(49).f = $getOwnPropertySymbols;\n  if (DESCRIPTORS && !__w_pdfjs_require__(30)) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\nfor (var es6Symbols = 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) {\n  wks(es6Symbols[j++]);\n}for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) {\n  wksDefine(wellKnownSymbols[k++]);\n}$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  'for': function _for(key) {\n    return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n  },\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) {\n      if (SymbolRegistry[key] === sym) return key;\n    }\n  },\n  useSetter: function useSetter() {\n    setter = true;\n  },\n  useSimple: function useSimple() {\n    setter = false;\n  }\n});\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  create: $create,\n  defineProperty: $defineProperty,\n  defineProperties: $defineProperties,\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  getOwnPropertyNames: $getOwnPropertyNames,\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) {\n      args.push(arguments[i++]);\n    }$replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return;\n    if (!isArray(replacer)) replacer = function replacer(key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __w_pdfjs_require__(10)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\nsetToStringTag($Symbol, 'Symbol');\nsetToStringTag(Math, 'Math', true);\nsetToStringTag(global.JSON, 'JSON', true);\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nexports.f = __w_pdfjs_require__(28);\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(8);\nvar core = __w_pdfjs_require__(9);\nvar LIBRARY = __w_pdfjs_require__(30);\nvar wksExt = __w_pdfjs_require__(117);\nvar defineProperty = __w_pdfjs_require__(11).f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar getKeys = __w_pdfjs_require__(45);\nvar gOPS = __w_pdfjs_require__(49);\nvar pIE = __w_pdfjs_require__(50);\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) {\n      if (isEnum.call(it, key = symbols[i++])) result.push(key);\n    }\n  }\n  return result;\n};\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar toIObject = __w_pdfjs_require__(36);\nvar gOPN = __w_pdfjs_require__(121).f;\nvar toString = {}.toString;\nvar windowNames = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\nvar getWindowNames = function getWindowNames(it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $keys = __w_pdfjs_require__(46);\nvar hiddenKeys = __w_pdfjs_require__(48).concat('length', 'prototype');\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(123);\nmodule.exports = __w_pdfjs_require__(9).Object.values;\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(7);\nvar $values = __w_pdfjs_require__(124)(false);\n$export($export.S, 'Object', {\n  values: function values(it) {\n    return $values(it);\n  }\n});\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar getKeys = __w_pdfjs_require__(45);\nvar toIObject = __w_pdfjs_require__(36);\nvar isEnum = __w_pdfjs_require__(50).f;\nmodule.exports = function (isEntries) {\n  return function (it) {\n    var O = toIObject(it);\n    var keys = getKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      if (isEnum.call(O, key = keys[i++])) {\n        result.push(isEntries ? [key, O[key]] : O[key]);\n      }\n    }return result;\n  };\n};\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isReadableStreamSupported = false;\nif (typeof ReadableStream !== 'undefined') {\n  try {\n    new ReadableStream({\n      start: function start(controller) {\n        controller.close();\n      }\n    });\n    isReadableStreamSupported = true;\n  } catch (e) {}\n}\nif (isReadableStreamSupported) {\n  exports.ReadableStream = ReadableStream;\n} else {\n  exports.ReadableStream = __w_pdfjs_require__(126).ReadableStream;\n}\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof2 = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n(function (e, a) {\n  for (var i in a) {\n    e[i] = a[i];\n  }\n})(exports, function (modules) {\n  var installedModules = {};\n  function __w_pdfjs_require__(moduleId) {\n    if (installedModules[moduleId]) return installedModules[moduleId].exports;\n    var module = installedModules[moduleId] = {\n      i: moduleId,\n      l: false,\n      exports: {}\n    };\n    modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n    module.l = true;\n    return module.exports;\n  }\n  __w_pdfjs_require__.m = modules;\n  __w_pdfjs_require__.c = installedModules;\n  __w_pdfjs_require__.i = function (value) {\n    return value;\n  };\n  __w_pdfjs_require__.d = function (exports, name, getter) {\n    if (!__w_pdfjs_require__.o(exports, name)) {\n      Object.defineProperty(exports, name, {\n        configurable: false,\n        enumerable: true,\n        get: getter\n      });\n    }\n  };\n  __w_pdfjs_require__.n = function (module) {\n    var getter = module && module.__esModule ? function getDefault() {\n      return module['default'];\n    } : function getModuleExports() {\n      return module;\n    };\n    __w_pdfjs_require__.d(getter, 'a', getter);\n    return getter;\n  };\n  __w_pdfjs_require__.o = function (object, property) {\n    return Object.prototype.hasOwnProperty.call(object, property);\n  };\n  __w_pdfjs_require__.p = \"\";\n  return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);\n}([function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n    return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);\n  };\n  var _require = __w_pdfjs_require__(1),\n      assert = _require.assert;\n  function IsPropertyKey(argument) {\n    return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';\n  }\n  exports.typeIsObject = function (x) {\n    return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';\n  };\n  exports.createDataProperty = function (o, p, v) {\n    assert(exports.typeIsObject(o));\n    Object.defineProperty(o, p, {\n      value: v,\n      writable: true,\n      enumerable: true,\n      configurable: true\n    });\n  };\n  exports.createArrayFromList = function (elements) {\n    return elements.slice();\n  };\n  exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {\n    new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n  };\n  exports.CreateIterResultObject = function (value, done) {\n    assert(typeof done === 'boolean');\n    var obj = {};\n    Object.defineProperty(obj, 'value', {\n      value: value,\n      enumerable: true,\n      writable: true,\n      configurable: true\n    });\n    Object.defineProperty(obj, 'done', {\n      value: done,\n      enumerable: true,\n      writable: true,\n      configurable: true\n    });\n    return obj;\n  };\n  exports.IsFiniteNonNegativeNumber = function (v) {\n    if (Number.isNaN(v)) {\n      return false;\n    }\n    if (v === Infinity) {\n      return false;\n    }\n    if (v < 0) {\n      return false;\n    }\n    return true;\n  };\n  function Call(F, V, args) {\n    if (typeof F !== 'function') {\n      throw new TypeError('Argument is not a function');\n    }\n    return Function.prototype.apply.call(F, V, args);\n  }\n  exports.InvokeOrNoop = function (O, P, args) {\n    assert(O !== undefined);\n    assert(IsPropertyKey(P));\n    assert(Array.isArray(args));\n    var method = O[P];\n    if (method === undefined) {\n      return undefined;\n    }\n    return Call(method, O, args);\n  };\n  exports.PromiseInvokeOrNoop = function (O, P, args) {\n    assert(O !== undefined);\n    assert(IsPropertyKey(P));\n    assert(Array.isArray(args));\n    try {\n      return Promise.resolve(exports.InvokeOrNoop(O, P, args));\n    } catch (returnValueE) {\n      return Promise.reject(returnValueE);\n    }\n  };\n  exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {\n    assert(O !== undefined);\n    assert(IsPropertyKey(P));\n    assert(Array.isArray(args));\n    assert(Array.isArray(argsF));\n    var method = void 0;\n    try {\n      method = O[P];\n    } catch (methodE) {\n      return Promise.reject(methodE);\n    }\n    if (method === undefined) {\n      return F.apply(null, argsF);\n    }\n    try {\n      return Promise.resolve(Call(method, O, args));\n    } catch (e) {\n      return Promise.reject(e);\n    }\n  };\n  exports.TransferArrayBuffer = function (O) {\n    return O.slice();\n  };\n  exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {\n    highWaterMark = Number(highWaterMark);\n    if (Number.isNaN(highWaterMark) || highWaterMark < 0) {\n      throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n    }\n    return highWaterMark;\n  };\n  exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {\n    if (size !== undefined && typeof size !== 'function') {\n      throw new TypeError('size property of a queuing strategy must be a function');\n    }\n    highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);\n    return {\n      size: size,\n      highWaterMark: highWaterMark\n    };\n  };\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  function rethrowAssertionErrorRejection(e) {\n    if (e && e.constructor === AssertionError) {\n      setTimeout(function () {\n        throw e;\n      }, 0);\n    }\n  }\n  function AssertionError(message) {\n    this.name = 'AssertionError';\n    this.message = message || '';\n    this.stack = new Error().stack;\n  }\n  AssertionError.prototype = Object.create(Error.prototype);\n  AssertionError.prototype.constructor = AssertionError;\n  function assert(value, message) {\n    if (!value) {\n      throw new AssertionError(message);\n    }\n  }\n  module.exports = {\n    rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,\n    AssertionError: AssertionError,\n    assert: assert\n  };\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var _createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n  var _require = __w_pdfjs_require__(0),\n      InvokeOrNoop = _require.InvokeOrNoop,\n      PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n      ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n      typeIsObject = _require.typeIsObject;\n  var _require2 = __w_pdfjs_require__(1),\n      assert = _require2.assert,\n      rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;\n  var _require3 = __w_pdfjs_require__(3),\n      DequeueValue = _require3.DequeueValue,\n      EnqueueValueWithSize = _require3.EnqueueValueWithSize,\n      PeekQueueValue = _require3.PeekQueueValue,\n      ResetQueue = _require3.ResetQueue;\n  var WritableStream = function () {\n    function WritableStream() {\n      var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          size = _ref.size,\n          _ref$highWaterMark = _ref.highWaterMark,\n          highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;\n      _classCallCheck(this, WritableStream);\n      this._state = 'writable';\n      this._storedError = undefined;\n      this._writer = undefined;\n      this._writableStreamController = undefined;\n      this._writeRequests = [];\n      this._inFlightWriteRequest = undefined;\n      this._closeRequest = undefined;\n      this._inFlightCloseRequest = undefined;\n      this._pendingAbortRequest = undefined;\n      this._backpressure = false;\n      var type = underlyingSink.type;\n      if (type !== undefined) {\n        throw new RangeError('Invalid type is specified');\n      }\n      this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);\n      this._writableStreamController.__startSteps();\n    }\n    _createClass(WritableStream, [{\n      key: 'abort',\n      value: function abort(reason) {\n        if (IsWritableStream(this) === false) {\n          return Promise.reject(streamBrandCheckException('abort'));\n        }\n        if (IsWritableStreamLocked(this) === true) {\n          return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));\n        }\n        return WritableStreamAbort(this, reason);\n      }\n    }, {\n      key: 'getWriter',\n      value: function getWriter() {\n        if (IsWritableStream(this) === false) {\n          throw streamBrandCheckException('getWriter');\n        }\n        return AcquireWritableStreamDefaultWriter(this);\n      }\n    }, {\n      key: 'locked',\n      get: function get() {\n        if (IsWritableStream(this) === false) {\n          throw streamBrandCheckException('locked');\n        }\n        return IsWritableStreamLocked(this);\n      }\n    }]);\n    return WritableStream;\n  }();\n  module.exports = {\n    AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,\n    IsWritableStream: IsWritableStream,\n    IsWritableStreamLocked: IsWritableStreamLocked,\n    WritableStream: WritableStream,\n    WritableStreamAbort: WritableStreamAbort,\n    WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,\n    WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,\n    WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,\n    WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,\n    WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight\n  };\n  function AcquireWritableStreamDefaultWriter(stream) {\n    return new WritableStreamDefaultWriter(stream);\n  }\n  function IsWritableStream(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n      return false;\n    }\n    return true;\n  }\n  function IsWritableStreamLocked(stream) {\n    assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');\n    if (stream._writer === undefined) {\n      return false;\n    }\n    return true;\n  }\n  function WritableStreamAbort(stream, reason) {\n    var state = stream._state;\n    if (state === 'closed') {\n      return Promise.resolve(undefined);\n    }\n    if (state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    var error = new TypeError('Requested to abort');\n    if (stream._pendingAbortRequest !== undefined) {\n      return Promise.reject(error);\n    }\n    assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');\n    var wasAlreadyErroring = false;\n    if (state === 'erroring') {\n      wasAlreadyErroring = true;\n      reason = undefined;\n    }\n    var promise = new Promise(function (resolve, reject) {\n      stream._pendingAbortRequest = {\n        _resolve: resolve,\n        _reject: reject,\n        _reason: reason,\n        _wasAlreadyErroring: wasAlreadyErroring\n      };\n    });\n    if (wasAlreadyErroring === false) {\n      WritableStreamStartErroring(stream, error);\n    }\n    return promise;\n  }\n  function WritableStreamAddWriteRequest(stream) {\n    assert(IsWritableStreamLocked(stream) === true);\n    assert(stream._state === 'writable');\n    var promise = new Promise(function (resolve, reject) {\n      var writeRequest = {\n        _resolve: resolve,\n        _reject: reject\n      };\n      stream._writeRequests.push(writeRequest);\n    });\n    return promise;\n  }\n  function WritableStreamDealWithRejection(stream, error) {\n    var state = stream._state;\n    if (state === 'writable') {\n      WritableStreamStartErroring(stream, error);\n      return;\n    }\n    assert(state === 'erroring');\n    WritableStreamFinishErroring(stream);\n  }\n  function WritableStreamStartErroring(stream, reason) {\n    assert(stream._storedError === undefined, 'stream._storedError === undefined');\n    assert(stream._state === 'writable', 'state must be writable');\n    var controller = stream._writableStreamController;\n    assert(controller !== undefined, 'controller must not be undefined');\n    stream._state = 'erroring';\n    stream._storedError = reason;\n    var writer = stream._writer;\n    if (writer !== undefined) {\n      WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n    }\n    if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n      WritableStreamFinishErroring(stream);\n    }\n  }\n  function WritableStreamFinishErroring(stream) {\n    assert(stream._state === 'erroring', 'stream._state === erroring');\n    assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');\n    stream._state = 'errored';\n    stream._writableStreamController.__errorSteps();\n    var storedError = stream._storedError;\n    for (var i = 0; i < stream._writeRequests.length; i++) {\n      var writeRequest = stream._writeRequests[i];\n      writeRequest._reject(storedError);\n    }\n    stream._writeRequests = [];\n    if (stream._pendingAbortRequest === undefined) {\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n      return;\n    }\n    var abortRequest = stream._pendingAbortRequest;\n    stream._pendingAbortRequest = undefined;\n    if (abortRequest._wasAlreadyErroring === true) {\n      abortRequest._reject(storedError);\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n      return;\n    }\n    var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);\n    promise.then(function () {\n      abortRequest._resolve();\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    }, function (reason) {\n      abortRequest._reject(reason);\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    });\n  }\n  function WritableStreamFinishInFlightWrite(stream) {\n    assert(stream._inFlightWriteRequest !== undefined);\n    stream._inFlightWriteRequest._resolve(undefined);\n    stream._inFlightWriteRequest = undefined;\n  }\n  function WritableStreamFinishInFlightWriteWithError(stream, error) {\n    assert(stream._inFlightWriteRequest !== undefined);\n    stream._inFlightWriteRequest._reject(error);\n    stream._inFlightWriteRequest = undefined;\n    assert(stream._state === 'writable' || stream._state === 'erroring');\n    WritableStreamDealWithRejection(stream, error);\n  }\n  function WritableStreamFinishInFlightClose(stream) {\n    assert(stream._inFlightCloseRequest !== undefined);\n    stream._inFlightCloseRequest._resolve(undefined);\n    stream._inFlightCloseRequest = undefined;\n    var state = stream._state;\n    assert(state === 'writable' || state === 'erroring');\n    if (state === 'erroring') {\n      stream._storedError = undefined;\n      if (stream._pendingAbortRequest !== undefined) {\n        stream._pendingAbortRequest._resolve();\n        stream._pendingAbortRequest = undefined;\n      }\n    }\n    stream._state = 'closed';\n    var writer = stream._writer;\n    if (writer !== undefined) {\n      defaultWriterClosedPromiseResolve(writer);\n    }\n    assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');\n    assert(stream._storedError === undefined, 'stream._storedError === undefined');\n  }\n  function WritableStreamFinishInFlightCloseWithError(stream, error) {\n    assert(stream._inFlightCloseRequest !== undefined);\n    stream._inFlightCloseRequest._reject(error);\n    stream._inFlightCloseRequest = undefined;\n    assert(stream._state === 'writable' || stream._state === 'erroring');\n    if (stream._pendingAbortRequest !== undefined) {\n      stream._pendingAbortRequest._reject(error);\n      stream._pendingAbortRequest = undefined;\n    }\n    WritableStreamDealWithRejection(stream, error);\n  }\n  function WritableStreamCloseQueuedOrInFlight(stream) {\n    if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n      return false;\n    }\n    return true;\n  }\n  function WritableStreamHasOperationMarkedInFlight(stream) {\n    if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n      return false;\n    }\n    return true;\n  }\n  function WritableStreamMarkCloseRequestInFlight(stream) {\n    assert(stream._inFlightCloseRequest === undefined);\n    assert(stream._closeRequest !== undefined);\n    stream._inFlightCloseRequest = stream._closeRequest;\n    stream._closeRequest = undefined;\n  }\n  function WritableStreamMarkFirstWriteRequestInFlight(stream) {\n    assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');\n    assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');\n    stream._inFlightWriteRequest = stream._writeRequests.shift();\n  }\n  function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n    assert(stream._state === 'errored', '_stream_.[[state]] is `\"errored\"`');\n    if (stream._closeRequest !== undefined) {\n      assert(stream._inFlightCloseRequest === undefined);\n      stream._closeRequest._reject(stream._storedError);\n      stream._closeRequest = undefined;\n    }\n    var writer = stream._writer;\n    if (writer !== undefined) {\n      defaultWriterClosedPromiseReject(writer, stream._storedError);\n      writer._closedPromise.catch(function () {});\n    }\n  }\n  function WritableStreamUpdateBackpressure(stream, backpressure) {\n    assert(stream._state === 'writable');\n    assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n    var writer = stream._writer;\n    if (writer !== undefined && backpressure !== stream._backpressure) {\n      if (backpressure === true) {\n        defaultWriterReadyPromiseReset(writer);\n      } else {\n        assert(backpressure === false);\n        defaultWriterReadyPromiseResolve(writer);\n      }\n    }\n    stream._backpressure = backpressure;\n  }\n  var WritableStreamDefaultWriter = function () {\n    function WritableStreamDefaultWriter(stream) {\n      _classCallCheck(this, WritableStreamDefaultWriter);\n      if (IsWritableStream(stream) === false) {\n        throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n      }\n      if (IsWritableStreamLocked(stream) === true) {\n        throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n      }\n      this._ownerWritableStream = stream;\n      stream._writer = this;\n      var state = stream._state;\n      if (state === 'writable') {\n        if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n          defaultWriterReadyPromiseInitialize(this);\n        } else {\n          defaultWriterReadyPromiseInitializeAsResolved(this);\n        }\n        defaultWriterClosedPromiseInitialize(this);\n      } else if (state === 'erroring') {\n        defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n        this._readyPromise.catch(function () {});\n        defaultWriterClosedPromiseInitialize(this);\n      } else if (state === 'closed') {\n        defaultWriterReadyPromiseInitializeAsResolved(this);\n        defaultWriterClosedPromiseInitializeAsResolved(this);\n      } else {\n        assert(state === 'errored', 'state must be errored');\n        var storedError = stream._storedError;\n        defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n        this._readyPromise.catch(function () {});\n        defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n        this._closedPromise.catch(function () {});\n      }\n    }\n    _createClass(WritableStreamDefaultWriter, [{\n      key: 'abort',\n      value: function abort(reason) {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          return Promise.reject(defaultWriterBrandCheckException('abort'));\n        }\n        if (this._ownerWritableStream === undefined) {\n          return Promise.reject(defaultWriterLockException('abort'));\n        }\n        return WritableStreamDefaultWriterAbort(this, reason);\n      }\n    }, {\n      key: 'close',\n      value: function close() {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          return Promise.reject(defaultWriterBrandCheckException('close'));\n        }\n        var stream = this._ownerWritableStream;\n        if (stream === undefined) {\n          return Promise.reject(defaultWriterLockException('close'));\n        }\n        if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n          return Promise.reject(new TypeError('cannot close an already-closing stream'));\n        }\n        return WritableStreamDefaultWriterClose(this);\n      }\n    }, {\n      key: 'releaseLock',\n      value: function releaseLock() {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          throw defaultWriterBrandCheckException('releaseLock');\n        }\n        var stream = this._ownerWritableStream;\n        if (stream === undefined) {\n          return;\n        }\n        assert(stream._writer !== undefined);\n        WritableStreamDefaultWriterRelease(this);\n      }\n    }, {\n      key: 'write',\n      value: function write(chunk) {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          return Promise.reject(defaultWriterBrandCheckException('write'));\n        }\n        if (this._ownerWritableStream === undefined) {\n          return Promise.reject(defaultWriterLockException('write to'));\n        }\n        return WritableStreamDefaultWriterWrite(this, chunk);\n      }\n    }, {\n      key: 'closed',\n      get: function get() {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          return Promise.reject(defaultWriterBrandCheckException('closed'));\n        }\n        return this._closedPromise;\n      }\n    }, {\n      key: 'desiredSize',\n      get: function get() {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          throw defaultWriterBrandCheckException('desiredSize');\n        }\n        if (this._ownerWritableStream === undefined) {\n          throw defaultWriterLockException('desiredSize');\n        }\n        return WritableStreamDefaultWriterGetDesiredSize(this);\n      }\n    }, {\n      key: 'ready',\n      get: function get() {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          return Promise.reject(defaultWriterBrandCheckException('ready'));\n        }\n        return this._readyPromise;\n      }\n    }]);\n    return WritableStreamDefaultWriter;\n  }();\n  function IsWritableStreamDefaultWriter(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n      return false;\n    }\n    return true;\n  }\n  function WritableStreamDefaultWriterAbort(writer, reason) {\n    var stream = writer._ownerWritableStream;\n    assert(stream !== undefined);\n    return WritableStreamAbort(stream, reason);\n  }\n  function WritableStreamDefaultWriterClose(writer) {\n    var stream = writer._ownerWritableStream;\n    assert(stream !== undefined);\n    var state = stream._state;\n    if (state === 'closed' || state === 'errored') {\n      return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));\n    }\n    assert(state === 'writable' || state === 'erroring');\n    assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n    var promise = new Promise(function (resolve, reject) {\n      var closeRequest = {\n        _resolve: resolve,\n        _reject: reject\n      };\n      stream._closeRequest = closeRequest;\n    });\n    if (stream._backpressure === true && state === 'writable') {\n      defaultWriterReadyPromiseResolve(writer);\n    }\n    WritableStreamDefaultControllerClose(stream._writableStreamController);\n    return promise;\n  }\n  function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n    var stream = writer._ownerWritableStream;\n    assert(stream !== undefined);\n    var state = stream._state;\n    if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n      return Promise.resolve();\n    }\n    if (state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    assert(state === 'writable' || state === 'erroring');\n    return WritableStreamDefaultWriterClose(writer);\n  }\n  function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n    if (writer._closedPromiseState === 'pending') {\n      defaultWriterClosedPromiseReject(writer, error);\n    } else {\n      defaultWriterClosedPromiseResetToRejected(writer, error);\n    }\n    writer._closedPromise.catch(function () {});\n  }\n  function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n    if (writer._readyPromiseState === 'pending') {\n      defaultWriterReadyPromiseReject(writer, error);\n    } else {\n      defaultWriterReadyPromiseResetToRejected(writer, error);\n    }\n    writer._readyPromise.catch(function () {});\n  }\n  function WritableStreamDefaultWriterGetDesiredSize(writer) {\n    var stream = writer._ownerWritableStream;\n    var state = stream._state;\n    if (state === 'errored' || state === 'erroring') {\n      return null;\n    }\n    if (state === 'closed') {\n      return 0;\n    }\n    return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n  }\n  function WritableStreamDefaultWriterRelease(writer) {\n    var stream = writer._ownerWritableStream;\n    assert(stream !== undefined);\n    assert(stream._writer === writer);\n    var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n    WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n    WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n    stream._writer = undefined;\n    writer._ownerWritableStream = undefined;\n  }\n  function WritableStreamDefaultWriterWrite(writer, chunk) {\n    var stream = writer._ownerWritableStream;\n    assert(stream !== undefined);\n    var controller = stream._writableStreamController;\n    var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n    if (stream !== writer._ownerWritableStream) {\n      return Promise.reject(defaultWriterLockException('write to'));\n    }\n    var state = stream._state;\n    if (state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n      return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));\n    }\n    if (state === 'erroring') {\n      return Promise.reject(stream._storedError);\n    }\n    assert(state === 'writable');\n    var promise = WritableStreamAddWriteRequest(stream);\n    WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n    return promise;\n  }\n  var WritableStreamDefaultController = function () {\n    function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {\n      _classCallCheck(this, WritableStreamDefaultController);\n      if (IsWritableStream(stream) === false) {\n        throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');\n      }\n      if (stream._writableStreamController !== undefined) {\n        throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');\n      }\n      this._controlledWritableStream = stream;\n      this._underlyingSink = underlyingSink;\n      this._queue = undefined;\n      this._queueTotalSize = undefined;\n      ResetQueue(this);\n      this._started = false;\n      var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n      this._strategySize = normalizedStrategy.size;\n      this._strategyHWM = normalizedStrategy.highWaterMark;\n      var backpressure = WritableStreamDefaultControllerGetBackpressure(this);\n      WritableStreamUpdateBackpressure(stream, backpressure);\n    }\n    _createClass(WritableStreamDefaultController, [{\n      key: 'error',\n      value: function error(e) {\n        if (IsWritableStreamDefaultController(this) === false) {\n          throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n        }\n        var state = this._controlledWritableStream._state;\n        if (state !== 'writable') {\n          return;\n        }\n        WritableStreamDefaultControllerError(this, e);\n      }\n    }, {\n      key: '__abortSteps',\n      value: function __abortSteps(reason) {\n        return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);\n      }\n    }, {\n      key: '__errorSteps',\n      value: function __errorSteps() {\n        ResetQueue(this);\n      }\n    }, {\n      key: '__startSteps',\n      value: function __startSteps() {\n        var _this = this;\n        var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);\n        var stream = this._controlledWritableStream;\n        Promise.resolve(startResult).then(function () {\n          assert(stream._state === 'writable' || stream._state === 'erroring');\n          _this._started = true;\n          WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);\n        }, function (r) {\n          assert(stream._state === 'writable' || stream._state === 'erroring');\n          _this._started = true;\n          WritableStreamDealWithRejection(stream, r);\n        }).catch(rethrowAssertionErrorRejection);\n      }\n    }]);\n    return WritableStreamDefaultController;\n  }();\n  function WritableStreamDefaultControllerClose(controller) {\n    EnqueueValueWithSize(controller, 'close', 0);\n    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n  }\n  function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n    var strategySize = controller._strategySize;\n    if (strategySize === undefined) {\n      return 1;\n    }\n    try {\n      return strategySize(chunk);\n    } catch (chunkSizeE) {\n      WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n      return 1;\n    }\n  }\n  function WritableStreamDefaultControllerGetDesiredSize(controller) {\n    return controller._strategyHWM - controller._queueTotalSize;\n  }\n  function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n    var writeRecord = { chunk: chunk };\n    try {\n      EnqueueValueWithSize(controller, writeRecord, chunkSize);\n    } catch (enqueueE) {\n      WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n      return;\n    }\n    var stream = controller._controlledWritableStream;\n    if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n      var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n      WritableStreamUpdateBackpressure(stream, backpressure);\n    }\n    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n  }\n  function IsWritableStreamDefaultController(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {\n      return false;\n    }\n    return true;\n  }\n  function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n    var stream = controller._controlledWritableStream;\n    if (controller._started === false) {\n      return;\n    }\n    if (stream._inFlightWriteRequest !== undefined) {\n      return;\n    }\n    var state = stream._state;\n    if (state === 'closed' || state === 'errored') {\n      return;\n    }\n    if (state === 'erroring') {\n      WritableStreamFinishErroring(stream);\n      return;\n    }\n    if (controller._queue.length === 0) {\n      return;\n    }\n    var writeRecord = PeekQueueValue(controller);\n    if (writeRecord === 'close') {\n      WritableStreamDefaultControllerProcessClose(controller);\n    } else {\n      WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n    }\n  }\n  function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n    if (controller._controlledWritableStream._state === 'writable') {\n      WritableStreamDefaultControllerError(controller, error);\n    }\n  }\n  function WritableStreamDefaultControllerProcessClose(controller) {\n    var stream = controller._controlledWritableStream;\n    WritableStreamMarkCloseRequestInFlight(stream);\n    DequeueValue(controller);\n    assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');\n    var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);\n    sinkClosePromise.then(function () {\n      WritableStreamFinishInFlightClose(stream);\n    }, function (reason) {\n      WritableStreamFinishInFlightCloseWithError(stream, reason);\n    }).catch(rethrowAssertionErrorRejection);\n  }\n  function WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n    var stream = controller._controlledWritableStream;\n    WritableStreamMarkFirstWriteRequestInFlight(stream);\n    var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);\n    sinkWritePromise.then(function () {\n      WritableStreamFinishInFlightWrite(stream);\n      var state = stream._state;\n      assert(state === 'writable' || state === 'erroring');\n      DequeueValue(controller);\n      if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n        var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n        WritableStreamUpdateBackpressure(stream, backpressure);\n      }\n      WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n    }, function (reason) {\n      WritableStreamFinishInFlightWriteWithError(stream, reason);\n    }).catch(rethrowAssertionErrorRejection);\n  }\n  function WritableStreamDefaultControllerGetBackpressure(controller) {\n    var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n    return desiredSize <= 0;\n  }\n  function WritableStreamDefaultControllerError(controller, error) {\n    var stream = controller._controlledWritableStream;\n    assert(stream._state === 'writable');\n    WritableStreamStartErroring(stream, error);\n  }\n  function streamBrandCheckException(name) {\n    return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');\n  }\n  function defaultWriterBrandCheckException(name) {\n    return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');\n  }\n  function defaultWriterLockException(name) {\n    return new TypeError('Cannot ' + name + ' a stream using a released writer');\n  }\n  function defaultWriterClosedPromiseInitialize(writer) {\n    writer._closedPromise = new Promise(function (resolve, reject) {\n      writer._closedPromise_resolve = resolve;\n      writer._closedPromise_reject = reject;\n      writer._closedPromiseState = 'pending';\n    });\n  }\n  function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n    writer._closedPromise = Promise.reject(reason);\n    writer._closedPromise_resolve = undefined;\n    writer._closedPromise_reject = undefined;\n    writer._closedPromiseState = 'rejected';\n  }\n  function defaultWriterClosedPromiseInitializeAsResolved(writer) {\n    writer._closedPromise = Promise.resolve(undefined);\n    writer._closedPromise_resolve = undefined;\n    writer._closedPromise_reject = undefined;\n    writer._closedPromiseState = 'resolved';\n  }\n  function defaultWriterClosedPromiseReject(writer, reason) {\n    assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n    assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n    assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n    writer._closedPromise_reject(reason);\n    writer._closedPromise_resolve = undefined;\n    writer._closedPromise_reject = undefined;\n    writer._closedPromiseState = 'rejected';\n  }\n  function defaultWriterClosedPromiseResetToRejected(writer, reason) {\n    assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');\n    assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');\n    assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');\n    writer._closedPromise = Promise.reject(reason);\n    writer._closedPromiseState = 'rejected';\n  }\n  function defaultWriterClosedPromiseResolve(writer) {\n    assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n    assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n    assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n    writer._closedPromise_resolve(undefined);\n    writer._closedPromise_resolve = undefined;\n    writer._closedPromise_reject = undefined;\n    writer._closedPromiseState = 'resolved';\n  }\n  function defaultWriterReadyPromiseInitialize(writer) {\n    writer._readyPromise = new Promise(function (resolve, reject) {\n      writer._readyPromise_resolve = resolve;\n      writer._readyPromise_reject = reject;\n    });\n    writer._readyPromiseState = 'pending';\n  }\n  function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n    writer._readyPromise = Promise.reject(reason);\n    writer._readyPromise_resolve = undefined;\n    writer._readyPromise_reject = undefined;\n    writer._readyPromiseState = 'rejected';\n  }\n  function defaultWriterReadyPromiseInitializeAsResolved(writer) {\n    writer._readyPromise = Promise.resolve(undefined);\n    writer._readyPromise_resolve = undefined;\n    writer._readyPromise_reject = undefined;\n    writer._readyPromiseState = 'fulfilled';\n  }\n  function defaultWriterReadyPromiseReject(writer, reason) {\n    assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n    assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n    writer._readyPromise_reject(reason);\n    writer._readyPromise_resolve = undefined;\n    writer._readyPromise_reject = undefined;\n    writer._readyPromiseState = 'rejected';\n  }\n  function defaultWriterReadyPromiseReset(writer) {\n    assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n    assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n    writer._readyPromise = new Promise(function (resolve, reject) {\n      writer._readyPromise_resolve = resolve;\n      writer._readyPromise_reject = reject;\n    });\n    writer._readyPromiseState = 'pending';\n  }\n  function defaultWriterReadyPromiseResetToRejected(writer, reason) {\n    assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n    assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n    writer._readyPromise = Promise.reject(reason);\n    writer._readyPromiseState = 'rejected';\n  }\n  function defaultWriterReadyPromiseResolve(writer) {\n    assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n    assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n    writer._readyPromise_resolve(undefined);\n    writer._readyPromise_resolve = undefined;\n    writer._readyPromise_reject = undefined;\n    writer._readyPromiseState = 'fulfilled';\n  }\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var _require = __w_pdfjs_require__(0),\n      IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;\n  var _require2 = __w_pdfjs_require__(1),\n      assert = _require2.assert;\n  exports.DequeueValue = function (container) {\n    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n    assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');\n    var pair = container._queue.shift();\n    container._queueTotalSize -= pair.size;\n    if (container._queueTotalSize < 0) {\n      container._queueTotalSize = 0;\n    }\n    return pair.value;\n  };\n  exports.EnqueueValueWithSize = function (container, value, size) {\n    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');\n    size = Number(size);\n    if (!IsFiniteNonNegativeNumber(size)) {\n      throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n    }\n    container._queue.push({\n      value: value,\n      size: size\n    });\n    container._queueTotalSize += size;\n  };\n  exports.PeekQueueValue = function (container) {\n    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n    assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');\n    var pair = container._queue[0];\n    return pair.value;\n  };\n  exports.ResetQueue = function (container) {\n    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n    container._queue = [];\n    container._queueTotalSize = 0;\n  };\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var _createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n  var _require = __w_pdfjs_require__(0),\n      ArrayBufferCopy = _require.ArrayBufferCopy,\n      CreateIterResultObject = _require.CreateIterResultObject,\n      IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,\n      InvokeOrNoop = _require.InvokeOrNoop,\n      PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n      TransferArrayBuffer = _require.TransferArrayBuffer,\n      ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n      ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;\n  var _require2 = __w_pdfjs_require__(0),\n      createArrayFromList = _require2.createArrayFromList,\n      createDataProperty = _require2.createDataProperty,\n      typeIsObject = _require2.typeIsObject;\n  var _require3 = __w_pdfjs_require__(1),\n      assert = _require3.assert,\n      rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;\n  var _require4 = __w_pdfjs_require__(3),\n      DequeueValue = _require4.DequeueValue,\n      EnqueueValueWithSize = _require4.EnqueueValueWithSize,\n      ResetQueue = _require4.ResetQueue;\n  var _require5 = __w_pdfjs_require__(2),\n      AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,\n      IsWritableStream = _require5.IsWritableStream,\n      IsWritableStreamLocked = _require5.IsWritableStreamLocked,\n      WritableStreamAbort = _require5.WritableStreamAbort,\n      WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,\n      WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,\n      WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,\n      WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;\n  var ReadableStream = function () {\n    function ReadableStream() {\n      var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          size = _ref.size,\n          highWaterMark = _ref.highWaterMark;\n      _classCallCheck(this, ReadableStream);\n      this._state = 'readable';\n      this._reader = undefined;\n      this._storedError = undefined;\n      this._disturbed = false;\n      this._readableStreamController = undefined;\n      var type = underlyingSource.type;\n      var typeString = String(type);\n      if (typeString === 'bytes') {\n        if (highWaterMark === undefined) {\n          highWaterMark = 0;\n        }\n        this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);\n      } else if (type === undefined) {\n        if (highWaterMark === undefined) {\n          highWaterMark = 1;\n        }\n        this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);\n      } else {\n        throw new RangeError('Invalid type is specified');\n      }\n    }\n    _createClass(ReadableStream, [{\n      key: 'cancel',\n      value: function cancel(reason) {\n        if (IsReadableStream(this) === false) {\n          return Promise.reject(streamBrandCheckException('cancel'));\n        }\n        if (IsReadableStreamLocked(this) === true) {\n          return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));\n        }\n        return ReadableStreamCancel(this, reason);\n      }\n    }, {\n      key: 'getReader',\n      value: function getReader() {\n        var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n            mode = _ref2.mode;\n        if (IsReadableStream(this) === false) {\n          throw streamBrandCheckException('getReader');\n        }\n        if (mode === undefined) {\n          return AcquireReadableStreamDefaultReader(this);\n        }\n        mode = String(mode);\n        if (mode === 'byob') {\n          return AcquireReadableStreamBYOBReader(this);\n        }\n        throw new RangeError('Invalid mode is specified');\n      }\n    }, {\n      key: 'pipeThrough',\n      value: function pipeThrough(_ref3, options) {\n        var writable = _ref3.writable,\n            readable = _ref3.readable;\n        var promise = this.pipeTo(writable, options);\n        ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);\n        return readable;\n      }\n    }, {\n      key: 'pipeTo',\n      value: function pipeTo(dest) {\n        var _this = this;\n        var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n            preventClose = _ref4.preventClose,\n            preventAbort = _ref4.preventAbort,\n            preventCancel = _ref4.preventCancel;\n        if (IsReadableStream(this) === false) {\n          return Promise.reject(streamBrandCheckException('pipeTo'));\n        }\n        if (IsWritableStream(dest) === false) {\n          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n        }\n        preventClose = Boolean(preventClose);\n        preventAbort = Boolean(preventAbort);\n        preventCancel = Boolean(preventCancel);\n        if (IsReadableStreamLocked(this) === true) {\n          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n        }\n        if (IsWritableStreamLocked(dest) === true) {\n          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n        }\n        var reader = AcquireReadableStreamDefaultReader(this);\n        var writer = AcquireWritableStreamDefaultWriter(dest);\n        var shuttingDown = false;\n        var currentWrite = Promise.resolve();\n        return new Promise(function (resolve, reject) {\n          function pipeLoop() {\n            currentWrite = Promise.resolve();\n            if (shuttingDown === true) {\n              return Promise.resolve();\n            }\n            return writer._readyPromise.then(function () {\n              return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {\n                var value = _ref5.value,\n                    done = _ref5.done;\n                if (done === true) {\n                  return;\n                }\n                currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});\n              });\n            }).then(pipeLoop);\n          }\n          isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {\n            if (preventAbort === false) {\n              shutdownWithAction(function () {\n                return WritableStreamAbort(dest, storedError);\n              }, true, storedError);\n            } else {\n              shutdown(true, storedError);\n            }\n          });\n          isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n            if (preventCancel === false) {\n              shutdownWithAction(function () {\n                return ReadableStreamCancel(_this, storedError);\n              }, true, storedError);\n            } else {\n              shutdown(true, storedError);\n            }\n          });\n          isOrBecomesClosed(_this, reader._closedPromise, function () {\n            if (preventClose === false) {\n              shutdownWithAction(function () {\n                return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n              });\n            } else {\n              shutdown();\n            }\n          });\n          if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n            var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n            if (preventCancel === false) {\n              shutdownWithAction(function () {\n                return ReadableStreamCancel(_this, destClosed);\n              }, true, destClosed);\n            } else {\n              shutdown(true, destClosed);\n            }\n          }\n          pipeLoop().catch(function (err) {\n            currentWrite = Promise.resolve();\n            rethrowAssertionErrorRejection(err);\n          });\n          function waitForWritesToFinish() {\n            var oldCurrentWrite = currentWrite;\n            return currentWrite.then(function () {\n              return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n            });\n          }\n          function isOrBecomesErrored(stream, promise, action) {\n            if (stream._state === 'errored') {\n              action(stream._storedError);\n            } else {\n              promise.catch(action).catch(rethrowAssertionErrorRejection);\n            }\n          }\n          function isOrBecomesClosed(stream, promise, action) {\n            if (stream._state === 'closed') {\n              action();\n            } else {\n              promise.then(action).catch(rethrowAssertionErrorRejection);\n            }\n          }\n          function shutdownWithAction(action, originalIsError, originalError) {\n            if (shuttingDown === true) {\n              return;\n            }\n            shuttingDown = true;\n            if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n              waitForWritesToFinish().then(doTheRest);\n            } else {\n              doTheRest();\n            }\n            function doTheRest() {\n              action().then(function () {\n                return finalize(originalIsError, originalError);\n              }, function (newError) {\n                return finalize(true, newError);\n              }).catch(rethrowAssertionErrorRejection);\n            }\n          }\n          function shutdown(isError, error) {\n            if (shuttingDown === true) {\n              return;\n            }\n            shuttingDown = true;\n            if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n              waitForWritesToFinish().then(function () {\n                return finalize(isError, error);\n              }).catch(rethrowAssertionErrorRejection);\n            } else {\n              finalize(isError, error);\n            }\n          }\n          function finalize(isError, error) {\n            WritableStreamDefaultWriterRelease(writer);\n            ReadableStreamReaderGenericRelease(reader);\n            if (isError) {\n              reject(error);\n            } else {\n              resolve(undefined);\n            }\n          }\n        });\n      }\n    }, {\n      key: 'tee',\n      value: function tee() {\n        if (IsReadableStream(this) === false) {\n          throw streamBrandCheckException('tee');\n        }\n        var branches = ReadableStreamTee(this, false);\n        return createArrayFromList(branches);\n      }\n    }, {\n      key: 'locked',\n      get: function get() {\n        if (IsReadableStream(this) === false) {\n          throw streamBrandCheckException('locked');\n        }\n        return IsReadableStreamLocked(this);\n      }\n    }]);\n    return ReadableStream;\n  }();\n  module.exports = {\n    ReadableStream: ReadableStream,\n    IsReadableStreamDisturbed: IsReadableStreamDisturbed,\n    ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,\n    ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,\n    ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,\n    ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize\n  };\n  function AcquireReadableStreamBYOBReader(stream) {\n    return new ReadableStreamBYOBReader(stream);\n  }\n  function AcquireReadableStreamDefaultReader(stream) {\n    return new ReadableStreamDefaultReader(stream);\n  }\n  function IsReadableStream(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n      return false;\n    }\n    return true;\n  }\n  function IsReadableStreamDisturbed(stream) {\n    assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');\n    return stream._disturbed;\n  }\n  function IsReadableStreamLocked(stream) {\n    assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');\n    if (stream._reader === undefined) {\n      return false;\n    }\n    return true;\n  }\n  function ReadableStreamTee(stream, cloneForBranch2) {\n    assert(IsReadableStream(stream) === true);\n    assert(typeof cloneForBranch2 === 'boolean');\n    var reader = AcquireReadableStreamDefaultReader(stream);\n    var teeState = {\n      closedOrErrored: false,\n      canceled1: false,\n      canceled2: false,\n      reason1: undefined,\n      reason2: undefined\n    };\n    teeState.promise = new Promise(function (resolve) {\n      teeState._resolve = resolve;\n    });\n    var pull = create_ReadableStreamTeePullFunction();\n    pull._reader = reader;\n    pull._teeState = teeState;\n    pull._cloneForBranch2 = cloneForBranch2;\n    var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();\n    cancel1._stream = stream;\n    cancel1._teeState = teeState;\n    var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();\n    cancel2._stream = stream;\n    cancel2._teeState = teeState;\n    var underlyingSource1 = Object.create(Object.prototype);\n    createDataProperty(underlyingSource1, 'pull', pull);\n    createDataProperty(underlyingSource1, 'cancel', cancel1);\n    var branch1Stream = new ReadableStream(underlyingSource1);\n    var underlyingSource2 = Object.create(Object.prototype);\n    createDataProperty(underlyingSource2, 'pull', pull);\n    createDataProperty(underlyingSource2, 'cancel', cancel2);\n    var branch2Stream = new ReadableStream(underlyingSource2);\n    pull._branch1 = branch1Stream._readableStreamController;\n    pull._branch2 = branch2Stream._readableStreamController;\n    reader._closedPromise.catch(function (r) {\n      if (teeState.closedOrErrored === true) {\n        return;\n      }\n      ReadableStreamDefaultControllerError(pull._branch1, r);\n      ReadableStreamDefaultControllerError(pull._branch2, r);\n      teeState.closedOrErrored = true;\n    });\n    return [branch1Stream, branch2Stream];\n  }\n  function create_ReadableStreamTeePullFunction() {\n    function f() {\n      var reader = f._reader,\n          branch1 = f._branch1,\n          branch2 = f._branch2,\n          teeState = f._teeState;\n      return ReadableStreamDefaultReaderRead(reader).then(function (result) {\n        assert(typeIsObject(result));\n        var value = result.value;\n        var done = result.done;\n        assert(typeof done === 'boolean');\n        if (done === true && teeState.closedOrErrored === false) {\n          if (teeState.canceled1 === false) {\n            ReadableStreamDefaultControllerClose(branch1);\n          }\n          if (teeState.canceled2 === false) {\n            ReadableStreamDefaultControllerClose(branch2);\n          }\n          teeState.closedOrErrored = true;\n        }\n        if (teeState.closedOrErrored === true) {\n          return;\n        }\n        var value1 = value;\n        var value2 = value;\n        if (teeState.canceled1 === false) {\n          ReadableStreamDefaultControllerEnqueue(branch1, value1);\n        }\n        if (teeState.canceled2 === false) {\n          ReadableStreamDefaultControllerEnqueue(branch2, value2);\n        }\n      });\n    }\n    return f;\n  }\n  function create_ReadableStreamTeeBranch1CancelFunction() {\n    function f(reason) {\n      var stream = f._stream,\n          teeState = f._teeState;\n      teeState.canceled1 = true;\n      teeState.reason1 = reason;\n      if (teeState.canceled2 === true) {\n        var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n        var cancelResult = ReadableStreamCancel(stream, compositeReason);\n        teeState._resolve(cancelResult);\n      }\n      return teeState.promise;\n    }\n    return f;\n  }\n  function create_ReadableStreamTeeBranch2CancelFunction() {\n    function f(reason) {\n      var stream = f._stream,\n          teeState = f._teeState;\n      teeState.canceled2 = true;\n      teeState.reason2 = reason;\n      if (teeState.canceled1 === true) {\n        var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n        var cancelResult = ReadableStreamCancel(stream, compositeReason);\n        teeState._resolve(cancelResult);\n      }\n      return teeState.promise;\n    }\n    return f;\n  }\n  function ReadableStreamAddReadIntoRequest(stream) {\n    assert(IsReadableStreamBYOBReader(stream._reader) === true);\n    assert(stream._state === 'readable' || stream._state === 'closed');\n    var promise = new Promise(function (resolve, reject) {\n      var readIntoRequest = {\n        _resolve: resolve,\n        _reject: reject\n      };\n      stream._reader._readIntoRequests.push(readIntoRequest);\n    });\n    return promise;\n  }\n  function ReadableStreamAddReadRequest(stream) {\n    assert(IsReadableStreamDefaultReader(stream._reader) === true);\n    assert(stream._state === 'readable');\n    var promise = new Promise(function (resolve, reject) {\n      var readRequest = {\n        _resolve: resolve,\n        _reject: reject\n      };\n      stream._reader._readRequests.push(readRequest);\n    });\n    return promise;\n  }\n  function ReadableStreamCancel(stream, reason) {\n    stream._disturbed = true;\n    if (stream._state === 'closed') {\n      return Promise.resolve(undefined);\n    }\n    if (stream._state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    ReadableStreamClose(stream);\n    var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);\n    return sourceCancelPromise.then(function () {\n      return undefined;\n    });\n  }\n  function ReadableStreamClose(stream) {\n    assert(stream._state === 'readable');\n    stream._state = 'closed';\n    var reader = stream._reader;\n    if (reader === undefined) {\n      return undefined;\n    }\n    if (IsReadableStreamDefaultReader(reader) === true) {\n      for (var i = 0; i < reader._readRequests.length; i++) {\n        var _resolve = reader._readRequests[i]._resolve;\n        _resolve(CreateIterResultObject(undefined, true));\n      }\n      reader._readRequests = [];\n    }\n    defaultReaderClosedPromiseResolve(reader);\n    return undefined;\n  }\n  function ReadableStreamError(stream, e) {\n    assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');\n    assert(stream._state === 'readable', 'state must be readable');\n    stream._state = 'errored';\n    stream._storedError = e;\n    var reader = stream._reader;\n    if (reader === undefined) {\n      return undefined;\n    }\n    if (IsReadableStreamDefaultReader(reader) === true) {\n      for (var i = 0; i < reader._readRequests.length; i++) {\n        var readRequest = reader._readRequests[i];\n        readRequest._reject(e);\n      }\n      reader._readRequests = [];\n    } else {\n      assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');\n      for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {\n        var readIntoRequest = reader._readIntoRequests[_i];\n        readIntoRequest._reject(e);\n      }\n      reader._readIntoRequests = [];\n    }\n    defaultReaderClosedPromiseReject(reader, e);\n    reader._closedPromise.catch(function () {});\n  }\n  function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n    var reader = stream._reader;\n    assert(reader._readIntoRequests.length > 0);\n    var readIntoRequest = reader._readIntoRequests.shift();\n    readIntoRequest._resolve(CreateIterResultObject(chunk, done));\n  }\n  function ReadableStreamFulfillReadRequest(stream, chunk, done) {\n    var reader = stream._reader;\n    assert(reader._readRequests.length > 0);\n    var readRequest = reader._readRequests.shift();\n    readRequest._resolve(CreateIterResultObject(chunk, done));\n  }\n  function ReadableStreamGetNumReadIntoRequests(stream) {\n    return stream._reader._readIntoRequests.length;\n  }\n  function ReadableStreamGetNumReadRequests(stream) {\n    return stream._reader._readRequests.length;\n  }\n  function ReadableStreamHasBYOBReader(stream) {\n    var reader = stream._reader;\n    if (reader === undefined) {\n      return false;\n    }\n    if (IsReadableStreamBYOBReader(reader) === false) {\n      return false;\n    }\n    return true;\n  }\n  function ReadableStreamHasDefaultReader(stream) {\n    var reader = stream._reader;\n    if (reader === undefined) {\n      return false;\n    }\n    if (IsReadableStreamDefaultReader(reader) === false) {\n      return false;\n    }\n    return true;\n  }\n  var ReadableStreamDefaultReader = function () {\n    function ReadableStreamDefaultReader(stream) {\n      _classCallCheck(this, ReadableStreamDefaultReader);\n      if (IsReadableStream(stream) === false) {\n        throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n      }\n      if (IsReadableStreamLocked(stream) === true) {\n        throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n      }\n      ReadableStreamReaderGenericInitialize(this, stream);\n      this._readRequests = [];\n    }\n    _createClass(ReadableStreamDefaultReader, [{\n      key: 'cancel',\n      value: function cancel(reason) {\n        if (IsReadableStreamDefaultReader(this) === false) {\n          return Promise.reject(defaultReaderBrandCheckException('cancel'));\n        }\n        if (this._ownerReadableStream === undefined) {\n          return Promise.reject(readerLockException('cancel'));\n        }\n        return ReadableStreamReaderGenericCancel(this, reason);\n      }\n    }, {\n      key: 'read',\n      value: function read() {\n        if (IsReadableStreamDefaultReader(this) === false) {\n          return Promise.reject(defaultReaderBrandCheckException('read'));\n        }\n        if (this._ownerReadableStream === undefined) {\n          return Promise.reject(readerLockException('read from'));\n        }\n        return ReadableStreamDefaultReaderRead(this);\n      }\n    }, {\n      key: 'releaseLock',\n      value: function releaseLock() {\n        if (IsReadableStreamDefaultReader(this) === false) {\n          throw defaultReaderBrandCheckException('releaseLock');\n        }\n        if (this._ownerReadableStream === undefined) {\n          return;\n        }\n        if (this._readRequests.length > 0) {\n          throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n        }\n        ReadableStreamReaderGenericRelease(this);\n      }\n    }, {\n      key: 'closed',\n      get: function get() {\n        if (IsReadableStreamDefaultReader(this) === false) {\n          return Promise.reject(defaultReaderBrandCheckException('closed'));\n        }\n        return this._closedPromise;\n      }\n    }]);\n    return ReadableStreamDefaultReader;\n  }();\n  var ReadableStreamBYOBReader = function () {\n    function ReadableStreamBYOBReader(stream) {\n      _classCallCheck(this, ReadableStreamBYOBReader);\n      if (!IsReadableStream(stream)) {\n        throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n      }\n      if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n        throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n      }\n      if (IsReadableStreamLocked(stream)) {\n        throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n      }\n      ReadableStreamReaderGenericInitialize(this, stream);\n      this._readIntoRequests = [];\n    }\n    _createClass(ReadableStreamBYOBReader, [{\n      key: 'cancel',\n      value: function cancel(reason) {\n        if (!IsReadableStreamBYOBReader(this)) {\n          return Promise.reject(byobReaderBrandCheckException('cancel'));\n        }\n        if (this._ownerReadableStream === undefined) {\n          return Promise.reject(readerLockException('cancel'));\n        }\n        return ReadableStreamReaderGenericCancel(this, reason);\n      }\n    }, {\n      key: 'read',\n      value: function read(view) {\n        if (!IsReadableStreamBYOBReader(this)) {\n          return Promise.reject(byobReaderBrandCheckException('read'));\n        }\n        if (this._ownerReadableStream === undefined) {\n          return Promise.reject(readerLockException('read from'));\n        }\n        if (!ArrayBuffer.isView(view)) {\n          return Promise.reject(new TypeError('view must be an array buffer view'));\n        }\n        if (view.byteLength === 0) {\n          return Promise.reject(new TypeError('view must have non-zero byteLength'));\n        }\n        return ReadableStreamBYOBReaderRead(this, view);\n      }\n    }, {\n      key: 'releaseLock',\n      value: function releaseLock() {\n        if (!IsReadableStreamBYOBReader(this)) {\n          throw byobReaderBrandCheckException('releaseLock');\n        }\n        if (this._ownerReadableStream === undefined) {\n          return;\n        }\n        if (this._readIntoRequests.length > 0) {\n          throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n        }\n        ReadableStreamReaderGenericRelease(this);\n      }\n    }, {\n      key: 'closed',\n      get: function get() {\n        if (!IsReadableStreamBYOBReader(this)) {\n          return Promise.reject(byobReaderBrandCheckException('closed'));\n        }\n        return this._closedPromise;\n      }\n    }]);\n    return ReadableStreamBYOBReader;\n  }();\n  function IsReadableStreamBYOBReader(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n      return false;\n    }\n    return true;\n  }\n  function IsReadableStreamDefaultReader(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n      return false;\n    }\n    return true;\n  }\n  function ReadableStreamReaderGenericInitialize(reader, stream) {\n    reader._ownerReadableStream = stream;\n    stream._reader = reader;\n    if (stream._state === 'readable') {\n      defaultReaderClosedPromiseInitialize(reader);\n    } else if (stream._state === 'closed') {\n      defaultReaderClosedPromiseInitializeAsResolved(reader);\n    } else {\n      assert(stream._state === 'errored', 'state must be errored');\n      defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n      reader._closedPromise.catch(function () {});\n    }\n  }\n  function ReadableStreamReaderGenericCancel(reader, reason) {\n    var stream = reader._ownerReadableStream;\n    assert(stream !== undefined);\n    return ReadableStreamCancel(stream, reason);\n  }\n  function ReadableStreamReaderGenericRelease(reader) {\n    assert(reader._ownerReadableStream !== undefined);\n    assert(reader._ownerReadableStream._reader === reader);\n    if (reader._ownerReadableStream._state === 'readable') {\n      defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n    } else {\n      defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n    }\n    reader._closedPromise.catch(function () {});\n    reader._ownerReadableStream._reader = undefined;\n    reader._ownerReadableStream = undefined;\n  }\n  function ReadableStreamBYOBReaderRead(reader, view) {\n    var stream = reader._ownerReadableStream;\n    assert(stream !== undefined);\n    stream._disturbed = true;\n    if (stream._state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n  }\n  function ReadableStreamDefaultReaderRead(reader) {\n    var stream = reader._ownerReadableStream;\n    assert(stream !== undefined);\n    stream._disturbed = true;\n    if (stream._state === 'closed') {\n      return Promise.resolve(CreateIterResultObject(undefined, true));\n    }\n    if (stream._state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    assert(stream._state === 'readable');\n    return stream._readableStreamController.__pullSteps();\n  }\n  var ReadableStreamDefaultController = function () {\n    function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {\n      _classCallCheck(this, ReadableStreamDefaultController);\n      if (IsReadableStream(stream) === false) {\n        throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');\n      }\n      if (stream._readableStreamController !== undefined) {\n        throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');\n      }\n      this._controlledReadableStream = stream;\n      this._underlyingSource = underlyingSource;\n      this._queue = undefined;\n      this._queueTotalSize = undefined;\n      ResetQueue(this);\n      this._started = false;\n      this._closeRequested = false;\n      this._pullAgain = false;\n      this._pulling = false;\n      var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n      this._strategySize = normalizedStrategy.size;\n      this._strategyHWM = normalizedStrategy.highWaterMark;\n      var controller = this;\n      var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);\n      Promise.resolve(startResult).then(function () {\n        controller._started = true;\n        assert(controller._pulling === false);\n        assert(controller._pullAgain === false);\n        ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n      }, function (r) {\n        ReadableStreamDefaultControllerErrorIfNeeded(controller, r);\n      }).catch(rethrowAssertionErrorRejection);\n    }\n    _createClass(ReadableStreamDefaultController, [{\n      key: 'close',\n      value: function close() {\n        if (IsReadableStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('close');\n        }\n        if (this._closeRequested === true) {\n          throw new TypeError('The stream has already been closed; do not close it again!');\n        }\n        var state = this._controlledReadableStream._state;\n        if (state !== 'readable') {\n          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n        }\n        ReadableStreamDefaultControllerClose(this);\n      }\n    }, {\n      key: 'enqueue',\n      value: function enqueue(chunk) {\n        if (IsReadableStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('enqueue');\n        }\n        if (this._closeRequested === true) {\n          throw new TypeError('stream is closed or draining');\n        }\n        var state = this._controlledReadableStream._state;\n        if (state !== 'readable') {\n          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n        }\n        return ReadableStreamDefaultControllerEnqueue(this, chunk);\n      }\n    }, {\n      key: 'error',\n      value: function error(e) {\n        if (IsReadableStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('error');\n        }\n        var stream = this._controlledReadableStream;\n        if (stream._state !== 'readable') {\n          throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n        }\n        ReadableStreamDefaultControllerError(this, e);\n      }\n    }, {\n      key: '__cancelSteps',\n      value: function __cancelSteps(reason) {\n        ResetQueue(this);\n        return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);\n      }\n    }, {\n      key: '__pullSteps',\n      value: function __pullSteps() {\n        var stream = this._controlledReadableStream;\n        if (this._queue.length > 0) {\n          var chunk = DequeueValue(this);\n          if (this._closeRequested === true && this._queue.length === 0) {\n            ReadableStreamClose(stream);\n          } else {\n            ReadableStreamDefaultControllerCallPullIfNeeded(this);\n          }\n          return Promise.resolve(CreateIterResultObject(chunk, false));\n        }\n        var pendingPromise = ReadableStreamAddReadRequest(stream);\n        ReadableStreamDefaultControllerCallPullIfNeeded(this);\n        return pendingPromise;\n      }\n    }, {\n      key: 'desiredSize',\n      get: function get() {\n        if (IsReadableStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('desiredSize');\n        }\n        return ReadableStreamDefaultControllerGetDesiredSize(this);\n      }\n    }]);\n    return ReadableStreamDefaultController;\n  }();\n  function IsReadableStreamDefaultController(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {\n      return false;\n    }\n    return true;\n  }\n  function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n    var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n    if (shouldPull === false) {\n      return undefined;\n    }\n    if (controller._pulling === true) {\n      controller._pullAgain = true;\n      return undefined;\n    }\n    assert(controller._pullAgain === false);\n    controller._pulling = true;\n    var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);\n    pullPromise.then(function () {\n      controller._pulling = false;\n      if (controller._pullAgain === true) {\n        controller._pullAgain = false;\n        return ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n      }\n      return undefined;\n    }, function (e) {\n      ReadableStreamDefaultControllerErrorIfNeeded(controller, e);\n    }).catch(rethrowAssertionErrorRejection);\n    return undefined;\n  }\n  function ReadableStreamDefaultControllerShouldCallPull(controller) {\n    var stream = controller._controlledReadableStream;\n    if (stream._state === 'closed' || stream._state === 'errored') {\n      return false;\n    }\n    if (controller._closeRequested === true) {\n      return false;\n    }\n    if (controller._started === false) {\n      return false;\n    }\n    if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n      return true;\n    }\n    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n    if (desiredSize > 0) {\n      return true;\n    }\n    return false;\n  }\n  function ReadableStreamDefaultControllerClose(controller) {\n    var stream = controller._controlledReadableStream;\n    assert(controller._closeRequested === false);\n    assert(stream._state === 'readable');\n    controller._closeRequested = true;\n    if (controller._queue.length === 0) {\n      ReadableStreamClose(stream);\n    }\n  }\n  function ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n    var stream = controller._controlledReadableStream;\n    assert(controller._closeRequested === false);\n    assert(stream._state === 'readable');\n    if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n      ReadableStreamFulfillReadRequest(stream, chunk, false);\n    } else {\n      var chunkSize = 1;\n      if (controller._strategySize !== undefined) {\n        var strategySize = controller._strategySize;\n        try {\n          chunkSize = strategySize(chunk);\n        } catch (chunkSizeE) {\n          ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n          throw chunkSizeE;\n        }\n      }\n      try {\n        EnqueueValueWithSize(controller, chunk, chunkSize);\n      } catch (enqueueE) {\n        ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n        throw enqueueE;\n      }\n    }\n    ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n    return undefined;\n  }\n  function ReadableStreamDefaultControllerError(controller, e) {\n    var stream = controller._controlledReadableStream;\n    assert(stream._state === 'readable');\n    ResetQueue(controller);\n    ReadableStreamError(stream, e);\n  }\n  function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {\n    if (controller._controlledReadableStream._state === 'readable') {\n      ReadableStreamDefaultControllerError(controller, e);\n    }\n  }\n  function ReadableStreamDefaultControllerGetDesiredSize(controller) {\n    var stream = controller._controlledReadableStream;\n    var state = stream._state;\n    if (state === 'errored') {\n      return null;\n    }\n    if (state === 'closed') {\n      return 0;\n    }\n    return controller._strategyHWM - controller._queueTotalSize;\n  }\n  var ReadableStreamBYOBRequest = function () {\n    function ReadableStreamBYOBRequest(controller, view) {\n      _classCallCheck(this, ReadableStreamBYOBRequest);\n      this._associatedReadableByteStreamController = controller;\n      this._view = view;\n    }\n    _createClass(ReadableStreamBYOBRequest, [{\n      key: 'respond',\n      value: function respond(bytesWritten) {\n        if (IsReadableStreamBYOBRequest(this) === false) {\n          throw byobRequestBrandCheckException('respond');\n        }\n        if (this._associatedReadableByteStreamController === undefined) {\n          throw new TypeError('This BYOB request has been invalidated');\n        }\n        ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n      }\n    }, {\n      key: 'respondWithNewView',\n      value: function respondWithNewView(view) {\n        if (IsReadableStreamBYOBRequest(this) === false) {\n          throw byobRequestBrandCheckException('respond');\n        }\n        if (this._associatedReadableByteStreamController === undefined) {\n          throw new TypeError('This BYOB request has been invalidated');\n        }\n        if (!ArrayBuffer.isView(view)) {\n          throw new TypeError('You can only respond with array buffer views');\n        }\n        ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n      }\n    }, {\n      key: 'view',\n      get: function get() {\n        return this._view;\n      }\n    }]);\n    return ReadableStreamBYOBRequest;\n  }();\n  var ReadableByteStreamController = function () {\n    function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {\n      _classCallCheck(this, ReadableByteStreamController);\n      if (IsReadableStream(stream) === false) {\n        throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');\n      }\n      if (stream._readableStreamController !== undefined) {\n        throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');\n      }\n      this._controlledReadableStream = stream;\n      this._underlyingByteSource = underlyingByteSource;\n      this._pullAgain = false;\n      this._pulling = false;\n      ReadableByteStreamControllerClearPendingPullIntos(this);\n      this._queue = this._queueTotalSize = undefined;\n      ResetQueue(this);\n      this._closeRequested = false;\n      this._started = false;\n      this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n      var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n      if (autoAllocateChunkSize !== undefined) {\n        if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n          throw new RangeError('autoAllocateChunkSize must be a positive integer');\n        }\n      }\n      this._autoAllocateChunkSize = autoAllocateChunkSize;\n      this._pendingPullIntos = [];\n      var controller = this;\n      var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);\n      Promise.resolve(startResult).then(function () {\n        controller._started = true;\n        assert(controller._pulling === false);\n        assert(controller._pullAgain === false);\n        ReadableByteStreamControllerCallPullIfNeeded(controller);\n      }, function (r) {\n        if (stream._state === 'readable') {\n          ReadableByteStreamControllerError(controller, r);\n        }\n      }).catch(rethrowAssertionErrorRejection);\n    }\n    _createClass(ReadableByteStreamController, [{\n      key: 'close',\n      value: function close() {\n        if (IsReadableByteStreamController(this) === false) {\n          throw byteStreamControllerBrandCheckException('close');\n        }\n        if (this._closeRequested === true) {\n          throw new TypeError('The stream has already been closed; do not close it again!');\n        }\n        var state = this._controlledReadableStream._state;\n        if (state !== 'readable') {\n          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n        }\n        ReadableByteStreamControllerClose(this);\n      }\n    }, {\n      key: 'enqueue',\n      value: function enqueue(chunk) {\n        if (IsReadableByteStreamController(this) === false) {\n          throw byteStreamControllerBrandCheckException('enqueue');\n        }\n        if (this._closeRequested === true) {\n          throw new TypeError('stream is closed or draining');\n        }\n        var state = this._controlledReadableStream._state;\n        if (state !== 'readable') {\n          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n        }\n        if (!ArrayBuffer.isView(chunk)) {\n          throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n        }\n        ReadableByteStreamControllerEnqueue(this, chunk);\n      }\n    }, {\n      key: 'error',\n      value: function error(e) {\n        if (IsReadableByteStreamController(this) === false) {\n          throw byteStreamControllerBrandCheckException('error');\n        }\n        var stream = this._controlledReadableStream;\n        if (stream._state !== 'readable') {\n          throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n        }\n        ReadableByteStreamControllerError(this, e);\n      }\n    }, {\n      key: '__cancelSteps',\n      value: function __cancelSteps(reason) {\n        if (this._pendingPullIntos.length > 0) {\n          var firstDescriptor = this._pendingPullIntos[0];\n          firstDescriptor.bytesFilled = 0;\n        }\n        ResetQueue(this);\n        return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);\n      }\n    }, {\n      key: '__pullSteps',\n      value: function __pullSteps() {\n        var stream = this._controlledReadableStream;\n        assert(ReadableStreamHasDefaultReader(stream) === true);\n        if (this._queueTotalSize > 0) {\n          assert(ReadableStreamGetNumReadRequests(stream) === 0);\n          var entry = this._queue.shift();\n          this._queueTotalSize -= entry.byteLength;\n          ReadableByteStreamControllerHandleQueueDrain(this);\n          var view = void 0;\n          try {\n            view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n          } catch (viewE) {\n            return Promise.reject(viewE);\n          }\n          return Promise.resolve(CreateIterResultObject(view, false));\n        }\n        var autoAllocateChunkSize = this._autoAllocateChunkSize;\n        if (autoAllocateChunkSize !== undefined) {\n          var buffer = void 0;\n          try {\n            buffer = new ArrayBuffer(autoAllocateChunkSize);\n          } catch (bufferE) {\n            return Promise.reject(bufferE);\n          }\n          var pullIntoDescriptor = {\n            buffer: buffer,\n            byteOffset: 0,\n            byteLength: autoAllocateChunkSize,\n            bytesFilled: 0,\n            elementSize: 1,\n            ctor: Uint8Array,\n            readerType: 'default'\n          };\n          this._pendingPullIntos.push(pullIntoDescriptor);\n        }\n        var promise = ReadableStreamAddReadRequest(stream);\n        ReadableByteStreamControllerCallPullIfNeeded(this);\n        return promise;\n      }\n    }, {\n      key: 'byobRequest',\n      get: function get() {\n        if (IsReadableByteStreamController(this) === false) {\n          throw byteStreamControllerBrandCheckException('byobRequest');\n        }\n        if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n          var firstDescriptor = this._pendingPullIntos[0];\n          var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n          this._byobRequest = new ReadableStreamBYOBRequest(this, view);\n        }\n        return this._byobRequest;\n      }\n    }, {\n      key: 'desiredSize',\n      get: function get() {\n        if (IsReadableByteStreamController(this) === false) {\n          throw byteStreamControllerBrandCheckException('desiredSize');\n        }\n        return ReadableByteStreamControllerGetDesiredSize(this);\n      }\n    }]);\n    return ReadableByteStreamController;\n  }();\n  function IsReadableByteStreamController(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {\n      return false;\n    }\n    return true;\n  }\n  function IsReadableStreamBYOBRequest(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n      return false;\n    }\n    return true;\n  }\n  function ReadableByteStreamControllerCallPullIfNeeded(controller) {\n    var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n    if (shouldPull === false) {\n      return undefined;\n    }\n    if (controller._pulling === true) {\n      controller._pullAgain = true;\n      return undefined;\n    }\n    assert(controller._pullAgain === false);\n    controller._pulling = true;\n    var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);\n    pullPromise.then(function () {\n      controller._pulling = false;\n      if (controller._pullAgain === true) {\n        controller._pullAgain = false;\n        ReadableByteStreamControllerCallPullIfNeeded(controller);\n      }\n    }, function (e) {\n      if (controller._controlledReadableStream._state === 'readable') {\n        ReadableByteStreamControllerError(controller, e);\n      }\n    }).catch(rethrowAssertionErrorRejection);\n    return undefined;\n  }\n  function ReadableByteStreamControllerClearPendingPullIntos(controller) {\n    ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n    controller._pendingPullIntos = [];\n  }\n  function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n    assert(stream._state !== 'errored', 'state must not be errored');\n    var done = false;\n    if (stream._state === 'closed') {\n      assert(pullIntoDescriptor.bytesFilled === 0);\n      done = true;\n    }\n    var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n    if (pullIntoDescriptor.readerType === 'default') {\n      ReadableStreamFulfillReadRequest(stream, filledView, done);\n    } else {\n      assert(pullIntoDescriptor.readerType === 'byob');\n      ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n    }\n  }\n  function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n    var bytesFilled = pullIntoDescriptor.bytesFilled;\n    var elementSize = pullIntoDescriptor.elementSize;\n    assert(bytesFilled <= pullIntoDescriptor.byteLength);\n    assert(bytesFilled % elementSize === 0);\n    return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n  }\n  function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n    controller._queue.push({\n      buffer: buffer,\n      byteOffset: byteOffset,\n      byteLength: byteLength\n    });\n    controller._queueTotalSize += byteLength;\n  }\n  function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n    var elementSize = pullIntoDescriptor.elementSize;\n    var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n    var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n    var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n    var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n    var totalBytesToCopyRemaining = maxBytesToCopy;\n    var ready = false;\n    if (maxAlignedBytes > currentAlignedBytes) {\n      totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n      ready = true;\n    }\n    var queue = controller._queue;\n    while (totalBytesToCopyRemaining > 0) {\n      var headOfQueue = queue[0];\n      var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n      var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n      ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n      if (headOfQueue.byteLength === bytesToCopy) {\n        queue.shift();\n      } else {\n        headOfQueue.byteOffset += bytesToCopy;\n        headOfQueue.byteLength -= bytesToCopy;\n      }\n      controller._queueTotalSize -= bytesToCopy;\n      ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n      totalBytesToCopyRemaining -= bytesToCopy;\n    }\n    if (ready === false) {\n      assert(controller._queueTotalSize === 0, 'queue must be empty');\n      assert(pullIntoDescriptor.bytesFilled > 0);\n      assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);\n    }\n    return ready;\n  }\n  function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n    assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);\n    ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n    pullIntoDescriptor.bytesFilled += size;\n  }\n  function ReadableByteStreamControllerHandleQueueDrain(controller) {\n    assert(controller._controlledReadableStream._state === 'readable');\n    if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n      ReadableStreamClose(controller._controlledReadableStream);\n    } else {\n      ReadableByteStreamControllerCallPullIfNeeded(controller);\n    }\n  }\n  function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n    if (controller._byobRequest === undefined) {\n      return;\n    }\n    controller._byobRequest._associatedReadableByteStreamController = undefined;\n    controller._byobRequest._view = undefined;\n    controller._byobRequest = undefined;\n  }\n  function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n    assert(controller._closeRequested === false);\n    while (controller._pendingPullIntos.length > 0) {\n      if (controller._queueTotalSize === 0) {\n        return;\n      }\n      var pullIntoDescriptor = controller._pendingPullIntos[0];\n      if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n        ReadableByteStreamControllerShiftPendingPullInto(controller);\n        ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n      }\n    }\n  }\n  function ReadableByteStreamControllerPullInto(controller, view) {\n    var stream = controller._controlledReadableStream;\n    var elementSize = 1;\n    if (view.constructor !== DataView) {\n      elementSize = view.constructor.BYTES_PER_ELEMENT;\n    }\n    var ctor = view.constructor;\n    var pullIntoDescriptor = {\n      buffer: view.buffer,\n      byteOffset: view.byteOffset,\n      byteLength: view.byteLength,\n      bytesFilled: 0,\n      elementSize: elementSize,\n      ctor: ctor,\n      readerType: 'byob'\n    };\n    if (controller._pendingPullIntos.length > 0) {\n      pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n      controller._pendingPullIntos.push(pullIntoDescriptor);\n      return ReadableStreamAddReadIntoRequest(stream);\n    }\n    if (stream._state === 'closed') {\n      var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n      return Promise.resolve(CreateIterResultObject(emptyView, true));\n    }\n    if (controller._queueTotalSize > 0) {\n      if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n        var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n        ReadableByteStreamControllerHandleQueueDrain(controller);\n        return Promise.resolve(CreateIterResultObject(filledView, false));\n      }\n      if (controller._closeRequested === true) {\n        var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n        ReadableByteStreamControllerError(controller, e);\n        return Promise.reject(e);\n      }\n    }\n    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n    controller._pendingPullIntos.push(pullIntoDescriptor);\n    var promise = ReadableStreamAddReadIntoRequest(stream);\n    ReadableByteStreamControllerCallPullIfNeeded(controller);\n    return promise;\n  }\n  function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n    firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n    assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');\n    var stream = controller._controlledReadableStream;\n    if (ReadableStreamHasBYOBReader(stream) === true) {\n      while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n        var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n        ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n      }\n    }\n  }\n  function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n    if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n      throw new RangeError('bytesWritten out of range');\n    }\n    ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n    if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n      return;\n    }\n    ReadableByteStreamControllerShiftPendingPullInto(controller);\n    var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n    if (remainderSize > 0) {\n      var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n      var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n      ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n    }\n    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n    pullIntoDescriptor.bytesFilled -= remainderSize;\n    ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n  }\n  function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n    var firstDescriptor = controller._pendingPullIntos[0];\n    var stream = controller._controlledReadableStream;\n    if (stream._state === 'closed') {\n      if (bytesWritten !== 0) {\n        throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n      }\n      ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n    } else {\n      assert(stream._state === 'readable');\n      ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n    }\n  }\n  function ReadableByteStreamControllerShiftPendingPullInto(controller) {\n    var descriptor = controller._pendingPullIntos.shift();\n    ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n    return descriptor;\n  }\n  function ReadableByteStreamControllerShouldCallPull(controller) {\n    var stream = controller._controlledReadableStream;\n    if (stream._state !== 'readable') {\n      return false;\n    }\n    if (controller._closeRequested === true) {\n      return false;\n    }\n    if (controller._started === false) {\n      return false;\n    }\n    if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n      return true;\n    }\n    if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n      return true;\n    }\n    if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {\n      return true;\n    }\n    return false;\n  }\n  function ReadableByteStreamControllerClose(controller) {\n    var stream = controller._controlledReadableStream;\n    assert(controller._closeRequested === false);\n    assert(stream._state === 'readable');\n    if (controller._queueTotalSize > 0) {\n      controller._closeRequested = true;\n      return;\n    }\n    if (controller._pendingPullIntos.length > 0) {\n      var firstPendingPullInto = controller._pendingPullIntos[0];\n      if (firstPendingPullInto.bytesFilled > 0) {\n        var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n        ReadableByteStreamControllerError(controller, e);\n        throw e;\n      }\n    }\n    ReadableStreamClose(stream);\n  }\n  function ReadableByteStreamControllerEnqueue(controller, chunk) {\n    var stream = controller._controlledReadableStream;\n    assert(controller._closeRequested === false);\n    assert(stream._state === 'readable');\n    var buffer = chunk.buffer;\n    var byteOffset = chunk.byteOffset;\n    var byteLength = chunk.byteLength;\n    var transferredBuffer = TransferArrayBuffer(buffer);\n    if (ReadableStreamHasDefaultReader(stream) === true) {\n      if (ReadableStreamGetNumReadRequests(stream) === 0) {\n        ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n      } else {\n        assert(controller._queue.length === 0);\n        var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n        ReadableStreamFulfillReadRequest(stream, transferredView, false);\n      }\n    } else if (ReadableStreamHasBYOBReader(stream) === true) {\n      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n      ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n    } else {\n      assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');\n      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n    }\n  }\n  function ReadableByteStreamControllerError(controller, e) {\n    var stream = controller._controlledReadableStream;\n    assert(stream._state === 'readable');\n    ReadableByteStreamControllerClearPendingPullIntos(controller);\n    ResetQueue(controller);\n    ReadableStreamError(stream, e);\n  }\n  function ReadableByteStreamControllerGetDesiredSize(controller) {\n    var stream = controller._controlledReadableStream;\n    var state = stream._state;\n    if (state === 'errored') {\n      return null;\n    }\n    if (state === 'closed') {\n      return 0;\n    }\n    return controller._strategyHWM - controller._queueTotalSize;\n  }\n  function ReadableByteStreamControllerRespond(controller, bytesWritten) {\n    bytesWritten = Number(bytesWritten);\n    if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n      throw new RangeError('bytesWritten must be a finite');\n    }\n    assert(controller._pendingPullIntos.length > 0);\n    ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n  }\n  function ReadableByteStreamControllerRespondWithNewView(controller, view) {\n    assert(controller._pendingPullIntos.length > 0);\n    var firstDescriptor = controller._pendingPullIntos[0];\n    if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n      throw new RangeError('The region specified by view does not match byobRequest');\n    }\n    if (firstDescriptor.byteLength !== view.byteLength) {\n      throw new RangeError('The buffer of view has different capacity than byobRequest');\n    }\n    firstDescriptor.buffer = view.buffer;\n    ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n  }\n  function streamBrandCheckException(name) {\n    return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');\n  }\n  function readerLockException(name) {\n    return new TypeError('Cannot ' + name + ' a stream using a released reader');\n  }\n  function defaultReaderBrandCheckException(name) {\n    return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');\n  }\n  function defaultReaderClosedPromiseInitialize(reader) {\n    reader._closedPromise = new Promise(function (resolve, reject) {\n      reader._closedPromise_resolve = resolve;\n      reader._closedPromise_reject = reject;\n    });\n  }\n  function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n    reader._closedPromise = Promise.reject(reason);\n    reader._closedPromise_resolve = undefined;\n    reader._closedPromise_reject = undefined;\n  }\n  function defaultReaderClosedPromiseInitializeAsResolved(reader) {\n    reader._closedPromise = Promise.resolve(undefined);\n    reader._closedPromise_resolve = undefined;\n    reader._closedPromise_reject = undefined;\n  }\n  function defaultReaderClosedPromiseReject(reader, reason) {\n    assert(reader._closedPromise_resolve !== undefined);\n    assert(reader._closedPromise_reject !== undefined);\n    reader._closedPromise_reject(reason);\n    reader._closedPromise_resolve = undefined;\n    reader._closedPromise_reject = undefined;\n  }\n  function defaultReaderClosedPromiseResetToRejected(reader, reason) {\n    assert(reader._closedPromise_resolve === undefined);\n    assert(reader._closedPromise_reject === undefined);\n    reader._closedPromise = Promise.reject(reason);\n  }\n  function defaultReaderClosedPromiseResolve(reader) {\n    assert(reader._closedPromise_resolve !== undefined);\n    assert(reader._closedPromise_reject !== undefined);\n    reader._closedPromise_resolve(undefined);\n    reader._closedPromise_resolve = undefined;\n    reader._closedPromise_reject = undefined;\n  }\n  function byobReaderBrandCheckException(name) {\n    return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');\n  }\n  function defaultControllerBrandCheckException(name) {\n    return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');\n  }\n  function byobRequestBrandCheckException(name) {\n    return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');\n  }\n  function byteStreamControllerBrandCheckException(name) {\n    return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');\n  }\n  function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {\n    try {\n      Promise.prototype.then.call(promise, undefined, function () {});\n    } catch (e) {}\n  }\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var transformStream = __w_pdfjs_require__(6);\n  var readableStream = __w_pdfjs_require__(4);\n  var writableStream = __w_pdfjs_require__(2);\n  exports.TransformStream = transformStream.TransformStream;\n  exports.ReadableStream = readableStream.ReadableStream;\n  exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;\n  exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;\n  exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;\n  exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;\n  exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;\n  exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;\n  exports.IsWritableStream = writableStream.IsWritableStream;\n  exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;\n  exports.WritableStream = writableStream.WritableStream;\n  exports.WritableStreamAbort = writableStream.WritableStreamAbort;\n  exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;\n  exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;\n  exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;\n  exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var _createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n  var _require = __w_pdfjs_require__(1),\n      assert = _require.assert;\n  var _require2 = __w_pdfjs_require__(0),\n      InvokeOrNoop = _require2.InvokeOrNoop,\n      PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,\n      PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,\n      typeIsObject = _require2.typeIsObject;\n  var _require3 = __w_pdfjs_require__(4),\n      ReadableStream = _require3.ReadableStream,\n      ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,\n      ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,\n      ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,\n      ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;\n  var _require4 = __w_pdfjs_require__(2),\n      WritableStream = _require4.WritableStream,\n      WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;\n  function TransformStreamCloseReadable(transformStream) {\n    if (transformStream._errored === true) {\n      throw new TypeError('TransformStream is already errored');\n    }\n    if (transformStream._readableClosed === true) {\n      throw new TypeError('Readable side is already closed');\n    }\n    TransformStreamCloseReadableInternal(transformStream);\n  }\n  function TransformStreamEnqueueToReadable(transformStream, chunk) {\n    if (transformStream._errored === true) {\n      throw new TypeError('TransformStream is already errored');\n    }\n    if (transformStream._readableClosed === true) {\n      throw new TypeError('Readable side is already closed');\n    }\n    var controller = transformStream._readableController;\n    try {\n      ReadableStreamDefaultControllerEnqueue(controller, chunk);\n    } catch (e) {\n      transformStream._readableClosed = true;\n      TransformStreamErrorIfNeeded(transformStream, e);\n      throw transformStream._storedError;\n    }\n    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n    var maybeBackpressure = desiredSize <= 0;\n    if (maybeBackpressure === true && transformStream._backpressure === false) {\n      TransformStreamSetBackpressure(transformStream, true);\n    }\n  }\n  function TransformStreamError(transformStream, e) {\n    if (transformStream._errored === true) {\n      throw new TypeError('TransformStream is already errored');\n    }\n    TransformStreamErrorInternal(transformStream, e);\n  }\n  function TransformStreamCloseReadableInternal(transformStream) {\n    assert(transformStream._errored === false);\n    assert(transformStream._readableClosed === false);\n    try {\n      ReadableStreamDefaultControllerClose(transformStream._readableController);\n    } catch (e) {\n      assert(false);\n    }\n    transformStream._readableClosed = true;\n  }\n  function TransformStreamErrorIfNeeded(transformStream, e) {\n    if (transformStream._errored === false) {\n      TransformStreamErrorInternal(transformStream, e);\n    }\n  }\n  function TransformStreamErrorInternal(transformStream, e) {\n    assert(transformStream._errored === false);\n    transformStream._errored = true;\n    transformStream._storedError = e;\n    if (transformStream._writableDone === false) {\n      WritableStreamDefaultControllerError(transformStream._writableController, e);\n    }\n    if (transformStream._readableClosed === false) {\n      ReadableStreamDefaultControllerError(transformStream._readableController, e);\n    }\n  }\n  function TransformStreamReadableReadyPromise(transformStream) {\n    assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n    if (transformStream._backpressure === false) {\n      return Promise.resolve();\n    }\n    assert(transformStream._backpressure === true, '_backpressure should have been initialized');\n    return transformStream._backpressureChangePromise;\n  }\n  function TransformStreamSetBackpressure(transformStream, backpressure) {\n    assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');\n    if (transformStream._backpressureChangePromise !== undefined) {\n      transformStream._backpressureChangePromise_resolve(backpressure);\n    }\n    transformStream._backpressureChangePromise = new Promise(function (resolve) {\n      transformStream._backpressureChangePromise_resolve = resolve;\n    });\n    transformStream._backpressureChangePromise.then(function (resolution) {\n      assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');\n    });\n    transformStream._backpressure = backpressure;\n  }\n  function TransformStreamDefaultTransform(chunk, transformStreamController) {\n    var transformStream = transformStreamController._controlledTransformStream;\n    TransformStreamEnqueueToReadable(transformStream, chunk);\n    return Promise.resolve();\n  }\n  function TransformStreamTransform(transformStream, chunk) {\n    assert(transformStream._errored === false);\n    assert(transformStream._transforming === false);\n    assert(transformStream._backpressure === false);\n    transformStream._transforming = true;\n    var transformer = transformStream._transformer;\n    var controller = transformStream._transformStreamController;\n    var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);\n    return transformPromise.then(function () {\n      transformStream._transforming = false;\n      return TransformStreamReadableReadyPromise(transformStream);\n    }, function (e) {\n      TransformStreamErrorIfNeeded(transformStream, e);\n      return Promise.reject(e);\n    });\n  }\n  function IsTransformStreamDefaultController(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n      return false;\n    }\n    return true;\n  }\n  function IsTransformStream(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n      return false;\n    }\n    return true;\n  }\n  var TransformStreamSink = function () {\n    function TransformStreamSink(transformStream, startPromise) {\n      _classCallCheck(this, TransformStreamSink);\n      this._transformStream = transformStream;\n      this._startPromise = startPromise;\n    }\n    _createClass(TransformStreamSink, [{\n      key: 'start',\n      value: function start(c) {\n        var transformStream = this._transformStream;\n        transformStream._writableController = c;\n        return this._startPromise.then(function () {\n          return TransformStreamReadableReadyPromise(transformStream);\n        });\n      }\n    }, {\n      key: 'write',\n      value: function write(chunk) {\n        var transformStream = this._transformStream;\n        return TransformStreamTransform(transformStream, chunk);\n      }\n    }, {\n      key: 'abort',\n      value: function abort() {\n        var transformStream = this._transformStream;\n        transformStream._writableDone = true;\n        TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));\n      }\n    }, {\n      key: 'close',\n      value: function close() {\n        var transformStream = this._transformStream;\n        assert(transformStream._transforming === false);\n        transformStream._writableDone = true;\n        var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);\n        return flushPromise.then(function () {\n          if (transformStream._errored === true) {\n            return Promise.reject(transformStream._storedError);\n          }\n          if (transformStream._readableClosed === false) {\n            TransformStreamCloseReadableInternal(transformStream);\n          }\n          return Promise.resolve();\n        }).catch(function (r) {\n          TransformStreamErrorIfNeeded(transformStream, r);\n          return Promise.reject(transformStream._storedError);\n        });\n      }\n    }]);\n    return TransformStreamSink;\n  }();\n  var TransformStreamSource = function () {\n    function TransformStreamSource(transformStream, startPromise) {\n      _classCallCheck(this, TransformStreamSource);\n      this._transformStream = transformStream;\n      this._startPromise = startPromise;\n    }\n    _createClass(TransformStreamSource, [{\n      key: 'start',\n      value: function start(c) {\n        var transformStream = this._transformStream;\n        transformStream._readableController = c;\n        return this._startPromise.then(function () {\n          assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n          if (transformStream._backpressure === true) {\n            return Promise.resolve();\n          }\n          assert(transformStream._backpressure === false, '_backpressure should have been initialized');\n          return transformStream._backpressureChangePromise;\n        });\n      }\n    }, {\n      key: 'pull',\n      value: function pull() {\n        var transformStream = this._transformStream;\n        assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');\n        assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n        TransformStreamSetBackpressure(transformStream, false);\n        return transformStream._backpressureChangePromise;\n      }\n    }, {\n      key: 'cancel',\n      value: function cancel() {\n        var transformStream = this._transformStream;\n        transformStream._readableClosed = true;\n        TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));\n      }\n    }]);\n    return TransformStreamSource;\n  }();\n  var TransformStreamDefaultController = function () {\n    function TransformStreamDefaultController(transformStream) {\n      _classCallCheck(this, TransformStreamDefaultController);\n      if (IsTransformStream(transformStream) === false) {\n        throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');\n      }\n      if (transformStream._transformStreamController !== undefined) {\n        throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');\n      }\n      this._controlledTransformStream = transformStream;\n    }\n    _createClass(TransformStreamDefaultController, [{\n      key: 'enqueue',\n      value: function enqueue(chunk) {\n        if (IsTransformStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('enqueue');\n        }\n        TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);\n      }\n    }, {\n      key: 'close',\n      value: function close() {\n        if (IsTransformStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('close');\n        }\n        TransformStreamCloseReadable(this._controlledTransformStream);\n      }\n    }, {\n      key: 'error',\n      value: function error(reason) {\n        if (IsTransformStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('error');\n        }\n        TransformStreamError(this._controlledTransformStream, reason);\n      }\n    }, {\n      key: 'desiredSize',\n      get: function get() {\n        if (IsTransformStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('desiredSize');\n        }\n        var transformStream = this._controlledTransformStream;\n        var readableController = transformStream._readableController;\n        return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n      }\n    }]);\n    return TransformStreamDefaultController;\n  }();\n  var TransformStream = function () {\n    function TransformStream() {\n      var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      _classCallCheck(this, TransformStream);\n      this._transformer = transformer;\n      var readableStrategy = transformer.readableStrategy,\n          writableStrategy = transformer.writableStrategy;\n      this._transforming = false;\n      this._errored = false;\n      this._storedError = undefined;\n      this._writableController = undefined;\n      this._readableController = undefined;\n      this._transformStreamController = undefined;\n      this._writableDone = false;\n      this._readableClosed = false;\n      this._backpressure = undefined;\n      this._backpressureChangePromise = undefined;\n      this._backpressureChangePromise_resolve = undefined;\n      this._transformStreamController = new TransformStreamDefaultController(this);\n      var startPromise_resolve = void 0;\n      var startPromise = new Promise(function (resolve) {\n        startPromise_resolve = resolve;\n      });\n      var source = new TransformStreamSource(this, startPromise);\n      this._readable = new ReadableStream(source, readableStrategy);\n      var sink = new TransformStreamSink(this, startPromise);\n      this._writable = new WritableStream(sink, writableStrategy);\n      assert(this._writableController !== undefined);\n      assert(this._readableController !== undefined);\n      var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);\n      TransformStreamSetBackpressure(this, desiredSize <= 0);\n      var transformStream = this;\n      var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);\n      startPromise_resolve(startResult);\n      startPromise.catch(function (e) {\n        if (transformStream._errored === false) {\n          transformStream._errored = true;\n          transformStream._storedError = e;\n        }\n      });\n    }\n    _createClass(TransformStream, [{\n      key: 'readable',\n      get: function get() {\n        if (IsTransformStream(this) === false) {\n          throw streamBrandCheckException('readable');\n        }\n        return this._readable;\n      }\n    }, {\n      key: 'writable',\n      get: function get() {\n        if (IsTransformStream(this) === false) {\n          throw streamBrandCheckException('writable');\n        }\n        return this._writable;\n      }\n    }]);\n    return TransformStream;\n  }();\n  module.exports = { TransformStream: TransformStream };\n  function defaultControllerBrandCheckException(name) {\n    return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');\n  }\n  function streamBrandCheckException(name) {\n    return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');\n  }\n}, function (module, exports, __w_pdfjs_require__) {\n  module.exports = __w_pdfjs_require__(5);\n}]));\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n{\n  var isURLSupported = false;\n  try {\n    if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) {\n      var u = new URL('b', 'http://a');\n      u.pathname = 'c%20d';\n      isURLSupported = u.href === 'http://a/c%20d';\n    }\n  } catch (ex) {}\n  if (isURLSupported) {\n    exports.URL = URL;\n  } else {\n    var PolyfillURL = __w_pdfjs_require__(128).URL;\n    var OriginalURL = __w_pdfjs_require__(3).URL;\n    if (OriginalURL) {\n      PolyfillURL.createObjectURL = function (blob) {\n        return OriginalURL.createObjectURL.apply(OriginalURL, arguments);\n      };\n      PolyfillURL.revokeObjectURL = function (url) {\n        OriginalURL.revokeObjectURL(url);\n      };\n    }\n    exports.URL = PolyfillURL;\n  }\n}\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n(function URLConstructorClosure() {\n  'use strict';\n\n  var relative = Object.create(null);\n  relative['ftp'] = 21;\n  relative['file'] = 0;\n  relative['gopher'] = 70;\n  relative['http'] = 80;\n  relative['https'] = 443;\n  relative['ws'] = 80;\n  relative['wss'] = 443;\n  var relativePathDotMapping = Object.create(null);\n  relativePathDotMapping['%2e'] = '.';\n  relativePathDotMapping['.%2e'] = '..';\n  relativePathDotMapping['%2e.'] = '..';\n  relativePathDotMapping['%2e%2e'] = '..';\n  function isRelativeScheme(scheme) {\n    return relative[scheme] !== undefined;\n  }\n  function invalid() {\n    clear.call(this);\n    this._isInvalid = true;\n  }\n  function IDNAToASCII(h) {\n    if (h === '') {\n      invalid.call(this);\n    }\n    return h.toLowerCase();\n  }\n  function percentEscape(c) {\n    var unicode = c.charCodeAt(0);\n    if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) {\n      return c;\n    }\n    return encodeURIComponent(c);\n  }\n  function percentEscapeQuery(c) {\n    var unicode = c.charCodeAt(0);\n    if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) {\n      return c;\n    }\n    return encodeURIComponent(c);\n  }\n  var EOF,\n      ALPHA = /[a-zA-Z]/,\n      ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n  function parse(input, stateOverride, base) {\n    function err(message) {\n      errors.push(message);\n    }\n    var state = stateOverride || 'scheme start',\n        cursor = 0,\n        buffer = '',\n        seenAt = false,\n        seenBracket = false,\n        errors = [];\n    loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) {\n      var c = input[cursor];\n      switch (state) {\n        case 'scheme start':\n          if (c && ALPHA.test(c)) {\n            buffer += c.toLowerCase();\n            state = 'scheme';\n          } else if (!stateOverride) {\n            buffer = '';\n            state = 'no scheme';\n            continue;\n          } else {\n            err('Invalid scheme.');\n            break loop;\n          }\n          break;\n        case 'scheme':\n          if (c && ALPHANUMERIC.test(c)) {\n            buffer += c.toLowerCase();\n          } else if (c === ':') {\n            this._scheme = buffer;\n            buffer = '';\n            if (stateOverride) {\n              break loop;\n            }\n            if (isRelativeScheme(this._scheme)) {\n              this._isRelative = true;\n            }\n            if (this._scheme === 'file') {\n              state = 'relative';\n            } else if (this._isRelative && base && base._scheme === this._scheme) {\n              state = 'relative or authority';\n            } else if (this._isRelative) {\n              state = 'authority first slash';\n            } else {\n              state = 'scheme data';\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            cursor = 0;\n            state = 'no scheme';\n            continue;\n          } else if (c === EOF) {\n            break loop;\n          } else {\n            err('Code point not allowed in scheme: ' + c);\n            break loop;\n          }\n          break;\n        case 'scheme data':\n          if (c === '?') {\n            this._query = '?';\n            state = 'query';\n          } else if (c === '#') {\n            this._fragment = '#';\n            state = 'fragment';\n          } else {\n            if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n              this._schemeData += percentEscape(c);\n            }\n          }\n          break;\n        case 'no scheme':\n          if (!base || !isRelativeScheme(base._scheme)) {\n            err('Missing scheme.');\n            invalid.call(this);\n          } else {\n            state = 'relative';\n            continue;\n          }\n          break;\n        case 'relative or authority':\n          if (c === '/' && input[cursor + 1] === '/') {\n            state = 'authority ignore slashes';\n          } else {\n            err('Expected /, got: ' + c);\n            state = 'relative';\n            continue;\n          }\n          break;\n        case 'relative':\n          this._isRelative = true;\n          if (this._scheme !== 'file') {\n            this._scheme = base._scheme;\n          }\n          if (c === EOF) {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = base._query;\n            this._username = base._username;\n            this._password = base._password;\n            break loop;\n          } else if (c === '/' || c === '\\\\') {\n            if (c === '\\\\') {\n              err('\\\\ is an invalid code point.');\n            }\n            state = 'relative slash';\n          } else if (c === '?') {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = '?';\n            this._username = base._username;\n            this._password = base._password;\n            state = 'query';\n          } else if (c === '#') {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = base._query;\n            this._fragment = '#';\n            this._username = base._username;\n            this._password = base._password;\n            state = 'fragment';\n          } else {\n            var nextC = input[cursor + 1];\n            var nextNextC = input[cursor + 2];\n            if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\\\' && nextNextC !== '?' && nextNextC !== '#') {\n              this._host = base._host;\n              this._port = base._port;\n              this._username = base._username;\n              this._password = base._password;\n              this._path = base._path.slice();\n              this._path.pop();\n            }\n            state = 'relative path';\n            continue;\n          }\n          break;\n        case 'relative slash':\n          if (c === '/' || c === '\\\\') {\n            if (c === '\\\\') {\n              err('\\\\ is an invalid code point.');\n            }\n            if (this._scheme === 'file') {\n              state = 'file host';\n            } else {\n              state = 'authority ignore slashes';\n            }\n          } else {\n            if (this._scheme !== 'file') {\n              this._host = base._host;\n              this._port = base._port;\n              this._username = base._username;\n              this._password = base._password;\n            }\n            state = 'relative path';\n            continue;\n          }\n          break;\n        case 'authority first slash':\n          if (c === '/') {\n            state = 'authority second slash';\n          } else {\n            err('Expected \\'/\\', got: ' + c);\n            state = 'authority ignore slashes';\n            continue;\n          }\n          break;\n        case 'authority second slash':\n          state = 'authority ignore slashes';\n          if (c !== '/') {\n            err('Expected \\'/\\', got: ' + c);\n            continue;\n          }\n          break;\n        case 'authority ignore slashes':\n          if (c !== '/' && c !== '\\\\') {\n            state = 'authority';\n            continue;\n          } else {\n            err('Expected authority, got: ' + c);\n          }\n          break;\n        case 'authority':\n          if (c === '@') {\n            if (seenAt) {\n              err('@ already seen.');\n              buffer += '%40';\n            }\n            seenAt = true;\n            for (var i = 0; i < buffer.length; i++) {\n              var cp = buffer[i];\n              if (cp === '\\t' || cp === '\\n' || cp === '\\r') {\n                err('Invalid whitespace in authority.');\n                continue;\n              }\n              if (cp === ':' && this._password === null) {\n                this._password = '';\n                continue;\n              }\n              var tempC = percentEscape(cp);\n              if (this._password !== null) {\n                this._password += tempC;\n              } else {\n                this._username += tempC;\n              }\n            }\n            buffer = '';\n          } else if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n            cursor -= buffer.length;\n            buffer = '';\n            state = 'host';\n            continue;\n          } else {\n            buffer += c;\n          }\n          break;\n        case 'file host':\n          if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n            if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) {\n              state = 'relative path';\n            } else if (buffer.length === 0) {\n              state = 'relative path start';\n            } else {\n              this._host = IDNAToASCII.call(this, buffer);\n              buffer = '';\n              state = 'relative path start';\n            }\n            continue;\n          } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n            err('Invalid whitespace in file host.');\n          } else {\n            buffer += c;\n          }\n          break;\n        case 'host':\n        case 'hostname':\n          if (c === ':' && !seenBracket) {\n            this._host = IDNAToASCII.call(this, buffer);\n            buffer = '';\n            state = 'port';\n            if (stateOverride === 'hostname') {\n              break loop;\n            }\n          } else if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n            this._host = IDNAToASCII.call(this, buffer);\n            buffer = '';\n            state = 'relative path start';\n            if (stateOverride) {\n              break loop;\n            }\n            continue;\n          } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            if (c === '[') {\n              seenBracket = true;\n            } else if (c === ']') {\n              seenBracket = false;\n            }\n            buffer += c;\n          } else {\n            err('Invalid code point in host/hostname: ' + c);\n          }\n          break;\n        case 'port':\n          if (/[0-9]/.test(c)) {\n            buffer += c;\n          } else if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#' || stateOverride) {\n            if (buffer !== '') {\n              var temp = parseInt(buffer, 10);\n              if (temp !== relative[this._scheme]) {\n                this._port = temp + '';\n              }\n              buffer = '';\n            }\n            if (stateOverride) {\n              break loop;\n            }\n            state = 'relative path start';\n            continue;\n          } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n            err('Invalid code point in port: ' + c);\n          } else {\n            invalid.call(this);\n          }\n          break;\n        case 'relative path start':\n          if (c === '\\\\') {\n            err('\\'\\\\\\' not allowed in path.');\n          }\n          state = 'relative path';\n          if (c !== '/' && c !== '\\\\') {\n            continue;\n          }\n          break;\n        case 'relative path':\n          if (c === EOF || c === '/' || c === '\\\\' || !stateOverride && (c === '?' || c === '#')) {\n            if (c === '\\\\') {\n              err('\\\\ not allowed in relative path.');\n            }\n            var tmp;\n            if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {\n              buffer = tmp;\n            }\n            if (buffer === '..') {\n              this._path.pop();\n              if (c !== '/' && c !== '\\\\') {\n                this._path.push('');\n              }\n            } else if (buffer === '.' && c !== '/' && c !== '\\\\') {\n              this._path.push('');\n            } else if (buffer !== '.') {\n              if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') {\n                buffer = buffer[0] + ':';\n              }\n              this._path.push(buffer);\n            }\n            buffer = '';\n            if (c === '?') {\n              this._query = '?';\n              state = 'query';\n            } else if (c === '#') {\n              this._fragment = '#';\n              state = 'fragment';\n            }\n          } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            buffer += percentEscape(c);\n          }\n          break;\n        case 'query':\n          if (!stateOverride && c === '#') {\n            this._fragment = '#';\n            state = 'fragment';\n          } else if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            this._query += percentEscapeQuery(c);\n          }\n          break;\n        case 'fragment':\n          if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            this._fragment += c;\n          }\n          break;\n      }\n      cursor++;\n    }\n  }\n  function clear() {\n    this._scheme = '';\n    this._schemeData = '';\n    this._username = '';\n    this._password = null;\n    this._host = '';\n    this._port = '';\n    this._path = [];\n    this._query = '';\n    this._fragment = '';\n    this._isInvalid = false;\n    this._isRelative = false;\n  }\n  function JURL(url, base) {\n    if (base !== undefined && !(base instanceof JURL)) {\n      base = new JURL(String(base));\n    }\n    this._url = url;\n    clear.call(this);\n    var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n    parse.call(this, input, null, base);\n  }\n  JURL.prototype = {\n    toString: function toString() {\n      return this.href;\n    },\n\n    get href() {\n      if (this._isInvalid) {\n        return this._url;\n      }\n      var authority = '';\n      if (this._username !== '' || this._password !== null) {\n        authority = this._username + (this._password !== null ? ':' + this._password : '') + '@';\n      }\n      return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment;\n    },\n    set href(value) {\n      clear.call(this);\n      parse.call(this, value);\n    },\n    get protocol() {\n      return this._scheme + ':';\n    },\n    set protocol(value) {\n      if (this._isInvalid) {\n        return;\n      }\n      parse.call(this, value + ':', 'scheme start');\n    },\n    get host() {\n      return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host;\n    },\n    set host(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'host');\n    },\n    get hostname() {\n      return this._host;\n    },\n    set hostname(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'hostname');\n    },\n    get port() {\n      return this._port;\n    },\n    set port(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'port');\n    },\n    get pathname() {\n      return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData;\n    },\n    set pathname(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      this._path = [];\n      parse.call(this, value, 'relative path start');\n    },\n    get search() {\n      return this._isInvalid || !this._query || this._query === '?' ? '' : this._query;\n    },\n    set search(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      this._query = '?';\n      if (value[0] === '?') {\n        value = value.slice(1);\n      }\n      parse.call(this, value, 'query');\n    },\n    get hash() {\n      return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment;\n    },\n    set hash(value) {\n      if (this._isInvalid) {\n        return;\n      }\n      this._fragment = '#';\n      if (value[0] === '#') {\n        value = value.slice(1);\n      }\n      parse.call(this, value, 'fragment');\n    },\n    get origin() {\n      var host;\n      if (this._isInvalid || !this._scheme) {\n        return '';\n      }\n      switch (this._scheme) {\n        case 'data':\n        case 'file':\n        case 'javascript':\n        case 'mailto':\n          return 'null';\n        case 'blob':\n          try {\n            return new JURL(this._schemeData).origin || 'null';\n          } catch (_) {}\n          return 'null';\n      }\n      host = this.host;\n      if (!host) {\n        return '';\n      }\n      return this._scheme + '://' + host;\n    }\n  };\n  exports.URL = JURL;\n})();\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.build = exports.version = exports.setPDFNetworkStreamFactory = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.getDocument = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _dom_utils = __w_pdfjs_require__(130);\n\nvar _font_loader = __w_pdfjs_require__(131);\n\nvar _api_compatibility = __w_pdfjs_require__(132);\n\nvar _canvas = __w_pdfjs_require__(133);\n\nvar _global_scope = __w_pdfjs_require__(3);\n\nvar _global_scope2 = _interopRequireDefault(_global_scope);\n\nvar _worker_options = __w_pdfjs_require__(135);\n\nvar _message_handler = __w_pdfjs_require__(136);\n\nvar _metadata = __w_pdfjs_require__(141);\n\nvar _transport_stream = __w_pdfjs_require__(143);\n\nvar _webgl = __w_pdfjs_require__(144);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DEFAULT_RANGE_CHUNK_SIZE = 65536;\nvar isWorkerDisabled = false;\nvar fallbackWorkerSrc = void 0;\nvar fakeWorkerFilesLoader = null;\n{\n  var useRequireEnsure = false;\n  if (typeof window === 'undefined') {\n    isWorkerDisabled = true;\n    if (typeof require.ensure === 'undefined') {\n      require.ensure = require('node-ensure');\n    }\n    useRequireEnsure = true;\n  } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') {\n    useRequireEnsure = true;\n  }\n  if (typeof requirejs !== 'undefined' && requirejs.toUrl) {\n    fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');\n  }\n  var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load;\n  fakeWorkerFilesLoader = useRequireEnsure ? function () {\n    return new Promise(function (resolve, reject) {\n      require.ensure([], function () {\n        try {\n          var worker = void 0;\n          worker = require('./pdf.worker.js');\n          resolve(worker.WorkerMessageHandler);\n        } catch (ex) {\n          reject(ex);\n        }\n      }, reject, 'pdfjsWorker');\n    });\n  } : dynamicLoaderSupported ? function () {\n    return new Promise(function (resolve, reject) {\n      requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {\n        try {\n          resolve(worker.WorkerMessageHandler);\n        } catch (ex) {\n          reject(ex);\n        }\n      }, reject);\n    });\n  } : null;\n  if (!fallbackWorkerSrc && typeof document !== 'undefined') {\n    var pdfjsFilePath = document.currentScript && document.currentScript.src;\n    if (pdfjsFilePath) {\n      fallbackWorkerSrc = pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, '.worker$1$2');\n    }\n  }\n}\nvar createPDFNetworkStream;\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n  createPDFNetworkStream = pdfNetworkStreamFactory;\n}\nfunction getDocument(src) {\n  var task = new PDFDocumentLoadingTask();\n  var source;\n  if (typeof src === 'string') {\n    source = { url: src };\n  } else if ((0, _util.isArrayBuffer)(src)) {\n    source = { data: src };\n  } else if (src instanceof PDFDataRangeTransport) {\n    source = { range: src };\n  } else {\n    if ((typeof src === 'undefined' ? 'undefined' : _typeof(src)) !== 'object') {\n      throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object');\n    }\n    if (!src.url && !src.data && !src.range) {\n      throw new Error('Invalid parameter object: need either .data, .range or .url');\n    }\n    source = src;\n  }\n  var params = Object.create(null);\n  var rangeTransport = null;\n  var worker = null;\n  for (var key in source) {\n    if (key === 'url' && typeof window !== 'undefined') {\n      params[key] = new _util.URL(source[key], window.location).href;\n      continue;\n    } else if (key === 'range') {\n      rangeTransport = source[key];\n      continue;\n    } else if (key === 'worker') {\n      worker = source[key];\n      continue;\n    } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {\n      var pdfBytes = source[key];\n      if (typeof pdfBytes === 'string') {\n        params[key] = (0, _util.stringToBytes)(pdfBytes);\n      } else if ((typeof pdfBytes === 'undefined' ? 'undefined' : _typeof(pdfBytes)) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) {\n        params[key] = new Uint8Array(pdfBytes);\n      } else if ((0, _util.isArrayBuffer)(pdfBytes)) {\n        params[key] = new Uint8Array(pdfBytes);\n      } else {\n        throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.');\n      }\n      continue;\n    }\n    params[key] = source[key];\n  }\n  params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n  params.CMapReaderFactory = params.CMapReaderFactory || _dom_utils.DOMCMapReaderFactory;\n  params.ignoreErrors = params.stopAtErrors !== true;\n  params.pdfBug = params.pdfBug === true;\n  var NativeImageDecoderValues = Object.values(_util.NativeImageDecoding);\n  if (params.nativeImageDecoderSupport === undefined || !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {\n    params.nativeImageDecoderSupport = _api_compatibility.apiCompatibilityParams.nativeImageDecoderSupport || _util.NativeImageDecoding.DECODE;\n  }\n  if (!Number.isInteger(params.maxImageSize)) {\n    params.maxImageSize = -1;\n  }\n  if (typeof params.isEvalSupported !== 'boolean') {\n    params.isEvalSupported = true;\n  }\n  if (typeof params.disableFontFace !== 'boolean') {\n    params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;\n  }\n  if (typeof params.disableRange !== 'boolean') {\n    params.disableRange = false;\n  }\n  if (typeof params.disableStream !== 'boolean') {\n    params.disableStream = false;\n  }\n  if (typeof params.disableAutoFetch !== 'boolean') {\n    params.disableAutoFetch = false;\n  }\n  if (typeof params.disableCreateObjectURL !== 'boolean') {\n    params.disableCreateObjectURL = _api_compatibility.apiCompatibilityParams.disableCreateObjectURL || false;\n  }\n  (0, _util.setVerbosityLevel)(params.verbosity);\n  if (!worker) {\n    var workerParams = {\n      postMessageTransfers: params.postMessageTransfers,\n      verbosity: params.verbosity\n    };\n    var workerPort = _worker_options.GlobalWorkerOptions.workerPort;\n    if (workerPort) {\n      workerParams.port = workerPort;\n      worker = PDFWorker.fromPort(workerParams);\n    } else {\n      worker = new PDFWorker(workerParams);\n    }\n    task._worker = worker;\n  }\n  var docId = task.docId;\n  worker.promise.then(function () {\n    if (task.destroyed) {\n      throw new Error('Loading aborted');\n    }\n    return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) {\n      if (task.destroyed) {\n        throw new Error('Loading aborted');\n      }\n      var networkStream = void 0;\n      if (rangeTransport) {\n        networkStream = new _transport_stream.PDFDataTransportStream({\n          length: params.length,\n          initialData: params.initialData,\n          disableRange: params.disableRange,\n          disableStream: params.disableStream\n        }, rangeTransport);\n      } else if (!params.data) {\n        networkStream = createPDFNetworkStream({\n          url: params.url,\n          length: params.length,\n          httpHeaders: params.httpHeaders,\n          withCredentials: params.withCredentials,\n          rangeChunkSize: params.rangeChunkSize,\n          disableRange: params.disableRange,\n          disableStream: params.disableStream\n        });\n      }\n      var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);\n      messageHandler.postMessageTransfers = worker.postMessageTransfers;\n      var transport = new WorkerTransport(messageHandler, task, networkStream, params);\n      task._transport = transport;\n      messageHandler.send('Ready', null);\n    });\n  }).catch(task._capability.reject);\n  return task;\n}\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n  if (worker.destroyed) {\n    return Promise.reject(new Error('Worker was destroyed'));\n  }\n  if (pdfDataRangeTransport) {\n    source.length = pdfDataRangeTransport.length;\n    source.initialData = pdfDataRangeTransport.initialData;\n  }\n  return worker.messageHandler.sendWithPromise('GetDocRequest', {\n    docId: docId,\n    apiVersion: '2.0.943',\n    source: {\n      data: source.data,\n      url: source.url,\n      password: source.password,\n      disableAutoFetch: source.disableAutoFetch,\n      rangeChunkSize: source.rangeChunkSize,\n      length: source.length\n    },\n    maxImageSize: source.maxImageSize,\n    disableFontFace: source.disableFontFace,\n    disableCreateObjectURL: source.disableCreateObjectURL,\n    postMessageTransfers: worker.postMessageTransfers,\n    docBaseUrl: source.docBaseUrl,\n    nativeImageDecoderSupport: source.nativeImageDecoderSupport,\n    ignoreErrors: source.ignoreErrors,\n    isEvalSupported: source.isEvalSupported\n  }).then(function (workerId) {\n    if (worker.destroyed) {\n      throw new Error('Worker was destroyed');\n    }\n    return workerId;\n  });\n}\nvar PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {\n  var nextDocumentId = 0;\n  function PDFDocumentLoadingTask() {\n    this._capability = (0, _util.createPromiseCapability)();\n    this._transport = null;\n    this._worker = null;\n    this.docId = 'd' + nextDocumentId++;\n    this.destroyed = false;\n    this.onPassword = null;\n    this.onProgress = null;\n    this.onUnsupportedFeature = null;\n  }\n  PDFDocumentLoadingTask.prototype = {\n    get promise() {\n      return this._capability.promise;\n    },\n    destroy: function destroy() {\n      var _this = this;\n\n      this.destroyed = true;\n      var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();\n      return transportDestroyed.then(function () {\n        _this._transport = null;\n        if (_this._worker) {\n          _this._worker.destroy();\n          _this._worker = null;\n        }\n      });\n    },\n\n    then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {\n      return this.promise.then.apply(this.promise, arguments);\n    }\n  };\n  return PDFDocumentLoadingTask;\n}();\n\nvar PDFDataRangeTransport = function () {\n  function PDFDataRangeTransport(length, initialData) {\n    _classCallCheck(this, PDFDataRangeTransport);\n\n    this.length = length;\n    this.initialData = initialData;\n    this._rangeListeners = [];\n    this._progressListeners = [];\n    this._progressiveReadListeners = [];\n    this._readyCapability = (0, _util.createPromiseCapability)();\n  }\n\n  _createClass(PDFDataRangeTransport, [{\n    key: 'addRangeListener',\n    value: function addRangeListener(listener) {\n      this._rangeListeners.push(listener);\n    }\n  }, {\n    key: 'addProgressListener',\n    value: function addProgressListener(listener) {\n      this._progressListeners.push(listener);\n    }\n  }, {\n    key: 'addProgressiveReadListener',\n    value: function addProgressiveReadListener(listener) {\n      this._progressiveReadListeners.push(listener);\n    }\n  }, {\n    key: 'onDataRange',\n    value: function onDataRange(begin, chunk) {\n      var _iteratorNormalCompletion = true;\n      var _didIteratorError = false;\n      var _iteratorError = undefined;\n\n      try {\n        for (var _iterator = this._rangeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n          var listener = _step.value;\n\n          listener(begin, chunk);\n        }\n      } catch (err) {\n        _didIteratorError = true;\n        _iteratorError = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion && _iterator.return) {\n            _iterator.return();\n          }\n        } finally {\n          if (_didIteratorError) {\n            throw _iteratorError;\n          }\n        }\n      }\n    }\n  }, {\n    key: 'onDataProgress',\n    value: function onDataProgress(loaded) {\n      var _this2 = this;\n\n      this._readyCapability.promise.then(function () {\n        var _iteratorNormalCompletion2 = true;\n        var _didIteratorError2 = false;\n        var _iteratorError2 = undefined;\n\n        try {\n          for (var _iterator2 = _this2._progressListeners[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n            var listener = _step2.value;\n\n            listener(loaded);\n          }\n        } catch (err) {\n          _didIteratorError2 = true;\n          _iteratorError2 = err;\n        } finally {\n          try {\n            if (!_iteratorNormalCompletion2 && _iterator2.return) {\n              _iterator2.return();\n            }\n          } finally {\n            if (_didIteratorError2) {\n              throw _iteratorError2;\n            }\n          }\n        }\n      });\n    }\n  }, {\n    key: 'onDataProgressiveRead',\n    value: function onDataProgressiveRead(chunk) {\n      var _this3 = this;\n\n      this._readyCapability.promise.then(function () {\n        var _iteratorNormalCompletion3 = true;\n        var _didIteratorError3 = false;\n        var _iteratorError3 = undefined;\n\n        try {\n          for (var _iterator3 = _this3._progressiveReadListeners[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n            var listener = _step3.value;\n\n            listener(chunk);\n          }\n        } catch (err) {\n          _didIteratorError3 = true;\n          _iteratorError3 = err;\n        } finally {\n          try {\n            if (!_iteratorNormalCompletion3 && _iterator3.return) {\n              _iterator3.return();\n            }\n          } finally {\n            if (_didIteratorError3) {\n              throw _iteratorError3;\n            }\n          }\n        }\n      });\n    }\n  }, {\n    key: 'transportReady',\n    value: function transportReady() {\n      this._readyCapability.resolve();\n    }\n  }, {\n    key: 'requestDataRange',\n    value: function requestDataRange(begin, end) {\n      (0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange');\n    }\n  }, {\n    key: 'abort',\n    value: function abort() {}\n  }]);\n\n  return PDFDataRangeTransport;\n}();\n\nvar PDFDocumentProxy = function () {\n  function PDFDocumentProxy(pdfInfo, transport, loadingTask) {\n    _classCallCheck(this, PDFDocumentProxy);\n\n    this.loadingTask = loadingTask;\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n  }\n\n  _createClass(PDFDocumentProxy, [{\n    key: 'getPage',\n    value: function getPage(pageNumber) {\n      return this._transport.getPage(pageNumber);\n    }\n  }, {\n    key: 'getPageIndex',\n    value: function getPageIndex(ref) {\n      return this._transport.getPageIndex(ref);\n    }\n  }, {\n    key: 'getDestinations',\n    value: function getDestinations() {\n      return this._transport.getDestinations();\n    }\n  }, {\n    key: 'getDestination',\n    value: function getDestination(id) {\n      return this._transport.getDestination(id);\n    }\n  }, {\n    key: 'getPageLabels',\n    value: function getPageLabels() {\n      return this._transport.getPageLabels();\n    }\n  }, {\n    key: 'getPageMode',\n    value: function getPageMode() {\n      return this._transport.getPageMode();\n    }\n  }, {\n    key: 'getAttachments',\n    value: function getAttachments() {\n      return this._transport.getAttachments();\n    }\n  }, {\n    key: 'getJavaScript',\n    value: function getJavaScript() {\n      return this._transport.getJavaScript();\n    }\n  }, {\n    key: 'getOutline',\n    value: function getOutline() {\n      return this._transport.getOutline();\n    }\n  }, {\n    key: 'getPermissions',\n    value: function getPermissions() {\n      return this._transport.getPermissions();\n    }\n  }, {\n    key: 'getMetadata',\n    value: function getMetadata() {\n      return this._transport.getMetadata();\n    }\n  }, {\n    key: 'getData',\n    value: function getData() {\n      return this._transport.getData();\n    }\n  }, {\n    key: 'getDownloadInfo',\n    value: function getDownloadInfo() {\n      return this._transport.downloadInfoCapability.promise;\n    }\n  }, {\n    key: 'getStats',\n    value: function getStats() {\n      return this._transport.getStats();\n    }\n  }, {\n    key: 'cleanup',\n    value: function cleanup() {\n      this._transport.startCleanup();\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy() {\n      return this.loadingTask.destroy();\n    }\n  }, {\n    key: 'numPages',\n    get: function get() {\n      return this._pdfInfo.numPages;\n    }\n  }, {\n    key: 'fingerprint',\n    get: function get() {\n      return this._pdfInfo.fingerprint;\n    }\n  }, {\n    key: 'loadingParams',\n    get: function get() {\n      return this._transport.loadingParams;\n    }\n  }]);\n\n  return PDFDocumentProxy;\n}();\n\nvar PDFPageProxy = function PDFPageProxyClosure() {\n  function PDFPageProxy(pageIndex, pageInfo, transport) {\n    var pdfBug = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n    this.pageIndex = pageIndex;\n    this._pageInfo = pageInfo;\n    this.transport = transport;\n    this._stats = pdfBug ? new _dom_utils.StatTimer() : _dom_utils.DummyStatTimer;\n    this._pdfBug = pdfBug;\n    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n    this.cleanupAfterRender = false;\n    this.pendingCleanup = false;\n    this.intentStates = Object.create(null);\n    this.destroyed = false;\n  }\n  PDFPageProxy.prototype = {\n    get pageNumber() {\n      return this.pageIndex + 1;\n    },\n    get rotate() {\n      return this._pageInfo.rotate;\n    },\n    get ref() {\n      return this._pageInfo.ref;\n    },\n    get userUnit() {\n      return this._pageInfo.userUnit;\n    },\n    get view() {\n      return this._pageInfo.view;\n    },\n    getViewport: function getViewport(scale) {\n      var rotate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.rotate;\n      var dontFlip = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      return new _dom_utils.PageViewport({\n        viewBox: this.view,\n        scale: scale,\n        rotation: rotate,\n        dontFlip: dontFlip\n      });\n    },\n\n    getAnnotations: function PDFPageProxy_getAnnotations(params) {\n      var intent = params && params.intent || null;\n      if (!this.annotationsPromise || this.annotationsIntent !== intent) {\n        this.annotationsPromise = this.transport.getAnnotations(this.pageIndex, intent);\n        this.annotationsIntent = intent;\n      }\n      return this.annotationsPromise;\n    },\n    render: function PDFPageProxy_render(params) {\n      var _this4 = this;\n\n      var stats = this._stats;\n      stats.time('Overall');\n      this.pendingCleanup = false;\n      var renderingIntent = params.intent === 'print' ? 'print' : 'display';\n      var canvasFactory = params.canvasFactory || new _dom_utils.DOMCanvasFactory();\n      var webGLContext = new _webgl.WebGLContext({ enable: params.enableWebGL });\n      if (!this.intentStates[renderingIntent]) {\n        this.intentStates[renderingIntent] = Object.create(null);\n      }\n      var intentState = this.intentStates[renderingIntent];\n      if (!intentState.displayReadyCapability) {\n        intentState.receivingOperatorList = true;\n        intentState.displayReadyCapability = (0, _util.createPromiseCapability)();\n        intentState.operatorList = {\n          fnArray: [],\n          argsArray: [],\n          lastChunk: false\n        };\n        stats.time('Page Request');\n        this.transport.messageHandler.send('RenderPageRequest', {\n          pageIndex: this.pageNumber - 1,\n          intent: renderingIntent,\n          renderInteractiveForms: params.renderInteractiveForms === true\n        });\n      }\n      var complete = function complete(error) {\n        var i = intentState.renderTasks.indexOf(internalRenderTask);\n        if (i >= 0) {\n          intentState.renderTasks.splice(i, 1);\n        }\n        if (_this4.cleanupAfterRender) {\n          _this4.pendingCleanup = true;\n        }\n        _this4._tryCleanup();\n        if (error) {\n          internalRenderTask.capability.reject(error);\n        } else {\n          internalRenderTask.capability.resolve();\n        }\n        stats.timeEnd('Rendering');\n        stats.timeEnd('Overall');\n      };\n      var internalRenderTask = new InternalRenderTask(complete, params, this.objs, this.commonObjs, intentState.operatorList, this.pageNumber, canvasFactory, webGLContext, this._pdfBug);\n      internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';\n      if (!intentState.renderTasks) {\n        intentState.renderTasks = [];\n      }\n      intentState.renderTasks.push(internalRenderTask);\n      var renderTask = internalRenderTask.task;\n      intentState.displayReadyCapability.promise.then(function (transparency) {\n        if (_this4.pendingCleanup) {\n          complete();\n          return;\n        }\n        stats.time('Rendering');\n        internalRenderTask.initializeGraphics(transparency);\n        internalRenderTask.operatorListChanged();\n      }).catch(complete);\n      return renderTask;\n    },\n    getOperatorList: function PDFPageProxy_getOperatorList() {\n      function operatorListChanged() {\n        if (intentState.operatorList.lastChunk) {\n          intentState.opListReadCapability.resolve(intentState.operatorList);\n          var i = intentState.renderTasks.indexOf(opListTask);\n          if (i >= 0) {\n            intentState.renderTasks.splice(i, 1);\n          }\n        }\n      }\n      var renderingIntent = 'oplist';\n      if (!this.intentStates[renderingIntent]) {\n        this.intentStates[renderingIntent] = Object.create(null);\n      }\n      var intentState = this.intentStates[renderingIntent];\n      var opListTask;\n      if (!intentState.opListReadCapability) {\n        opListTask = {};\n        opListTask.operatorListChanged = operatorListChanged;\n        intentState.receivingOperatorList = true;\n        intentState.opListReadCapability = (0, _util.createPromiseCapability)();\n        intentState.renderTasks = [];\n        intentState.renderTasks.push(opListTask);\n        intentState.operatorList = {\n          fnArray: [],\n          argsArray: [],\n          lastChunk: false\n        };\n        this._stats.time('Page Request');\n        this.transport.messageHandler.send('RenderPageRequest', {\n          pageIndex: this.pageIndex,\n          intent: renderingIntent\n        });\n      }\n      return intentState.opListReadCapability.promise;\n    },\n    streamTextContent: function streamTextContent() {\n      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      var TEXT_CONTENT_CHUNK_SIZE = 100;\n      return this.transport.messageHandler.sendWithStream('GetTextContent', {\n        pageIndex: this.pageNumber - 1,\n        normalizeWhitespace: params.normalizeWhitespace === true,\n        combineTextItems: params.disableCombineTextItems !== true\n      }, {\n        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n        size: function size(textContent) {\n          return textContent.items.length;\n        }\n      });\n    },\n\n    getTextContent: function PDFPageProxy_getTextContent(params) {\n      params = params || {};\n      var readableStream = this.streamTextContent(params);\n      return new Promise(function (resolve, reject) {\n        function pump() {\n          reader.read().then(function (_ref) {\n            var _textContent$items;\n\n            var value = _ref.value,\n                done = _ref.done;\n\n            if (done) {\n              resolve(textContent);\n              return;\n            }\n            Object.assign(textContent.styles, value.styles);\n            (_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items));\n            pump();\n          }, reject);\n        }\n        var reader = readableStream.getReader();\n        var textContent = {\n          items: [],\n          styles: Object.create(null)\n        };\n        pump();\n      });\n    },\n    _destroy: function PDFPageProxy_destroy() {\n      this.destroyed = true;\n      this.transport.pageCache[this.pageIndex] = null;\n      var waitOn = [];\n      Object.keys(this.intentStates).forEach(function (intent) {\n        if (intent === 'oplist') {\n          return;\n        }\n        var intentState = this.intentStates[intent];\n        intentState.renderTasks.forEach(function (renderTask) {\n          var renderCompleted = renderTask.capability.promise.catch(function () {});\n          waitOn.push(renderCompleted);\n          renderTask.cancel();\n        });\n      }, this);\n      this.objs.clear();\n      this.annotationsPromise = null;\n      this.pendingCleanup = false;\n      return Promise.all(waitOn);\n    },\n    cleanup: function cleanup() {\n      var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      this.pendingCleanup = true;\n      this._tryCleanup(resetStats);\n    },\n    _tryCleanup: function _tryCleanup() {\n      var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {\n        var intentState = this.intentStates[intent];\n        return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;\n      }, this)) {\n        return;\n      }\n      Object.keys(this.intentStates).forEach(function (intent) {\n        delete this.intentStates[intent];\n      }, this);\n      this.objs.clear();\n      this.annotationsPromise = null;\n      if (resetStats && this._stats instanceof _dom_utils.StatTimer) {\n        this._stats = new _dom_utils.StatTimer();\n      }\n      this.pendingCleanup = false;\n    },\n\n    _startRenderPage: function PDFPageProxy_startRenderPage(transparency, intent) {\n      var intentState = this.intentStates[intent];\n      if (intentState.displayReadyCapability) {\n        intentState.displayReadyCapability.resolve(transparency);\n      }\n    },\n    _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk, intent) {\n      var intentState = this.intentStates[intent];\n      var i, ii;\n      for (i = 0, ii = operatorListChunk.length; i < ii; i++) {\n        intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n        intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n      }\n      intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n      for (i = 0; i < intentState.renderTasks.length; i++) {\n        intentState.renderTasks[i].operatorListChanged();\n      }\n      if (operatorListChunk.lastChunk) {\n        intentState.receivingOperatorList = false;\n        this._tryCleanup();\n      }\n    },\n    get stats() {\n      return this._stats instanceof _dom_utils.StatTimer ? this._stats : null;\n    }\n  };\n  return PDFPageProxy;\n}();\n\nvar LoopbackPort = function () {\n  function LoopbackPort() {\n    var defer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n    _classCallCheck(this, LoopbackPort);\n\n    this._listeners = [];\n    this._defer = defer;\n    this._deferred = Promise.resolve(undefined);\n  }\n\n  _createClass(LoopbackPort, [{\n    key: 'postMessage',\n    value: function postMessage(obj, transfers) {\n      var _this5 = this;\n\n      function cloneValue(value) {\n        if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object' || value === null) {\n          return value;\n        }\n        if (cloned.has(value)) {\n          return cloned.get(value);\n        }\n        var result;\n        var buffer;\n        if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {\n          var transferable = transfers && transfers.includes(buffer);\n          if (value === buffer) {\n            result = value;\n          } else if (transferable) {\n            result = new value.constructor(buffer, value.byteOffset, value.byteLength);\n          } else {\n            result = new value.constructor(value);\n          }\n          cloned.set(value, result);\n          return result;\n        }\n        result = Array.isArray(value) ? [] : {};\n        cloned.set(value, result);\n        for (var i in value) {\n          var desc,\n              p = value;\n          while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n            p = Object.getPrototypeOf(p);\n          }\n          if (typeof desc.value === 'undefined' || typeof desc.value === 'function') {\n            continue;\n          }\n          result[i] = cloneValue(desc.value);\n        }\n        return result;\n      }\n      if (!this._defer) {\n        this._listeners.forEach(function (listener) {\n          listener.call(this, { data: obj });\n        }, this);\n        return;\n      }\n      var cloned = new WeakMap();\n      var e = { data: cloneValue(obj) };\n      this._deferred.then(function () {\n        _this5._listeners.forEach(function (listener) {\n          listener.call(this, e);\n        }, _this5);\n      });\n    }\n  }, {\n    key: 'addEventListener',\n    value: function addEventListener(name, listener) {\n      this._listeners.push(listener);\n    }\n  }, {\n    key: 'removeEventListener',\n    value: function removeEventListener(name, listener) {\n      var i = this._listeners.indexOf(listener);\n      this._listeners.splice(i, 1);\n    }\n  }, {\n    key: 'terminate',\n    value: function terminate() {\n      this._listeners = [];\n    }\n  }]);\n\n  return LoopbackPort;\n}();\n\nvar PDFWorker = function PDFWorkerClosure() {\n  var nextFakeWorkerId = 0;\n  function getWorkerSrc() {\n    if (_worker_options.GlobalWorkerOptions.workerSrc) {\n      return _worker_options.GlobalWorkerOptions.workerSrc;\n    }\n    if (typeof fallbackWorkerSrc !== 'undefined') {\n      return fallbackWorkerSrc;\n    }\n    throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n  }\n  function getMainThreadWorkerMessageHandler() {\n    try {\n      if (typeof window !== 'undefined') {\n        return window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler;\n      }\n    } catch (ex) {}\n    return null;\n  }\n  var fakeWorkerFilesLoadedCapability = void 0;\n  function setupFakeWorkerGlobal() {\n    if (fakeWorkerFilesLoadedCapability) {\n      return fakeWorkerFilesLoadedCapability.promise;\n    }\n    fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)();\n    var mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();\n    if (mainWorkerMessageHandler) {\n      fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);\n      return fakeWorkerFilesLoadedCapability.promise;\n    }\n    var loader = fakeWorkerFilesLoader || function () {\n      return (0, _dom_utils.loadScript)(getWorkerSrc()).then(function () {\n        return window.pdfjsWorker.WorkerMessageHandler;\n      });\n    };\n    loader().then(fakeWorkerFilesLoadedCapability.resolve, fakeWorkerFilesLoadedCapability.reject);\n    return fakeWorkerFilesLoadedCapability.promise;\n  }\n  function createCDNWrapper(url) {\n    var wrapper = 'importScripts(\\'' + url + '\\');';\n    return _util.URL.createObjectURL(new Blob([wrapper]));\n  }\n  var pdfWorkerPorts = new WeakMap();\n  function PDFWorker() {\n    var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        _ref2$name = _ref2.name,\n        name = _ref2$name === undefined ? null : _ref2$name,\n        _ref2$port = _ref2.port,\n        port = _ref2$port === undefined ? null : _ref2$port,\n        _ref2$postMessageTran = _ref2.postMessageTransfers,\n        postMessageTransfers = _ref2$postMessageTran === undefined ? true : _ref2$postMessageTran,\n        _ref2$verbosity = _ref2.verbosity,\n        verbosity = _ref2$verbosity === undefined ? (0, _util.getVerbosityLevel)() : _ref2$verbosity;\n\n    if (port && pdfWorkerPorts.has(port)) {\n      throw new Error('Cannot use more than one PDFWorker per port');\n    }\n    this.name = name;\n    this.destroyed = false;\n    this.postMessageTransfers = postMessageTransfers !== false;\n    this.verbosity = verbosity;\n    this._readyCapability = (0, _util.createPromiseCapability)();\n    this._port = null;\n    this._webWorker = null;\n    this._messageHandler = null;\n    if (port) {\n      pdfWorkerPorts.set(port, this);\n      this._initializeFromPort(port);\n      return;\n    }\n    this._initialize();\n  }\n  PDFWorker.prototype = {\n    get promise() {\n      return this._readyCapability.promise;\n    },\n    get port() {\n      return this._port;\n    },\n    get messageHandler() {\n      return this._messageHandler;\n    },\n    _initializeFromPort: function PDFWorker_initializeFromPort(port) {\n      this._port = port;\n      this._messageHandler = new _message_handler.MessageHandler('main', 'worker', port);\n      this._messageHandler.on('ready', function () {});\n      this._readyCapability.resolve();\n    },\n    _initialize: function PDFWorker_initialize() {\n      var _this6 = this;\n\n      if (typeof Worker !== 'undefined' && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {\n        var workerSrc = getWorkerSrc();\n        try {\n          if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {\n            workerSrc = createCDNWrapper(new _util.URL(workerSrc, window.location).href);\n          }\n          var worker = new Worker(workerSrc);\n          var messageHandler = new _message_handler.MessageHandler('main', 'worker', worker);\n          var terminateEarly = function terminateEarly() {\n            worker.removeEventListener('error', onWorkerError);\n            messageHandler.destroy();\n            worker.terminate();\n            if (_this6.destroyed) {\n              _this6._readyCapability.reject(new Error('Worker was destroyed'));\n            } else {\n              _this6._setupFakeWorker();\n            }\n          };\n          var onWorkerError = function onWorkerError() {\n            if (!_this6._webWorker) {\n              terminateEarly();\n            }\n          };\n          worker.addEventListener('error', onWorkerError);\n          messageHandler.on('test', function (data) {\n            worker.removeEventListener('error', onWorkerError);\n            if (_this6.destroyed) {\n              terminateEarly();\n              return;\n            }\n            if (data && data.supportTypedArray) {\n              _this6._messageHandler = messageHandler;\n              _this6._port = worker;\n              _this6._webWorker = worker;\n              if (!data.supportTransfers) {\n                _this6.postMessageTransfers = false;\n              }\n              _this6._readyCapability.resolve();\n              messageHandler.send('configure', { verbosity: _this6.verbosity });\n            } else {\n              _this6._setupFakeWorker();\n              messageHandler.destroy();\n              worker.terminate();\n            }\n          });\n          messageHandler.on('ready', function (data) {\n            worker.removeEventListener('error', onWorkerError);\n            if (_this6.destroyed) {\n              terminateEarly();\n              return;\n            }\n            try {\n              sendTest();\n            } catch (e) {\n              _this6._setupFakeWorker();\n            }\n          });\n          var sendTest = function sendTest() {\n            var testObj = new Uint8Array([_this6.postMessageTransfers ? 255 : 0]);\n            try {\n              messageHandler.send('test', testObj, [testObj.buffer]);\n            } catch (ex) {\n              (0, _util.info)('Cannot use postMessage transfers');\n              testObj[0] = 0;\n              messageHandler.send('test', testObj);\n            }\n          };\n          sendTest();\n          return;\n        } catch (e) {\n          (0, _util.info)('The worker has been disabled.');\n        }\n      }\n      this._setupFakeWorker();\n    },\n    _setupFakeWorker: function PDFWorker_setupFakeWorker() {\n      var _this7 = this;\n\n      if (!isWorkerDisabled) {\n        (0, _util.warn)('Setting up fake worker.');\n        isWorkerDisabled = true;\n      }\n      setupFakeWorkerGlobal().then(function (WorkerMessageHandler) {\n        if (_this7.destroyed) {\n          _this7._readyCapability.reject(new Error('Worker was destroyed'));\n          return;\n        }\n        var port = new LoopbackPort();\n        _this7._port = port;\n        var id = 'fake' + nextFakeWorkerId++;\n        var workerHandler = new _message_handler.MessageHandler(id + '_worker', id, port);\n        WorkerMessageHandler.setup(workerHandler, port);\n        var messageHandler = new _message_handler.MessageHandler(id, id + '_worker', port);\n        _this7._messageHandler = messageHandler;\n        _this7._readyCapability.resolve();\n      }).catch(function (reason) {\n        _this7._readyCapability.reject(new Error('Setting up fake worker failed: \"' + reason.message + '\".'));\n      });\n    },\n    destroy: function PDFWorker_destroy() {\n      this.destroyed = true;\n      if (this._webWorker) {\n        this._webWorker.terminate();\n        this._webWorker = null;\n      }\n      pdfWorkerPorts.delete(this._port);\n      this._port = null;\n      if (this._messageHandler) {\n        this._messageHandler.destroy();\n        this._messageHandler = null;\n      }\n    }\n  };\n  PDFWorker.fromPort = function (params) {\n    if (!params || !params.port) {\n      throw new Error('PDFWorker.fromPort - invalid method signature.');\n    }\n    if (pdfWorkerPorts.has(params.port)) {\n      return pdfWorkerPorts.get(params.port);\n    }\n    return new PDFWorker(params);\n  };\n  PDFWorker.getWorkerSrc = function () {\n    return getWorkerSrc();\n  };\n  return PDFWorker;\n}();\n\nvar WorkerTransport = function () {\n  function WorkerTransport(messageHandler, loadingTask, networkStream, params) {\n    _classCallCheck(this, WorkerTransport);\n\n    this.messageHandler = messageHandler;\n    this.loadingTask = loadingTask;\n    this.commonObjs = new PDFObjects();\n    this.fontLoader = new _font_loader.FontLoader(loadingTask.docId);\n    this._params = params;\n    this.CMapReaderFactory = new params.CMapReaderFactory({\n      baseUrl: params.cMapUrl,\n      isCompressed: params.cMapPacked\n    });\n    this.destroyed = false;\n    this.destroyCapability = null;\n    this._passwordCapability = null;\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n    this.pageCache = [];\n    this.pagePromises = [];\n    this.downloadInfoCapability = (0, _util.createPromiseCapability)();\n    this.setupMessageHandler();\n  }\n\n  _createClass(WorkerTransport, [{\n    key: 'destroy',\n    value: function destroy() {\n      var _this8 = this;\n\n      if (this.destroyCapability) {\n        return this.destroyCapability.promise;\n      }\n      this.destroyed = true;\n      this.destroyCapability = (0, _util.createPromiseCapability)();\n      if (this._passwordCapability) {\n        this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback'));\n      }\n      var waitOn = [];\n      this.pageCache.forEach(function (page) {\n        if (page) {\n          waitOn.push(page._destroy());\n        }\n      });\n      this.pageCache = [];\n      this.pagePromises = [];\n      var terminated = this.messageHandler.sendWithPromise('Terminate', null);\n      waitOn.push(terminated);\n      Promise.all(waitOn).then(function () {\n        _this8.fontLoader.clear();\n        if (_this8._networkStream) {\n          _this8._networkStream.cancelAllRequests();\n        }\n        if (_this8.messageHandler) {\n          _this8.messageHandler.destroy();\n          _this8.messageHandler = null;\n        }\n        _this8.destroyCapability.resolve();\n      }, this.destroyCapability.reject);\n      return this.destroyCapability.promise;\n    }\n  }, {\n    key: 'setupMessageHandler',\n    value: function setupMessageHandler() {\n      var messageHandler = this.messageHandler,\n          loadingTask = this.loadingTask;\n\n      messageHandler.on('GetReader', function (data, sink) {\n        var _this9 = this;\n\n        (0, _util.assert)(this._networkStream);\n        this._fullReader = this._networkStream.getFullReader();\n        this._fullReader.onProgress = function (evt) {\n          _this9._lastProgress = {\n            loaded: evt.loaded,\n            total: evt.total\n          };\n        };\n        sink.onPull = function () {\n          _this9._fullReader.read().then(function (_ref3) {\n            var value = _ref3.value,\n                done = _ref3.done;\n\n            if (done) {\n              sink.close();\n              return;\n            }\n            (0, _util.assert)((0, _util.isArrayBuffer)(value));\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          }).catch(function (reason) {\n            sink.error(reason);\n          });\n        };\n        sink.onCancel = function (reason) {\n          _this9._fullReader.cancel(reason);\n        };\n      }, this);\n      messageHandler.on('ReaderHeadersReady', function (data) {\n        var _this10 = this;\n\n        var headersCapability = (0, _util.createPromiseCapability)();\n        var fullReader = this._fullReader;\n        fullReader.headersReady.then(function () {\n          if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n            if (_this10._lastProgress && loadingTask.onProgress) {\n              loadingTask.onProgress(_this10._lastProgress);\n            }\n            fullReader.onProgress = function (evt) {\n              if (loadingTask.onProgress) {\n                loadingTask.onProgress({\n                  loaded: evt.loaded,\n                  total: evt.total\n                });\n              }\n            };\n          }\n          headersCapability.resolve({\n            isStreamingSupported: fullReader.isStreamingSupported,\n            isRangeSupported: fullReader.isRangeSupported,\n            contentLength: fullReader.contentLength\n          });\n        }, headersCapability.reject);\n        return headersCapability.promise;\n      }, this);\n      messageHandler.on('GetRangeReader', function (data, sink) {\n        (0, _util.assert)(this._networkStream);\n        var rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n        sink.onPull = function () {\n          rangeReader.read().then(function (_ref4) {\n            var value = _ref4.value,\n                done = _ref4.done;\n\n            if (done) {\n              sink.close();\n              return;\n            }\n            (0, _util.assert)((0, _util.isArrayBuffer)(value));\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          }).catch(function (reason) {\n            sink.error(reason);\n          });\n        };\n        sink.onCancel = function (reason) {\n          rangeReader.cancel(reason);\n        };\n      }, this);\n      messageHandler.on('GetDoc', function (_ref5) {\n        var pdfInfo = _ref5.pdfInfo;\n\n        this.numPages = pdfInfo.numPages;\n        this.pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);\n        loadingTask._capability.resolve(this.pdfDocument);\n      }, this);\n      messageHandler.on('PasswordRequest', function (exception) {\n        var _this11 = this;\n\n        this._passwordCapability = (0, _util.createPromiseCapability)();\n        if (loadingTask.onPassword) {\n          var updatePassword = function updatePassword(password) {\n            _this11._passwordCapability.resolve({ password: password });\n          };\n          try {\n            loadingTask.onPassword(updatePassword, exception.code);\n          } catch (ex) {\n            this._passwordCapability.reject(ex);\n          }\n        } else {\n          this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));\n        }\n        return this._passwordCapability.promise;\n      }, this);\n      messageHandler.on('PasswordException', function (exception) {\n        loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code));\n      }, this);\n      messageHandler.on('InvalidPDF', function (exception) {\n        loadingTask._capability.reject(new _util.InvalidPDFException(exception.message));\n      }, this);\n      messageHandler.on('MissingPDF', function (exception) {\n        loadingTask._capability.reject(new _util.MissingPDFException(exception.message));\n      }, this);\n      messageHandler.on('UnexpectedResponse', function (exception) {\n        loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status));\n      }, this);\n      messageHandler.on('UnknownError', function (exception) {\n        loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details));\n      }, this);\n      messageHandler.on('DataLoaded', function (data) {\n        if (loadingTask.onProgress) {\n          loadingTask.onProgress({\n            loaded: data.length,\n            total: data.length\n          });\n        }\n        this.downloadInfoCapability.resolve(data);\n      }, this);\n      messageHandler.on('StartRenderPage', function (data) {\n        if (this.destroyed) {\n          return;\n        }\n        var page = this.pageCache[data.pageIndex];\n        page._stats.timeEnd('Page Request');\n        page._startRenderPage(data.transparency, data.intent);\n      }, this);\n      messageHandler.on('RenderPageChunk', function (data) {\n        if (this.destroyed) {\n          return;\n        }\n        var page = this.pageCache[data.pageIndex];\n        page._renderPageChunk(data.operatorList, data.intent);\n      }, this);\n      messageHandler.on('commonobj', function (data) {\n        var _this12 = this;\n\n        if (this.destroyed) {\n          return;\n        }\n\n        var _data = _slicedToArray(data, 3),\n            id = _data[0],\n            type = _data[1],\n            exportedData = _data[2];\n\n        if (this.commonObjs.hasData(id)) {\n          return;\n        }\n        switch (type) {\n          case 'Font':\n            var params = this._params;\n            if ('error' in exportedData) {\n              var exportedError = exportedData.error;\n              (0, _util.warn)('Error during font loading: ' + exportedError);\n              this.commonObjs.resolve(id, exportedError);\n              break;\n            }\n            var fontRegistry = null;\n            if (params.pdfBug && _global_scope2.default.FontInspector && _global_scope2.default.FontInspector.enabled) {\n              fontRegistry = {\n                registerFont: function registerFont(font, url) {\n                  _global_scope2.default['FontInspector'].fontAdded(font, url);\n                }\n              };\n            }\n            var font = new _font_loader.FontFaceObject(exportedData, {\n              isEvalSupported: params.isEvalSupported,\n              disableFontFace: params.disableFontFace,\n              ignoreErrors: params.ignoreErrors,\n              onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n              fontRegistry: fontRegistry\n            });\n            var fontReady = function fontReady(fontObjs) {\n              _this12.commonObjs.resolve(id, font);\n            };\n            this.fontLoader.bind([font], fontReady);\n            break;\n          case 'FontPath':\n            this.commonObjs.resolve(id, exportedData);\n            break;\n          default:\n            throw new Error('Got unknown common object type ' + type);\n        }\n      }, this);\n      messageHandler.on('obj', function (data) {\n        if (this.destroyed) {\n          return;\n        }\n\n        var _data2 = _slicedToArray(data, 4),\n            id = _data2[0],\n            pageIndex = _data2[1],\n            type = _data2[2],\n            imageData = _data2[3];\n\n        var pageProxy = this.pageCache[pageIndex];\n        if (pageProxy.objs.hasData(id)) {\n          return;\n        }\n        switch (type) {\n          case 'JpegStream':\n            return new Promise(function (resolve, reject) {\n              var img = new Image();\n              img.onload = function () {\n                resolve(img);\n              };\n              img.onerror = function () {\n                reject(new Error('Error during JPEG image loading'));\n              };\n              img.src = imageData;\n            }).then(function (img) {\n              pageProxy.objs.resolve(id, img);\n            });\n          case 'Image':\n            pageProxy.objs.resolve(id, imageData);\n            var MAX_IMAGE_SIZE_TO_STORE = 8000000;\n            if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {\n              pageProxy.cleanupAfterRender = true;\n            }\n            break;\n          default:\n            throw new Error('Got unknown object type ' + type);\n        }\n      }, this);\n      messageHandler.on('DocProgress', function (data) {\n        if (this.destroyed) {\n          return;\n        }\n        if (loadingTask.onProgress) {\n          loadingTask.onProgress({\n            loaded: data.loaded,\n            total: data.total\n          });\n        }\n      }, this);\n      messageHandler.on('PageError', function (data) {\n        if (this.destroyed) {\n          return;\n        }\n        var page = this.pageCache[data.pageNum - 1];\n        var intentState = page.intentStates[data.intent];\n        if (intentState.displayReadyCapability) {\n          intentState.displayReadyCapability.reject(data.error);\n        } else {\n          throw new Error(data.error);\n        }\n        if (intentState.operatorList) {\n          intentState.operatorList.lastChunk = true;\n          for (var i = 0; i < intentState.renderTasks.length; i++) {\n            intentState.renderTasks[i].operatorListChanged();\n          }\n        }\n      }, this);\n      messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);\n      messageHandler.on('JpegDecode', function (data) {\n        if (this.destroyed) {\n          return Promise.reject(new Error('Worker was destroyed'));\n        }\n        if (typeof document === 'undefined') {\n          return Promise.reject(new Error('\"document\" is not defined.'));\n        }\n\n        var _data3 = _slicedToArray(data, 2),\n            imageUrl = _data3[0],\n            components = _data3[1];\n\n        if (components !== 3 && components !== 1) {\n          return Promise.reject(new Error('Only 3 components or 1 component can be returned'));\n        }\n        return new Promise(function (resolve, reject) {\n          var img = new Image();\n          img.onload = function () {\n            var width = img.width;\n            var height = img.height;\n            var size = width * height;\n            var rgbaLength = size * 4;\n            var buf = new Uint8ClampedArray(size * components);\n            var tmpCanvas = document.createElement('canvas');\n            tmpCanvas.width = width;\n            tmpCanvas.height = height;\n            var tmpCtx = tmpCanvas.getContext('2d');\n            tmpCtx.drawImage(img, 0, 0);\n            var data = tmpCtx.getImageData(0, 0, width, height).data;\n            if (components === 3) {\n              for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {\n                buf[j] = data[i];\n                buf[j + 1] = data[i + 1];\n                buf[j + 2] = data[i + 2];\n              }\n            } else if (components === 1) {\n              for (var _i = 0, _j = 0; _i < rgbaLength; _i += 4, _j++) {\n                buf[_j] = data[_i];\n              }\n            }\n            resolve({\n              data: buf,\n              width: width,\n              height: height\n            });\n          };\n          img.onerror = function () {\n            reject(new Error('JpegDecode failed to load image'));\n          };\n          img.src = imageUrl;\n        });\n      }, this);\n      messageHandler.on('FetchBuiltInCMap', function (data) {\n        if (this.destroyed) {\n          return Promise.reject(new Error('Worker was destroyed'));\n        }\n        return this.CMapReaderFactory.fetch({ name: data.name });\n      }, this);\n    }\n  }, {\n    key: '_onUnsupportedFeature',\n    value: function _onUnsupportedFeature(_ref6) {\n      var featureId = _ref6.featureId;\n\n      if (this.destroyed) {\n        return;\n      }\n      if (this.loadingTask.onUnsupportedFeature) {\n        this.loadingTask.onUnsupportedFeature(featureId);\n      }\n    }\n  }, {\n    key: 'getData',\n    value: function getData() {\n      return this.messageHandler.sendWithPromise('GetData', null);\n    }\n  }, {\n    key: 'getPage',\n    value: function getPage(pageNumber) {\n      var _this13 = this;\n\n      if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) {\n        return Promise.reject(new Error('Invalid page request'));\n      }\n      var pageIndex = pageNumber - 1;\n      if (pageIndex in this.pagePromises) {\n        return this.pagePromises[pageIndex];\n      }\n      var promise = this.messageHandler.sendWithPromise('GetPage', { pageIndex: pageIndex }).then(function (pageInfo) {\n        if (_this13.destroyed) {\n          throw new Error('Transport destroyed');\n        }\n        var page = new PDFPageProxy(pageIndex, pageInfo, _this13, _this13._params.pdfBug);\n        _this13.pageCache[pageIndex] = page;\n        return page;\n      });\n      this.pagePromises[pageIndex] = promise;\n      return promise;\n    }\n  }, {\n    key: 'getPageIndex',\n    value: function getPageIndex(ref) {\n      return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref }).catch(function (reason) {\n        return Promise.reject(new Error(reason));\n      });\n    }\n  }, {\n    key: 'getAnnotations',\n    value: function getAnnotations(pageIndex, intent) {\n      return this.messageHandler.sendWithPromise('GetAnnotations', {\n        pageIndex: pageIndex,\n        intent: intent\n      });\n    }\n  }, {\n    key: 'getDestinations',\n    value: function getDestinations() {\n      return this.messageHandler.sendWithPromise('GetDestinations', null);\n    }\n  }, {\n    key: 'getDestination',\n    value: function getDestination(id) {\n      if (typeof id !== 'string') {\n        return Promise.reject(new Error('Invalid destination request.'));\n      }\n      return this.messageHandler.sendWithPromise('GetDestination', { id: id });\n    }\n  }, {\n    key: 'getPageLabels',\n    value: function getPageLabels() {\n      return this.messageHandler.sendWithPromise('GetPageLabels', null);\n    }\n  }, {\n    key: 'getPageMode',\n    value: function getPageMode() {\n      return this.messageHandler.sendWithPromise('GetPageMode', null);\n    }\n  }, {\n    key: 'getAttachments',\n    value: function getAttachments() {\n      return this.messageHandler.sendWithPromise('GetAttachments', null);\n    }\n  }, {\n    key: 'getJavaScript',\n    value: function getJavaScript() {\n      return this.messageHandler.sendWithPromise('GetJavaScript', null);\n    }\n  }, {\n    key: 'getOutline',\n    value: function getOutline() {\n      return this.messageHandler.sendWithPromise('GetOutline', null);\n    }\n  }, {\n    key: 'getPermissions',\n    value: function getPermissions() {\n      return this.messageHandler.sendWithPromise('GetPermissions', null);\n    }\n  }, {\n    key: 'getMetadata',\n    value: function getMetadata() {\n      var _this14 = this;\n\n      return this.messageHandler.sendWithPromise('GetMetadata', null).then(function (results) {\n        return {\n          info: results[0],\n          metadata: results[1] ? new _metadata.Metadata(results[1]) : null,\n          contentDispositionFilename: _this14._fullReader ? _this14._fullReader.filename : null\n        };\n      });\n    }\n  }, {\n    key: 'getStats',\n    value: function getStats() {\n      return this.messageHandler.sendWithPromise('GetStats', null);\n    }\n  }, {\n    key: 'startCleanup',\n    value: function startCleanup() {\n      var _this15 = this;\n\n      this.messageHandler.sendWithPromise('Cleanup', null).then(function () {\n        for (var i = 0, ii = _this15.pageCache.length; i < ii; i++) {\n          var page = _this15.pageCache[i];\n          if (page) {\n            page.cleanup();\n          }\n        }\n        _this15.commonObjs.clear();\n        _this15.fontLoader.clear();\n      });\n    }\n  }, {\n    key: 'loadingParams',\n    get: function get() {\n      var params = this._params;\n      return (0, _util.shadow)(this, 'loadingParams', {\n        disableAutoFetch: params.disableAutoFetch,\n        disableCreateObjectURL: params.disableCreateObjectURL,\n        disableFontFace: params.disableFontFace,\n        nativeImageDecoderSupport: params.nativeImageDecoderSupport\n      });\n    }\n  }]);\n\n  return WorkerTransport;\n}();\n\nvar PDFObjects = function PDFObjectsClosure() {\n  function PDFObjects() {\n    this.objs = Object.create(null);\n  }\n  PDFObjects.prototype = {\n    ensureObj: function PDFObjects_ensureObj(objId) {\n      if (this.objs[objId]) {\n        return this.objs[objId];\n      }\n      var obj = {\n        capability: (0, _util.createPromiseCapability)(),\n        data: null,\n        resolved: false\n      };\n      this.objs[objId] = obj;\n      return obj;\n    },\n    get: function PDFObjects_get(objId, callback) {\n      if (callback) {\n        this.ensureObj(objId).capability.promise.then(callback);\n        return null;\n      }\n      var obj = this.objs[objId];\n      if (!obj || !obj.resolved) {\n        throw new Error('Requesting object that isn\\'t resolved yet ' + objId);\n      }\n      return obj.data;\n    },\n    resolve: function PDFObjects_resolve(objId, data) {\n      var obj = this.ensureObj(objId);\n      obj.resolved = true;\n      obj.data = data;\n      obj.capability.resolve(data);\n    },\n    isResolved: function PDFObjects_isResolved(objId) {\n      var objs = this.objs;\n      if (!objs[objId]) {\n        return false;\n      }\n      return objs[objId].resolved;\n    },\n    hasData: function PDFObjects_hasData(objId) {\n      return this.isResolved(objId);\n    },\n    getData: function PDFObjects_getData(objId) {\n      var objs = this.objs;\n      if (!objs[objId] || !objs[objId].resolved) {\n        return null;\n      }\n      return objs[objId].data;\n    },\n    clear: function PDFObjects_clear() {\n      this.objs = Object.create(null);\n    }\n  };\n  return PDFObjects;\n}();\nvar RenderTask = function RenderTaskClosure() {\n  function RenderTask(internalRenderTask) {\n    this._internalRenderTask = internalRenderTask;\n    this.onContinue = null;\n  }\n  RenderTask.prototype = {\n    get promise() {\n      return this._internalRenderTask.capability.promise;\n    },\n    cancel: function RenderTask_cancel() {\n      this._internalRenderTask.cancel();\n    },\n    then: function RenderTask_then(onFulfilled, onRejected) {\n      return this.promise.then.apply(this.promise, arguments);\n    }\n  };\n  return RenderTask;\n}();\nvar InternalRenderTask = function InternalRenderTaskClosure() {\n  var canvasInRendering = new WeakMap();\n  function InternalRenderTask(callback, params, objs, commonObjs, operatorList, pageNumber, canvasFactory, webGLContext) {\n    var pdfBug = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n\n    this.callback = callback;\n    this.params = params;\n    this.objs = objs;\n    this.commonObjs = commonObjs;\n    this.operatorListIdx = null;\n    this.operatorList = operatorList;\n    this.pageNumber = pageNumber;\n    this.canvasFactory = canvasFactory;\n    this.webGLContext = webGLContext;\n    this._pdfBug = pdfBug;\n    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this.useRequestAnimationFrame = false;\n    this.cancelled = false;\n    this.capability = (0, _util.createPromiseCapability)();\n    this.task = new RenderTask(this);\n    this._continueBound = this._continue.bind(this);\n    this._scheduleNextBound = this._scheduleNext.bind(this);\n    this._nextBound = this._next.bind(this);\n    this._canvas = params.canvasContext.canvas;\n  }\n  InternalRenderTask.prototype = {\n    initializeGraphics: function initializeGraphics(transparency) {\n      if (this.cancelled) {\n        return;\n      }\n      if (this._canvas) {\n        if (canvasInRendering.has(this._canvas)) {\n          throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.');\n        }\n        canvasInRendering.set(this._canvas, this);\n      }\n      if (this._pdfBug && _global_scope2.default.StepperManager && _global_scope2.default.StepperManager.enabled) {\n        this.stepper = _global_scope2.default.StepperManager.create(this.pageNumber - 1);\n        this.stepper.init(this.operatorList);\n        this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n      }\n      var params = this.params;\n      this.gfx = new _canvas.CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, params.imageLayer);\n      this.gfx.beginDrawing({\n        transform: params.transform,\n        viewport: params.viewport,\n        transparency: transparency,\n        background: params.background\n      });\n      this.operatorListIdx = 0;\n      this.graphicsReady = true;\n      if (this.graphicsReadyCallback) {\n        this.graphicsReadyCallback();\n      }\n    },\n\n    cancel: function InternalRenderTask_cancel() {\n      this.running = false;\n      this.cancelled = true;\n      if (this._canvas) {\n        canvasInRendering.delete(this._canvas);\n      }\n      this.callback(new _dom_utils.RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas'));\n    },\n    operatorListChanged: function InternalRenderTask_operatorListChanged() {\n      if (!this.graphicsReady) {\n        if (!this.graphicsReadyCallback) {\n          this.graphicsReadyCallback = this._continueBound;\n        }\n        return;\n      }\n      if (this.stepper) {\n        this.stepper.updateOperatorList(this.operatorList);\n      }\n      if (this.running) {\n        return;\n      }\n      this._continue();\n    },\n    _continue: function InternalRenderTask__continue() {\n      this.running = true;\n      if (this.cancelled) {\n        return;\n      }\n      if (this.task.onContinue) {\n        this.task.onContinue(this._scheduleNextBound);\n      } else {\n        this._scheduleNext();\n      }\n    },\n    _scheduleNext: function InternalRenderTask__scheduleNext() {\n      var _this16 = this;\n\n      if (this.useRequestAnimationFrame && typeof window !== 'undefined') {\n        window.requestAnimationFrame(function () {\n          _this16._nextBound().catch(_this16.callback);\n        });\n      } else {\n        Promise.resolve().then(this._nextBound).catch(this.callback);\n      }\n    },\n    _next: function InternalRenderTask__next() {\n      var _this17 = this;\n\n      return new Promise(function () {\n        if (_this17.cancelled) {\n          return;\n        }\n        _this17.operatorListIdx = _this17.gfx.executeOperatorList(_this17.operatorList, _this17.operatorListIdx, _this17._continueBound, _this17.stepper);\n        if (_this17.operatorListIdx === _this17.operatorList.argsArray.length) {\n          _this17.running = false;\n          if (_this17.operatorList.lastChunk) {\n            _this17.gfx.endDrawing();\n            if (_this17._canvas) {\n              canvasInRendering.delete(_this17._canvas);\n            }\n            _this17.callback();\n          }\n        }\n      });\n    }\n  };\n  return InternalRenderTask;\n}();\nvar version, build;\n{\n  exports.version = version = '2.0.943';\n  exports.build = build = 'dc98bf76';\n}\nexports.getDocument = getDocument;\nexports.LoopbackPort = LoopbackPort;\nexports.PDFDataRangeTransport = PDFDataRangeTransport;\nexports.PDFWorker = PDFWorker;\nexports.PDFDocumentProxy = PDFDocumentProxy;\nexports.PDFPageProxy = PDFPageProxy;\nexports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;\nexports.version = version;\nexports.build = build;\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.loadScript = exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.getFilenameFromUrl = exports.addLinkAttributes = exports.RenderingCancelledException = exports.PageViewport = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\nvar SVG_NS = 'http://www.w3.org/2000/svg';\n\nvar DOMCanvasFactory = function () {\n  function DOMCanvasFactory() {\n    _classCallCheck(this, DOMCanvasFactory);\n  }\n\n  _createClass(DOMCanvasFactory, [{\n    key: 'create',\n    value: function create(width, height) {\n      if (width <= 0 || height <= 0) {\n        throw new Error('invalid canvas size');\n      }\n      var canvas = document.createElement('canvas');\n      var context = canvas.getContext('2d');\n      canvas.width = width;\n      canvas.height = height;\n      return {\n        canvas: canvas,\n        context: context\n      };\n    }\n  }, {\n    key: 'reset',\n    value: function reset(canvasAndContext, width, height) {\n      if (!canvasAndContext.canvas) {\n        throw new Error('canvas is not specified');\n      }\n      if (width <= 0 || height <= 0) {\n        throw new Error('invalid canvas size');\n      }\n      canvasAndContext.canvas.width = width;\n      canvasAndContext.canvas.height = height;\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy(canvasAndContext) {\n      if (!canvasAndContext.canvas) {\n        throw new Error('canvas is not specified');\n      }\n      canvasAndContext.canvas.width = 0;\n      canvasAndContext.canvas.height = 0;\n      canvasAndContext.canvas = null;\n      canvasAndContext.context = null;\n    }\n  }]);\n\n  return DOMCanvasFactory;\n}();\n\nvar DOMCMapReaderFactory = function () {\n  function DOMCMapReaderFactory(_ref) {\n    var _ref$baseUrl = _ref.baseUrl,\n        baseUrl = _ref$baseUrl === undefined ? null : _ref$baseUrl,\n        _ref$isCompressed = _ref.isCompressed,\n        isCompressed = _ref$isCompressed === undefined ? false : _ref$isCompressed;\n\n    _classCallCheck(this, DOMCMapReaderFactory);\n\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n\n  _createClass(DOMCMapReaderFactory, [{\n    key: 'fetch',\n    value: function fetch(_ref2) {\n      var _this = this;\n\n      var name = _ref2.name;\n\n      if (!this.baseUrl) {\n        return Promise.reject(new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'));\n      }\n      if (!name) {\n        return Promise.reject(new Error('CMap name must be specified.'));\n      }\n      return new Promise(function (resolve, reject) {\n        var url = _this.baseUrl + name + (_this.isCompressed ? '.bcmap' : '');\n        var request = new XMLHttpRequest();\n        request.open('GET', url, true);\n        if (_this.isCompressed) {\n          request.responseType = 'arraybuffer';\n        }\n        request.onreadystatechange = function () {\n          if (request.readyState !== XMLHttpRequest.DONE) {\n            return;\n          }\n          if (request.status === 200 || request.status === 0) {\n            var data = void 0;\n            if (_this.isCompressed && request.response) {\n              data = new Uint8Array(request.response);\n            } else if (!_this.isCompressed && request.responseText) {\n              data = (0, _util.stringToBytes)(request.responseText);\n            }\n            if (data) {\n              resolve({\n                cMapData: data,\n                compressionType: _this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE\n              });\n              return;\n            }\n          }\n          reject(new Error('Unable to load ' + (_this.isCompressed ? 'binary ' : '') + 'CMap at: ' + url));\n        };\n        request.send(null);\n      });\n    }\n  }]);\n\n  return DOMCMapReaderFactory;\n}();\n\nvar DOMSVGFactory = function () {\n  function DOMSVGFactory() {\n    _classCallCheck(this, DOMSVGFactory);\n  }\n\n  _createClass(DOMSVGFactory, [{\n    key: 'create',\n    value: function create(width, height) {\n      (0, _util.assert)(width > 0 && height > 0, 'Invalid SVG dimensions');\n      var svg = document.createElementNS(SVG_NS, 'svg:svg');\n      svg.setAttribute('version', '1.1');\n      svg.setAttribute('width', width + 'px');\n      svg.setAttribute('height', height + 'px');\n      svg.setAttribute('preserveAspectRatio', 'none');\n      svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);\n      return svg;\n    }\n  }, {\n    key: 'createElement',\n    value: function createElement(type) {\n      (0, _util.assert)(typeof type === 'string', 'Invalid SVG element type');\n      return document.createElementNS(SVG_NS, type);\n    }\n  }]);\n\n  return DOMSVGFactory;\n}();\n\nvar PageViewport = function () {\n  function PageViewport(_ref3) {\n    var viewBox = _ref3.viewBox,\n        scale = _ref3.scale,\n        rotation = _ref3.rotation,\n        _ref3$offsetX = _ref3.offsetX,\n        offsetX = _ref3$offsetX === undefined ? 0 : _ref3$offsetX,\n        _ref3$offsetY = _ref3.offsetY,\n        offsetY = _ref3$offsetY === undefined ? 0 : _ref3$offsetY,\n        _ref3$dontFlip = _ref3.dontFlip,\n        dontFlip = _ref3$dontFlip === undefined ? false : _ref3$dontFlip;\n\n    _classCallCheck(this, PageViewport);\n\n    this.viewBox = viewBox;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n    var centerX = (viewBox[2] + viewBox[0]) / 2;\n    var centerY = (viewBox[3] + viewBox[1]) / 2;\n    var rotateA = void 0,\n        rotateB = void 0,\n        rotateC = void 0,\n        rotateD = void 0;\n    rotation = rotation % 360;\n    rotation = rotation < 0 ? rotation + 360 : rotation;\n    switch (rotation) {\n      case 180:\n        rotateA = -1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = 1;\n        break;\n      case 90:\n        rotateA = 0;\n        rotateB = 1;\n        rotateC = 1;\n        rotateD = 0;\n        break;\n      case 270:\n        rotateA = 0;\n        rotateB = -1;\n        rotateC = -1;\n        rotateD = 0;\n        break;\n      default:\n        rotateA = 1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = -1;\n        break;\n    }\n    if (dontFlip) {\n      rotateC = -rotateC;\n      rotateD = -rotateD;\n    }\n    var offsetCanvasX = void 0,\n        offsetCanvasY = void 0;\n    var width = void 0,\n        height = void 0;\n    if (rotateA === 0) {\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n      width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n      height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n    } else {\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n      width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n      height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n    }\n    this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n    this.width = width;\n    this.height = height;\n  }\n\n  _createClass(PageViewport, [{\n    key: 'clone',\n    value: function clone() {\n      var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref4$scale = _ref4.scale,\n          scale = _ref4$scale === undefined ? this.scale : _ref4$scale,\n          _ref4$rotation = _ref4.rotation,\n          rotation = _ref4$rotation === undefined ? this.rotation : _ref4$rotation,\n          _ref4$dontFlip = _ref4.dontFlip,\n          dontFlip = _ref4$dontFlip === undefined ? false : _ref4$dontFlip;\n\n      return new PageViewport({\n        viewBox: this.viewBox.slice(),\n        scale: scale,\n        rotation: rotation,\n        offsetX: this.offsetX,\n        offsetY: this.offsetY,\n        dontFlip: dontFlip\n      });\n    }\n  }, {\n    key: 'convertToViewportPoint',\n    value: function convertToViewportPoint(x, y) {\n      return _util.Util.applyTransform([x, y], this.transform);\n    }\n  }, {\n    key: 'convertToViewportRectangle',\n    value: function convertToViewportRectangle(rect) {\n      var tl = _util.Util.applyTransform([rect[0], rect[1]], this.transform);\n      var br = _util.Util.applyTransform([rect[2], rect[3]], this.transform);\n      return [tl[0], tl[1], br[0], br[1]];\n    }\n  }, {\n    key: 'convertToPdfPoint',\n    value: function convertToPdfPoint(x, y) {\n      return _util.Util.applyInverseTransform([x, y], this.transform);\n    }\n  }]);\n\n  return PageViewport;\n}();\n\nvar RenderingCancelledException = function RenderingCancelledException() {\n  function RenderingCancelledException(msg, type) {\n    this.message = msg;\n    this.type = type;\n  }\n  RenderingCancelledException.prototype = new Error();\n  RenderingCancelledException.prototype.name = 'RenderingCancelledException';\n  RenderingCancelledException.constructor = RenderingCancelledException;\n  return RenderingCancelledException;\n}();\nvar LinkTarget = {\n  NONE: 0,\n  SELF: 1,\n  BLANK: 2,\n  PARENT: 3,\n  TOP: 4\n};\nvar LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top'];\nfunction addLinkAttributes(link) {\n  var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      url = _ref5.url,\n      target = _ref5.target,\n      rel = _ref5.rel;\n\n  link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : '';\n  if (url) {\n    var LinkTargetValues = Object.values(LinkTarget);\n    var targetIndex = LinkTargetValues.includes(target) ? target : LinkTarget.NONE;\n    link.target = LinkTargetStringMap[targetIndex];\n    link.rel = typeof rel === 'string' ? rel : DEFAULT_LINK_REL;\n  }\n}\nfunction getFilenameFromUrl(url) {\n  var anchor = url.indexOf('#');\n  var query = url.indexOf('?');\n  var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);\n  return url.substring(url.lastIndexOf('/', end) + 1, end);\n}\n\nvar StatTimer = function () {\n  function StatTimer() {\n    var enable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n    _classCallCheck(this, StatTimer);\n\n    this.enabled = !!enable;\n    this.started = Object.create(null);\n    this.times = [];\n  }\n\n  _createClass(StatTimer, [{\n    key: 'time',\n    value: function time(name) {\n      if (!this.enabled) {\n        return;\n      }\n      if (name in this.started) {\n        (0, _util.warn)('Timer is already running for ' + name);\n      }\n      this.started[name] = Date.now();\n    }\n  }, {\n    key: 'timeEnd',\n    value: function timeEnd(name) {\n      if (!this.enabled) {\n        return;\n      }\n      if (!(name in this.started)) {\n        (0, _util.warn)('Timer has not been started for ' + name);\n      }\n      this.times.push({\n        'name': name,\n        'start': this.started[name],\n        'end': Date.now()\n      });\n      delete this.started[name];\n    }\n  }, {\n    key: 'toString',\n    value: function toString() {\n      var times = this.times;\n      var out = '',\n          longest = 0;\n      for (var i = 0, ii = times.length; i < ii; ++i) {\n        var name = times[i]['name'];\n        if (name.length > longest) {\n          longest = name.length;\n        }\n      }\n      for (var _i = 0, _ii = times.length; _i < _ii; ++_i) {\n        var span = times[_i];\n        var duration = span.end - span.start;\n        out += span['name'].padEnd(longest) + ' ' + duration + 'ms\\n';\n      }\n      return out;\n    }\n  }]);\n\n  return StatTimer;\n}();\n\nvar DummyStatTimer = function () {\n  function DummyStatTimer() {\n    _classCallCheck(this, DummyStatTimer);\n\n    (0, _util.unreachable)('Cannot initialize DummyStatTimer.');\n  }\n\n  _createClass(DummyStatTimer, null, [{\n    key: 'time',\n    value: function time(name) {}\n  }, {\n    key: 'timeEnd',\n    value: function timeEnd(name) {}\n  }, {\n    key: 'toString',\n    value: function toString() {\n      return '';\n    }\n  }]);\n\n  return DummyStatTimer;\n}();\n\nfunction loadScript(src) {\n  return new Promise(function (resolve, reject) {\n    var script = document.createElement('script');\n    script.src = src;\n    script.onload = resolve;\n    script.onerror = function () {\n      reject(new Error('Cannot load script at: ' + script.src));\n    };\n    (document.head || document.documentElement).appendChild(script);\n  });\n}\nexports.PageViewport = PageViewport;\nexports.RenderingCancelledException = RenderingCancelledException;\nexports.addLinkAttributes = addLinkAttributes;\nexports.getFilenameFromUrl = getFilenameFromUrl;\nexports.LinkTarget = LinkTarget;\nexports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;\nexports.DOMCanvasFactory = DOMCanvasFactory;\nexports.DOMCMapReaderFactory = DOMCMapReaderFactory;\nexports.DOMSVGFactory = DOMSVGFactory;\nexports.StatTimer = StatTimer;\nexports.DummyStatTimer = DummyStatTimer;\nexports.loadScript = loadScript;\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.FontLoader = exports.FontFaceObject = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseFontLoader = function () {\n  function BaseFontLoader(docId) {\n    _classCallCheck(this, BaseFontLoader);\n\n    if (this.constructor === BaseFontLoader) {\n      (0, _util.unreachable)('Cannot initialize BaseFontLoader.');\n    }\n    this.docId = docId;\n    this.nativeFontFaces = [];\n    this.styleElement = null;\n    this.loadingContext = {\n      requests: [],\n      nextRequestId: 0\n    };\n  }\n\n  _createClass(BaseFontLoader, [{\n    key: 'addNativeFontFace',\n    value: function addNativeFontFace(nativeFontFace) {\n      this.nativeFontFaces.push(nativeFontFace);\n      document.fonts.add(nativeFontFace);\n    }\n  }, {\n    key: 'insertRule',\n    value: function insertRule(rule) {\n      var styleElement = this.styleElement;\n      if (!styleElement) {\n        styleElement = this.styleElement = document.createElement('style');\n        styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId;\n        document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement);\n      }\n      var styleSheet = styleElement.sheet;\n      styleSheet.insertRule(rule, styleSheet.cssRules.length);\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      this.nativeFontFaces.forEach(function (nativeFontFace) {\n        document.fonts.delete(nativeFontFace);\n      });\n      this.nativeFontFaces.length = 0;\n      if (this.styleElement) {\n        this.styleElement.remove();\n        this.styleElement = null;\n      }\n    }\n  }, {\n    key: 'bind',\n    value: function bind(fonts, callback) {\n      var rules = [];\n      var fontsToLoad = [];\n      var fontLoadPromises = [];\n      var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) {\n        return nativeFontFace.loaded.catch(function (reason) {\n          (0, _util.warn)('Failed to load font \"' + nativeFontFace.family + '\": ' + reason);\n        });\n      };\n      var _iteratorNormalCompletion = true;\n      var _didIteratorError = false;\n      var _iteratorError = undefined;\n\n      try {\n        for (var _iterator = fonts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n          var font = _step.value;\n\n          if (font.attached || font.missingFile) {\n            continue;\n          }\n          font.attached = true;\n          if (this.isFontLoadingAPISupported) {\n            var nativeFontFace = font.createNativeFontFace();\n            if (nativeFontFace) {\n              this.addNativeFontFace(nativeFontFace);\n              fontLoadPromises.push(getNativeFontPromise(nativeFontFace));\n            }\n          } else {\n            var rule = font.createFontFaceRule();\n            if (rule) {\n              this.insertRule(rule);\n              rules.push(rule);\n              fontsToLoad.push(font);\n            }\n          }\n        }\n      } catch (err) {\n        _didIteratorError = true;\n        _iteratorError = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion && _iterator.return) {\n            _iterator.return();\n          }\n        } finally {\n          if (_didIteratorError) {\n            throw _iteratorError;\n          }\n        }\n      }\n\n      var request = this._queueLoadingCallback(callback);\n      if (this.isFontLoadingAPISupported) {\n        Promise.all(fontLoadPromises).then(request.complete);\n      } else if (rules.length > 0 && !this.isSyncFontLoadingSupported) {\n        this._prepareFontLoadEvent(rules, fontsToLoad, request);\n      } else {\n        request.complete();\n      }\n    }\n  }, {\n    key: '_queueLoadingCallback',\n    value: function _queueLoadingCallback(callback) {\n      function completeRequest() {\n        (0, _util.assert)(!request.done, 'completeRequest() cannot be called twice.');\n        request.done = true;\n        while (context.requests.length > 0 && context.requests[0].done) {\n          var otherRequest = context.requests.shift();\n          setTimeout(otherRequest.callback, 0);\n        }\n      }\n      var context = this.loadingContext;\n      var request = {\n        id: 'pdfjs-font-loading-' + context.nextRequestId++,\n        done: false,\n        complete: completeRequest,\n        callback: callback\n      };\n      context.requests.push(request);\n      return request;\n    }\n  }, {\n    key: '_prepareFontLoadEvent',\n    value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {\n      (0, _util.unreachable)('Abstract method `_prepareFontLoadEvent`.');\n    }\n  }, {\n    key: 'isFontLoadingAPISupported',\n    get: function get() {\n      (0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.');\n    }\n  }, {\n    key: 'isSyncFontLoadingSupported',\n    get: function get() {\n      (0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.');\n    }\n  }, {\n    key: '_loadTestFont',\n    get: function get() {\n      (0, _util.unreachable)('Abstract method `_loadTestFont`.');\n    }\n  }]);\n\n  return BaseFontLoader;\n}();\n\nvar FontLoader = void 0;\n{\n  exports.FontLoader = FontLoader = function (_BaseFontLoader) {\n    _inherits(GenericFontLoader, _BaseFontLoader);\n\n    function GenericFontLoader(docId) {\n      _classCallCheck(this, GenericFontLoader);\n\n      var _this = _possibleConstructorReturn(this, (GenericFontLoader.__proto__ || Object.getPrototypeOf(GenericFontLoader)).call(this, docId));\n\n      _this.loadTestFontId = 0;\n      return _this;\n    }\n\n    _createClass(GenericFontLoader, [{\n      key: '_prepareFontLoadEvent',\n      value: function _prepareFontLoadEvent(rules, fonts, request) {\n        function int32(data, offset) {\n          return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n        }\n        function spliceString(s, offset, remove, insert) {\n          var chunk1 = s.substring(0, offset);\n          var chunk2 = s.substring(offset + remove);\n          return chunk1 + insert + chunk2;\n        }\n        var i = void 0,\n            ii = void 0;\n        var canvas = document.createElement('canvas');\n        canvas.width = 1;\n        canvas.height = 1;\n        var ctx = canvas.getContext('2d');\n        var called = 0;\n        function isFontReady(name, callback) {\n          called++;\n          if (called > 30) {\n            (0, _util.warn)('Load test font never loaded.');\n            callback();\n            return;\n          }\n          ctx.font = '30px ' + name;\n          ctx.fillText('.', 0, 20);\n          var imageData = ctx.getImageData(0, 0, 1, 1);\n          if (imageData.data[3] > 0) {\n            callback();\n            return;\n          }\n          setTimeout(isFontReady.bind(null, name, callback));\n        }\n        var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++;\n        var data = this._loadTestFont;\n        var COMMENT_OFFSET = 976;\n        data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n        var CFF_CHECKSUM_OFFSET = 16;\n        var XXXX_VALUE = 0x58585858;\n        var checksum = int32(data, CFF_CHECKSUM_OFFSET);\n        for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n          checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n        }\n        if (i < loadTestFontId.length) {\n          checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0;\n        }\n        data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));\n        var url = 'url(data:font/opentype;base64,' + btoa(data) + ');';\n        var rule = '@font-face {font-family:\"' + loadTestFontId + '\";src:' + url + '}';\n        this.insertRule(rule);\n        var names = [];\n        for (i = 0, ii = fonts.length; i < ii; i++) {\n          names.push(fonts[i].loadedName);\n        }\n        names.push(loadTestFontId);\n        var div = document.createElement('div');\n        div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;');\n        for (i = 0, ii = names.length; i < ii; ++i) {\n          var span = document.createElement('span');\n          span.textContent = 'Hi';\n          span.style.fontFamily = names[i];\n          div.appendChild(span);\n        }\n        document.body.appendChild(div);\n        isFontReady(loadTestFontId, function () {\n          document.body.removeChild(div);\n          request.complete();\n        });\n      }\n    }, {\n      key: 'isFontLoadingAPISupported',\n      get: function get() {\n        var supported = typeof document !== 'undefined' && !!document.fonts;\n        if (supported && typeof navigator !== 'undefined') {\n          var m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n          if (m && m[1] < 63) {\n            supported = false;\n          }\n        }\n        return (0, _util.shadow)(this, 'isFontLoadingAPISupported', supported);\n      }\n    }, {\n      key: 'isSyncFontLoadingSupported',\n      get: function get() {\n        var supported = false;\n        if (typeof navigator === 'undefined') {\n          supported = true;\n        } else {\n          var m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n          if (m && m[1] >= 14) {\n            supported = true;\n          }\n        }\n        return (0, _util.shadow)(this, 'isSyncFontLoadingSupported', supported);\n      }\n    }, {\n      key: '_loadTestFont',\n      get: function get() {\n        var getLoadTestFont = function getLoadTestFont() {\n          return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA' + 'FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA' + 'ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA' + 'AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1' + 'AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD' + '6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM' + 'AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D' + 'IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA' + 'AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA' + 'AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB' + 'AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY' + 'AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA' + 'AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA' + 'AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC' + 'AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3' + 'Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj' + 'FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==');\n        };\n        return (0, _util.shadow)(this, '_loadTestFont', getLoadTestFont());\n      }\n    }]);\n\n    return GenericFontLoader;\n  }(BaseFontLoader);\n}\nvar IsEvalSupportedCached = {\n  get value() {\n    return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());\n  }\n};\n\nvar FontFaceObject = function () {\n  function FontFaceObject(translatedData, _ref) {\n    var _ref$isEvalSupported = _ref.isEvalSupported,\n        isEvalSupported = _ref$isEvalSupported === undefined ? true : _ref$isEvalSupported,\n        _ref$disableFontFace = _ref.disableFontFace,\n        disableFontFace = _ref$disableFontFace === undefined ? false : _ref$disableFontFace,\n        _ref$ignoreErrors = _ref.ignoreErrors,\n        ignoreErrors = _ref$ignoreErrors === undefined ? false : _ref$ignoreErrors,\n        _ref$onUnsupportedFea = _ref.onUnsupportedFeature,\n        onUnsupportedFeature = _ref$onUnsupportedFea === undefined ? null : _ref$onUnsupportedFea,\n        _ref$fontRegistry = _ref.fontRegistry,\n        fontRegistry = _ref$fontRegistry === undefined ? null : _ref$fontRegistry;\n\n    _classCallCheck(this, FontFaceObject);\n\n    this.compiledGlyphs = Object.create(null);\n    for (var i in translatedData) {\n      this[i] = translatedData[i];\n    }\n    this.isEvalSupported = isEvalSupported !== false;\n    this.disableFontFace = disableFontFace === true;\n    this.ignoreErrors = ignoreErrors === true;\n    this._onUnsupportedFeature = onUnsupportedFeature;\n    this.fontRegistry = fontRegistry;\n  }\n\n  _createClass(FontFaceObject, [{\n    key: 'createNativeFontFace',\n    value: function createNativeFontFace() {\n      if (!this.data || this.disableFontFace) {\n        return null;\n      }\n      var nativeFontFace = new FontFace(this.loadedName, this.data, {});\n      if (this.fontRegistry) {\n        this.fontRegistry.registerFont(this);\n      }\n      return nativeFontFace;\n    }\n  }, {\n    key: 'createFontFaceRule',\n    value: function createFontFaceRule() {\n      if (!this.data || this.disableFontFace) {\n        return null;\n      }\n      var data = (0, _util.bytesToString)(new Uint8Array(this.data));\n      var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');';\n      var rule = '@font-face {font-family:\"' + this.loadedName + '\";src:' + url + '}';\n      if (this.fontRegistry) {\n        this.fontRegistry.registerFont(this, url);\n      }\n      return rule;\n    }\n  }, {\n    key: 'getPathGenerator',\n    value: function getPathGenerator(objs, character) {\n      if (this.compiledGlyphs[character] !== undefined) {\n        return this.compiledGlyphs[character];\n      }\n      var cmds = void 0,\n          current = void 0;\n      try {\n        cmds = objs.get(this.loadedName + '_path_' + character);\n      } catch (ex) {\n        if (!this.ignoreErrors) {\n          throw ex;\n        }\n        if (this._onUnsupportedFeature) {\n          this._onUnsupportedFeature({ featureId: _util.UNSUPPORTED_FEATURES.font });\n        }\n        (0, _util.warn)('getPathGenerator - ignoring character: \"' + ex + '\".');\n        return this.compiledGlyphs[character] = function (c, size) {};\n      }\n      if (this.isEvalSupported && IsEvalSupportedCached.value) {\n        var args = void 0,\n            js = '';\n        for (var i = 0, ii = cmds.length; i < ii; i++) {\n          current = cmds[i];\n          if (current.args !== undefined) {\n            args = current.args.join(',');\n          } else {\n            args = '';\n          }\n          js += 'c.' + current.cmd + '(' + args + ');\\n';\n        }\n        return this.compiledGlyphs[character] = new Function('c', 'size', js);\n      }\n      return this.compiledGlyphs[character] = function (c, size) {\n        for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) {\n          current = cmds[_i];\n          if (current.cmd === 'scale') {\n            current.args = [size, -size];\n          }\n          c[current.cmd].apply(c, current.args);\n        }\n      };\n    }\n  }]);\n\n  return FontFaceObject;\n}();\n\nexports.FontFaceObject = FontFaceObject;\nexports.FontLoader = FontLoader;\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar compatibilityParams = Object.create(null);\n{\n  var isNodeJS = __w_pdfjs_require__(4);\n  var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || '';\n  var isIE = /Trident/.test(userAgent);\n  var isIOSChrome = /CriOS/.test(userAgent);\n  (function checkOnBlobSupport() {\n    if (isIE || isIOSChrome) {\n      compatibilityParams.disableCreateObjectURL = true;\n    }\n  })();\n  (function checkFontFaceAndImage() {\n    if (isNodeJS()) {\n      compatibilityParams.disableFontFace = true;\n      compatibilityParams.nativeImageDecoderSupport = 'none';\n    }\n  })();\n}\nexports.apiCompatibilityParams = Object.freeze(compatibilityParams);\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CanvasGraphics = undefined;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _pattern_helper = __w_pdfjs_require__(134);\n\nvar MIN_FONT_SIZE = 16;\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\nvar MIN_WIDTH_FACTOR = 0.65;\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\nvar FULL_CHUNK_HEIGHT = 16;\nvar IsLittleEndianCached = {\n  get value() {\n    return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)());\n  }\n};\nfunction addContextCurrentTransform(ctx) {\n  if (!ctx.mozCurrentTransform) {\n    ctx._originalSave = ctx.save;\n    ctx._originalRestore = ctx.restore;\n    ctx._originalRotate = ctx.rotate;\n    ctx._originalScale = ctx.scale;\n    ctx._originalTranslate = ctx.translate;\n    ctx._originalTransform = ctx.transform;\n    ctx._originalSetTransform = ctx.setTransform;\n    ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n    ctx._transformStack = [];\n    Object.defineProperty(ctx, 'mozCurrentTransform', {\n      get: function getCurrentTransform() {\n        return this._transformMatrix;\n      }\n    });\n    Object.defineProperty(ctx, 'mozCurrentTransformInverse', {\n      get: function getCurrentTransformInverse() {\n        var m = this._transformMatrix;\n        var a = m[0],\n            b = m[1],\n            c = m[2],\n            d = m[3],\n            e = m[4],\n            f = m[5];\n        var ad_bc = a * d - b * c;\n        var bc_ad = b * c - a * d;\n        return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];\n      }\n    });\n    ctx.save = function ctxSave() {\n      var old = this._transformMatrix;\n      this._transformStack.push(old);\n      this._transformMatrix = old.slice(0, 6);\n      this._originalSave();\n    };\n    ctx.restore = function ctxRestore() {\n      var prev = this._transformStack.pop();\n      if (prev) {\n        this._transformMatrix = prev;\n        this._originalRestore();\n      }\n    };\n    ctx.translate = function ctxTranslate(x, y) {\n      var m = this._transformMatrix;\n      m[4] = m[0] * x + m[2] * y + m[4];\n      m[5] = m[1] * x + m[3] * y + m[5];\n      this._originalTranslate(x, y);\n    };\n    ctx.scale = function ctxScale(x, y) {\n      var m = this._transformMatrix;\n      m[0] = m[0] * x;\n      m[1] = m[1] * x;\n      m[2] = m[2] * y;\n      m[3] = m[3] * y;\n      this._originalScale(x, y);\n    };\n    ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n      var m = this._transformMatrix;\n      this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];\n      ctx._originalTransform(a, b, c, d, e, f);\n    };\n    ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n      this._transformMatrix = [a, b, c, d, e, f];\n      ctx._originalSetTransform(a, b, c, d, e, f);\n    };\n    ctx.rotate = function ctxRotate(angle) {\n      var cosValue = Math.cos(angle);\n      var sinValue = Math.sin(angle);\n      var m = this._transformMatrix;\n      this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];\n      this._originalRotate(angle);\n    };\n  }\n}\nvar CachedCanvases = function CachedCanvasesClosure() {\n  function CachedCanvases(canvasFactory) {\n    this.canvasFactory = canvasFactory;\n    this.cache = Object.create(null);\n  }\n  CachedCanvases.prototype = {\n    getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {\n      var canvasEntry;\n      if (this.cache[id] !== undefined) {\n        canvasEntry = this.cache[id];\n        this.canvasFactory.reset(canvasEntry, width, height);\n        canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n      } else {\n        canvasEntry = this.canvasFactory.create(width, height);\n        this.cache[id] = canvasEntry;\n      }\n      if (trackTransform) {\n        addContextCurrentTransform(canvasEntry.context);\n      }\n      return canvasEntry;\n    },\n    clear: function clear() {\n      for (var id in this.cache) {\n        var canvasEntry = this.cache[id];\n        this.canvasFactory.destroy(canvasEntry);\n        delete this.cache[id];\n      }\n    }\n  };\n  return CachedCanvases;\n}();\nfunction compileType3Glyph(imgData) {\n  var POINT_TO_PROCESS_LIMIT = 1000;\n  var width = imgData.width,\n      height = imgData.height;\n  var i,\n      j,\n      j0,\n      width1 = width + 1;\n  var points = new Uint8Array(width1 * (height + 1));\n  var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n  var lineSize = width + 7 & ~7,\n      data0 = imgData.data;\n  var data = new Uint8Array(lineSize * height),\n      pos = 0,\n      ii;\n  for (i = 0, ii = data0.length; i < ii; i++) {\n    var mask = 128,\n        elem = data0[i];\n    while (mask > 0) {\n      data[pos++] = elem & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n  var count = 0;\n  pos = 0;\n  if (data[pos] !== 0) {\n    points[0] = 1;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j] = data[pos] ? 2 : 1;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j] = 2;\n    ++count;\n  }\n  for (i = 1; i < height; i++) {\n    pos = i * lineSize;\n    j0 = i * width1;\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0] = data[pos] ? 1 : 8;\n      ++count;\n    }\n    var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n    for (j = 1; j < width; j++) {\n      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n      if (POINT_TYPES[sum]) {\n        points[j0 + j] = POINT_TYPES[sum];\n        ++count;\n      }\n      pos++;\n    }\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0 + j] = data[pos] ? 2 : 4;\n      ++count;\n    }\n    if (count > POINT_TO_PROCESS_LIMIT) {\n      return null;\n    }\n  }\n  pos = lineSize * (height - 1);\n  j0 = i * width1;\n  if (data[pos] !== 0) {\n    points[j0] = 8;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j0 + j] = data[pos] ? 4 : 8;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j0 + j] = 4;\n    ++count;\n  }\n  if (count > POINT_TO_PROCESS_LIMIT) {\n    return null;\n  }\n  var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n  var outlines = [];\n  for (i = 0; count && i <= height; i++) {\n    var p = i * width1;\n    var end = p + width;\n    while (p < end && !points[p]) {\n      p++;\n    }\n    if (p === end) {\n      continue;\n    }\n    var coords = [p % width1, i];\n    var type = points[p],\n        p0 = p,\n        pp;\n    do {\n      var step = steps[type];\n      do {\n        p += step;\n      } while (!points[p]);\n      pp = points[p];\n      if (pp !== 5 && pp !== 10) {\n        type = pp;\n        points[p] = 0;\n      } else {\n        type = pp & 0x33 * type >> 4;\n        points[p] &= type >> 2 | type << 2;\n      }\n      coords.push(p % width1);\n      coords.push(p / width1 | 0);\n      --count;\n    } while (p0 !== p);\n    outlines.push(coords);\n    --i;\n  }\n  var drawOutline = function drawOutline(c) {\n    c.save();\n    c.scale(1 / width, -1 / height);\n    c.translate(0, -height);\n    c.beginPath();\n    for (var i = 0, ii = outlines.length; i < ii; i++) {\n      var o = outlines[i];\n      c.moveTo(o[0], o[1]);\n      for (var j = 2, jj = o.length; j < jj; j += 2) {\n        c.lineTo(o[j], o[j + 1]);\n      }\n    }\n    c.fill();\n    c.beginPath();\n    c.restore();\n  };\n  return drawOutline;\n}\nvar CanvasExtraState = function CanvasExtraStateClosure() {\n  function CanvasExtraState() {\n    this.alphaIsShape = false;\n    this.fontSize = 0;\n    this.fontSizeScale = 1;\n    this.textMatrix = _util.IDENTITY_MATRIX;\n    this.textMatrixScale = 1;\n    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n    this.leading = 0;\n    this.x = 0;\n    this.y = 0;\n    this.lineX = 0;\n    this.lineY = 0;\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.textHScale = 1;\n    this.textRenderingMode = _util.TextRenderingMode.FILL;\n    this.textRise = 0;\n    this.fillColor = '#000000';\n    this.strokeColor = '#000000';\n    this.patternFill = false;\n    this.fillAlpha = 1;\n    this.strokeAlpha = 1;\n    this.lineWidth = 1;\n    this.activeSMask = null;\n    this.resumeSMaskCtx = null;\n  }\n  CanvasExtraState.prototype = {\n    clone: function CanvasExtraState_clone() {\n      return Object.create(this);\n    },\n    setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {\n      this.x = x;\n      this.y = y;\n    }\n  };\n  return CanvasExtraState;\n}();\nvar CanvasGraphics = function CanvasGraphicsClosure() {\n  var EXECUTION_TIME = 15;\n  var EXECUTION_STEPS = 10;\n  function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState();\n    this.stateStack = [];\n    this.pendingClip = null;\n    this.pendingEOFill = false;\n    this.res = null;\n    this.xobjs = null;\n    this.commonObjs = commonObjs;\n    this.objs = objs;\n    this.canvasFactory = canvasFactory;\n    this.webGLContext = webGLContext;\n    this.imageLayer = imageLayer;\n    this.groupStack = [];\n    this.processingType3 = null;\n    this.baseTransform = null;\n    this.baseTransformStack = [];\n    this.groupLevel = 0;\n    this.smaskStack = [];\n    this.smaskCounter = 0;\n    this.tempSMask = null;\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n    if (canvasCtx) {\n      addContextCurrentTransform(canvasCtx);\n    }\n    this._cachedGetSinglePixelWidth = null;\n  }\n  function putBinaryImageData(ctx, imgData) {\n    if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {\n      ctx.putImageData(imgData, 0, 0);\n      return;\n    }\n    var height = imgData.height,\n        width = imgData.width;\n    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n    var srcPos = 0,\n        destPos;\n    var src = imgData.data;\n    var dest = chunkImgData.data;\n    var i, j, thisChunkHeight, elemsInThisChunk;\n    if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {\n      var srcLength = src.byteLength;\n      var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n      var dest32DataLength = dest32.length;\n      var fullSrcDiff = width + 7 >> 3;\n      var white = 0xFFFFFFFF;\n      var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF;\n      for (i = 0; i < totalChunks; i++) {\n        thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n        destPos = 0;\n        for (j = 0; j < thisChunkHeight; j++) {\n          var srcDiff = srcLength - srcPos;\n          var k = 0;\n          var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n          var kEndUnrolled = kEnd & ~7;\n          var mask = 0;\n          var srcByte = 0;\n          for (; k < kEndUnrolled; k += 8) {\n            srcByte = src[srcPos++];\n            dest32[destPos++] = srcByte & 128 ? white : black;\n            dest32[destPos++] = srcByte & 64 ? white : black;\n            dest32[destPos++] = srcByte & 32 ? white : black;\n            dest32[destPos++] = srcByte & 16 ? white : black;\n            dest32[destPos++] = srcByte & 8 ? white : black;\n            dest32[destPos++] = srcByte & 4 ? white : black;\n            dest32[destPos++] = srcByte & 2 ? white : black;\n            dest32[destPos++] = srcByte & 1 ? white : black;\n          }\n          for (; k < kEnd; k++) {\n            if (mask === 0) {\n              srcByte = src[srcPos++];\n              mask = 128;\n            }\n            dest32[destPos++] = srcByte & mask ? white : black;\n            mask >>= 1;\n          }\n        }\n        while (destPos < dest32DataLength) {\n          dest32[destPos++] = 0;\n        }\n        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n      }\n    } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {\n      j = 0;\n      elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n      for (i = 0; i < fullChunks; i++) {\n        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n        srcPos += elemsInThisChunk;\n        ctx.putImageData(chunkImgData, 0, j);\n        j += FULL_CHUNK_HEIGHT;\n      }\n      if (i < totalChunks) {\n        elemsInThisChunk = width * partialChunkHeight * 4;\n        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n        ctx.putImageData(chunkImgData, 0, j);\n      }\n    } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {\n      thisChunkHeight = FULL_CHUNK_HEIGHT;\n      elemsInThisChunk = width * thisChunkHeight;\n      for (i = 0; i < totalChunks; i++) {\n        if (i >= fullChunks) {\n          thisChunkHeight = partialChunkHeight;\n          elemsInThisChunk = width * thisChunkHeight;\n        }\n        destPos = 0;\n        for (j = elemsInThisChunk; j--;) {\n          dest[destPos++] = src[srcPos++];\n          dest[destPos++] = src[srcPos++];\n          dest[destPos++] = src[srcPos++];\n          dest[destPos++] = 255;\n        }\n        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n      }\n    } else {\n      throw new Error('bad image kind: ' + imgData.kind);\n    }\n  }\n  function putBinaryImageMask(ctx, imgData) {\n    var height = imgData.height,\n        width = imgData.width;\n    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n    var srcPos = 0;\n    var src = imgData.data;\n    var dest = chunkImgData.data;\n    for (var i = 0; i < totalChunks; i++) {\n      var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n      var destPos = 3;\n      for (var j = 0; j < thisChunkHeight; j++) {\n        var mask = 0;\n        for (var k = 0; k < width; k++) {\n          if (!mask) {\n            var elem = src[srcPos++];\n            mask = 128;\n          }\n          dest[destPos] = elem & mask ? 0 : 255;\n          destPos += 4;\n          mask >>= 1;\n        }\n      }\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  }\n  function copyCtxState(sourceCtx, destCtx) {\n    var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha', 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', 'globalCompositeOperation', 'font'];\n    for (var i = 0, ii = properties.length; i < ii; i++) {\n      var property = properties[i];\n      if (sourceCtx[property] !== undefined) {\n        destCtx[property] = sourceCtx[property];\n      }\n    }\n    if (sourceCtx.setLineDash !== undefined) {\n      destCtx.setLineDash(sourceCtx.getLineDash());\n      destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n    }\n  }\n  function resetCtxToDefault(ctx) {\n    ctx.strokeStyle = '#000000';\n    ctx.fillStyle = '#000000';\n    ctx.fillRule = 'nonzero';\n    ctx.globalAlpha = 1;\n    ctx.lineWidth = 1;\n    ctx.lineCap = 'butt';\n    ctx.lineJoin = 'miter';\n    ctx.miterLimit = 10;\n    ctx.globalCompositeOperation = 'source-over';\n    ctx.font = '10px sans-serif';\n    if (ctx.setLineDash !== undefined) {\n      ctx.setLineDash([]);\n      ctx.lineDashOffset = 0;\n    }\n  }\n  function composeSMaskBackdrop(bytes, r0, g0, b0) {\n    var length = bytes.length;\n    for (var i = 3; i < length; i += 4) {\n      var alpha = bytes[i];\n      if (alpha === 0) {\n        bytes[i - 3] = r0;\n        bytes[i - 2] = g0;\n        bytes[i - 1] = b0;\n      } else if (alpha < 255) {\n        var alpha_ = 255 - alpha;\n        bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n        bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n        bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n      }\n    }\n  }\n  function composeSMaskAlpha(maskData, layerData, transferMap) {\n    var length = maskData.length;\n    var scale = 1 / 255;\n    for (var i = 3; i < length; i += 4) {\n      var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n      layerData[i] = layerData[i] * alpha * scale | 0;\n    }\n  }\n  function composeSMaskLuminosity(maskData, layerData, transferMap) {\n    var length = maskData.length;\n    for (var i = 3; i < length; i += 4) {\n      var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n      layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n    }\n  }\n  function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {\n    var hasBackdrop = !!backdrop;\n    var r0 = hasBackdrop ? backdrop[0] : 0;\n    var g0 = hasBackdrop ? backdrop[1] : 0;\n    var b0 = hasBackdrop ? backdrop[2] : 0;\n    var composeFn;\n    if (subtype === 'Luminosity') {\n      composeFn = composeSMaskLuminosity;\n    } else {\n      composeFn = composeSMaskAlpha;\n    }\n    var PIXELS_TO_PROCESS = 1048576;\n    var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n    for (var row = 0; row < height; row += chunkSize) {\n      var chunkHeight = Math.min(chunkSize, height - row);\n      var maskData = maskCtx.getImageData(0, row, width, chunkHeight);\n      var layerData = layerCtx.getImageData(0, row, width, chunkHeight);\n      if (hasBackdrop) {\n        composeSMaskBackdrop(maskData.data, r0, g0, b0);\n      }\n      composeFn(maskData.data, layerData.data, transferMap);\n      maskCtx.putImageData(layerData, 0, row);\n    }\n  }\n  function composeSMask(ctx, smask, layerCtx, webGLContext) {\n    var mask = smask.canvas;\n    var maskCtx = smask.context;\n    ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);\n    var backdrop = smask.backdrop || null;\n    if (!smask.transferMap && webGLContext.isEnabled) {\n      var composed = webGLContext.composeSMask({\n        layer: layerCtx.canvas,\n        mask: mask,\n        properties: {\n          subtype: smask.subtype,\n          backdrop: backdrop\n        }\n      });\n      ctx.setTransform(1, 0, 0, 1, 0, 0);\n      ctx.drawImage(composed, smask.offsetX, smask.offsetY);\n      return;\n    }\n    genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap);\n    ctx.drawImage(mask, 0, 0);\n  }\n  var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n  var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n  var NORMAL_CLIP = {};\n  var EO_CLIP = {};\n  CanvasGraphics.prototype = {\n    beginDrawing: function beginDrawing(_ref) {\n      var transform = _ref.transform,\n          viewport = _ref.viewport,\n          transparency = _ref.transparency,\n          _ref$background = _ref.background,\n          background = _ref$background === undefined ? null : _ref$background;\n\n      var width = this.ctx.canvas.width;\n      var height = this.ctx.canvas.height;\n      this.ctx.save();\n      this.ctx.fillStyle = background || 'rgb(255, 255, 255)';\n      this.ctx.fillRect(0, 0, width, height);\n      this.ctx.restore();\n      if (transparency) {\n        var transparentCanvas = this.cachedCanvases.getCanvas('transparent', width, height, true);\n        this.compositeCtx = this.ctx;\n        this.transparentCanvas = transparentCanvas.canvas;\n        this.ctx = transparentCanvas.context;\n        this.ctx.save();\n        this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n      }\n      this.ctx.save();\n      resetCtxToDefault(this.ctx);\n      if (transform) {\n        this.ctx.transform.apply(this.ctx, transform);\n      }\n      this.ctx.transform.apply(this.ctx, viewport.transform);\n      this.baseTransform = this.ctx.mozCurrentTransform.slice();\n      if (this.imageLayer) {\n        this.imageLayer.beginLayout();\n      }\n    },\n\n    executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n      var argsArray = operatorList.argsArray;\n      var fnArray = operatorList.fnArray;\n      var i = executionStartIdx || 0;\n      var argsArrayLen = argsArray.length;\n      if (argsArrayLen === i) {\n        return i;\n      }\n      var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === 'function';\n      var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n      var steps = 0;\n      var commonObjs = this.commonObjs;\n      var objs = this.objs;\n      var fnId;\n      while (true) {\n        if (stepper !== undefined && i === stepper.nextBreakPoint) {\n          stepper.breakIt(i, continueCallback);\n          return i;\n        }\n        fnId = fnArray[i];\n        if (fnId !== _util.OPS.dependency) {\n          this[fnId].apply(this, argsArray[i]);\n        } else {\n          var deps = argsArray[i];\n          for (var n = 0, nn = deps.length; n < nn; n++) {\n            var depObjId = deps[n];\n            var common = depObjId[0] === 'g' && depObjId[1] === '_';\n            var objsPool = common ? commonObjs : objs;\n            if (!objsPool.isResolved(depObjId)) {\n              objsPool.get(depObjId, continueCallback);\n              return i;\n            }\n          }\n        }\n        i++;\n        if (i === argsArrayLen) {\n          return i;\n        }\n        if (chunkOperations && ++steps > EXECUTION_STEPS) {\n          if (Date.now() > endTime) {\n            continueCallback();\n            return i;\n          }\n          steps = 0;\n        }\n      }\n    },\n    endDrawing: function CanvasGraphics_endDrawing() {\n      if (this.current.activeSMask !== null) {\n        this.endSMaskGroup();\n      }\n      this.ctx.restore();\n      if (this.transparentCanvas) {\n        this.ctx = this.compositeCtx;\n        this.ctx.save();\n        this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n        this.ctx.drawImage(this.transparentCanvas, 0, 0);\n        this.ctx.restore();\n        this.transparentCanvas = null;\n      }\n      this.cachedCanvases.clear();\n      this.webGLContext.clear();\n      if (this.imageLayer) {\n        this.imageLayer.endLayout();\n      }\n    },\n    setLineWidth: function CanvasGraphics_setLineWidth(width) {\n      this.current.lineWidth = width;\n      this.ctx.lineWidth = width;\n    },\n    setLineCap: function CanvasGraphics_setLineCap(style) {\n      this.ctx.lineCap = LINE_CAP_STYLES[style];\n    },\n    setLineJoin: function CanvasGraphics_setLineJoin(style) {\n      this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n    },\n    setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {\n      this.ctx.miterLimit = limit;\n    },\n    setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {\n      var ctx = this.ctx;\n      if (ctx.setLineDash !== undefined) {\n        ctx.setLineDash(dashArray);\n        ctx.lineDashOffset = dashPhase;\n      }\n    },\n    setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {},\n    setFlatness: function CanvasGraphics_setFlatness(flatness) {},\n    setGState: function CanvasGraphics_setGState(states) {\n      for (var i = 0, ii = states.length; i < ii; i++) {\n        var state = states[i];\n        var key = state[0];\n        var value = state[1];\n        switch (key) {\n          case 'LW':\n            this.setLineWidth(value);\n            break;\n          case 'LC':\n            this.setLineCap(value);\n            break;\n          case 'LJ':\n            this.setLineJoin(value);\n            break;\n          case 'ML':\n            this.setMiterLimit(value);\n            break;\n          case 'D':\n            this.setDash(value[0], value[1]);\n            break;\n          case 'RI':\n            this.setRenderingIntent(value);\n            break;\n          case 'FL':\n            this.setFlatness(value);\n            break;\n          case 'Font':\n            this.setFont(value[0], value[1]);\n            break;\n          case 'CA':\n            this.current.strokeAlpha = state[1];\n            break;\n          case 'ca':\n            this.current.fillAlpha = state[1];\n            this.ctx.globalAlpha = state[1];\n            break;\n          case 'BM':\n            this.ctx.globalCompositeOperation = value;\n            break;\n          case 'SMask':\n            if (this.current.activeSMask) {\n              if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) {\n                this.suspendSMaskGroup();\n              } else {\n                this.endSMaskGroup();\n              }\n            }\n            this.current.activeSMask = value ? this.tempSMask : null;\n            if (this.current.activeSMask) {\n              this.beginSMaskGroup();\n            }\n            this.tempSMask = null;\n            break;\n        }\n      }\n    },\n    beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {\n      var activeSMask = this.current.activeSMask;\n      var drawnWidth = activeSMask.canvas.width;\n      var drawnHeight = activeSMask.canvas.height;\n      var cacheId = 'smaskGroupAt' + this.groupLevel;\n      var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n      var currentCtx = this.ctx;\n      var currentTransform = currentCtx.mozCurrentTransform;\n      this.ctx.save();\n      var groupCtx = scratchCanvas.context;\n      groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);\n      groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);\n      groupCtx.transform.apply(groupCtx, currentTransform);\n      activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;\n      copyCtxState(currentCtx, groupCtx);\n      this.ctx = groupCtx;\n      this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]);\n      this.groupStack.push(currentCtx);\n      this.groupLevel++;\n    },\n    suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n      var groupCtx = this.ctx;\n      this.groupLevel--;\n      this.ctx = this.groupStack.pop();\n      composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);\n      this.ctx.restore();\n      this.ctx.save();\n      copyCtxState(groupCtx, this.ctx);\n      this.current.resumeSMaskCtx = groupCtx;\n      var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);\n      this.ctx.transform.apply(this.ctx, deltaTransform);\n      groupCtx.save();\n      groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n      groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n      groupCtx.restore();\n    },\n    resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n      var groupCtx = this.current.resumeSMaskCtx;\n      var currentCtx = this.ctx;\n      this.ctx = groupCtx;\n      this.groupStack.push(currentCtx);\n      this.groupLevel++;\n    },\n    endSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n      var groupCtx = this.ctx;\n      this.groupLevel--;\n      this.ctx = this.groupStack.pop();\n      composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);\n      this.ctx.restore();\n      copyCtxState(groupCtx, this.ctx);\n      var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);\n      this.ctx.transform.apply(this.ctx, deltaTransform);\n    },\n    save: function CanvasGraphics_save() {\n      this.ctx.save();\n      var old = this.current;\n      this.stateStack.push(old);\n      this.current = old.clone();\n      this.current.resumeSMaskCtx = null;\n    },\n    restore: function CanvasGraphics_restore() {\n      if (this.current.resumeSMaskCtx) {\n        this.resumeSMaskGroup();\n      }\n      if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {\n        this.endSMaskGroup();\n      }\n      if (this.stateStack.length !== 0) {\n        this.current = this.stateStack.pop();\n        this.ctx.restore();\n        this.pendingClip = null;\n        this._cachedGetSinglePixelWidth = null;\n      }\n    },\n    transform: function CanvasGraphics_transform(a, b, c, d, e, f) {\n      this.ctx.transform(a, b, c, d, e, f);\n      this._cachedGetSinglePixelWidth = null;\n    },\n    constructPath: function CanvasGraphics_constructPath(ops, args) {\n      var ctx = this.ctx;\n      var current = this.current;\n      var x = current.x,\n          y = current.y;\n      for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {\n        switch (ops[i] | 0) {\n          case _util.OPS.rectangle:\n            x = args[j++];\n            y = args[j++];\n            var width = args[j++];\n            var height = args[j++];\n            if (width === 0) {\n              width = this.getSinglePixelWidth();\n            }\n            if (height === 0) {\n              height = this.getSinglePixelWidth();\n            }\n            var xw = x + width;\n            var yh = y + height;\n            this.ctx.moveTo(x, y);\n            this.ctx.lineTo(xw, y);\n            this.ctx.lineTo(xw, yh);\n            this.ctx.lineTo(x, yh);\n            this.ctx.lineTo(x, y);\n            this.ctx.closePath();\n            break;\n          case _util.OPS.moveTo:\n            x = args[j++];\n            y = args[j++];\n            ctx.moveTo(x, y);\n            break;\n          case _util.OPS.lineTo:\n            x = args[j++];\n            y = args[j++];\n            ctx.lineTo(x, y);\n            break;\n          case _util.OPS.curveTo:\n            x = args[j + 4];\n            y = args[j + 5];\n            ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n            j += 6;\n            break;\n          case _util.OPS.curveTo2:\n            ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n            x = args[j + 2];\n            y = args[j + 3];\n            j += 4;\n            break;\n          case _util.OPS.curveTo3:\n            x = args[j + 2];\n            y = args[j + 3];\n            ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n            j += 4;\n            break;\n          case _util.OPS.closePath:\n            ctx.closePath();\n            break;\n        }\n      }\n      current.setCurrentPoint(x, y);\n    },\n    closePath: function CanvasGraphics_closePath() {\n      this.ctx.closePath();\n    },\n    stroke: function CanvasGraphics_stroke(consumePath) {\n      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n      var ctx = this.ctx;\n      var strokeColor = this.current.strokeColor;\n      ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);\n      ctx.globalAlpha = this.current.strokeAlpha;\n      if (strokeColor && strokeColor.hasOwnProperty('type') && strokeColor.type === 'Pattern') {\n        ctx.save();\n        ctx.strokeStyle = strokeColor.getPattern(ctx, this);\n        ctx.stroke();\n        ctx.restore();\n      } else {\n        ctx.stroke();\n      }\n      if (consumePath) {\n        this.consumePath();\n      }\n      ctx.globalAlpha = this.current.fillAlpha;\n    },\n    closeStroke: function CanvasGraphics_closeStroke() {\n      this.closePath();\n      this.stroke();\n    },\n    fill: function CanvasGraphics_fill(consumePath) {\n      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n      var ctx = this.ctx;\n      var fillColor = this.current.fillColor;\n      var isPatternFill = this.current.patternFill;\n      var needRestore = false;\n      if (isPatternFill) {\n        ctx.save();\n        if (this.baseTransform) {\n          ctx.setTransform.apply(ctx, this.baseTransform);\n        }\n        ctx.fillStyle = fillColor.getPattern(ctx, this);\n        needRestore = true;\n      }\n      if (this.pendingEOFill) {\n        ctx.fill('evenodd');\n        this.pendingEOFill = false;\n      } else {\n        ctx.fill();\n      }\n      if (needRestore) {\n        ctx.restore();\n      }\n      if (consumePath) {\n        this.consumePath();\n      }\n    },\n    eoFill: function CanvasGraphics_eoFill() {\n      this.pendingEOFill = true;\n      this.fill();\n    },\n    fillStroke: function CanvasGraphics_fillStroke() {\n      this.fill(false);\n      this.stroke(false);\n      this.consumePath();\n    },\n    eoFillStroke: function CanvasGraphics_eoFillStroke() {\n      this.pendingEOFill = true;\n      this.fillStroke();\n    },\n    closeFillStroke: function CanvasGraphics_closeFillStroke() {\n      this.closePath();\n      this.fillStroke();\n    },\n    closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {\n      this.pendingEOFill = true;\n      this.closePath();\n      this.fillStroke();\n    },\n    endPath: function CanvasGraphics_endPath() {\n      this.consumePath();\n    },\n    clip: function CanvasGraphics_clip() {\n      this.pendingClip = NORMAL_CLIP;\n    },\n    eoClip: function CanvasGraphics_eoClip() {\n      this.pendingClip = EO_CLIP;\n    },\n    beginText: function CanvasGraphics_beginText() {\n      this.current.textMatrix = _util.IDENTITY_MATRIX;\n      this.current.textMatrixScale = 1;\n      this.current.x = this.current.lineX = 0;\n      this.current.y = this.current.lineY = 0;\n    },\n    endText: function CanvasGraphics_endText() {\n      var paths = this.pendingTextPaths;\n      var ctx = this.ctx;\n      if (paths === undefined) {\n        ctx.beginPath();\n        return;\n      }\n      ctx.save();\n      ctx.beginPath();\n      for (var i = 0; i < paths.length; i++) {\n        var path = paths[i];\n        ctx.setTransform.apply(ctx, path.transform);\n        ctx.translate(path.x, path.y);\n        path.addToPath(ctx, path.fontSize);\n      }\n      ctx.restore();\n      ctx.clip();\n      ctx.beginPath();\n      delete this.pendingTextPaths;\n    },\n    setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {\n      this.current.charSpacing = spacing;\n    },\n    setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {\n      this.current.wordSpacing = spacing;\n    },\n    setHScale: function CanvasGraphics_setHScale(scale) {\n      this.current.textHScale = scale / 100;\n    },\n    setLeading: function CanvasGraphics_setLeading(leading) {\n      this.current.leading = -leading;\n    },\n    setFont: function CanvasGraphics_setFont(fontRefName, size) {\n      var fontObj = this.commonObjs.get(fontRefName);\n      var current = this.current;\n      if (!fontObj) {\n        throw new Error('Can\\'t find font for ' + fontRefName);\n      }\n      current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;\n      if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n        (0, _util.warn)('Invalid font matrix for font ' + fontRefName);\n      }\n      if (size < 0) {\n        size = -size;\n        current.fontDirection = -1;\n      } else {\n        current.fontDirection = 1;\n      }\n      this.current.font = fontObj;\n      this.current.fontSize = size;\n      if (fontObj.isType3Font) {\n        return;\n      }\n      var name = fontObj.loadedName || 'sans-serif';\n      var bold = fontObj.black ? '900' : fontObj.bold ? 'bold' : 'normal';\n      var italic = fontObj.italic ? 'italic' : 'normal';\n      var typeface = '\"' + name + '\", ' + fontObj.fallbackName;\n      var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;\n      this.current.fontSizeScale = size / browserFontSize;\n      var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;\n      this.ctx.font = rule;\n    },\n    setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {\n      this.current.textRenderingMode = mode;\n    },\n    setTextRise: function CanvasGraphics_setTextRise(rise) {\n      this.current.textRise = rise;\n    },\n    moveText: function CanvasGraphics_moveText(x, y) {\n      this.current.x = this.current.lineX += x;\n      this.current.y = this.current.lineY += y;\n    },\n    setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {\n      this.setLeading(-y);\n      this.moveText(x, y);\n    },\n    setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {\n      this.current.textMatrix = [a, b, c, d, e, f];\n      this.current.textMatrixScale = Math.sqrt(a * a + b * b);\n      this.current.x = this.current.lineX = 0;\n      this.current.y = this.current.lineY = 0;\n    },\n    nextLine: function CanvasGraphics_nextLine() {\n      this.moveText(0, this.current.leading);\n    },\n    paintChar: function paintChar(character, x, y, patternTransform) {\n      var ctx = this.ctx;\n      var current = this.current;\n      var font = current.font;\n      var textRenderingMode = current.textRenderingMode;\n      var fontSize = current.fontSize / current.fontSizeScale;\n      var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n      var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n      var patternFill = current.patternFill && font.data;\n      var addToPath;\n      if (font.disableFontFace || isAddToPathSet || patternFill) {\n        addToPath = font.getPathGenerator(this.commonObjs, character);\n      }\n      if (font.disableFontFace || patternFill) {\n        ctx.save();\n        ctx.translate(x, y);\n        ctx.beginPath();\n        addToPath(ctx, fontSize);\n        if (patternTransform) {\n          ctx.setTransform.apply(ctx, patternTransform);\n        }\n        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n          ctx.fill();\n        }\n        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n          ctx.stroke();\n        }\n        ctx.restore();\n      } else {\n        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n          ctx.fillText(character, x, y);\n        }\n        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n          ctx.strokeText(character, x, y);\n        }\n      }\n      if (isAddToPathSet) {\n        var paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n        paths.push({\n          transform: ctx.mozCurrentTransform,\n          x: x,\n          y: y,\n          fontSize: fontSize,\n          addToPath: addToPath\n        });\n      }\n    },\n\n    get isFontSubpixelAAEnabled() {\n      var ctx = this.canvasFactory.create(10, 10).context;\n      ctx.scale(1.5, 1);\n      ctx.fillText('I', 0, 10);\n      var data = ctx.getImageData(0, 0, 10, 10).data;\n      var enabled = false;\n      for (var i = 3; i < data.length; i += 4) {\n        if (data[i] > 0 && data[i] < 255) {\n          enabled = true;\n          break;\n        }\n      }\n      return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled);\n    },\n    showText: function CanvasGraphics_showText(glyphs) {\n      var current = this.current;\n      var font = current.font;\n      if (font.isType3Font) {\n        return this.showType3Text(glyphs);\n      }\n      var fontSize = current.fontSize;\n      if (fontSize === 0) {\n        return;\n      }\n      var ctx = this.ctx;\n      var fontSizeScale = current.fontSizeScale;\n      var charSpacing = current.charSpacing;\n      var wordSpacing = current.wordSpacing;\n      var fontDirection = current.fontDirection;\n      var textHScale = current.textHScale * fontDirection;\n      var glyphsLength = glyphs.length;\n      var vertical = font.vertical;\n      var spacingDir = vertical ? 1 : -1;\n      var defaultVMetrics = font.defaultVMetrics;\n      var widthAdvanceScale = fontSize * current.fontMatrix[0];\n      var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n      ctx.save();\n      var patternTransform = void 0;\n      if (current.patternFill) {\n        ctx.save();\n        var pattern = current.fillColor.getPattern(ctx, this);\n        patternTransform = ctx.mozCurrentTransform;\n        ctx.restore();\n        ctx.fillStyle = pattern;\n      }\n      ctx.transform.apply(ctx, current.textMatrix);\n      ctx.translate(current.x, current.y + current.textRise);\n      if (fontDirection > 0) {\n        ctx.scale(textHScale, -1);\n      } else {\n        ctx.scale(textHScale, 1);\n      }\n      var lineWidth = current.lineWidth;\n      var scale = current.textMatrixScale;\n      if (scale === 0 || lineWidth === 0) {\n        var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n          this._cachedGetSinglePixelWidth = null;\n          lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;\n        }\n      } else {\n        lineWidth /= scale;\n      }\n      if (fontSizeScale !== 1.0) {\n        ctx.scale(fontSizeScale, fontSizeScale);\n        lineWidth /= fontSizeScale;\n      }\n      ctx.lineWidth = lineWidth;\n      var x = 0,\n          i;\n      for (i = 0; i < glyphsLength; ++i) {\n        var glyph = glyphs[i];\n        if ((0, _util.isNum)(glyph)) {\n          x += spacingDir * glyph * fontSize / 1000;\n          continue;\n        }\n        var restoreNeeded = false;\n        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n        var character = glyph.fontChar;\n        var accent = glyph.accent;\n        var scaledX, scaledY, scaledAccentX, scaledAccentY;\n        var width = glyph.width;\n        if (vertical) {\n          var vmetric, vx, vy;\n          vmetric = glyph.vmetric || defaultVMetrics;\n          vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n          vx = -vx * widthAdvanceScale;\n          vy = vmetric[2] * widthAdvanceScale;\n          width = vmetric ? -vmetric[0] : width;\n          scaledX = vx / fontSizeScale;\n          scaledY = (x + vy) / fontSizeScale;\n        } else {\n          scaledX = x / fontSizeScale;\n          scaledY = 0;\n        }\n        if (font.remeasure && width > 0) {\n          var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n          if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n            var characterScaleX = width / measuredWidth;\n            restoreNeeded = true;\n            ctx.save();\n            ctx.scale(characterScaleX, 1);\n            scaledX /= characterScaleX;\n          } else if (width !== measuredWidth) {\n            scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n          }\n        }\n        if (glyph.isInFont || font.missingFile) {\n          if (simpleFillText && !accent) {\n            ctx.fillText(character, scaledX, scaledY);\n          } else {\n            this.paintChar(character, scaledX, scaledY, patternTransform);\n            if (accent) {\n              scaledAccentX = scaledX + accent.offset.x / fontSizeScale;\n              scaledAccentY = scaledY - accent.offset.y / fontSizeScale;\n              this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n            }\n          }\n        }\n        var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n        x += charWidth;\n        if (restoreNeeded) {\n          ctx.restore();\n        }\n      }\n      if (vertical) {\n        current.y -= x * textHScale;\n      } else {\n        current.x += x * textHScale;\n      }\n      ctx.restore();\n    },\n    showType3Text: function CanvasGraphics_showType3Text(glyphs) {\n      var ctx = this.ctx;\n      var current = this.current;\n      var font = current.font;\n      var fontSize = current.fontSize;\n      var fontDirection = current.fontDirection;\n      var spacingDir = font.vertical ? 1 : -1;\n      var charSpacing = current.charSpacing;\n      var wordSpacing = current.wordSpacing;\n      var textHScale = current.textHScale * fontDirection;\n      var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n      var glyphsLength = glyphs.length;\n      var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;\n      var i, glyph, width, spacingLength;\n      if (isTextInvisible || fontSize === 0) {\n        return;\n      }\n      this._cachedGetSinglePixelWidth = null;\n      ctx.save();\n      ctx.transform.apply(ctx, current.textMatrix);\n      ctx.translate(current.x, current.y);\n      ctx.scale(textHScale, fontDirection);\n      for (i = 0; i < glyphsLength; ++i) {\n        glyph = glyphs[i];\n        if ((0, _util.isNum)(glyph)) {\n          spacingLength = spacingDir * glyph * fontSize / 1000;\n          this.ctx.translate(spacingLength, 0);\n          current.x += spacingLength * textHScale;\n          continue;\n        }\n        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n        var operatorList = font.charProcOperatorList[glyph.operatorListId];\n        if (!operatorList) {\n          (0, _util.warn)('Type3 character \"' + glyph.operatorListId + '\" is not available.');\n          continue;\n        }\n        this.processingType3 = glyph;\n        this.save();\n        ctx.scale(fontSize, fontSize);\n        ctx.transform.apply(ctx, fontMatrix);\n        this.executeOperatorList(operatorList);\n        this.restore();\n        var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);\n        width = transformed[0] * fontSize + spacing;\n        ctx.translate(width, 0);\n        current.x += width * textHScale;\n      }\n      ctx.restore();\n      this.processingType3 = null;\n    },\n    setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {},\n    setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n      this.ctx.rect(llx, lly, urx - llx, ury - lly);\n      this.clip();\n      this.endPath();\n    },\n    getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {\n      var _this = this;\n\n      var pattern;\n      if (IR[0] === 'TilingPattern') {\n        var color = IR[1];\n        var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();\n        var canvasGraphicsFactory = {\n          createCanvasGraphics: function createCanvasGraphics(ctx) {\n            return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory, _this.webGLContext);\n          }\n        };\n        pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n      } else {\n        pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR);\n      }\n      return pattern;\n    },\n    setStrokeColorN: function CanvasGraphics_setStrokeColorN() {\n      this.current.strokeColor = this.getColorN_Pattern(arguments);\n    },\n    setFillColorN: function CanvasGraphics_setFillColorN() {\n      this.current.fillColor = this.getColorN_Pattern(arguments);\n      this.current.patternFill = true;\n    },\n    setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {\n      var color = _util.Util.makeCssRgb(r, g, b);\n      this.ctx.strokeStyle = color;\n      this.current.strokeColor = color;\n    },\n    setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {\n      var color = _util.Util.makeCssRgb(r, g, b);\n      this.ctx.fillStyle = color;\n      this.current.fillColor = color;\n      this.current.patternFill = false;\n    },\n    shadingFill: function CanvasGraphics_shadingFill(patternIR) {\n      var ctx = this.ctx;\n      this.save();\n      var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);\n      ctx.fillStyle = pattern.getPattern(ctx, this, true);\n      var inv = ctx.mozCurrentTransformInverse;\n      if (inv) {\n        var canvas = ctx.canvas;\n        var width = canvas.width;\n        var height = canvas.height;\n        var bl = _util.Util.applyTransform([0, 0], inv);\n        var br = _util.Util.applyTransform([0, height], inv);\n        var ul = _util.Util.applyTransform([width, 0], inv);\n        var ur = _util.Util.applyTransform([width, height], inv);\n        var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n        var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n        var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n        var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n        this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n      } else {\n        this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n      }\n      this.restore();\n    },\n    beginInlineImage: function CanvasGraphics_beginInlineImage() {\n      (0, _util.unreachable)('Should not call beginInlineImage');\n    },\n    beginImageData: function CanvasGraphics_beginImageData() {\n      (0, _util.unreachable)('Should not call beginImageData');\n    },\n    paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) {\n      this.save();\n      this.baseTransformStack.push(this.baseTransform);\n      if (Array.isArray(matrix) && matrix.length === 6) {\n        this.transform.apply(this, matrix);\n      }\n      this.baseTransform = this.ctx.mozCurrentTransform;\n      if (Array.isArray(bbox) && bbox.length === 4) {\n        var width = bbox[2] - bbox[0];\n        var height = bbox[3] - bbox[1];\n        this.ctx.rect(bbox[0], bbox[1], width, height);\n        this.clip();\n        this.endPath();\n      }\n    },\n    paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {\n      this.restore();\n      this.baseTransform = this.baseTransformStack.pop();\n    },\n    beginGroup: function CanvasGraphics_beginGroup(group) {\n      this.save();\n      var currentCtx = this.ctx;\n      if (!group.isolated) {\n        (0, _util.info)('TODO: Support non-isolated groups.');\n      }\n      if (group.knockout) {\n        (0, _util.warn)('Knockout groups not supported.');\n      }\n      var currentTransform = currentCtx.mozCurrentTransform;\n      if (group.matrix) {\n        currentCtx.transform.apply(currentCtx, group.matrix);\n      }\n      if (!group.bbox) {\n        throw new Error('Bounding box is required.');\n      }\n      var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);\n      var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n      bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n      var offsetX = Math.floor(bounds[0]);\n      var offsetY = Math.floor(bounds[1]);\n      var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n      var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n      var scaleX = 1,\n          scaleY = 1;\n      if (drawnWidth > MAX_GROUP_SIZE) {\n        scaleX = drawnWidth / MAX_GROUP_SIZE;\n        drawnWidth = MAX_GROUP_SIZE;\n      }\n      if (drawnHeight > MAX_GROUP_SIZE) {\n        scaleY = drawnHeight / MAX_GROUP_SIZE;\n        drawnHeight = MAX_GROUP_SIZE;\n      }\n      var cacheId = 'groupAt' + this.groupLevel;\n      if (group.smask) {\n        cacheId += '_smask_' + this.smaskCounter++ % 2;\n      }\n      var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n      var groupCtx = scratchCanvas.context;\n      groupCtx.scale(1 / scaleX, 1 / scaleY);\n      groupCtx.translate(-offsetX, -offsetY);\n      groupCtx.transform.apply(groupCtx, currentTransform);\n      if (group.smask) {\n        this.smaskStack.push({\n          canvas: scratchCanvas.canvas,\n          context: groupCtx,\n          offsetX: offsetX,\n          offsetY: offsetY,\n          scaleX: scaleX,\n          scaleY: scaleY,\n          subtype: group.smask.subtype,\n          backdrop: group.smask.backdrop,\n          transferMap: group.smask.transferMap || null,\n          startTransformInverse: null\n        });\n      } else {\n        currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n        currentCtx.translate(offsetX, offsetY);\n        currentCtx.scale(scaleX, scaleY);\n      }\n      copyCtxState(currentCtx, groupCtx);\n      this.ctx = groupCtx;\n      this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]);\n      this.groupStack.push(currentCtx);\n      this.groupLevel++;\n      this.current.activeSMask = null;\n    },\n    endGroup: function CanvasGraphics_endGroup(group) {\n      this.groupLevel--;\n      var groupCtx = this.ctx;\n      this.ctx = this.groupStack.pop();\n      if (this.ctx.imageSmoothingEnabled !== undefined) {\n        this.ctx.imageSmoothingEnabled = false;\n      } else {\n        this.ctx.mozImageSmoothingEnabled = false;\n      }\n      if (group.smask) {\n        this.tempSMask = this.smaskStack.pop();\n      } else {\n        this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      }\n      this.restore();\n    },\n    beginAnnotations: function CanvasGraphics_beginAnnotations() {\n      this.save();\n      if (this.baseTransform) {\n        this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n      }\n    },\n    endAnnotations: function CanvasGraphics_endAnnotations() {\n      this.restore();\n    },\n    beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) {\n      this.save();\n      resetCtxToDefault(this.ctx);\n      this.current = new CanvasExtraState();\n      if (Array.isArray(rect) && rect.length === 4) {\n        var width = rect[2] - rect[0];\n        var height = rect[3] - rect[1];\n        this.ctx.rect(rect[0], rect[1], width, height);\n        this.clip();\n        this.endPath();\n      }\n      this.transform.apply(this, transform);\n      this.transform.apply(this, matrix);\n    },\n    endAnnotation: function CanvasGraphics_endAnnotation() {\n      this.restore();\n    },\n    paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {\n      var domImage = this.objs.get(objId);\n      if (!domImage) {\n        (0, _util.warn)('Dependent image isn\\'t ready yet');\n        return;\n      }\n      this.save();\n      var ctx = this.ctx;\n      ctx.scale(1 / w, -1 / h);\n      ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, 0, -h, w, h);\n      if (this.imageLayer) {\n        var currentTransform = ctx.mozCurrentTransformInverse;\n        var position = this.getCanvasPosition(0, 0);\n        this.imageLayer.appendImage({\n          objId: objId,\n          left: position[0],\n          top: position[1],\n          width: w / currentTransform[0],\n          height: h / currentTransform[3]\n        });\n      }\n      this.restore();\n    },\n    paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {\n      var ctx = this.ctx;\n      var width = img.width,\n          height = img.height;\n      var fillColor = this.current.fillColor;\n      var isPatternFill = this.current.patternFill;\n      var glyph = this.processingType3;\n      if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n        if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n          glyph.compiled = compileType3Glyph({\n            data: img.data,\n            width: width,\n            height: height\n          });\n        } else {\n          glyph.compiled = null;\n        }\n      }\n      if (glyph && glyph.compiled) {\n        glyph.compiled(ctx);\n        return;\n      }\n      var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);\n      var maskCtx = maskCanvas.context;\n      maskCtx.save();\n      putBinaryImageMask(maskCtx, img);\n      maskCtx.globalCompositeOperation = 'source-in';\n      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n      maskCtx.restore();\n      this.paintInlineImageXObject(maskCanvas.canvas);\n    },\n    paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) {\n      var width = imgData.width;\n      var height = imgData.height;\n      var fillColor = this.current.fillColor;\n      var isPatternFill = this.current.patternFill;\n      var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);\n      var maskCtx = maskCanvas.context;\n      maskCtx.save();\n      putBinaryImageMask(maskCtx, imgData);\n      maskCtx.globalCompositeOperation = 'source-in';\n      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n      maskCtx.restore();\n      var ctx = this.ctx;\n      for (var i = 0, ii = positions.length; i < ii; i += 2) {\n        ctx.save();\n        ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);\n        ctx.scale(1, -1);\n        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n        ctx.restore();\n      }\n    },\n    paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) {\n      var ctx = this.ctx;\n      var fillColor = this.current.fillColor;\n      var isPatternFill = this.current.patternFill;\n      for (var i = 0, ii = images.length; i < ii; i++) {\n        var image = images[i];\n        var width = image.width,\n            height = image.height;\n        var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);\n        var maskCtx = maskCanvas.context;\n        maskCtx.save();\n        putBinaryImageMask(maskCtx, image);\n        maskCtx.globalCompositeOperation = 'source-in';\n        maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n        maskCtx.fillRect(0, 0, width, height);\n        maskCtx.restore();\n        ctx.save();\n        ctx.transform.apply(ctx, image.transform);\n        ctx.scale(1, -1);\n        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n        ctx.restore();\n      }\n    },\n    paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {\n      var imgData = this.objs.get(objId);\n      if (!imgData) {\n        (0, _util.warn)('Dependent image isn\\'t ready yet');\n        return;\n      }\n      this.paintInlineImageXObject(imgData);\n    },\n    paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n      var imgData = this.objs.get(objId);\n      if (!imgData) {\n        (0, _util.warn)('Dependent image isn\\'t ready yet');\n        return;\n      }\n      var width = imgData.width;\n      var height = imgData.height;\n      var map = [];\n      for (var i = 0, ii = positions.length; i < ii; i += 2) {\n        map.push({\n          transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n          x: 0,\n          y: 0,\n          w: width,\n          h: height\n        });\n      }\n      this.paintInlineImageXObjectGroup(imgData, map);\n    },\n    paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) {\n      var width = imgData.width;\n      var height = imgData.height;\n      var ctx = this.ctx;\n      this.save();\n      ctx.scale(1 / width, -1 / height);\n      var currentTransform = ctx.mozCurrentTransformInverse;\n      var a = currentTransform[0],\n          b = currentTransform[1];\n      var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);\n      var c = currentTransform[2],\n          d = currentTransform[3];\n      var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);\n      var imgToPaint, tmpCanvas;\n      if (typeof HTMLElement === 'function' && imgData instanceof HTMLElement || !imgData.data) {\n        imgToPaint = imgData;\n      } else {\n        tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', width, height);\n        var tmpCtx = tmpCanvas.context;\n        putBinaryImageData(tmpCtx, imgData);\n        imgToPaint = tmpCanvas.canvas;\n      }\n      var paintWidth = width,\n          paintHeight = height;\n      var tmpCanvasId = 'prescale1';\n      while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n        var newWidth = paintWidth,\n            newHeight = paintHeight;\n        if (widthScale > 2 && paintWidth > 1) {\n          newWidth = Math.ceil(paintWidth / 2);\n          widthScale /= paintWidth / newWidth;\n        }\n        if (heightScale > 2 && paintHeight > 1) {\n          newHeight = Math.ceil(paintHeight / 2);\n          heightScale /= paintHeight / newHeight;\n        }\n        tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n        tmpCtx = tmpCanvas.context;\n        tmpCtx.clearRect(0, 0, newWidth, newHeight);\n        tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n        imgToPaint = tmpCanvas.canvas;\n        paintWidth = newWidth;\n        paintHeight = newHeight;\n        tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';\n      }\n      ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);\n      if (this.imageLayer) {\n        var position = this.getCanvasPosition(0, -height);\n        this.imageLayer.appendImage({\n          imgData: imgData,\n          left: position[0],\n          top: position[1],\n          width: width / currentTransform[0],\n          height: height / currentTransform[3]\n        });\n      }\n      this.restore();\n    },\n    paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {\n      var ctx = this.ctx;\n      var w = imgData.width;\n      var h = imgData.height;\n      var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);\n      var tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      for (var i = 0, ii = map.length; i < ii; i++) {\n        var entry = map[i];\n        ctx.save();\n        ctx.transform.apply(ctx, entry.transform);\n        ctx.scale(1, -1);\n        ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n        if (this.imageLayer) {\n          var position = this.getCanvasPosition(entry.x, entry.y);\n          this.imageLayer.appendImage({\n            imgData: imgData,\n            left: position[0],\n            top: position[1],\n            width: w,\n            height: h\n          });\n        }\n        ctx.restore();\n      }\n    },\n    paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {\n      this.ctx.fillRect(0, 0, 1, 1);\n    },\n    paintXObject: function CanvasGraphics_paintXObject() {\n      (0, _util.warn)('Unsupported \\'paintXObject\\' command.');\n    },\n    markPoint: function CanvasGraphics_markPoint(tag) {},\n    markPointProps: function CanvasGraphics_markPointProps(tag, properties) {},\n    beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {},\n    beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {},\n    endMarkedContent: function CanvasGraphics_endMarkedContent() {},\n    beginCompat: function CanvasGraphics_beginCompat() {},\n    endCompat: function CanvasGraphics_endCompat() {},\n    consumePath: function CanvasGraphics_consumePath() {\n      var ctx = this.ctx;\n      if (this.pendingClip) {\n        if (this.pendingClip === EO_CLIP) {\n          ctx.clip('evenodd');\n        } else {\n          ctx.clip();\n        }\n        this.pendingClip = null;\n      }\n      ctx.beginPath();\n    },\n    getSinglePixelWidth: function getSinglePixelWidth(scale) {\n      if (this._cachedGetSinglePixelWidth === null) {\n        var inverse = this.ctx.mozCurrentTransformInverse;\n        this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3]));\n      }\n      return this._cachedGetSinglePixelWidth;\n    },\n\n    getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {\n      var transform = this.ctx.mozCurrentTransform;\n      return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];\n    }\n  };\n  for (var op in _util.OPS) {\n    CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];\n  }\n  return CanvasGraphics;\n}();\nexports.CanvasGraphics = CanvasGraphics;\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.TilingPattern = exports.getShadingPatternFromIR = undefined;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar ShadingIRs = {};\nShadingIRs.RadialAxial = {\n  fromIR: function RadialAxial_fromIR(raw) {\n    var type = raw[1];\n    var colorStops = raw[2];\n    var p0 = raw[3];\n    var p1 = raw[4];\n    var r0 = raw[5];\n    var r1 = raw[6];\n    return {\n      type: 'Pattern',\n      getPattern: function RadialAxial_getPattern(ctx) {\n        var grad;\n        if (type === 'axial') {\n          grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n        } else if (type === 'radial') {\n          grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);\n        }\n        for (var i = 0, ii = colorStops.length; i < ii; ++i) {\n          var c = colorStops[i];\n          grad.addColorStop(c[0], c[1]);\n        }\n        return grad;\n      }\n    };\n  }\n};\nvar createMeshCanvas = function createMeshCanvasClosure() {\n  function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n    var coords = context.coords,\n        colors = context.colors;\n    var bytes = data.data,\n        rowSize = data.width * 4;\n    var tmp;\n    if (coords[p1 + 1] > coords[p2 + 1]) {\n      tmp = p1;\n      p1 = p2;\n      p2 = tmp;\n      tmp = c1;\n      c1 = c2;\n      c2 = tmp;\n    }\n    if (coords[p2 + 1] > coords[p3 + 1]) {\n      tmp = p2;\n      p2 = p3;\n      p3 = tmp;\n      tmp = c2;\n      c2 = c3;\n      c3 = tmp;\n    }\n    if (coords[p1 + 1] > coords[p2 + 1]) {\n      tmp = p1;\n      p1 = p2;\n      p2 = tmp;\n      tmp = c1;\n      c1 = c2;\n      c2 = tmp;\n    }\n    var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n    var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n    var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n    var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n    var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n    var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n    if (y1 >= y3) {\n      return;\n    }\n    var c1r = colors[c1],\n        c1g = colors[c1 + 1],\n        c1b = colors[c1 + 2];\n    var c2r = colors[c2],\n        c2g = colors[c2 + 1],\n        c2b = colors[c2 + 2];\n    var c3r = colors[c3],\n        c3g = colors[c3 + 1],\n        c3b = colors[c3 + 2];\n    var minY = Math.round(y1),\n        maxY = Math.round(y3);\n    var xa, car, cag, cab;\n    var xb, cbr, cbg, cbb;\n    var k;\n    for (var y = minY; y <= maxY; y++) {\n      if (y < y2) {\n        k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);\n        xa = x1 - (x1 - x2) * k;\n        car = c1r - (c1r - c2r) * k;\n        cag = c1g - (c1g - c2g) * k;\n        cab = c1b - (c1b - c2b) * k;\n      } else {\n        k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);\n        xa = x2 - (x2 - x3) * k;\n        car = c2r - (c2r - c3r) * k;\n        cag = c2g - (c2g - c3g) * k;\n        cab = c2b - (c2b - c3b) * k;\n      }\n      k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);\n      xb = x1 - (x1 - x3) * k;\n      cbr = c1r - (c1r - c3r) * k;\n      cbg = c1g - (c1g - c3g) * k;\n      cbb = c1b - (c1b - c3b) * k;\n      var x1_ = Math.round(Math.min(xa, xb));\n      var x2_ = Math.round(Math.max(xa, xb));\n      var j = rowSize * y + x1_ * 4;\n      for (var x = x1_; x <= x2_; x++) {\n        k = (xa - x) / (xa - xb);\n        k = k < 0 ? 0 : k > 1 ? 1 : k;\n        bytes[j++] = car - (car - cbr) * k | 0;\n        bytes[j++] = cag - (cag - cbg) * k | 0;\n        bytes[j++] = cab - (cab - cbb) * k | 0;\n        bytes[j++] = 255;\n      }\n    }\n  }\n  function drawFigure(data, figure, context) {\n    var ps = figure.coords;\n    var cs = figure.colors;\n    var i, ii;\n    switch (figure.type) {\n      case 'lattice':\n        var verticesPerRow = figure.verticesPerRow;\n        var rows = Math.floor(ps.length / verticesPerRow) - 1;\n        var cols = verticesPerRow - 1;\n        for (i = 0; i < rows; i++) {\n          var q = i * verticesPerRow;\n          for (var j = 0; j < cols; j++, q++) {\n            drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n            drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n          }\n        }\n        break;\n      case 'triangles':\n        for (i = 0, ii = ps.length; i < ii; i += 3) {\n          drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n        }\n        break;\n      default:\n        throw new Error('illegal figure');\n    }\n  }\n  function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {\n    var EXPECTED_SCALE = 1.1;\n    var MAX_PATTERN_SIZE = 3000;\n    var BORDER_SIZE = 2;\n    var offsetX = Math.floor(bounds[0]);\n    var offsetY = Math.floor(bounds[1]);\n    var boundsWidth = Math.ceil(bounds[2]) - offsetX;\n    var boundsHeight = Math.ceil(bounds[3]) - offsetY;\n    var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    var scaleX = boundsWidth / width;\n    var scaleY = boundsHeight / height;\n    var context = {\n      coords: coords,\n      colors: colors,\n      offsetX: -offsetX,\n      offsetY: -offsetY,\n      scaleX: 1 / scaleX,\n      scaleY: 1 / scaleY\n    };\n    var paddedWidth = width + BORDER_SIZE * 2;\n    var paddedHeight = height + BORDER_SIZE * 2;\n    var canvas, tmpCanvas, i, ii;\n    if (webGLContext.isEnabled) {\n      canvas = webGLContext.drawFigures({\n        width: width,\n        height: height,\n        backgroundColor: backgroundColor,\n        figures: figures,\n        context: context\n      });\n      tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);\n      tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);\n      canvas = tmpCanvas.canvas;\n    } else {\n      tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);\n      var tmpCtx = tmpCanvas.context;\n      var data = tmpCtx.createImageData(width, height);\n      if (backgroundColor) {\n        var bytes = data.data;\n        for (i = 0, ii = bytes.length; i < ii; i += 4) {\n          bytes[i] = backgroundColor[0];\n          bytes[i + 1] = backgroundColor[1];\n          bytes[i + 2] = backgroundColor[2];\n          bytes[i + 3] = 255;\n        }\n      }\n      for (i = 0; i < figures.length; i++) {\n        drawFigure(data, figures[i], context);\n      }\n      tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n      canvas = tmpCanvas.canvas;\n    }\n    return {\n      canvas: canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX: scaleX,\n      scaleY: scaleY\n    };\n  }\n  return createMeshCanvas;\n}();\nShadingIRs.Mesh = {\n  fromIR: function Mesh_fromIR(raw) {\n    var coords = raw[2];\n    var colors = raw[3];\n    var figures = raw[4];\n    var bounds = raw[5];\n    var matrix = raw[6];\n    var background = raw[8];\n    return {\n      type: 'Pattern',\n      getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {\n        var scale;\n        if (shadingFill) {\n          scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n        } else {\n          scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);\n          if (matrix) {\n            var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);\n            scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n          }\n        }\n        var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);\n        if (!shadingFill) {\n          ctx.setTransform.apply(ctx, owner.baseTransform);\n          if (matrix) {\n            ctx.transform.apply(ctx, matrix);\n          }\n        }\n        ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n        ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n        return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');\n      }\n    };\n  }\n};\nShadingIRs.Dummy = {\n  fromIR: function Dummy_fromIR() {\n    return {\n      type: 'Pattern',\n      getPattern: function Dummy_fromIR_getPattern() {\n        return 'hotpink';\n      }\n    };\n  }\n};\nfunction getShadingPatternFromIR(raw) {\n  var shadingIR = ShadingIRs[raw[0]];\n  if (!shadingIR) {\n    throw new Error('Unknown IR type: ' + raw[0]);\n  }\n  return shadingIR.fromIR(raw);\n}\nvar TilingPattern = function TilingPatternClosure() {\n  var PaintType = {\n    COLORED: 1,\n    UNCOLORED: 2\n  };\n  var MAX_PATTERN_SIZE = 3000;\n  function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n    this.operatorList = IR[2];\n    this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n    this.bbox = IR[4];\n    this.xstep = IR[5];\n    this.ystep = IR[6];\n    this.paintType = IR[7];\n    this.tilingType = IR[8];\n    this.color = color;\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\n    this.baseTransform = baseTransform;\n    this.type = 'Pattern';\n    this.ctx = ctx;\n  }\n  TilingPattern.prototype = {\n    createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {\n      var operatorList = this.operatorList;\n      var bbox = this.bbox;\n      var xstep = this.xstep;\n      var ystep = this.ystep;\n      var paintType = this.paintType;\n      var tilingType = this.tilingType;\n      var color = this.color;\n      var canvasGraphicsFactory = this.canvasGraphicsFactory;\n      (0, _util.info)('TilingType: ' + tilingType);\n      var x0 = bbox[0],\n          y0 = bbox[1],\n          x1 = bbox[2],\n          y1 = bbox[3];\n      var topLeft = [x0, y0];\n      var botRight = [x0 + xstep, y0 + ystep];\n      var width = botRight[0] - topLeft[0];\n      var height = botRight[1] - topLeft[1];\n      var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n      var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);\n      var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n      width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), MAX_PATTERN_SIZE);\n      height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), MAX_PATTERN_SIZE);\n      var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', width, height, true);\n      var tmpCtx = tmpCanvas.context;\n      var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n      graphics.groupLevel = owner.groupLevel;\n      this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n      this.setScale(width, height, xstep, ystep);\n      this.transformToScale(graphics);\n      var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];\n      graphics.transform.apply(graphics, tmpTranslate);\n      this.clipBbox(graphics, bbox, x0, y0, x1, y1);\n      graphics.executeOperatorList(operatorList);\n      return tmpCanvas.canvas;\n    },\n    setScale: function TilingPattern_setScale(width, height, xstep, ystep) {\n      this.scale = [width / xstep, height / ystep];\n    },\n    transformToScale: function TilingPattern_transformToScale(graphics) {\n      var scale = this.scale;\n      var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];\n      graphics.transform.apply(graphics, tmpScale);\n    },\n    scaleToContext: function TilingPattern_scaleToContext() {\n      var scale = this.scale;\n      this.ctx.scale(1 / scale[0], 1 / scale[1]);\n    },\n    clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {\n      if (Array.isArray(bbox) && bbox.length === 4) {\n        var bboxWidth = x1 - x0;\n        var bboxHeight = y1 - y0;\n        graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n        graphics.clip();\n        graphics.endPath();\n      }\n    },\n    setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {\n      var context = graphics.ctx,\n          current = graphics.current;\n      switch (paintType) {\n        case PaintType.COLORED:\n          var ctx = this.ctx;\n          context.fillStyle = ctx.fillStyle;\n          context.strokeStyle = ctx.strokeStyle;\n          current.fillColor = ctx.fillStyle;\n          current.strokeColor = ctx.strokeStyle;\n          break;\n        case PaintType.UNCOLORED:\n          var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);\n          context.fillStyle = cssColor;\n          context.strokeStyle = cssColor;\n          current.fillColor = cssColor;\n          current.strokeColor = cssColor;\n          break;\n        default:\n          throw new _util.FormatError('Unsupported paint type: ' + paintType);\n      }\n    },\n    getPattern: function TilingPattern_getPattern(ctx, owner) {\n      var temporaryPatternCanvas = this.createPatternCanvas(owner);\n      ctx = this.ctx;\n      ctx.setTransform.apply(ctx, this.baseTransform);\n      ctx.transform.apply(ctx, this.matrix);\n      this.scaleToContext();\n      return ctx.createPattern(temporaryPatternCanvas, 'repeat');\n    }\n  };\n  return TilingPattern;\n}();\nexports.getShadingPatternFromIR = getShadingPatternFromIR;\nexports.TilingPattern = TilingPattern;\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar GlobalWorkerOptions = Object.create(null);\nGlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;\nGlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? '' : GlobalWorkerOptions.workerSrc;\nexports.GlobalWorkerOptions = GlobalWorkerOptions;\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MessageHandler = undefined;\n\nvar _regenerator = __w_pdfjs_require__(137);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar resolveCall = function () {\n  var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(fn, args) {\n    var thisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n    return _regenerator2.default.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            if (fn) {\n              _context.next = 2;\n              break;\n            }\n\n            return _context.abrupt('return');\n\n          case 2:\n            return _context.abrupt('return', fn.apply(thisArg, args));\n\n          case 3:\n          case 'end':\n            return _context.stop();\n        }\n      }\n    }, _callee, this);\n  }));\n\n  return function resolveCall(_x2, _x3) {\n    return _ref.apply(this, arguments);\n  };\n}();\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction wrapReason(reason) {\n  if ((typeof reason === 'undefined' ? 'undefined' : _typeof(reason)) !== 'object') {\n    return reason;\n  }\n  switch (reason.name) {\n    case 'AbortException':\n      return new _util.AbortException(reason.message);\n    case 'MissingPDFException':\n      return new _util.MissingPDFException(reason.message);\n    case 'UnexpectedResponseException':\n      return new _util.UnexpectedResponseException(reason.message, reason.status);\n    default:\n      return new _util.UnknownErrorException(reason.message, reason.details);\n  }\n}\nfunction makeReasonSerializable(reason) {\n  if (!(reason instanceof Error) || reason instanceof _util.AbortException || reason instanceof _util.MissingPDFException || reason instanceof _util.UnexpectedResponseException || reason instanceof _util.UnknownErrorException) {\n    return reason;\n  }\n  return new _util.UnknownErrorException(reason.message, reason.toString());\n}\nfunction resolveOrReject(capability, success, reason) {\n  if (success) {\n    capability.resolve();\n  } else {\n    capability.reject(reason);\n  }\n}\nfunction finalize(promise) {\n  return Promise.resolve(promise).catch(function () {});\n}\nfunction MessageHandler(sourceName, targetName, comObj) {\n  var _this = this;\n\n  this.sourceName = sourceName;\n  this.targetName = targetName;\n  this.comObj = comObj;\n  this.callbackId = 1;\n  this.streamId = 1;\n  this.postMessageTransfers = true;\n  this.streamSinks = Object.create(null);\n  this.streamControllers = Object.create(null);\n  var callbacksCapabilities = this.callbacksCapabilities = Object.create(null);\n  var ah = this.actionHandler = Object.create(null);\n  this._onComObjOnMessage = function (event) {\n    var data = event.data;\n    if (data.targetName !== _this.sourceName) {\n      return;\n    }\n    if (data.stream) {\n      _this._processStreamMessage(data);\n    } else if (data.isReply) {\n      var callbackId = data.callbackId;\n      if (data.callbackId in callbacksCapabilities) {\n        var callback = callbacksCapabilities[callbackId];\n        delete callbacksCapabilities[callbackId];\n        if ('error' in data) {\n          callback.reject(wrapReason(data.error));\n        } else {\n          callback.resolve(data.data);\n        }\n      } else {\n        throw new Error('Cannot resolve callback ' + callbackId);\n      }\n    } else if (data.action in ah) {\n      var action = ah[data.action];\n      if (data.callbackId) {\n        var _sourceName = _this.sourceName;\n        var _targetName = data.sourceName;\n        Promise.resolve().then(function () {\n          return action[0].call(action[1], data.data);\n        }).then(function (result) {\n          comObj.postMessage({\n            sourceName: _sourceName,\n            targetName: _targetName,\n            isReply: true,\n            callbackId: data.callbackId,\n            data: result\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName: _sourceName,\n            targetName: _targetName,\n            isReply: true,\n            callbackId: data.callbackId,\n            error: makeReasonSerializable(reason)\n          });\n        });\n      } else if (data.streamId) {\n        _this._createStreamSink(data);\n      } else {\n        action[0].call(action[1], data.data);\n      }\n    } else {\n      throw new Error('Unknown action from worker: ' + data.action);\n    }\n  };\n  comObj.addEventListener('message', this._onComObjOnMessage);\n}\nMessageHandler.prototype = {\n  on: function on(actionName, handler, scope) {\n    var ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error('There is already an actionName called \"' + actionName + '\"');\n    }\n    ah[actionName] = [handler, scope];\n  },\n  send: function send(actionName, data, transfers) {\n    var message = {\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data: data\n    };\n    this.postMessage(message, transfers);\n  },\n  sendWithPromise: function sendWithPromise(actionName, data, transfers) {\n    var callbackId = this.callbackId++;\n    var message = {\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data: data,\n      callbackId: callbackId\n    };\n    var capability = (0, _util.createPromiseCapability)();\n    this.callbacksCapabilities[callbackId] = capability;\n    try {\n      this.postMessage(message, transfers);\n    } catch (e) {\n      capability.reject(e);\n    }\n    return capability.promise;\n  },\n  sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) {\n    var _this2 = this;\n\n    var streamId = this.streamId++;\n    var sourceName = this.sourceName;\n    var targetName = this.targetName;\n    return new _util.ReadableStream({\n      start: function start(controller) {\n        var startCapability = (0, _util.createPromiseCapability)();\n        _this2.streamControllers[streamId] = {\n          controller: controller,\n          startCall: startCapability,\n          isClosed: false\n        };\n        _this2.postMessage({\n          sourceName: sourceName,\n          targetName: targetName,\n          action: actionName,\n          streamId: streamId,\n          data: data,\n          desiredSize: controller.desiredSize\n        });\n        return startCapability.promise;\n      },\n      pull: function pull(controller) {\n        var pullCapability = (0, _util.createPromiseCapability)();\n        _this2.streamControllers[streamId].pullCall = pullCapability;\n        _this2.postMessage({\n          sourceName: sourceName,\n          targetName: targetName,\n          stream: 'pull',\n          streamId: streamId,\n          desiredSize: controller.desiredSize\n        });\n        return pullCapability.promise;\n      },\n      cancel: function cancel(reason) {\n        var cancelCapability = (0, _util.createPromiseCapability)();\n        _this2.streamControllers[streamId].cancelCall = cancelCapability;\n        _this2.streamControllers[streamId].isClosed = true;\n        _this2.postMessage({\n          sourceName: sourceName,\n          targetName: targetName,\n          stream: 'cancel',\n          reason: reason,\n          streamId: streamId\n        });\n        return cancelCapability.promise;\n      }\n    }, queueingStrategy);\n  },\n  _createStreamSink: function _createStreamSink(data) {\n    var _this3 = this;\n\n    var self = this;\n    var action = this.actionHandler[data.action];\n    var streamId = data.streamId;\n    var desiredSize = data.desiredSize;\n    var sourceName = this.sourceName;\n    var targetName = data.sourceName;\n    var capability = (0, _util.createPromiseCapability)();\n    var sendStreamRequest = function sendStreamRequest(_ref2) {\n      var stream = _ref2.stream,\n          chunk = _ref2.chunk,\n          transfers = _ref2.transfers,\n          success = _ref2.success,\n          reason = _ref2.reason;\n\n      _this3.postMessage({\n        sourceName: sourceName,\n        targetName: targetName,\n        stream: stream,\n        streamId: streamId,\n        chunk: chunk,\n        success: success,\n        reason: reason\n      }, transfers);\n    };\n    var streamSink = {\n      enqueue: function enqueue(chunk) {\n        var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n        var transfers = arguments[2];\n\n        if (this.isCancelled) {\n          return;\n        }\n        var lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = (0, _util.createPromiseCapability)();\n          this.ready = this.sinkCapability.promise;\n        }\n        sendStreamRequest({\n          stream: 'enqueue',\n          chunk: chunk,\n          transfers: transfers\n        });\n      },\n      close: function close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        sendStreamRequest({ stream: 'close' });\n        delete self.streamSinks[streamId];\n      },\n      error: function error(reason) {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        sendStreamRequest({\n          stream: 'error',\n          reason: reason\n        });\n      },\n\n      sinkCapability: capability,\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: desiredSize,\n      ready: null\n    };\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    resolveCall(action[0], [data.data, streamSink], action[1]).then(function () {\n      sendStreamRequest({\n        stream: 'start_complete',\n        success: true\n      });\n    }, function (reason) {\n      sendStreamRequest({\n        stream: 'start_complete',\n        success: false,\n        reason: reason\n      });\n    });\n  },\n  _processStreamMessage: function _processStreamMessage(data) {\n    var _this4 = this;\n\n    var sourceName = this.sourceName;\n    var targetName = data.sourceName;\n    var streamId = data.streamId;\n    var sendStreamResponse = function sendStreamResponse(_ref3) {\n      var stream = _ref3.stream,\n          success = _ref3.success,\n          reason = _ref3.reason;\n\n      _this4.comObj.postMessage({\n        sourceName: sourceName,\n        targetName: targetName,\n        stream: stream,\n        success: success,\n        streamId: streamId,\n        reason: reason\n      });\n    };\n    var deleteStreamController = function deleteStreamController() {\n      Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) {\n        return capability && finalize(capability.promise);\n      })).then(function () {\n        delete _this4.streamControllers[data.streamId];\n      });\n    };\n    switch (data.stream) {\n      case 'start_complete':\n        resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason));\n        break;\n      case 'pull_complete':\n        resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason));\n        break;\n      case 'pull':\n        if (!this.streamSinks[data.streamId]) {\n          sendStreamResponse({\n            stream: 'pull_complete',\n            success: true\n          });\n          break;\n        }\n        if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) {\n          this.streamSinks[data.streamId].sinkCapability.resolve();\n        }\n        this.streamSinks[data.streamId].desiredSize = data.desiredSize;\n        resolveCall(this.streamSinks[data.streamId].onPull).then(function () {\n          sendStreamResponse({\n            stream: 'pull_complete',\n            success: true\n          });\n        }, function (reason) {\n          sendStreamResponse({\n            stream: 'pull_complete',\n            success: false,\n            reason: reason\n          });\n        });\n        break;\n      case 'enqueue':\n        (0, _util.assert)(this.streamControllers[data.streamId], 'enqueue should have stream controller');\n        if (!this.streamControllers[data.streamId].isClosed) {\n          this.streamControllers[data.streamId].controller.enqueue(data.chunk);\n        }\n        break;\n      case 'close':\n        (0, _util.assert)(this.streamControllers[data.streamId], 'close should have stream controller');\n        if (this.streamControllers[data.streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[data.streamId].isClosed = true;\n        this.streamControllers[data.streamId].controller.close();\n        deleteStreamController();\n        break;\n      case 'error':\n        (0, _util.assert)(this.streamControllers[data.streamId], 'error should have stream controller');\n        this.streamControllers[data.streamId].controller.error(wrapReason(data.reason));\n        deleteStreamController();\n        break;\n      case 'cancel_complete':\n        resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason));\n        deleteStreamController();\n        break;\n      case 'cancel':\n        if (!this.streamSinks[data.streamId]) {\n          break;\n        }\n        resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () {\n          sendStreamResponse({\n            stream: 'cancel_complete',\n            success: true\n          });\n        }, function (reason) {\n          sendStreamResponse({\n            stream: 'cancel_complete',\n            success: false,\n            reason: reason\n          });\n        });\n        this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason));\n        this.streamSinks[data.streamId].isCancelled = true;\n        delete this.streamSinks[data.streamId];\n        break;\n      default:\n        throw new Error('Unexpected stream case');\n    }\n  },\n  postMessage: function postMessage(message, transfers) {\n    if (transfers && this.postMessageTransfers) {\n      this.comObj.postMessage(message, transfers);\n    } else {\n      this.comObj.postMessage(message);\n    }\n  },\n  destroy: function destroy() {\n    this.comObj.removeEventListener('message', this._onComObjOnMessage);\n  }\n};\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __w_pdfjs_require__(138);\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar g = function () {\n  return this;\n}() || Function(\"return this\")();\nvar hadRuntime = g.regeneratorRuntime && Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\ng.regeneratorRuntime = undefined;\nmodule.exports = __w_pdfjs_require__(139);\nif (hadRuntime) {\n  g.regeneratorRuntime = oldRuntime;\n} else {\n  try {\n    delete g.regeneratorRuntime;\n  } catch (e) {\n    g.regeneratorRuntime = undefined;\n  }\n}\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n!function (global) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined;\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n  var inModule = ( false ? undefined : _typeof(module)) === \"object\";\n  var runtime = global.regeneratorRuntime;\n  if (runtime) {\n    if (inModule) {\n      module.exports = runtime;\n    }\n    return;\n  }\n  runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n    return generator;\n  }\n  runtime.wrap = wrap;\n  function tryCatch(fn, obj, arg) {\n    try {\n      return {\n        type: \"normal\",\n        arg: fn.call(obj, arg)\n      };\n    } catch (err) {\n      return {\n        type: \"throw\",\n        arg: err\n      };\n    }\n  }\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n  var ContinueSentinel = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\";\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function (method) {\n      prototype[method] = function (arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n  runtime.isGeneratorFunction = function (genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n  };\n  runtime.mark = function (genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n  runtime.awrap = function (arg) {\n    return { __await: arg };\n  };\n  function AsyncIterator(generator) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) === \"object\" && hasOwn.call(value, \"__await\")) {\n          return Promise.resolve(value.__await).then(function (value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function (err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n        return Promise.resolve(value).then(function (unwrapped) {\n          result.value = unwrapped;\n          resolve(result);\n        }, reject);\n      }\n    }\n    var previousPromise;\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new Promise(function (resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n      return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n    }\n    this._invoke = enqueue;\n  }\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  runtime.AsyncIterator = AsyncIterator;\n  runtime.async = function (innerFn, outerFn, self, tryLocsList) {\n    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));\n    return runtime.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n      return result.done ? result.value : iter.next();\n    });\n  };\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n        return doneResult();\n      }\n      context.method = method;\n      context.arg = arg;\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n        if (context.method === \"next\") {\n          context.sent = context._sent = context.arg;\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n          context.dispatchException(context.arg);\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n        state = GenStateExecuting;\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n          return {\n            value: record.arg,\n            done: context.done\n          };\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      context.delegate = null;\n      if (context.method === \"throw\") {\n        if (delegate.iterator.return) {\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n          if (context.method === \"throw\") {\n            return ContinueSentinel;\n          }\n        }\n        context.method = \"throw\";\n        context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n      }\n      return ContinueSentinel;\n    }\n    var record = tryCatch(method, delegate.iterator, context.arg);\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n    var info = record.arg;\n    if (!info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n    if (info.done) {\n      context[delegate.resultName] = info.value;\n      context.next = delegate.nextLoc;\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n    } else {\n      return info;\n    }\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n  defineIteratorMethods(Gp);\n  Gp[toStringTagSymbol] = \"Generator\";\n  Gp[iteratorSymbol] = function () {\n    return this;\n  };\n  Gp.toString = function () {\n    return \"[object Generator]\";\n  };\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n    this.tryEntries.push(entry);\n  }\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n  function Context(tryLocsList) {\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n  runtime.keys = function (object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n      next.done = true;\n      return next;\n    };\n  };\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n      if (!isNaN(iterable.length)) {\n        var i = -1,\n            next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n          next.value = undefined;\n          next.done = true;\n          return next;\n        };\n        return next.next = next;\n      }\n    }\n    return { next: doneResult };\n  }\n  runtime.values = values;\n  function doneResult() {\n    return {\n      value: undefined,\n      done: true\n    };\n  }\n  Context.prototype = {\n    constructor: Context,\n    reset: function reset(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n      this.method = \"next\";\n      this.arg = undefined;\n      this.tryEntries.forEach(resetTryEntry);\n      if (!skipTempReset) {\n        for (var name in this) {\n          if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n    stop: function stop() {\n      this.done = true;\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n      return this.rval;\n    },\n    dispatchException: function dispatchException(exception) {\n      if (this.done) {\n        throw exception;\n      }\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n        if (caught) {\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n        return !!caught;\n      }\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n        if (entry.tryLoc === \"root\") {\n          return handle(\"end\");\n        }\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n      if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n        finallyEntry = null;\n      }\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n      return this.complete(record);\n    },\n    complete: function complete(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n      if (record.type === \"break\" || record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n      return ContinueSentinel;\n    },\n    finish: function finish(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n    \"catch\": function _catch(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n      throw new Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n      if (this.method === \"next\") {\n        this.arg = undefined;\n      }\n      return ContinueSentinel;\n    }\n  };\n}(function () {\n  return this;\n}() || Function(\"return this\")());\n/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(140)(module)))\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (module) {\n  if (!module.webpackPolyfill) {\n    module.deprecate = function () {};\n    module.paths = [];\n    if (!module.children) module.children = [];\n    Object.defineProperty(module, \"loaded\", {\n      enumerable: true,\n      get: function get() {\n        return module.l;\n      }\n    });\n    Object.defineProperty(module, \"id\", {\n      enumerable: true,\n      get: function get() {\n        return module.i;\n      }\n    });\n    module.webpackPolyfill = 1;\n  }\n  return module;\n};\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Metadata = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _xml_parser = __w_pdfjs_require__(142);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Metadata = function () {\n  function Metadata(data) {\n    _classCallCheck(this, Metadata);\n\n    (0, _util.assert)(typeof data === 'string', 'Metadata: input is not a string');\n    data = this._repair(data);\n    var parser = new _xml_parser.SimpleXMLParser();\n    var xmlDocument = parser.parseFromString(data);\n    this._metadata = Object.create(null);\n    if (xmlDocument) {\n      this._parse(xmlDocument);\n    }\n  }\n\n  _createClass(Metadata, [{\n    key: '_repair',\n    value: function _repair(data) {\n      return data.replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n        var bytes = codes.replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n          return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n        }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n          switch (name) {\n            case 'amp':\n              return '&';\n            case 'apos':\n              return '\\'';\n            case 'gt':\n              return '>';\n            case 'lt':\n              return '<';\n            case 'quot':\n              return '\\\"';\n          }\n          throw new Error('_repair: ' + name + ' isn\\'t defined.');\n        });\n        var chars = '';\n        for (var i = 0, ii = bytes.length; i < ii; i += 2) {\n          var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n          if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {\n            chars += String.fromCharCode(code);\n          } else {\n            chars += '&#x' + (0x10000 + code).toString(16).substring(1) + ';';\n          }\n        }\n        return '>' + chars;\n      });\n    }\n  }, {\n    key: '_parse',\n    value: function _parse(xmlDocument) {\n      var rdf = xmlDocument.documentElement;\n      if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') {\n        rdf = rdf.firstChild;\n        while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {\n          rdf = rdf.nextSibling;\n        }\n      }\n      var nodeName = rdf ? rdf.nodeName.toLowerCase() : null;\n      if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {\n        return;\n      }\n      var children = rdf.childNodes;\n      for (var i = 0, ii = children.length; i < ii; i++) {\n        var desc = children[i];\n        if (desc.nodeName.toLowerCase() !== 'rdf:description') {\n          continue;\n        }\n        for (var j = 0, jj = desc.childNodes.length; j < jj; j++) {\n          if (desc.childNodes[j].nodeName.toLowerCase() !== '#text') {\n            var entry = desc.childNodes[j];\n            var name = entry.nodeName.toLowerCase();\n            this._metadata[name] = entry.textContent.trim();\n          }\n        }\n      }\n    }\n  }, {\n    key: 'get',\n    value: function get(name) {\n      return this._metadata[name] || null;\n    }\n  }, {\n    key: 'getAll',\n    value: function getAll() {\n      return this._metadata;\n    }\n  }, {\n    key: 'has',\n    value: function has(name) {\n      return typeof this._metadata[name] !== 'undefined';\n    }\n  }]);\n\n  return Metadata;\n}();\n\nexports.Metadata = Metadata;\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar XMLParserErrorCode = {\n  NoError: 0,\n  EndOfDocument: -1,\n  UnterminatedCdat: -2,\n  UnterminatedXmlDeclaration: -3,\n  UnterminatedDoctypeDeclaration: -4,\n  UnterminatedComment: -5,\n  MalformedElement: -6,\n  OutOfMemory: -7,\n  UnterminatedAttributeValue: -8,\n  UnterminatedElement: -9,\n  ElementNeverBegun: -10\n};\nfunction isWhitespace(s, index) {\n  var ch = s[index];\n  return ch === ' ' || ch === '\\n' || ch === '\\r' || ch === '\\t';\n}\nfunction isWhitespaceString(s) {\n  for (var i = 0, ii = s.length; i < ii; i++) {\n    if (!isWhitespace(s, i)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nvar XMLParserBase = function () {\n  function XMLParserBase() {\n    _classCallCheck(this, XMLParserBase);\n  }\n\n  _createClass(XMLParserBase, [{\n    key: '_resolveEntities',\n    value: function _resolveEntities(s) {\n      return s.replace(/&([^;]+);/g, function (all, entity) {\n        if (entity.substring(0, 2) === '#x') {\n          return String.fromCharCode(parseInt(entity.substring(2), 16));\n        } else if (entity.substring(0, 1) === '#') {\n          return String.fromCharCode(parseInt(entity.substring(1), 10));\n        }\n        switch (entity) {\n          case 'lt':\n            return '<';\n          case 'gt':\n            return '>';\n          case 'amp':\n            return '&';\n          case 'quot':\n            return '\\\"';\n        }\n        return this.onResolveEntity(entity);\n      });\n    }\n  }, {\n    key: '_parseContent',\n    value: function _parseContent(s, start) {\n      var pos = start,\n          name = void 0,\n          attributes = [];\n      function skipWs() {\n        while (pos < s.length && isWhitespace(s, pos)) {\n          ++pos;\n        }\n      }\n      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') {\n        ++pos;\n      }\n      name = s.substring(start, pos);\n      skipWs();\n      while (pos < s.length && s[pos] !== '>' && s[pos] !== '/' && s[pos] !== '?') {\n        skipWs();\n        var attrName = '',\n            attrValue = '';\n        while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '=') {\n          attrName += s[pos];\n          ++pos;\n        }\n        skipWs();\n        if (s[pos] !== '=') {\n          return null;\n        }\n        ++pos;\n        skipWs();\n        var attrEndChar = s[pos];\n        if (attrEndChar !== '\\\"' && attrEndChar !== '\\'') {\n          return null;\n        }\n        var attrEndIndex = s.indexOf(attrEndChar, ++pos);\n        if (attrEndIndex < 0) {\n          return null;\n        }\n        attrValue = s.substring(pos, attrEndIndex);\n        attributes.push({\n          name: attrName,\n          value: this._resolveEntities(attrValue)\n        });\n        pos = attrEndIndex + 1;\n        skipWs();\n      }\n      return {\n        name: name,\n        attributes: attributes,\n        parsed: pos - start\n      };\n    }\n  }, {\n    key: '_parseProcessingInstruction',\n    value: function _parseProcessingInstruction(s, start) {\n      var pos = start,\n          name = void 0,\n          value = void 0;\n      function skipWs() {\n        while (pos < s.length && isWhitespace(s, pos)) {\n          ++pos;\n        }\n      }\n      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') {\n        ++pos;\n      }\n      name = s.substring(start, pos);\n      skipWs();\n      var attrStart = pos;\n      while (pos < s.length && (s[pos] !== '?' || s[pos + 1] !== '>')) {\n        ++pos;\n      }\n      value = s.substring(attrStart, pos);\n      return {\n        name: name,\n        value: value,\n        parsed: pos - start\n      };\n    }\n  }, {\n    key: 'parseXml',\n    value: function parseXml(s) {\n      var i = 0;\n      while (i < s.length) {\n        var ch = s[i];\n        var j = i;\n        if (ch === '<') {\n          ++j;\n          var ch2 = s[j];\n          var q = void 0;\n          switch (ch2) {\n            case '/':\n              ++j;\n              q = s.indexOf('>', j);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedElement);\n                return;\n              }\n              this.onEndElement(s.substring(j, q));\n              j = q + 1;\n              break;\n            case '?':\n              ++j;\n              var pi = this._parseProcessingInstruction(s, j);\n              if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== '?>') {\n                this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n                return;\n              }\n              this.onPi(pi.name, pi.value);\n              j += pi.parsed + 2;\n              break;\n            case '!':\n              if (s.substring(j + 1, j + 3) === '--') {\n                q = s.indexOf('-->', j + 3);\n                if (q < 0) {\n                  this.onError(XMLParserErrorCode.UnterminatedComment);\n                  return;\n                }\n                this.onComment(s.substring(j + 3, q));\n                j = q + 3;\n              } else if (s.substring(j + 1, j + 8) === '[CDATA[') {\n                q = s.indexOf(']]>', j + 8);\n                if (q < 0) {\n                  this.onError(XMLParserErrorCode.UnterminatedCdat);\n                  return;\n                }\n                this.onCdata(s.substring(j + 8, q));\n                j = q + 3;\n              } else if (s.substring(j + 1, j + 8) === 'DOCTYPE') {\n                var q2 = s.indexOf('[', j + 8);\n                var complexDoctype = false;\n                q = s.indexOf('>', j + 8);\n                if (q < 0) {\n                  this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n                  return;\n                }\n                if (q2 > 0 && q > q2) {\n                  q = s.indexOf(']>', j + 8);\n                  if (q < 0) {\n                    this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n                    return;\n                  }\n                  complexDoctype = true;\n                }\n                var doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n                this.onDoctype(doctypeContent);\n                j = q + (complexDoctype ? 2 : 1);\n              } else {\n                this.onError(XMLParserErrorCode.MalformedElement);\n                return;\n              }\n              break;\n            default:\n              var content = this._parseContent(s, j);\n              if (content === null) {\n                this.onError(XMLParserErrorCode.MalformedElement);\n                return;\n              }\n              var isClosed = false;\n              if (s.substring(j + content.parsed, j + content.parsed + 2) === '/>') {\n                isClosed = true;\n              } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== '>') {\n                this.onError(XMLParserErrorCode.UnterminatedElement);\n                return;\n              }\n              this.onBeginElement(content.name, content.attributes, isClosed);\n              j += content.parsed + (isClosed ? 2 : 1);\n              break;\n          }\n        } else {\n          while (j < s.length && s[j] !== '<') {\n            j++;\n          }\n          var text = s.substring(i, j);\n          this.onText(this._resolveEntities(text));\n        }\n        i = j;\n      }\n    }\n  }, {\n    key: 'onResolveEntity',\n    value: function onResolveEntity(name) {\n      return '&' + name + ';';\n    }\n  }, {\n    key: 'onPi',\n    value: function onPi(name, value) {}\n  }, {\n    key: 'onComment',\n    value: function onComment(text) {}\n  }, {\n    key: 'onCdata',\n    value: function onCdata(text) {}\n  }, {\n    key: 'onDoctype',\n    value: function onDoctype(doctypeContent) {}\n  }, {\n    key: 'onText',\n    value: function onText(text) {}\n  }, {\n    key: 'onBeginElement',\n    value: function onBeginElement(name, attributes, isEmpty) {}\n  }, {\n    key: 'onEndElement',\n    value: function onEndElement(name) {}\n  }, {\n    key: 'onError',\n    value: function onError(code) {}\n  }]);\n\n  return XMLParserBase;\n}();\n\nvar SimpleDOMNode = function () {\n  function SimpleDOMNode(nodeName, nodeValue) {\n    _classCallCheck(this, SimpleDOMNode);\n\n    this.nodeName = nodeName;\n    this.nodeValue = nodeValue;\n    Object.defineProperty(this, 'parentNode', {\n      value: null,\n      writable: true\n    });\n  }\n\n  _createClass(SimpleDOMNode, [{\n    key: 'hasChildNodes',\n    value: function hasChildNodes() {\n      return this.childNodes && this.childNodes.length > 0;\n    }\n  }, {\n    key: 'firstChild',\n    get: function get() {\n      return this.childNodes[0];\n    }\n  }, {\n    key: 'nextSibling',\n    get: function get() {\n      var index = this.parentNode.childNodes.indexOf(this);\n      return this.parentNode.childNodes[index + 1];\n    }\n  }, {\n    key: 'textContent',\n    get: function get() {\n      if (!this.childNodes) {\n        return this.nodeValue || '';\n      }\n      return this.childNodes.map(function (child) {\n        return child.textContent;\n      }).join('');\n    }\n  }]);\n\n  return SimpleDOMNode;\n}();\n\nvar SimpleXMLParser = function (_XMLParserBase) {\n  _inherits(SimpleXMLParser, _XMLParserBase);\n\n  function SimpleXMLParser() {\n    _classCallCheck(this, SimpleXMLParser);\n\n    var _this = _possibleConstructorReturn(this, (SimpleXMLParser.__proto__ || Object.getPrototypeOf(SimpleXMLParser)).call(this));\n\n    _this._currentFragment = null;\n    _this._stack = null;\n    _this._errorCode = XMLParserErrorCode.NoError;\n    return _this;\n  }\n\n  _createClass(SimpleXMLParser, [{\n    key: 'parseFromString',\n    value: function parseFromString(data) {\n      this._currentFragment = [];\n      this._stack = [];\n      this._errorCode = XMLParserErrorCode.NoError;\n      this.parseXml(data);\n      if (this._errorCode !== XMLParserErrorCode.NoError) {\n        return undefined;\n      }\n\n      var _currentFragment = _slicedToArray(this._currentFragment, 1),\n          documentElement = _currentFragment[0];\n\n      if (!documentElement) {\n        return undefined;\n      }\n      return { documentElement: documentElement };\n    }\n  }, {\n    key: 'onResolveEntity',\n    value: function onResolveEntity(name) {\n      switch (name) {\n        case 'apos':\n          return '\\'';\n      }\n      return _get(SimpleXMLParser.prototype.__proto__ || Object.getPrototypeOf(SimpleXMLParser.prototype), 'onResolveEntity', this).call(this, name);\n    }\n  }, {\n    key: 'onText',\n    value: function onText(text) {\n      if (isWhitespaceString(text)) {\n        return;\n      }\n      var node = new SimpleDOMNode('#text', text);\n      this._currentFragment.push(node);\n    }\n  }, {\n    key: 'onCdata',\n    value: function onCdata(text) {\n      var node = new SimpleDOMNode('#text', text);\n      this._currentFragment.push(node);\n    }\n  }, {\n    key: 'onBeginElement',\n    value: function onBeginElement(name, attributes, isEmpty) {\n      var node = new SimpleDOMNode(name);\n      node.childNodes = [];\n      this._currentFragment.push(node);\n      if (isEmpty) {\n        return;\n      }\n      this._stack.push(this._currentFragment);\n      this._currentFragment = node.childNodes;\n    }\n  }, {\n    key: 'onEndElement',\n    value: function onEndElement(name) {\n      this._currentFragment = this._stack.pop();\n      var lastElement = this._currentFragment[this._currentFragment.length - 1];\n      for (var i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n        lastElement.childNodes[i].parentNode = lastElement;\n      }\n    }\n  }, {\n    key: 'onError',\n    value: function onError(code) {\n      this._errorCode = code;\n    }\n  }]);\n\n  return SimpleXMLParser;\n}(XMLParserBase);\n\nexports.SimpleXMLParser = SimpleXMLParser;\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFDataTransportStream = undefined;\n\nvar _regenerator = __w_pdfjs_require__(137);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nvar PDFDataTransportStream = function PDFDataTransportStreamClosure() {\n  function PDFDataTransportStream(params, pdfDataRangeTransport) {\n    var _this = this;\n\n    (0, _util.assert)(pdfDataRangeTransport);\n    this._queuedChunks = [];\n    var initialData = params.initialData;\n    if (initialData && initialData.length > 0) {\n      var buffer = new Uint8Array(initialData).buffer;\n      this._queuedChunks.push(buffer);\n    }\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !params.disableStream;\n    this._isRangeSupported = !params.disableRange;\n    this._contentLength = params.length;\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n    this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) {\n      _this._onReceiveData({\n        begin: begin,\n        chunk: chunk\n      });\n    });\n    this._pdfDataRangeTransport.addProgressListener(function (loaded) {\n      _this._onProgress({ loaded: loaded });\n    });\n    this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) {\n      _this._onReceiveData({ chunk: chunk });\n    });\n    this._pdfDataRangeTransport.transportReady();\n  }\n  PDFDataTransportStream.prototype = {\n    _onReceiveData: function PDFDataTransportStream_onReceiveData(args) {\n      var buffer = new Uint8Array(args.chunk).buffer;\n      if (args.begin === undefined) {\n        if (this._fullRequestReader) {\n          this._fullRequestReader._enqueue(buffer);\n        } else {\n          this._queuedChunks.push(buffer);\n        }\n      } else {\n        var found = this._rangeReaders.some(function (rangeReader) {\n          if (rangeReader._begin !== args.begin) {\n            return false;\n          }\n          rangeReader._enqueue(buffer);\n          return true;\n        });\n        (0, _util.assert)(found);\n      }\n    },\n    _onProgress: function PDFDataTransportStream_onDataProgress(evt) {\n      if (this._rangeReaders.length > 0) {\n        var firstReader = this._rangeReaders[0];\n        if (firstReader.onProgress) {\n          firstReader.onProgress({ loaded: evt.loaded });\n        }\n      }\n    },\n    _removeRangeReader: function PDFDataTransportStream_removeRangeReader(reader) {\n      var i = this._rangeReaders.indexOf(reader);\n      if (i >= 0) {\n        this._rangeReaders.splice(i, 1);\n      }\n    },\n    getFullReader: function PDFDataTransportStream_getFullReader() {\n      (0, _util.assert)(!this._fullRequestReader);\n      var queuedChunks = this._queuedChunks;\n      this._queuedChunks = null;\n      return new PDFDataTransportStreamReader(this, queuedChunks);\n    },\n    getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) {\n      var reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n      this._pdfDataRangeTransport.requestDataRange(begin, end);\n      this._rangeReaders.push(reader);\n      return reader;\n    },\n    cancelAllRequests: function PDFDataTransportStream_cancelAllRequests(reason) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader.cancel(reason);\n      }\n      var readers = this._rangeReaders.slice(0);\n      readers.forEach(function (rangeReader) {\n        rangeReader.cancel(reason);\n      });\n      this._pdfDataRangeTransport.abort();\n    }\n  };\n  function PDFDataTransportStreamReader(stream, queuedChunks) {\n    this._stream = stream;\n    this._done = false;\n    this._filename = null;\n    this._queuedChunks = queuedChunks || [];\n    this._requests = [];\n    this._headersReady = Promise.resolve();\n    stream._fullRequestReader = this;\n    this.onProgress = null;\n  }\n  PDFDataTransportStreamReader.prototype = {\n    _enqueue: function PDFDataTransportStreamReader_enqueue(chunk) {\n      if (this._done) {\n        return;\n      }\n      if (this._requests.length > 0) {\n        var requestCapability = this._requests.shift();\n        requestCapability.resolve({\n          value: chunk,\n          done: false\n        });\n        return;\n      }\n      this._queuedChunks.push(chunk);\n    },\n    get headersReady() {\n      return this._headersReady;\n    },\n    get filename() {\n      return this._filename;\n    },\n    get isRangeSupported() {\n      return this._stream._isRangeSupported;\n    },\n    get isStreamingSupported() {\n      return this._stream._isStreamingSupported;\n    },\n    get contentLength() {\n      return this._stream._contentLength;\n    },\n    read: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n        var chunk, requestCapability;\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!(this._queuedChunks.length > 0)) {\n                  _context.next = 3;\n                  break;\n                }\n\n                chunk = this._queuedChunks.shift();\n                return _context.abrupt('return', {\n                  value: chunk,\n                  done: false\n                });\n\n              case 3:\n                if (!this._done) {\n                  _context.next = 5;\n                  break;\n                }\n\n                return _context.abrupt('return', {\n                  value: undefined,\n                  done: true\n                });\n\n              case 5:\n                requestCapability = (0, _util.createPromiseCapability)();\n\n                this._requests.push(requestCapability);\n                return _context.abrupt('return', requestCapability.promise);\n\n              case 8:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function read() {\n        return _ref.apply(this, arguments);\n      }\n\n      return read;\n    }(),\n\n    cancel: function PDFDataTransportStreamReader_cancel(reason) {\n      this._done = true;\n      this._requests.forEach(function (requestCapability) {\n        requestCapability.resolve({\n          value: undefined,\n          done: true\n        });\n      });\n      this._requests = [];\n    }\n  };\n  function PDFDataTransportStreamRangeReader(stream, begin, end) {\n    this._stream = stream;\n    this._begin = begin;\n    this._end = end;\n    this._queuedChunk = null;\n    this._requests = [];\n    this._done = false;\n    this.onProgress = null;\n  }\n  PDFDataTransportStreamRangeReader.prototype = {\n    _enqueue: function PDFDataTransportStreamRangeReader_enqueue(chunk) {\n      if (this._done) {\n        return;\n      }\n      if (this._requests.length === 0) {\n        this._queuedChunk = chunk;\n      } else {\n        var requestsCapability = this._requests.shift();\n        requestsCapability.resolve({\n          value: chunk,\n          done: false\n        });\n        this._requests.forEach(function (requestCapability) {\n          requestCapability.resolve({\n            value: undefined,\n            done: true\n          });\n        });\n        this._requests = [];\n      }\n      this._done = true;\n      this._stream._removeRangeReader(this);\n    },\n    get isStreamingSupported() {\n      return false;\n    },\n    read: function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n        var chunk, requestCapability;\n        return _regenerator2.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!this._queuedChunk) {\n                  _context2.next = 4;\n                  break;\n                }\n\n                chunk = this._queuedChunk;\n\n                this._queuedChunk = null;\n                return _context2.abrupt('return', {\n                  value: chunk,\n                  done: false\n                });\n\n              case 4:\n                if (!this._done) {\n                  _context2.next = 6;\n                  break;\n                }\n\n                return _context2.abrupt('return', {\n                  value: undefined,\n                  done: true\n                });\n\n              case 6:\n                requestCapability = (0, _util.createPromiseCapability)();\n\n                this._requests.push(requestCapability);\n                return _context2.abrupt('return', requestCapability.promise);\n\n              case 9:\n              case 'end':\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function read() {\n        return _ref2.apply(this, arguments);\n      }\n\n      return read;\n    }(),\n\n    cancel: function PDFDataTransportStreamRangeReader_cancel(reason) {\n      this._done = true;\n      this._requests.forEach(function (requestCapability) {\n        requestCapability.resolve({\n          value: undefined,\n          done: true\n        });\n      });\n      this._requests = [];\n      this._stream._removeRangeReader(this);\n    }\n  };\n  return PDFDataTransportStream;\n}();\nexports.PDFDataTransportStream = PDFDataTransportStream;\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.WebGLContext = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar WebGLContext = function () {\n  function WebGLContext(_ref) {\n    var _ref$enable = _ref.enable,\n        enable = _ref$enable === undefined ? false : _ref$enable;\n\n    _classCallCheck(this, WebGLContext);\n\n    this._enabled = enable === true;\n  }\n\n  _createClass(WebGLContext, [{\n    key: 'composeSMask',\n    value: function composeSMask(_ref2) {\n      var layer = _ref2.layer,\n          mask = _ref2.mask,\n          properties = _ref2.properties;\n\n      return WebGLUtils.composeSMask(layer, mask, properties);\n    }\n  }, {\n    key: 'drawFigures',\n    value: function drawFigures(_ref3) {\n      var width = _ref3.width,\n          height = _ref3.height,\n          backgroundColor = _ref3.backgroundColor,\n          figures = _ref3.figures,\n          context = _ref3.context;\n\n      return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      WebGLUtils.cleanup();\n    }\n  }, {\n    key: 'isEnabled',\n    get: function get() {\n      var enabled = this._enabled;\n      if (enabled) {\n        enabled = WebGLUtils.tryInitGL();\n      }\n      return (0, _util.shadow)(this, 'isEnabled', enabled);\n    }\n  }]);\n\n  return WebGLContext;\n}();\n\nvar WebGLUtils = function WebGLUtilsClosure() {\n  function loadShader(gl, code, shaderType) {\n    var shader = gl.createShader(shaderType);\n    gl.shaderSource(shader, code);\n    gl.compileShader(shader);\n    var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n    if (!compiled) {\n      var errorMsg = gl.getShaderInfoLog(shader);\n      throw new Error('Error during shader compilation: ' + errorMsg);\n    }\n    return shader;\n  }\n  function createVertexShader(gl, code) {\n    return loadShader(gl, code, gl.VERTEX_SHADER);\n  }\n  function createFragmentShader(gl, code) {\n    return loadShader(gl, code, gl.FRAGMENT_SHADER);\n  }\n  function createProgram(gl, shaders) {\n    var program = gl.createProgram();\n    for (var i = 0, ii = shaders.length; i < ii; ++i) {\n      gl.attachShader(program, shaders[i]);\n    }\n    gl.linkProgram(program);\n    var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n    if (!linked) {\n      var errorMsg = gl.getProgramInfoLog(program);\n      throw new Error('Error during program linking: ' + errorMsg);\n    }\n    return program;\n  }\n  function createTexture(gl, image, textureId) {\n    gl.activeTexture(textureId);\n    var texture = gl.createTexture();\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n    return texture;\n  }\n  var currentGL, currentCanvas;\n  function generateGL() {\n    if (currentGL) {\n      return;\n    }\n    currentCanvas = document.createElement('canvas');\n    currentGL = currentCanvas.getContext('webgl', { premultipliedalpha: false });\n  }\n  var smaskVertexShaderCode = '\\\n  attribute vec2 a_position;                                    \\\n  attribute vec2 a_texCoord;                                    \\\n                                                                \\\n  uniform vec2 u_resolution;                                    \\\n                                                                \\\n  varying vec2 v_texCoord;                                      \\\n                                                                \\\n  void main() {                                                 \\\n    vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0;   \\\n    gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);          \\\n                                                                \\\n    v_texCoord = a_texCoord;                                    \\\n  }                                                             ';\n  var smaskFragmentShaderCode = '\\\n  precision mediump float;                                      \\\n                                                                \\\n  uniform vec4 u_backdrop;                                      \\\n  uniform int u_subtype;                                        \\\n  uniform sampler2D u_image;                                    \\\n  uniform sampler2D u_mask;                                     \\\n                                                                \\\n  varying vec2 v_texCoord;                                      \\\n                                                                \\\n  void main() {                                                 \\\n    vec4 imageColor = texture2D(u_image, v_texCoord);           \\\n    vec4 maskColor = texture2D(u_mask, v_texCoord);             \\\n    if (u_backdrop.a > 0.0) {                                   \\\n      maskColor.rgb = maskColor.rgb * maskColor.a +             \\\n                      u_backdrop.rgb * (1.0 - maskColor.a);     \\\n    }                                                           \\\n    float lum;                                                  \\\n    if (u_subtype == 0) {                                       \\\n      lum = maskColor.a;                                        \\\n    } else {                                                    \\\n      lum = maskColor.r * 0.3 + maskColor.g * 0.59 +            \\\n            maskColor.b * 0.11;                                 \\\n    }                                                           \\\n    imageColor.a *= lum;                                        \\\n    imageColor.rgb *= imageColor.a;                             \\\n    gl_FragColor = imageColor;                                  \\\n  }                                                             ';\n  var smaskCache = null;\n  function initSmaskGL() {\n    var canvas, gl;\n    generateGL();\n    canvas = currentCanvas;\n    currentCanvas = null;\n    gl = currentGL;\n    currentGL = null;\n    var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n    var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n    var program = createProgram(gl, [vertexShader, fragmentShader]);\n    gl.useProgram(program);\n    var cache = {};\n    cache.gl = gl;\n    cache.canvas = canvas;\n    cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n    cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n    cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');\n    cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');\n    var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');\n    var texLayerLocation = gl.getUniformLocation(program, 'u_image');\n    var texMaskLocation = gl.getUniformLocation(program, 'u_mask');\n    var texCoordBuffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);\n    gl.enableVertexAttribArray(texCoordLocation);\n    gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n    gl.uniform1i(texLayerLocation, 0);\n    gl.uniform1i(texMaskLocation, 1);\n    smaskCache = cache;\n  }\n  function composeSMask(layer, mask, properties) {\n    var width = layer.width,\n        height = layer.height;\n    if (!smaskCache) {\n      initSmaskGL();\n    }\n    var cache = smaskCache,\n        canvas = cache.canvas,\n        gl = cache.gl;\n    canvas.width = width;\n    canvas.height = height;\n    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n    gl.uniform2f(cache.resolutionLocation, width, height);\n    if (properties.backdrop) {\n      gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);\n    } else {\n      gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n    }\n    gl.uniform1i(cache.subtypeLocation, properties.subtype === 'Luminosity' ? 1 : 0);\n    var texture = createTexture(gl, layer, gl.TEXTURE0);\n    var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n    var buffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW);\n    gl.enableVertexAttribArray(cache.positionLocation);\n    gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n    gl.clearColor(0, 0, 0, 0);\n    gl.enable(gl.BLEND);\n    gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n    gl.clear(gl.COLOR_BUFFER_BIT);\n    gl.drawArrays(gl.TRIANGLES, 0, 6);\n    gl.flush();\n    gl.deleteTexture(texture);\n    gl.deleteTexture(maskTexture);\n    gl.deleteBuffer(buffer);\n    return canvas;\n  }\n  var figuresVertexShaderCode = '\\\n  attribute vec2 a_position;                                    \\\n  attribute vec3 a_color;                                       \\\n                                                                \\\n  uniform vec2 u_resolution;                                    \\\n  uniform vec2 u_scale;                                         \\\n  uniform vec2 u_offset;                                        \\\n                                                                \\\n  varying vec4 v_color;                                         \\\n                                                                \\\n  void main() {                                                 \\\n    vec2 position = (a_position + u_offset) * u_scale;          \\\n    vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0;     \\\n    gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);          \\\n                                                                \\\n    v_color = vec4(a_color / 255.0, 1.0);                       \\\n  }                                                             ';\n  var figuresFragmentShaderCode = '\\\n  precision mediump float;                                      \\\n                                                                \\\n  varying vec4 v_color;                                         \\\n                                                                \\\n  void main() {                                                 \\\n    gl_FragColor = v_color;                                     \\\n  }                                                             ';\n  var figuresCache = null;\n  function initFiguresGL() {\n    var canvas, gl;\n    generateGL();\n    canvas = currentCanvas;\n    currentCanvas = null;\n    gl = currentGL;\n    currentGL = null;\n    var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n    var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n    var program = createProgram(gl, [vertexShader, fragmentShader]);\n    gl.useProgram(program);\n    var cache = {};\n    cache.gl = gl;\n    cache.canvas = canvas;\n    cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n    cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');\n    cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');\n    cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n    cache.colorLocation = gl.getAttribLocation(program, 'a_color');\n    figuresCache = cache;\n  }\n  function drawFigures(width, height, backgroundColor, figures, context) {\n    if (!figuresCache) {\n      initFiguresGL();\n    }\n    var cache = figuresCache,\n        canvas = cache.canvas,\n        gl = cache.gl;\n    canvas.width = width;\n    canvas.height = height;\n    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n    gl.uniform2f(cache.resolutionLocation, width, height);\n    var count = 0;\n    var i, ii, rows;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      switch (figures[i].type) {\n        case 'lattice':\n          rows = figures[i].coords.length / figures[i].verticesPerRow | 0;\n          count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n          break;\n        case 'triangles':\n          count += figures[i].coords.length;\n          break;\n      }\n    }\n    var coords = new Float32Array(count * 2);\n    var colors = new Uint8Array(count * 3);\n    var coordsMap = context.coords,\n        colorsMap = context.colors;\n    var pIndex = 0,\n        cIndex = 0;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      var figure = figures[i],\n          ps = figure.coords,\n          cs = figure.colors;\n      switch (figure.type) {\n        case 'lattice':\n          var cols = figure.verticesPerRow;\n          rows = ps.length / cols | 0;\n          for (var row = 1; row < rows; row++) {\n            var offset = row * cols + 1;\n            for (var col = 1; col < cols; col++, offset++) {\n              coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n              coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n              coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n              coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n              coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n              coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n              colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n              colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n              colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n              colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n              colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n              colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n              colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n              colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n              colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n              coords[pIndex + 6] = coords[pIndex + 2];\n              coords[pIndex + 7] = coords[pIndex + 3];\n              coords[pIndex + 8] = coords[pIndex + 4];\n              coords[pIndex + 9] = coords[pIndex + 5];\n              coords[pIndex + 10] = coordsMap[ps[offset]];\n              coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n              colors[cIndex + 9] = colors[cIndex + 3];\n              colors[cIndex + 10] = colors[cIndex + 4];\n              colors[cIndex + 11] = colors[cIndex + 5];\n              colors[cIndex + 12] = colors[cIndex + 6];\n              colors[cIndex + 13] = colors[cIndex + 7];\n              colors[cIndex + 14] = colors[cIndex + 8];\n              colors[cIndex + 15] = colorsMap[cs[offset]];\n              colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n              colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n              pIndex += 12;\n              cIndex += 18;\n            }\n          }\n          break;\n        case 'triangles':\n          for (var j = 0, jj = ps.length; j < jj; j++) {\n            coords[pIndex] = coordsMap[ps[j]];\n            coords[pIndex + 1] = coordsMap[ps[j] + 1];\n            colors[cIndex] = colorsMap[cs[j]];\n            colors[cIndex + 1] = colorsMap[cs[j] + 1];\n            colors[cIndex + 2] = colorsMap[cs[j] + 2];\n            pIndex += 2;\n            cIndex += 3;\n          }\n          break;\n      }\n    }\n    if (backgroundColor) {\n      gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);\n    } else {\n      gl.clearColor(0, 0, 0, 0);\n    }\n    gl.clear(gl.COLOR_BUFFER_BIT);\n    var coordsBuffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n    gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n    gl.enableVertexAttribArray(cache.positionLocation);\n    gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n    var colorsBuffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n    gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n    gl.enableVertexAttribArray(cache.colorLocation);\n    gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0);\n    gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n    gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n    gl.drawArrays(gl.TRIANGLES, 0, count);\n    gl.flush();\n    gl.deleteBuffer(coordsBuffer);\n    gl.deleteBuffer(colorsBuffer);\n    return canvas;\n  }\n  return {\n    tryInitGL: function tryInitGL() {\n      try {\n        generateGL();\n        return !!currentGL;\n      } catch (ex) {}\n      return false;\n    },\n\n    composeSMask: composeSMask,\n    drawFigures: drawFigures,\n    cleanup: function cleanup() {\n      if (smaskCache && smaskCache.canvas) {\n        smaskCache.canvas.width = 0;\n        smaskCache.canvas.height = 0;\n      }\n      if (figuresCache && figuresCache.canvas) {\n        figuresCache.canvas.width = 0;\n        figuresCache.canvas.height = 0;\n      }\n      smaskCache = null;\n      figuresCache = null;\n    }\n  };\n}();\nexports.WebGLContext = WebGLContext;\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.renderTextLayer = undefined;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _global_scope = __w_pdfjs_require__(3);\n\nvar _global_scope2 = _interopRequireDefault(_global_scope);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar renderTextLayer = function renderTextLayerClosure() {\n  var MAX_TEXT_DIVS_TO_RENDER = 100000;\n  var NonWhitespaceRegexp = /\\S/;\n  function isAllWhitespace(str) {\n    return !NonWhitespaceRegexp.test(str);\n  }\n  var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';'];\n  function appendText(task, geom, styles) {\n    var textDiv = document.createElement('div');\n    var textDivProperties = {\n      style: null,\n      angle: 0,\n      canvasWidth: 0,\n      isWhitespace: false,\n      originalTransform: null,\n      paddingBottom: 0,\n      paddingLeft: 0,\n      paddingRight: 0,\n      paddingTop: 0,\n      scale: 1\n    };\n    task._textDivs.push(textDiv);\n    if (isAllWhitespace(geom.str)) {\n      textDivProperties.isWhitespace = true;\n      task._textDivProperties.set(textDiv, textDivProperties);\n      return;\n    }\n    var tx = _util.Util.transform(task._viewport.transform, geom.transform);\n    var angle = Math.atan2(tx[1], tx[0]);\n    var style = styles[geom.fontName];\n    if (style.vertical) {\n      angle += Math.PI / 2;\n    }\n    var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);\n    var fontAscent = fontHeight;\n    if (style.ascent) {\n      fontAscent = style.ascent * fontAscent;\n    } else if (style.descent) {\n      fontAscent = (1 + style.descent) * fontAscent;\n    }\n    var left;\n    var top;\n    if (angle === 0) {\n      left = tx[4];\n      top = tx[5] - fontAscent;\n    } else {\n      left = tx[4] + fontAscent * Math.sin(angle);\n      top = tx[5] - fontAscent * Math.cos(angle);\n    }\n    styleBuf[1] = left;\n    styleBuf[3] = top;\n    styleBuf[5] = fontHeight;\n    styleBuf[7] = style.fontFamily;\n    textDivProperties.style = styleBuf.join('');\n    textDiv.setAttribute('style', textDivProperties.style);\n    textDiv.textContent = geom.str;\n    if (task._fontInspectorEnabled) {\n      textDiv.dataset.fontName = geom.fontName;\n    }\n    if (angle !== 0) {\n      textDivProperties.angle = angle * (180 / Math.PI);\n    }\n    if (geom.str.length > 1) {\n      if (style.vertical) {\n        textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n      } else {\n        textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n      }\n    }\n    task._textDivProperties.set(textDiv, textDivProperties);\n    if (task._textContentStream) {\n      task._layoutText(textDiv);\n    }\n    if (task._enhanceTextSelection) {\n      var angleCos = 1,\n          angleSin = 0;\n      if (angle !== 0) {\n        angleCos = Math.cos(angle);\n        angleSin = Math.sin(angle);\n      }\n      var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n      var divHeight = fontHeight;\n      var m, b;\n      if (angle !== 0) {\n        m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n        b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n      } else {\n        b = [left, top, left + divWidth, top + divHeight];\n      }\n      task._bounds.push({\n        left: b[0],\n        top: b[1],\n        right: b[2],\n        bottom: b[3],\n        div: textDiv,\n        size: [divWidth, divHeight],\n        m: m\n      });\n    }\n  }\n  function render(task) {\n    if (task._canceled) {\n      return;\n    }\n    var textDivs = task._textDivs;\n    var capability = task._capability;\n    var textDivsLength = textDivs.length;\n    if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n      task._renderingDone = true;\n      capability.resolve();\n      return;\n    }\n    if (!task._textContentStream) {\n      for (var i = 0; i < textDivsLength; i++) {\n        task._layoutText(textDivs[i]);\n      }\n    }\n    task._renderingDone = true;\n    capability.resolve();\n  }\n  function expand(task) {\n    var bounds = task._bounds;\n    var viewport = task._viewport;\n    var expanded = expandBounds(viewport.width, viewport.height, bounds);\n    for (var i = 0; i < expanded.length; i++) {\n      var div = bounds[i].div;\n      var divProperties = task._textDivProperties.get(div);\n      if (divProperties.angle === 0) {\n        divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n        divProperties.paddingTop = bounds[i].top - expanded[i].top;\n        divProperties.paddingRight = expanded[i].right - bounds[i].right;\n        divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n        task._textDivProperties.set(div, divProperties);\n        continue;\n      }\n      var e = expanded[i],\n          b = bounds[i];\n      var m = b.m,\n          c = m[0],\n          s = m[1];\n      var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n      var ts = new Float64Array(64);\n      points.forEach(function (p, i) {\n        var t = _util.Util.applyTransform(p, m);\n        ts[i + 0] = c && (e.left - t[0]) / c;\n        ts[i + 4] = s && (e.top - t[1]) / s;\n        ts[i + 8] = c && (e.right - t[0]) / c;\n        ts[i + 12] = s && (e.bottom - t[1]) / s;\n        ts[i + 16] = s && (e.left - t[0]) / -s;\n        ts[i + 20] = c && (e.top - t[1]) / c;\n        ts[i + 24] = s && (e.right - t[0]) / -s;\n        ts[i + 28] = c && (e.bottom - t[1]) / c;\n        ts[i + 32] = c && (e.left - t[0]) / -c;\n        ts[i + 36] = s && (e.top - t[1]) / -s;\n        ts[i + 40] = c && (e.right - t[0]) / -c;\n        ts[i + 44] = s && (e.bottom - t[1]) / -s;\n        ts[i + 48] = s && (e.left - t[0]) / s;\n        ts[i + 52] = c && (e.top - t[1]) / -c;\n        ts[i + 56] = s && (e.right - t[0]) / s;\n        ts[i + 60] = c && (e.bottom - t[1]) / -c;\n      });\n      var findPositiveMin = function findPositiveMin(ts, offset, count) {\n        var result = 0;\n        for (var i = 0; i < count; i++) {\n          var t = ts[offset++];\n          if (t > 0) {\n            result = result ? Math.min(t, result) : t;\n          }\n        }\n        return result;\n      };\n      var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n      divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n      divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n      divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n      divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n      task._textDivProperties.set(div, divProperties);\n    }\n  }\n  function expandBounds(width, height, boxes) {\n    var bounds = boxes.map(function (box, i) {\n      return {\n        x1: box.left,\n        y1: box.top,\n        x2: box.right,\n        y2: box.bottom,\n        index: i,\n        x1New: undefined,\n        x2New: undefined\n      };\n    });\n    expandBoundsLTR(width, bounds);\n    var expanded = new Array(boxes.length);\n    bounds.forEach(function (b) {\n      var i = b.index;\n      expanded[i] = {\n        left: b.x1New,\n        top: 0,\n        right: b.x2New,\n        bottom: 0\n      };\n    });\n    boxes.map(function (box, i) {\n      var e = expanded[i],\n          b = bounds[i];\n      b.x1 = box.top;\n      b.y1 = width - e.right;\n      b.x2 = box.bottom;\n      b.y2 = width - e.left;\n      b.index = i;\n      b.x1New = undefined;\n      b.x2New = undefined;\n    });\n    expandBoundsLTR(height, bounds);\n    bounds.forEach(function (b) {\n      var i = b.index;\n      expanded[i].top = b.x1New;\n      expanded[i].bottom = b.x2New;\n    });\n    return expanded;\n  }\n  function expandBoundsLTR(width, bounds) {\n    bounds.sort(function (a, b) {\n      return a.x1 - b.x1 || a.index - b.index;\n    });\n    var fakeBoundary = {\n      x1: -Infinity,\n      y1: -Infinity,\n      x2: 0,\n      y2: Infinity,\n      index: -1,\n      x1New: 0,\n      x2New: 0\n    };\n    var horizon = [{\n      start: -Infinity,\n      end: Infinity,\n      boundary: fakeBoundary\n    }];\n    bounds.forEach(function (boundary) {\n      var i = 0;\n      while (i < horizon.length && horizon[i].end <= boundary.y1) {\n        i++;\n      }\n      var j = horizon.length - 1;\n      while (j >= 0 && horizon[j].start >= boundary.y2) {\n        j--;\n      }\n      var horizonPart, affectedBoundary;\n      var q,\n          k,\n          maxXNew = -Infinity;\n      for (q = i; q <= j; q++) {\n        horizonPart = horizon[q];\n        affectedBoundary = horizonPart.boundary;\n        var xNew;\n        if (affectedBoundary.x2 > boundary.x1) {\n          xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;\n        } else if (affectedBoundary.x2New === undefined) {\n          xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n        } else {\n          xNew = affectedBoundary.x2New;\n        }\n        if (xNew > maxXNew) {\n          maxXNew = xNew;\n        }\n      }\n      boundary.x1New = maxXNew;\n      for (q = i; q <= j; q++) {\n        horizonPart = horizon[q];\n        affectedBoundary = horizonPart.boundary;\n        if (affectedBoundary.x2New === undefined) {\n          if (affectedBoundary.x2 > boundary.x1) {\n            if (affectedBoundary.index > boundary.index) {\n              affectedBoundary.x2New = affectedBoundary.x2;\n            }\n          } else {\n            affectedBoundary.x2New = maxXNew;\n          }\n        } else if (affectedBoundary.x2New > maxXNew) {\n          affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n        }\n      }\n      var changedHorizon = [],\n          lastBoundary = null;\n      for (q = i; q <= j; q++) {\n        horizonPart = horizon[q];\n        affectedBoundary = horizonPart.boundary;\n        var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n        if (lastBoundary === useBoundary) {\n          changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n        } else {\n          changedHorizon.push({\n            start: horizonPart.start,\n            end: horizonPart.end,\n            boundary: useBoundary\n          });\n          lastBoundary = useBoundary;\n        }\n      }\n      if (horizon[i].start < boundary.y1) {\n        changedHorizon[0].start = boundary.y1;\n        changedHorizon.unshift({\n          start: horizon[i].start,\n          end: boundary.y1,\n          boundary: horizon[i].boundary\n        });\n      }\n      if (boundary.y2 < horizon[j].end) {\n        changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n        changedHorizon.push({\n          start: boundary.y2,\n          end: horizon[j].end,\n          boundary: horizon[j].boundary\n        });\n      }\n      for (q = i; q <= j; q++) {\n        horizonPart = horizon[q];\n        affectedBoundary = horizonPart.boundary;\n        if (affectedBoundary.x2New !== undefined) {\n          continue;\n        }\n        var used = false;\n        for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {\n          used = horizon[k].boundary === affectedBoundary;\n        }\n        for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {\n          used = horizon[k].boundary === affectedBoundary;\n        }\n        for (k = 0; !used && k < changedHorizon.length; k++) {\n          used = changedHorizon[k].boundary === affectedBoundary;\n        }\n        if (!used) {\n          affectedBoundary.x2New = maxXNew;\n        }\n      }\n      Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));\n    });\n    horizon.forEach(function (horizonPart) {\n      var affectedBoundary = horizonPart.boundary;\n      if (affectedBoundary.x2New === undefined) {\n        affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n      }\n    });\n  }\n  function TextLayerRenderTask(_ref) {\n    var textContent = _ref.textContent,\n        textContentStream = _ref.textContentStream,\n        container = _ref.container,\n        viewport = _ref.viewport,\n        textDivs = _ref.textDivs,\n        textContentItemsStr = _ref.textContentItemsStr,\n        enhanceTextSelection = _ref.enhanceTextSelection;\n\n    this._textContent = textContent;\n    this._textContentStream = textContentStream;\n    this._container = container;\n    this._viewport = viewport;\n    this._textDivs = textDivs || [];\n    this._textContentItemsStr = textContentItemsStr || [];\n    this._enhanceTextSelection = !!enhanceTextSelection;\n    this._fontInspectorEnabled = !!(_global_scope2.default.FontInspector && _global_scope2.default.FontInspector.enabled);\n    this._reader = null;\n    this._layoutTextLastFontSize = null;\n    this._layoutTextLastFontFamily = null;\n    this._layoutTextCtx = null;\n    this._textDivProperties = new WeakMap();\n    this._renderingDone = false;\n    this._canceled = false;\n    this._capability = (0, _util.createPromiseCapability)();\n    this._renderTimer = null;\n    this._bounds = [];\n  }\n  TextLayerRenderTask.prototype = {\n    get promise() {\n      return this._capability.promise;\n    },\n    cancel: function TextLayer_cancel() {\n      if (this._reader) {\n        this._reader.cancel(new _util.AbortException('text layer task cancelled'));\n        this._reader = null;\n      }\n      this._canceled = true;\n      if (this._renderTimer !== null) {\n        clearTimeout(this._renderTimer);\n        this._renderTimer = null;\n      }\n      this._capability.reject('canceled');\n    },\n    _processItems: function _processItems(items, styleCache) {\n      for (var i = 0, len = items.length; i < len; i++) {\n        this._textContentItemsStr.push(items[i].str);\n        appendText(this, items[i], styleCache);\n      }\n    },\n    _layoutText: function _layoutText(textDiv) {\n      var textLayerFrag = this._container;\n      var textDivProperties = this._textDivProperties.get(textDiv);\n      if (textDivProperties.isWhitespace) {\n        return;\n      }\n      var fontSize = textDiv.style.fontSize;\n      var fontFamily = textDiv.style.fontFamily;\n      if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {\n        this._layoutTextCtx.font = fontSize + ' ' + fontFamily;\n        this._layoutTextLastFontSize = fontSize;\n        this._layoutTextLastFontFamily = fontFamily;\n      }\n      var width = this._layoutTextCtx.measureText(textDiv.textContent).width;\n      var transform = '';\n      if (textDivProperties.canvasWidth !== 0 && width > 0) {\n        textDivProperties.scale = textDivProperties.canvasWidth / width;\n        transform = 'scaleX(' + textDivProperties.scale + ')';\n      }\n      if (textDivProperties.angle !== 0) {\n        transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform;\n      }\n      if (transform !== '') {\n        textDivProperties.originalTransform = transform;\n        textDiv.style.transform = transform;\n      }\n      this._textDivProperties.set(textDiv, textDivProperties);\n      textLayerFrag.appendChild(textDiv);\n    },\n\n    _render: function TextLayer_render(timeout) {\n      var _this = this;\n\n      var capability = (0, _util.createPromiseCapability)();\n      var styleCache = Object.create(null);\n      var canvas = document.createElement('canvas');\n      canvas.mozOpaque = true;\n      this._layoutTextCtx = canvas.getContext('2d', { alpha: false });\n      if (this._textContent) {\n        var textItems = this._textContent.items;\n        var textStyles = this._textContent.styles;\n        this._processItems(textItems, textStyles);\n        capability.resolve();\n      } else if (this._textContentStream) {\n        var pump = function pump() {\n          _this._reader.read().then(function (_ref2) {\n            var value = _ref2.value,\n                done = _ref2.done;\n\n            if (done) {\n              capability.resolve();\n              return;\n            }\n            Object.assign(styleCache, value.styles);\n            _this._processItems(value.items, styleCache);\n            pump();\n          }, capability.reject);\n        };\n        this._reader = this._textContentStream.getReader();\n        pump();\n      } else {\n        throw new Error('Neither \"textContent\" nor \"textContentStream\"' + ' parameters specified.');\n      }\n      capability.promise.then(function () {\n        styleCache = null;\n        if (!timeout) {\n          render(_this);\n        } else {\n          _this._renderTimer = setTimeout(function () {\n            render(_this);\n            _this._renderTimer = null;\n          }, timeout);\n        }\n      }, this._capability.reject);\n    },\n    expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n      if (!this._enhanceTextSelection || !this._renderingDone) {\n        return;\n      }\n      if (this._bounds !== null) {\n        expand(this);\n        this._bounds = null;\n      }\n      for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n        var div = this._textDivs[i];\n        var divProperties = this._textDivProperties.get(div);\n        if (divProperties.isWhitespace) {\n          continue;\n        }\n        if (expandDivs) {\n          var transform = '',\n              padding = '';\n          if (divProperties.scale !== 1) {\n            transform = 'scaleX(' + divProperties.scale + ')';\n          }\n          if (divProperties.angle !== 0) {\n            transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;\n          }\n          if (divProperties.paddingLeft !== 0) {\n            padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;';\n            transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)';\n          }\n          if (divProperties.paddingTop !== 0) {\n            padding += ' padding-top: ' + divProperties.paddingTop + 'px;';\n            transform += ' translateY(' + -divProperties.paddingTop + 'px)';\n          }\n          if (divProperties.paddingRight !== 0) {\n            padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;';\n          }\n          if (divProperties.paddingBottom !== 0) {\n            padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;';\n          }\n          if (padding !== '') {\n            div.setAttribute('style', divProperties.style + padding);\n          }\n          if (transform !== '') {\n            div.style.transform = transform;\n          }\n        } else {\n          div.style.padding = 0;\n          div.style.transform = divProperties.originalTransform || '';\n        }\n      }\n    }\n  };\n  function renderTextLayer(renderParameters) {\n    var task = new TextLayerRenderTask({\n      textContent: renderParameters.textContent,\n      textContentStream: renderParameters.textContentStream,\n      container: renderParameters.container,\n      viewport: renderParameters.viewport,\n      textDivs: renderParameters.textDivs,\n      textContentItemsStr: renderParameters.textContentItemsStr,\n      enhanceTextSelection: renderParameters.enhanceTextSelection\n    });\n    task._render(renderParameters.timeout);\n    return task;\n  }\n  return renderTextLayer;\n}();\nexports.renderTextLayer = renderTextLayer;\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AnnotationLayer = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dom_utils = __w_pdfjs_require__(130);\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AnnotationElementFactory = function () {\n  function AnnotationElementFactory() {\n    _classCallCheck(this, AnnotationElementFactory);\n  }\n\n  _createClass(AnnotationElementFactory, null, [{\n    key: 'create',\n    value: function create(parameters) {\n      var subtype = parameters.data.annotationType;\n      switch (subtype) {\n        case _util.AnnotationType.LINK:\n          return new LinkAnnotationElement(parameters);\n        case _util.AnnotationType.TEXT:\n          return new TextAnnotationElement(parameters);\n        case _util.AnnotationType.WIDGET:\n          var fieldType = parameters.data.fieldType;\n          switch (fieldType) {\n            case 'Tx':\n              return new TextWidgetAnnotationElement(parameters);\n            case 'Btn':\n              if (parameters.data.radioButton) {\n                return new RadioButtonWidgetAnnotationElement(parameters);\n              } else if (parameters.data.checkBox) {\n                return new CheckboxWidgetAnnotationElement(parameters);\n              }\n              return new PushButtonWidgetAnnotationElement(parameters);\n            case 'Ch':\n              return new ChoiceWidgetAnnotationElement(parameters);\n          }\n          return new WidgetAnnotationElement(parameters);\n        case _util.AnnotationType.POPUP:\n          return new PopupAnnotationElement(parameters);\n        case _util.AnnotationType.LINE:\n          return new LineAnnotationElement(parameters);\n        case _util.AnnotationType.SQUARE:\n          return new SquareAnnotationElement(parameters);\n        case _util.AnnotationType.CIRCLE:\n          return new CircleAnnotationElement(parameters);\n        case _util.AnnotationType.POLYLINE:\n          return new PolylineAnnotationElement(parameters);\n        case _util.AnnotationType.INK:\n          return new InkAnnotationElement(parameters);\n        case _util.AnnotationType.POLYGON:\n          return new PolygonAnnotationElement(parameters);\n        case _util.AnnotationType.HIGHLIGHT:\n          return new HighlightAnnotationElement(parameters);\n        case _util.AnnotationType.UNDERLINE:\n          return new UnderlineAnnotationElement(parameters);\n        case _util.AnnotationType.SQUIGGLY:\n          return new SquigglyAnnotationElement(parameters);\n        case _util.AnnotationType.STRIKEOUT:\n          return new StrikeOutAnnotationElement(parameters);\n        case _util.AnnotationType.STAMP:\n          return new StampAnnotationElement(parameters);\n        case _util.AnnotationType.FILEATTACHMENT:\n          return new FileAttachmentAnnotationElement(parameters);\n        default:\n          return new AnnotationElement(parameters);\n      }\n    }\n  }]);\n\n  return AnnotationElementFactory;\n}();\n\nvar AnnotationElement = function () {\n  function AnnotationElement(parameters) {\n    var isRenderable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var ignoreBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n    _classCallCheck(this, AnnotationElement);\n\n    this.isRenderable = isRenderable;\n    this.data = parameters.data;\n    this.layer = parameters.layer;\n    this.page = parameters.page;\n    this.viewport = parameters.viewport;\n    this.linkService = parameters.linkService;\n    this.downloadManager = parameters.downloadManager;\n    this.imageResourcesPath = parameters.imageResourcesPath;\n    this.renderInteractiveForms = parameters.renderInteractiveForms;\n    this.svgFactory = parameters.svgFactory;\n    if (isRenderable) {\n      this.container = this._createContainer(ignoreBorder);\n    }\n  }\n\n  _createClass(AnnotationElement, [{\n    key: '_createContainer',\n    value: function _createContainer() {\n      var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      var data = this.data,\n          page = this.page,\n          viewport = this.viewport;\n      var container = document.createElement('section');\n      var width = data.rect[2] - data.rect[0];\n      var height = data.rect[3] - data.rect[1];\n      container.setAttribute('data-annotation-id', data.id);\n      var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n      container.style.transform = 'matrix(' + viewport.transform.join(',') + ')';\n      container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px';\n      if (!ignoreBorder && data.borderStyle.width > 0) {\n        container.style.borderWidth = data.borderStyle.width + 'px';\n        if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {\n          width = width - 2 * data.borderStyle.width;\n          height = height - 2 * data.borderStyle.width;\n        }\n        var horizontalRadius = data.borderStyle.horizontalCornerRadius;\n        var verticalRadius = data.borderStyle.verticalCornerRadius;\n        if (horizontalRadius > 0 || verticalRadius > 0) {\n          var radius = horizontalRadius + 'px / ' + verticalRadius + 'px';\n          container.style.borderRadius = radius;\n        }\n        switch (data.borderStyle.style) {\n          case _util.AnnotationBorderStyleType.SOLID:\n            container.style.borderStyle = 'solid';\n            break;\n          case _util.AnnotationBorderStyleType.DASHED:\n            container.style.borderStyle = 'dashed';\n            break;\n          case _util.AnnotationBorderStyleType.BEVELED:\n            (0, _util.warn)('Unimplemented border style: beveled');\n            break;\n          case _util.AnnotationBorderStyleType.INSET:\n            (0, _util.warn)('Unimplemented border style: inset');\n            break;\n          case _util.AnnotationBorderStyleType.UNDERLINE:\n            container.style.borderBottomStyle = 'solid';\n            break;\n          default:\n            break;\n        }\n        if (data.color) {\n          container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);\n        } else {\n          container.style.borderWidth = 0;\n        }\n      }\n      container.style.left = rect[0] + 'px';\n      container.style.top = rect[1] + 'px';\n      container.style.width = width + 'px';\n      container.style.height = height + 'px';\n      return container;\n    }\n  }, {\n    key: '_createPopup',\n    value: function _createPopup(container, trigger, data) {\n      if (!trigger) {\n        trigger = document.createElement('div');\n        trigger.style.height = container.style.height;\n        trigger.style.width = container.style.width;\n        container.appendChild(trigger);\n      }\n      var popupElement = new PopupElement({\n        container: container,\n        trigger: trigger,\n        color: data.color,\n        title: data.title,\n        contents: data.contents,\n        hideWrapper: true\n      });\n      var popup = popupElement.render();\n      popup.style.left = container.style.width;\n      container.appendChild(popup);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      (0, _util.unreachable)('Abstract method `AnnotationElement.render` called');\n    }\n  }]);\n\n  return AnnotationElement;\n}();\n\nvar LinkAnnotationElement = function (_AnnotationElement) {\n  _inherits(LinkAnnotationElement, _AnnotationElement);\n\n  function LinkAnnotationElement(parameters) {\n    _classCallCheck(this, LinkAnnotationElement);\n\n    var isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);\n    return _possibleConstructorReturn(this, (LinkAnnotationElement.__proto__ || Object.getPrototypeOf(LinkAnnotationElement)).call(this, parameters, isRenderable));\n  }\n\n  _createClass(LinkAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'linkAnnotation';\n      var data = this.data,\n          linkService = this.linkService;\n\n      var link = document.createElement('a');\n      (0, _dom_utils.addLinkAttributes)(link, {\n        url: data.url,\n        target: data.newWindow ? _dom_utils.LinkTarget.BLANK : linkService.externalLinkTarget,\n        rel: linkService.externalLinkRel\n      });\n      if (!data.url) {\n        if (data.action) {\n          this._bindNamedAction(link, data.action);\n        } else {\n          this._bindLink(link, data.dest);\n        }\n      }\n      this.container.appendChild(link);\n      return this.container;\n    }\n  }, {\n    key: '_bindLink',\n    value: function _bindLink(link, destination) {\n      var _this2 = this;\n\n      link.href = this.linkService.getDestinationHash(destination);\n      link.onclick = function () {\n        if (destination) {\n          _this2.linkService.navigateTo(destination);\n        }\n        return false;\n      };\n      if (destination) {\n        link.className = 'internalLink';\n      }\n    }\n  }, {\n    key: '_bindNamedAction',\n    value: function _bindNamedAction(link, action) {\n      var _this3 = this;\n\n      link.href = this.linkService.getAnchorUrl('');\n      link.onclick = function () {\n        _this3.linkService.executeNamedAction(action);\n        return false;\n      };\n      link.className = 'internalLink';\n    }\n  }]);\n\n  return LinkAnnotationElement;\n}(AnnotationElement);\n\nvar TextAnnotationElement = function (_AnnotationElement2) {\n  _inherits(TextAnnotationElement, _AnnotationElement2);\n\n  function TextAnnotationElement(parameters) {\n    _classCallCheck(this, TextAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n    return _possibleConstructorReturn(this, (TextAnnotationElement.__proto__ || Object.getPrototypeOf(TextAnnotationElement)).call(this, parameters, isRenderable));\n  }\n\n  _createClass(TextAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'textAnnotation';\n      var image = document.createElement('img');\n      image.style.height = this.container.style.height;\n      image.style.width = this.container.style.width;\n      image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg';\n      image.alt = '[{{type}} Annotation]';\n      image.dataset.l10nId = 'text_annotation_type';\n      image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });\n      if (!this.data.hasPopup) {\n        this._createPopup(this.container, image, this.data);\n      }\n      this.container.appendChild(image);\n      return this.container;\n    }\n  }]);\n\n  return TextAnnotationElement;\n}(AnnotationElement);\n\nvar WidgetAnnotationElement = function (_AnnotationElement3) {\n  _inherits(WidgetAnnotationElement, _AnnotationElement3);\n\n  function WidgetAnnotationElement() {\n    _classCallCheck(this, WidgetAnnotationElement);\n\n    return _possibleConstructorReturn(this, (WidgetAnnotationElement.__proto__ || Object.getPrototypeOf(WidgetAnnotationElement)).apply(this, arguments));\n  }\n\n  _createClass(WidgetAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      return this.container;\n    }\n  }]);\n\n  return WidgetAnnotationElement;\n}(AnnotationElement);\n\nvar TextWidgetAnnotationElement = function (_WidgetAnnotationElem) {\n  _inherits(TextWidgetAnnotationElement, _WidgetAnnotationElem);\n\n  function TextWidgetAnnotationElement(parameters) {\n    _classCallCheck(this, TextWidgetAnnotationElement);\n\n    var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n    return _possibleConstructorReturn(this, (TextWidgetAnnotationElement.__proto__ || Object.getPrototypeOf(TextWidgetAnnotationElement)).call(this, parameters, isRenderable));\n  }\n\n  _createClass(TextWidgetAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      var TEXT_ALIGNMENT = ['left', 'center', 'right'];\n      this.container.className = 'textWidgetAnnotation';\n      var element = null;\n      if (this.renderInteractiveForms) {\n        if (this.data.multiLine) {\n          element = document.createElement('textarea');\n          element.textContent = this.data.fieldValue;\n        } else {\n          element = document.createElement('input');\n          element.type = 'text';\n          element.setAttribute('value', this.data.fieldValue);\n        }\n        element.disabled = this.data.readOnly;\n        if (this.data.maxLen !== null) {\n          element.maxLength = this.data.maxLen;\n        }\n        if (this.data.comb) {\n          var fieldWidth = this.data.rect[2] - this.data.rect[0];\n          var combWidth = fieldWidth / this.data.maxLen;\n          element.classList.add('comb');\n          element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';\n        }\n      } else {\n        element = document.createElement('div');\n        element.textContent = this.data.fieldValue;\n        element.style.verticalAlign = 'middle';\n        element.style.display = 'table-cell';\n        var font = null;\n        if (this.data.fontRefName) {\n          font = this.page.commonObjs.getData(this.data.fontRefName);\n        }\n        this._setTextStyle(element, font);\n      }\n      if (this.data.textAlignment !== null) {\n        element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n      }\n      this.container.appendChild(element);\n      return this.container;\n    }\n  }, {\n    key: '_setTextStyle',\n    value: function _setTextStyle(element, font) {\n      var style = element.style;\n      style.fontSize = this.data.fontSize + 'px';\n      style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr';\n      if (!font) {\n        return;\n      }\n      style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal';\n      style.fontStyle = font.italic ? 'italic' : 'normal';\n      var fontFamily = font.loadedName ? '\"' + font.loadedName + '\", ' : '';\n      var fallbackName = font.fallbackName || 'Helvetica, sans-serif';\n      style.fontFamily = fontFamily + fallbackName;\n    }\n  }]);\n\n  return TextWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar CheckboxWidgetAnnotationElement = function (_WidgetAnnotationElem2) {\n  _inherits(CheckboxWidgetAnnotationElement, _WidgetAnnotationElem2);\n\n  function CheckboxWidgetAnnotationElement(parameters) {\n    _classCallCheck(this, CheckboxWidgetAnnotationElement);\n\n    return _possibleConstructorReturn(this, (CheckboxWidgetAnnotationElement.__proto__ || Object.getPrototypeOf(CheckboxWidgetAnnotationElement)).call(this, parameters, parameters.renderInteractiveForms));\n  }\n\n  _createClass(CheckboxWidgetAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'buttonWidgetAnnotation checkBox';\n      var element = document.createElement('input');\n      element.disabled = this.data.readOnly;\n      element.type = 'checkbox';\n      if (this.data.fieldValue && this.data.fieldValue !== 'Off') {\n        element.setAttribute('checked', true);\n      }\n      this.container.appendChild(element);\n      return this.container;\n    }\n  }]);\n\n  return CheckboxWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar RadioButtonWidgetAnnotationElement = function (_WidgetAnnotationElem3) {\n  _inherits(RadioButtonWidgetAnnotationElement, _WidgetAnnotationElem3);\n\n  function RadioButtonWidgetAnnotationElement(parameters) {\n    _classCallCheck(this, RadioButtonWidgetAnnotationElement);\n\n    return _possibleConstructorReturn(this, (RadioButtonWidgetAnnotationElement.__proto__ || Object.getPrototypeOf(RadioButtonWidgetAnnotationElement)).call(this, parameters, parameters.renderInteractiveForms));\n  }\n\n  _createClass(RadioButtonWidgetAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'buttonWidgetAnnotation radioButton';\n      var element = document.createElement('input');\n      element.disabled = this.data.readOnly;\n      element.type = 'radio';\n      element.name = this.data.fieldName;\n      if (this.data.fieldValue === this.data.buttonValue) {\n        element.setAttribute('checked', true);\n      }\n      this.container.appendChild(element);\n      return this.container;\n    }\n  }]);\n\n  return RadioButtonWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar PushButtonWidgetAnnotationElement = function (_LinkAnnotationElemen) {\n  _inherits(PushButtonWidgetAnnotationElement, _LinkAnnotationElemen);\n\n  function PushButtonWidgetAnnotationElement() {\n    _classCallCheck(this, PushButtonWidgetAnnotationElement);\n\n    return _possibleConstructorReturn(this, (PushButtonWidgetAnnotationElement.__proto__ || Object.getPrototypeOf(PushButtonWidgetAnnotationElement)).apply(this, arguments));\n  }\n\n  _createClass(PushButtonWidgetAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      var container = _get(PushButtonWidgetAnnotationElement.prototype.__proto__ || Object.getPrototypeOf(PushButtonWidgetAnnotationElement.prototype), 'render', this).call(this);\n      container.className = 'buttonWidgetAnnotation pushButton';\n      return container;\n    }\n  }]);\n\n  return PushButtonWidgetAnnotationElement;\n}(LinkAnnotationElement);\n\nvar ChoiceWidgetAnnotationElement = function (_WidgetAnnotationElem4) {\n  _inherits(ChoiceWidgetAnnotationElement, _WidgetAnnotationElem4);\n\n  function ChoiceWidgetAnnotationElement(parameters) {\n    _classCallCheck(this, ChoiceWidgetAnnotationElement);\n\n    return _possibleConstructorReturn(this, (ChoiceWidgetAnnotationElement.__proto__ || Object.getPrototypeOf(ChoiceWidgetAnnotationElement)).call(this, parameters, parameters.renderInteractiveForms));\n  }\n\n  _createClass(ChoiceWidgetAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'choiceWidgetAnnotation';\n      var selectElement = document.createElement('select');\n      selectElement.disabled = this.data.readOnly;\n      if (!this.data.combo) {\n        selectElement.size = this.data.options.length;\n        if (this.data.multiSelect) {\n          selectElement.multiple = true;\n        }\n      }\n      for (var i = 0, ii = this.data.options.length; i < ii; i++) {\n        var option = this.data.options[i];\n        var optionElement = document.createElement('option');\n        optionElement.textContent = option.displayValue;\n        optionElement.value = option.exportValue;\n        if (this.data.fieldValue.includes(option.displayValue)) {\n          optionElement.setAttribute('selected', true);\n        }\n        selectElement.appendChild(optionElement);\n      }\n      this.container.appendChild(selectElement);\n      return this.container;\n    }\n  }]);\n\n  return ChoiceWidgetAnnotationElement;\n}(WidgetAnnotationElement);\n\nvar PopupAnnotationElement = function (_AnnotationElement4) {\n  _inherits(PopupAnnotationElement, _AnnotationElement4);\n\n  function PopupAnnotationElement(parameters) {\n    _classCallCheck(this, PopupAnnotationElement);\n\n    var isRenderable = !!(parameters.data.title || parameters.data.contents);\n    return _possibleConstructorReturn(this, (PopupAnnotationElement.__proto__ || Object.getPrototypeOf(PopupAnnotationElement)).call(this, parameters, isRenderable));\n  }\n\n  _createClass(PopupAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      var IGNORE_TYPES = ['Line', 'Square', 'Circle', 'PolyLine', 'Polygon', 'Ink'];\n      this.container.className = 'popupAnnotation';\n      if (IGNORE_TYPES.includes(this.data.parentType)) {\n        return this.container;\n      }\n      var selector = '[data-annotation-id=\"' + this.data.parentId + '\"]';\n      var parentElement = this.layer.querySelector(selector);\n      if (!parentElement) {\n        return this.container;\n      }\n      var popup = new PopupElement({\n        container: this.container,\n        trigger: parentElement,\n        color: this.data.color,\n        title: this.data.title,\n        contents: this.data.contents\n      });\n      var parentLeft = parseFloat(parentElement.style.left);\n      var parentWidth = parseFloat(parentElement.style.width);\n      this.container.style.transformOrigin = -(parentLeft + parentWidth) + 'px -' + parentElement.style.top;\n      this.container.style.left = parentLeft + parentWidth + 'px';\n      this.container.appendChild(popup.render());\n      return this.container;\n    }\n  }]);\n\n  return PopupAnnotationElement;\n}(AnnotationElement);\n\nvar PopupElement = function () {\n  function PopupElement(parameters) {\n    _classCallCheck(this, PopupElement);\n\n    this.container = parameters.container;\n    this.trigger = parameters.trigger;\n    this.color = parameters.color;\n    this.title = parameters.title;\n    this.contents = parameters.contents;\n    this.hideWrapper = parameters.hideWrapper || false;\n    this.pinned = false;\n  }\n\n  _createClass(PopupElement, [{\n    key: 'render',\n    value: function render() {\n      var BACKGROUND_ENLIGHT = 0.7;\n      var wrapper = document.createElement('div');\n      wrapper.className = 'popupWrapper';\n      this.hideElement = this.hideWrapper ? wrapper : this.container;\n      this.hideElement.setAttribute('hidden', true);\n      var popup = document.createElement('div');\n      popup.className = 'popup';\n      var color = this.color;\n      if (color) {\n        var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n        var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n        var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n        popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);\n      }\n      var contents = this._formatContents(this.contents);\n      var title = document.createElement('h1');\n      title.textContent = this.title;\n      this.trigger.addEventListener('click', this._toggle.bind(this));\n      this.trigger.addEventListener('mouseover', this._show.bind(this, false));\n      this.trigger.addEventListener('mouseout', this._hide.bind(this, false));\n      popup.addEventListener('click', this._hide.bind(this, true));\n      popup.appendChild(title);\n      popup.appendChild(contents);\n      wrapper.appendChild(popup);\n      return wrapper;\n    }\n  }, {\n    key: '_formatContents',\n    value: function _formatContents(contents) {\n      var p = document.createElement('p');\n      var lines = contents.split(/(?:\\r\\n?|\\n)/);\n      for (var i = 0, ii = lines.length; i < ii; ++i) {\n        var line = lines[i];\n        p.appendChild(document.createTextNode(line));\n        if (i < ii - 1) {\n          p.appendChild(document.createElement('br'));\n        }\n      }\n      return p;\n    }\n  }, {\n    key: '_toggle',\n    value: function _toggle() {\n      if (this.pinned) {\n        this._hide(true);\n      } else {\n        this._show(true);\n      }\n    }\n  }, {\n    key: '_show',\n    value: function _show() {\n      var pin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (pin) {\n        this.pinned = true;\n      }\n      if (this.hideElement.hasAttribute('hidden')) {\n        this.hideElement.removeAttribute('hidden');\n        this.container.style.zIndex += 1;\n      }\n    }\n  }, {\n    key: '_hide',\n    value: function _hide() {\n      var unpin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n      if (unpin) {\n        this.pinned = false;\n      }\n      if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {\n        this.hideElement.setAttribute('hidden', true);\n        this.container.style.zIndex -= 1;\n      }\n    }\n  }]);\n\n  return PopupElement;\n}();\n\nvar LineAnnotationElement = function (_AnnotationElement5) {\n  _inherits(LineAnnotationElement, _AnnotationElement5);\n\n  function LineAnnotationElement(parameters) {\n    _classCallCheck(this, LineAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n    return _possibleConstructorReturn(this, (LineAnnotationElement.__proto__ || Object.getPrototypeOf(LineAnnotationElement)).call(this, parameters, isRenderable, true));\n  }\n\n  _createClass(LineAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'lineAnnotation';\n      var data = this.data;\n      var width = data.rect[2] - data.rect[0];\n      var height = data.rect[3] - data.rect[1];\n      var svg = this.svgFactory.create(width, height);\n      var line = this.svgFactory.createElement('svg:line');\n      line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]);\n      line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]);\n      line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]);\n      line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]);\n      line.setAttribute('stroke-width', data.borderStyle.width);\n      line.setAttribute('stroke', 'transparent');\n      svg.appendChild(line);\n      this.container.append(svg);\n      this._createPopup(this.container, line, data);\n      return this.container;\n    }\n  }]);\n\n  return LineAnnotationElement;\n}(AnnotationElement);\n\nvar SquareAnnotationElement = function (_AnnotationElement6) {\n  _inherits(SquareAnnotationElement, _AnnotationElement6);\n\n  function SquareAnnotationElement(parameters) {\n    _classCallCheck(this, SquareAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n    return _possibleConstructorReturn(this, (SquareAnnotationElement.__proto__ || Object.getPrototypeOf(SquareAnnotationElement)).call(this, parameters, isRenderable, true));\n  }\n\n  _createClass(SquareAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'squareAnnotation';\n      var data = this.data;\n      var width = data.rect[2] - data.rect[0];\n      var height = data.rect[3] - data.rect[1];\n      var svg = this.svgFactory.create(width, height);\n      var borderWidth = data.borderStyle.width;\n      var square = this.svgFactory.createElement('svg:rect');\n      square.setAttribute('x', borderWidth / 2);\n      square.setAttribute('y', borderWidth / 2);\n      square.setAttribute('width', width - borderWidth);\n      square.setAttribute('height', height - borderWidth);\n      square.setAttribute('stroke-width', borderWidth);\n      square.setAttribute('stroke', 'transparent');\n      square.setAttribute('fill', 'none');\n      svg.appendChild(square);\n      this.container.append(svg);\n      this._createPopup(this.container, square, data);\n      return this.container;\n    }\n  }]);\n\n  return SquareAnnotationElement;\n}(AnnotationElement);\n\nvar CircleAnnotationElement = function (_AnnotationElement7) {\n  _inherits(CircleAnnotationElement, _AnnotationElement7);\n\n  function CircleAnnotationElement(parameters) {\n    _classCallCheck(this, CircleAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n    return _possibleConstructorReturn(this, (CircleAnnotationElement.__proto__ || Object.getPrototypeOf(CircleAnnotationElement)).call(this, parameters, isRenderable, true));\n  }\n\n  _createClass(CircleAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'circleAnnotation';\n      var data = this.data;\n      var width = data.rect[2] - data.rect[0];\n      var height = data.rect[3] - data.rect[1];\n      var svg = this.svgFactory.create(width, height);\n      var borderWidth = data.borderStyle.width;\n      var circle = this.svgFactory.createElement('svg:ellipse');\n      circle.setAttribute('cx', width / 2);\n      circle.setAttribute('cy', height / 2);\n      circle.setAttribute('rx', width / 2 - borderWidth / 2);\n      circle.setAttribute('ry', height / 2 - borderWidth / 2);\n      circle.setAttribute('stroke-width', borderWidth);\n      circle.setAttribute('stroke', 'transparent');\n      circle.setAttribute('fill', 'none');\n      svg.appendChild(circle);\n      this.container.append(svg);\n      this._createPopup(this.container, circle, data);\n      return this.container;\n    }\n  }]);\n\n  return CircleAnnotationElement;\n}(AnnotationElement);\n\nvar PolylineAnnotationElement = function (_AnnotationElement8) {\n  _inherits(PolylineAnnotationElement, _AnnotationElement8);\n\n  function PolylineAnnotationElement(parameters) {\n    _classCallCheck(this, PolylineAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n\n    var _this15 = _possibleConstructorReturn(this, (PolylineAnnotationElement.__proto__ || Object.getPrototypeOf(PolylineAnnotationElement)).call(this, parameters, isRenderable, true));\n\n    _this15.containerClassName = 'polylineAnnotation';\n    _this15.svgElementName = 'svg:polyline';\n    return _this15;\n  }\n\n  _createClass(PolylineAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = this.containerClassName;\n      var data = this.data;\n      var width = data.rect[2] - data.rect[0];\n      var height = data.rect[3] - data.rect[1];\n      var svg = this.svgFactory.create(width, height);\n      var vertices = data.vertices;\n      var points = [];\n      for (var i = 0, ii = vertices.length; i < ii; i++) {\n        var x = vertices[i].x - data.rect[0];\n        var y = data.rect[3] - vertices[i].y;\n        points.push(x + ',' + y);\n      }\n      points = points.join(' ');\n      var borderWidth = data.borderStyle.width;\n      var polyline = this.svgFactory.createElement(this.svgElementName);\n      polyline.setAttribute('points', points);\n      polyline.setAttribute('stroke-width', borderWidth);\n      polyline.setAttribute('stroke', 'transparent');\n      polyline.setAttribute('fill', 'none');\n      svg.appendChild(polyline);\n      this.container.append(svg);\n      this._createPopup(this.container, polyline, data);\n      return this.container;\n    }\n  }]);\n\n  return PolylineAnnotationElement;\n}(AnnotationElement);\n\nvar PolygonAnnotationElement = function (_PolylineAnnotationEl) {\n  _inherits(PolygonAnnotationElement, _PolylineAnnotationEl);\n\n  function PolygonAnnotationElement(parameters) {\n    _classCallCheck(this, PolygonAnnotationElement);\n\n    var _this16 = _possibleConstructorReturn(this, (PolygonAnnotationElement.__proto__ || Object.getPrototypeOf(PolygonAnnotationElement)).call(this, parameters));\n\n    _this16.containerClassName = 'polygonAnnotation';\n    _this16.svgElementName = 'svg:polygon';\n    return _this16;\n  }\n\n  return PolygonAnnotationElement;\n}(PolylineAnnotationElement);\n\nvar InkAnnotationElement = function (_AnnotationElement9) {\n  _inherits(InkAnnotationElement, _AnnotationElement9);\n\n  function InkAnnotationElement(parameters) {\n    _classCallCheck(this, InkAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n\n    var _this17 = _possibleConstructorReturn(this, (InkAnnotationElement.__proto__ || Object.getPrototypeOf(InkAnnotationElement)).call(this, parameters, isRenderable, true));\n\n    _this17.containerClassName = 'inkAnnotation';\n    _this17.svgElementName = 'svg:polyline';\n    return _this17;\n  }\n\n  _createClass(InkAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = this.containerClassName;\n      var data = this.data;\n      var width = data.rect[2] - data.rect[0];\n      var height = data.rect[3] - data.rect[1];\n      var svg = this.svgFactory.create(width, height);\n      var inkLists = data.inkLists;\n      for (var i = 0, ii = inkLists.length; i < ii; i++) {\n        var inkList = inkLists[i];\n        var points = [];\n        for (var j = 0, jj = inkList.length; j < jj; j++) {\n          var x = inkList[j].x - data.rect[0];\n          var y = data.rect[3] - inkList[j].y;\n          points.push(x + ',' + y);\n        }\n        points = points.join(' ');\n        var borderWidth = data.borderStyle.width;\n        var polyline = this.svgFactory.createElement(this.svgElementName);\n        polyline.setAttribute('points', points);\n        polyline.setAttribute('stroke-width', borderWidth);\n        polyline.setAttribute('stroke', 'transparent');\n        polyline.setAttribute('fill', 'none');\n        this._createPopup(this.container, polyline, data);\n        svg.appendChild(polyline);\n      }\n      this.container.append(svg);\n      return this.container;\n    }\n  }]);\n\n  return InkAnnotationElement;\n}(AnnotationElement);\n\nvar HighlightAnnotationElement = function (_AnnotationElement10) {\n  _inherits(HighlightAnnotationElement, _AnnotationElement10);\n\n  function HighlightAnnotationElement(parameters) {\n    _classCallCheck(this, HighlightAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n    return _possibleConstructorReturn(this, (HighlightAnnotationElement.__proto__ || Object.getPrototypeOf(HighlightAnnotationElement)).call(this, parameters, isRenderable, true));\n  }\n\n  _createClass(HighlightAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'highlightAnnotation';\n      if (!this.data.hasPopup) {\n        this._createPopup(this.container, null, this.data);\n      }\n      return this.container;\n    }\n  }]);\n\n  return HighlightAnnotationElement;\n}(AnnotationElement);\n\nvar UnderlineAnnotationElement = function (_AnnotationElement11) {\n  _inherits(UnderlineAnnotationElement, _AnnotationElement11);\n\n  function UnderlineAnnotationElement(parameters) {\n    _classCallCheck(this, UnderlineAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n    return _possibleConstructorReturn(this, (UnderlineAnnotationElement.__proto__ || Object.getPrototypeOf(UnderlineAnnotationElement)).call(this, parameters, isRenderable, true));\n  }\n\n  _createClass(UnderlineAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'underlineAnnotation';\n      if (!this.data.hasPopup) {\n        this._createPopup(this.container, null, this.data);\n      }\n      return this.container;\n    }\n  }]);\n\n  return UnderlineAnnotationElement;\n}(AnnotationElement);\n\nvar SquigglyAnnotationElement = function (_AnnotationElement12) {\n  _inherits(SquigglyAnnotationElement, _AnnotationElement12);\n\n  function SquigglyAnnotationElement(parameters) {\n    _classCallCheck(this, SquigglyAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n    return _possibleConstructorReturn(this, (SquigglyAnnotationElement.__proto__ || Object.getPrototypeOf(SquigglyAnnotationElement)).call(this, parameters, isRenderable, true));\n  }\n\n  _createClass(SquigglyAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'squigglyAnnotation';\n      if (!this.data.hasPopup) {\n        this._createPopup(this.container, null, this.data);\n      }\n      return this.container;\n    }\n  }]);\n\n  return SquigglyAnnotationElement;\n}(AnnotationElement);\n\nvar StrikeOutAnnotationElement = function (_AnnotationElement13) {\n  _inherits(StrikeOutAnnotationElement, _AnnotationElement13);\n\n  function StrikeOutAnnotationElement(parameters) {\n    _classCallCheck(this, StrikeOutAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n    return _possibleConstructorReturn(this, (StrikeOutAnnotationElement.__proto__ || Object.getPrototypeOf(StrikeOutAnnotationElement)).call(this, parameters, isRenderable, true));\n  }\n\n  _createClass(StrikeOutAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'strikeoutAnnotation';\n      if (!this.data.hasPopup) {\n        this._createPopup(this.container, null, this.data);\n      }\n      return this.container;\n    }\n  }]);\n\n  return StrikeOutAnnotationElement;\n}(AnnotationElement);\n\nvar StampAnnotationElement = function (_AnnotationElement14) {\n  _inherits(StampAnnotationElement, _AnnotationElement14);\n\n  function StampAnnotationElement(parameters) {\n    _classCallCheck(this, StampAnnotationElement);\n\n    var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n    return _possibleConstructorReturn(this, (StampAnnotationElement.__proto__ || Object.getPrototypeOf(StampAnnotationElement)).call(this, parameters, isRenderable, true));\n  }\n\n  _createClass(StampAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'stampAnnotation';\n      if (!this.data.hasPopup) {\n        this._createPopup(this.container, null, this.data);\n      }\n      return this.container;\n    }\n  }]);\n\n  return StampAnnotationElement;\n}(AnnotationElement);\n\nvar FileAttachmentAnnotationElement = function (_AnnotationElement15) {\n  _inherits(FileAttachmentAnnotationElement, _AnnotationElement15);\n\n  function FileAttachmentAnnotationElement(parameters) {\n    _classCallCheck(this, FileAttachmentAnnotationElement);\n\n    var _this23 = _possibleConstructorReturn(this, (FileAttachmentAnnotationElement.__proto__ || Object.getPrototypeOf(FileAttachmentAnnotationElement)).call(this, parameters, true));\n\n    var _this23$data$file = _this23.data.file,\n        filename = _this23$data$file.filename,\n        content = _this23$data$file.content;\n\n    _this23.filename = (0, _dom_utils.getFilenameFromUrl)(filename);\n    _this23.content = content;\n    if (_this23.linkService.eventBus) {\n      _this23.linkService.eventBus.dispatch('fileattachmentannotation', {\n        source: _this23,\n        id: (0, _util.stringToPDFString)(filename),\n        filename: filename,\n        content: content\n      });\n    }\n    return _this23;\n  }\n\n  _createClass(FileAttachmentAnnotationElement, [{\n    key: 'render',\n    value: function render() {\n      this.container.className = 'fileAttachmentAnnotation';\n      var trigger = document.createElement('div');\n      trigger.style.height = this.container.style.height;\n      trigger.style.width = this.container.style.width;\n      trigger.addEventListener('dblclick', this._download.bind(this));\n      if (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n        this._createPopup(this.container, trigger, this.data);\n      }\n      this.container.appendChild(trigger);\n      return this.container;\n    }\n  }, {\n    key: '_download',\n    value: function _download() {\n      if (!this.downloadManager) {\n        (0, _util.warn)('Download cannot be started due to unavailable download manager');\n        return;\n      }\n      this.downloadManager.downloadData(this.content, this.filename, '');\n    }\n  }]);\n\n  return FileAttachmentAnnotationElement;\n}(AnnotationElement);\n\nvar AnnotationLayer = function () {\n  function AnnotationLayer() {\n    _classCallCheck(this, AnnotationLayer);\n  }\n\n  _createClass(AnnotationLayer, null, [{\n    key: 'render',\n    value: function render(parameters) {\n      for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {\n        var data = parameters.annotations[i];\n        if (!data) {\n          continue;\n        }\n        var element = AnnotationElementFactory.create({\n          data: data,\n          layer: parameters.div,\n          page: parameters.page,\n          viewport: parameters.viewport,\n          linkService: parameters.linkService,\n          downloadManager: parameters.downloadManager,\n          imageResourcesPath: parameters.imageResourcesPath || '',\n          renderInteractiveForms: parameters.renderInteractiveForms || false,\n          svgFactory: new _dom_utils.DOMSVGFactory()\n        });\n        if (element.isRenderable) {\n          parameters.div.appendChild(element.render());\n        }\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update(parameters) {\n      for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {\n        var data = parameters.annotations[i];\n        var element = parameters.div.querySelector('[data-annotation-id=\"' + data.id + '\"]');\n        if (element) {\n          element.style.transform = 'matrix(' + parameters.viewport.transform.join(',') + ')';\n        }\n      }\n      parameters.div.removeAttribute('hidden');\n    }\n  }]);\n\n  return AnnotationLayer;\n}();\n\nexports.AnnotationLayer = AnnotationLayer;\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SVGGraphics = undefined;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _dom_utils = __w_pdfjs_require__(130);\n\nvar _is_node = __w_pdfjs_require__(4);\n\nvar _is_node2 = _interopRequireDefault(_is_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SVGGraphics = function SVGGraphics() {\n  throw new Error('Not implemented: SVGGraphics');\n};\n{\n  var SVG_DEFAULTS = {\n    fontStyle: 'normal',\n    fontWeight: 'normal',\n    fillColor: '#000000'\n  };\n  var convertImgDataToPng = function convertImgDataToPngClosure() {\n    var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n    var CHUNK_WRAPPER_SIZE = 12;\n    var crcTable = new Int32Array(256);\n    for (var i = 0; i < 256; i++) {\n      var c = i;\n      for (var h = 0; h < 8; h++) {\n        if (c & 1) {\n          c = 0xedB88320 ^ c >> 1 & 0x7fffffff;\n        } else {\n          c = c >> 1 & 0x7fffffff;\n        }\n      }\n      crcTable[i] = c;\n    }\n    function crc32(data, start, end) {\n      var crc = -1;\n      for (var i = start; i < end; i++) {\n        var a = (crc ^ data[i]) & 0xff;\n        var b = crcTable[a];\n        crc = crc >>> 8 ^ b;\n      }\n      return crc ^ -1;\n    }\n    function writePngChunk(type, body, data, offset) {\n      var p = offset;\n      var len = body.length;\n      data[p] = len >> 24 & 0xff;\n      data[p + 1] = len >> 16 & 0xff;\n      data[p + 2] = len >> 8 & 0xff;\n      data[p + 3] = len & 0xff;\n      p += 4;\n      data[p] = type.charCodeAt(0) & 0xff;\n      data[p + 1] = type.charCodeAt(1) & 0xff;\n      data[p + 2] = type.charCodeAt(2) & 0xff;\n      data[p + 3] = type.charCodeAt(3) & 0xff;\n      p += 4;\n      data.set(body, p);\n      p += body.length;\n      var crc = crc32(data, offset + 4, p);\n      data[p] = crc >> 24 & 0xff;\n      data[p + 1] = crc >> 16 & 0xff;\n      data[p + 2] = crc >> 8 & 0xff;\n      data[p + 3] = crc & 0xff;\n    }\n    function adler32(data, start, end) {\n      var a = 1;\n      var b = 0;\n      for (var i = start; i < end; ++i) {\n        a = (a + (data[i] & 0xff)) % 65521;\n        b = (b + a) % 65521;\n      }\n      return b << 16 | a;\n    }\n    function deflateSync(literals) {\n      if (!(0, _is_node2.default)()) {\n        return deflateSyncUncompressed(literals);\n      }\n      try {\n        var input;\n        if (parseInt(process.versions.node) >= 8) {\n          input = literals;\n        } else {\n          input = new Buffer(literals);\n        }\n        var output = require('zlib').deflateSync(input, { level: 9 });\n        return output instanceof Uint8Array ? output : new Uint8Array(output);\n      } catch (e) {\n        (0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);\n      }\n      return deflateSyncUncompressed(literals);\n    }\n    function deflateSyncUncompressed(literals) {\n      var len = literals.length;\n      var maxBlockLength = 0xFFFF;\n      var deflateBlocks = Math.ceil(len / maxBlockLength);\n      var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n      var pi = 0;\n      idat[pi++] = 0x78;\n      idat[pi++] = 0x9c;\n      var pos = 0;\n      while (len > maxBlockLength) {\n        idat[pi++] = 0x00;\n        idat[pi++] = 0xff;\n        idat[pi++] = 0xff;\n        idat[pi++] = 0x00;\n        idat[pi++] = 0x00;\n        idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n        pi += maxBlockLength;\n        pos += maxBlockLength;\n        len -= maxBlockLength;\n      }\n      idat[pi++] = 0x01;\n      idat[pi++] = len & 0xff;\n      idat[pi++] = len >> 8 & 0xff;\n      idat[pi++] = ~len & 0xffff & 0xff;\n      idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n      idat.set(literals.subarray(pos), pi);\n      pi += literals.length - pos;\n      var adler = adler32(literals, 0, literals.length);\n      idat[pi++] = adler >> 24 & 0xff;\n      idat[pi++] = adler >> 16 & 0xff;\n      idat[pi++] = adler >> 8 & 0xff;\n      idat[pi++] = adler & 0xff;\n      return idat;\n    }\n    function encode(imgData, kind, forceDataSchema, isMask) {\n      var width = imgData.width;\n      var height = imgData.height;\n      var bitDepth, colorType, lineSize;\n      var bytes = imgData.data;\n      switch (kind) {\n        case _util.ImageKind.GRAYSCALE_1BPP:\n          colorType = 0;\n          bitDepth = 1;\n          lineSize = width + 7 >> 3;\n          break;\n        case _util.ImageKind.RGB_24BPP:\n          colorType = 2;\n          bitDepth = 8;\n          lineSize = width * 3;\n          break;\n        case _util.ImageKind.RGBA_32BPP:\n          colorType = 6;\n          bitDepth = 8;\n          lineSize = width * 4;\n          break;\n        default:\n          throw new Error('invalid format');\n      }\n      var literals = new Uint8Array((1 + lineSize) * height);\n      var offsetLiterals = 0,\n          offsetBytes = 0;\n      var y, i;\n      for (y = 0; y < height; ++y) {\n        literals[offsetLiterals++] = 0;\n        literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n        offsetBytes += lineSize;\n        offsetLiterals += lineSize;\n      }\n      if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n        offsetLiterals = 0;\n        for (y = 0; y < height; y++) {\n          offsetLiterals++;\n          for (i = 0; i < lineSize; i++) {\n            literals[offsetLiterals++] ^= 0xFF;\n          }\n        }\n      }\n      var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);\n      var idat = deflateSync(literals);\n      var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n      var data = new Uint8Array(pngLength);\n      var offset = 0;\n      data.set(PNG_HEADER, offset);\n      offset += PNG_HEADER.length;\n      writePngChunk('IHDR', ihdr, data, offset);\n      offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n      writePngChunk('IDATA', idat, data, offset);\n      offset += CHUNK_WRAPPER_SIZE + idat.length;\n      writePngChunk('IEND', new Uint8Array(0), data, offset);\n      return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema);\n    }\n    return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n      var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n      return encode(imgData, kind, forceDataSchema, isMask);\n    };\n  }();\n  var SVGExtraState = function SVGExtraStateClosure() {\n    function SVGExtraState() {\n      this.fontSizeScale = 1;\n      this.fontWeight = SVG_DEFAULTS.fontWeight;\n      this.fontSize = 0;\n      this.textMatrix = _util.IDENTITY_MATRIX;\n      this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n      this.leading = 0;\n      this.textRenderingMode = _util.TextRenderingMode.FILL;\n      this.x = 0;\n      this.y = 0;\n      this.lineX = 0;\n      this.lineY = 0;\n      this.charSpacing = 0;\n      this.wordSpacing = 0;\n      this.textHScale = 1;\n      this.textRise = 0;\n      this.fillColor = SVG_DEFAULTS.fillColor;\n      this.strokeColor = '#000000';\n      this.fillAlpha = 1;\n      this.strokeAlpha = 1;\n      this.lineWidth = 1;\n      this.lineJoin = '';\n      this.lineCap = '';\n      this.miterLimit = 0;\n      this.dashArray = [];\n      this.dashPhase = 0;\n      this.dependencies = [];\n      this.activeClipUrl = null;\n      this.clipGroup = null;\n      this.maskId = '';\n    }\n    SVGExtraState.prototype = {\n      clone: function SVGExtraState_clone() {\n        return Object.create(this);\n      },\n      setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) {\n        this.x = x;\n        this.y = y;\n      }\n    };\n    return SVGExtraState;\n  }();\n  exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() {\n    function opListToTree(opList) {\n      var opTree = [];\n      var tmp = [];\n      var opListLen = opList.length;\n      for (var x = 0; x < opListLen; x++) {\n        if (opList[x].fn === 'save') {\n          opTree.push({\n            'fnId': 92,\n            'fn': 'group',\n            'items': []\n          });\n          tmp.push(opTree);\n          opTree = opTree[opTree.length - 1].items;\n          continue;\n        }\n        if (opList[x].fn === 'restore') {\n          opTree = tmp.pop();\n        } else {\n          opTree.push(opList[x]);\n        }\n      }\n      return opTree;\n    }\n    function pf(value) {\n      if (Number.isInteger(value)) {\n        return value.toString();\n      }\n      var s = value.toFixed(10);\n      var i = s.length - 1;\n      if (s[i] !== '0') {\n        return s;\n      }\n      do {\n        i--;\n      } while (s[i] === '0');\n      return s.substring(0, s[i] === '.' ? i : i + 1);\n    }\n    function pm(m) {\n      if (m[4] === 0 && m[5] === 0) {\n        if (m[1] === 0 && m[2] === 0) {\n          if (m[0] === 1 && m[3] === 1) {\n            return '';\n          }\n          return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';\n        }\n        if (m[0] === m[3] && m[1] === -m[2]) {\n          var a = Math.acos(m[0]) * 180 / Math.PI;\n          return 'rotate(' + pf(a) + ')';\n        }\n      } else {\n        if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n          return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n        }\n      }\n      return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n    }\n    function SVGGraphics(commonObjs, objs, forceDataSchema) {\n      this.svgFactory = new _dom_utils.DOMSVGFactory();\n      this.current = new SVGExtraState();\n      this.transformMatrix = _util.IDENTITY_MATRIX;\n      this.transformStack = [];\n      this.extraStack = [];\n      this.commonObjs = commonObjs;\n      this.objs = objs;\n      this.pendingClip = null;\n      this.pendingEOFill = false;\n      this.embedFonts = false;\n      this.embeddedFonts = Object.create(null);\n      this.cssStyle = null;\n      this.forceDataSchema = !!forceDataSchema;\n    }\n    var XML_NS = 'http://www.w3.org/XML/1998/namespace';\n    var XLINK_NS = 'http://www.w3.org/1999/xlink';\n    var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n    var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n    var clipCount = 0;\n    var maskCount = 0;\n    SVGGraphics.prototype = {\n      save: function SVGGraphics_save() {\n        this.transformStack.push(this.transformMatrix);\n        var old = this.current;\n        this.extraStack.push(old);\n        this.current = old.clone();\n      },\n      restore: function SVGGraphics_restore() {\n        this.transformMatrix = this.transformStack.pop();\n        this.current = this.extraStack.pop();\n        this.pendingClip = null;\n        this.tgrp = null;\n      },\n      group: function SVGGraphics_group(items) {\n        this.save();\n        this.executeOpTree(items);\n        this.restore();\n      },\n      loadDependencies: function SVGGraphics_loadDependencies(operatorList) {\n        var _this = this;\n\n        var fnArray = operatorList.fnArray;\n        var fnArrayLen = fnArray.length;\n        var argsArray = operatorList.argsArray;\n        for (var i = 0; i < fnArrayLen; i++) {\n          if (_util.OPS.dependency === fnArray[i]) {\n            var deps = argsArray[i];\n            for (var n = 0, nn = deps.length; n < nn; n++) {\n              var obj = deps[n];\n              var common = obj.substring(0, 2) === 'g_';\n              var promise;\n              if (common) {\n                promise = new Promise(function (resolve) {\n                  _this.commonObjs.get(obj, resolve);\n                });\n              } else {\n                promise = new Promise(function (resolve) {\n                  _this.objs.get(obj, resolve);\n                });\n              }\n              this.current.dependencies.push(promise);\n            }\n          }\n        }\n        return Promise.all(this.current.dependencies);\n      },\n      transform: function SVGGraphics_transform(a, b, c, d, e, f) {\n        var transformMatrix = [a, b, c, d, e, f];\n        this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n        this.tgrp = null;\n      },\n      getSVG: function SVGGraphics_getSVG(operatorList, viewport) {\n        var _this2 = this;\n\n        this.viewport = viewport;\n        var svgElement = this._initialize(viewport);\n        return this.loadDependencies(operatorList).then(function () {\n          _this2.transformMatrix = _util.IDENTITY_MATRIX;\n          var opTree = _this2.convertOpList(operatorList);\n          _this2.executeOpTree(opTree);\n          return svgElement;\n        });\n      },\n      convertOpList: function SVGGraphics_convertOpList(operatorList) {\n        var argsArray = operatorList.argsArray;\n        var fnArray = operatorList.fnArray;\n        var fnArrayLen = fnArray.length;\n        var REVOPS = [];\n        var opList = [];\n        for (var op in _util.OPS) {\n          REVOPS[_util.OPS[op]] = op;\n        }\n        for (var x = 0; x < fnArrayLen; x++) {\n          var fnId = fnArray[x];\n          opList.push({\n            'fnId': fnId,\n            'fn': REVOPS[fnId],\n            'args': argsArray[x]\n          });\n        }\n        return opListToTree(opList);\n      },\n      executeOpTree: function SVGGraphics_executeOpTree(opTree) {\n        var opTreeLen = opTree.length;\n        for (var x = 0; x < opTreeLen; x++) {\n          var fn = opTree[x].fn;\n          var fnId = opTree[x].fnId;\n          var args = opTree[x].args;\n          switch (fnId | 0) {\n            case _util.OPS.beginText:\n              this.beginText();\n              break;\n            case _util.OPS.dependency:\n              break;\n            case _util.OPS.setLeading:\n              this.setLeading(args);\n              break;\n            case _util.OPS.setLeadingMoveText:\n              this.setLeadingMoveText(args[0], args[1]);\n              break;\n            case _util.OPS.setFont:\n              this.setFont(args);\n              break;\n            case _util.OPS.showText:\n              this.showText(args[0]);\n              break;\n            case _util.OPS.showSpacedText:\n              this.showText(args[0]);\n              break;\n            case _util.OPS.endText:\n              this.endText();\n              break;\n            case _util.OPS.moveText:\n              this.moveText(args[0], args[1]);\n              break;\n            case _util.OPS.setCharSpacing:\n              this.setCharSpacing(args[0]);\n              break;\n            case _util.OPS.setWordSpacing:\n              this.setWordSpacing(args[0]);\n              break;\n            case _util.OPS.setHScale:\n              this.setHScale(args[0]);\n              break;\n            case _util.OPS.setTextMatrix:\n              this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n              break;\n            case _util.OPS.setTextRise:\n              this.setTextRise(args[0]);\n              break;\n            case _util.OPS.setTextRenderingMode:\n              this.setTextRenderingMode(args[0]);\n              break;\n            case _util.OPS.setLineWidth:\n              this.setLineWidth(args[0]);\n              break;\n            case _util.OPS.setLineJoin:\n              this.setLineJoin(args[0]);\n              break;\n            case _util.OPS.setLineCap:\n              this.setLineCap(args[0]);\n              break;\n            case _util.OPS.setMiterLimit:\n              this.setMiterLimit(args[0]);\n              break;\n            case _util.OPS.setFillRGBColor:\n              this.setFillRGBColor(args[0], args[1], args[2]);\n              break;\n            case _util.OPS.setStrokeRGBColor:\n              this.setStrokeRGBColor(args[0], args[1], args[2]);\n              break;\n            case _util.OPS.setDash:\n              this.setDash(args[0], args[1]);\n              break;\n            case _util.OPS.setGState:\n              this.setGState(args[0]);\n              break;\n            case _util.OPS.fill:\n              this.fill();\n              break;\n            case _util.OPS.eoFill:\n              this.eoFill();\n              break;\n            case _util.OPS.stroke:\n              this.stroke();\n              break;\n            case _util.OPS.fillStroke:\n              this.fillStroke();\n              break;\n            case _util.OPS.eoFillStroke:\n              this.eoFillStroke();\n              break;\n            case _util.OPS.clip:\n              this.clip('nonzero');\n              break;\n            case _util.OPS.eoClip:\n              this.clip('evenodd');\n              break;\n            case _util.OPS.paintSolidColorImageMask:\n              this.paintSolidColorImageMask();\n              break;\n            case _util.OPS.paintJpegXObject:\n              this.paintJpegXObject(args[0], args[1], args[2]);\n              break;\n            case _util.OPS.paintImageXObject:\n              this.paintImageXObject(args[0]);\n              break;\n            case _util.OPS.paintInlineImageXObject:\n              this.paintInlineImageXObject(args[0]);\n              break;\n            case _util.OPS.paintImageMaskXObject:\n              this.paintImageMaskXObject(args[0]);\n              break;\n            case _util.OPS.paintFormXObjectBegin:\n              this.paintFormXObjectBegin(args[0], args[1]);\n              break;\n            case _util.OPS.paintFormXObjectEnd:\n              this.paintFormXObjectEnd();\n              break;\n            case _util.OPS.closePath:\n              this.closePath();\n              break;\n            case _util.OPS.closeStroke:\n              this.closeStroke();\n              break;\n            case _util.OPS.closeFillStroke:\n              this.closeFillStroke();\n              break;\n            case _util.OPS.closeEOFillStroke:\n              this.closeEOFillStroke();\n              break;\n            case _util.OPS.nextLine:\n              this.nextLine();\n              break;\n            case _util.OPS.transform:\n              this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n              break;\n            case _util.OPS.constructPath:\n              this.constructPath(args[0], args[1]);\n              break;\n            case _util.OPS.endPath:\n              this.endPath();\n              break;\n            case 92:\n              this.group(opTree[x].items);\n              break;\n            default:\n              (0, _util.warn)('Unimplemented operator ' + fn);\n              break;\n          }\n        }\n      },\n      setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) {\n        this.current.wordSpacing = wordSpacing;\n      },\n      setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) {\n        this.current.charSpacing = charSpacing;\n      },\n      nextLine: function SVGGraphics_nextLine() {\n        this.moveText(0, this.current.leading);\n      },\n      setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) {\n        var current = this.current;\n        this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f];\n        this.current.x = this.current.lineX = 0;\n        this.current.y = this.current.lineY = 0;\n        current.xcoords = [];\n        current.tspan = this.svgFactory.createElement('svg:tspan');\n        current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n        current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');\n        current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n        current.txtElement = this.svgFactory.createElement('svg:text');\n        current.txtElement.appendChild(current.tspan);\n      },\n      beginText: function SVGGraphics_beginText() {\n        this.current.x = this.current.lineX = 0;\n        this.current.y = this.current.lineY = 0;\n        this.current.textMatrix = _util.IDENTITY_MATRIX;\n        this.current.lineMatrix = _util.IDENTITY_MATRIX;\n        this.current.tspan = this.svgFactory.createElement('svg:tspan');\n        this.current.txtElement = this.svgFactory.createElement('svg:text');\n        this.current.txtgrp = this.svgFactory.createElement('svg:g');\n        this.current.xcoords = [];\n      },\n      moveText: function SVGGraphics_moveText(x, y) {\n        var current = this.current;\n        this.current.x = this.current.lineX += x;\n        this.current.y = this.current.lineY += y;\n        current.xcoords = [];\n        current.tspan = this.svgFactory.createElement('svg:tspan');\n        current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n        current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');\n        current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n      },\n      showText: function SVGGraphics_showText(glyphs) {\n        var current = this.current;\n        var font = current.font;\n        var fontSize = current.fontSize;\n        if (fontSize === 0) {\n          return;\n        }\n        var charSpacing = current.charSpacing;\n        var wordSpacing = current.wordSpacing;\n        var fontDirection = current.fontDirection;\n        var textHScale = current.textHScale * fontDirection;\n        var glyphsLength = glyphs.length;\n        var vertical = font.vertical;\n        var widthAdvanceScale = fontSize * current.fontMatrix[0];\n        var x = 0,\n            i;\n        for (i = 0; i < glyphsLength; ++i) {\n          var glyph = glyphs[i];\n          if (glyph === null) {\n            x += fontDirection * wordSpacing;\n            continue;\n          } else if ((0, _util.isNum)(glyph)) {\n            x += -glyph * fontSize * 0.001;\n            continue;\n          }\n          var width = glyph.width;\n          var character = glyph.fontChar;\n          var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n          var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n          if (!glyph.isInFont && !font.missingFile) {\n            x += charWidth;\n            continue;\n          }\n          current.xcoords.push(current.x + x * textHScale);\n          current.tspan.textContent += character;\n          x += charWidth;\n        }\n        if (vertical) {\n          current.y -= x * textHScale;\n        } else {\n          current.x += x * textHScale;\n        }\n        current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' '));\n        current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n        current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n        current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');\n        if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n          current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);\n        }\n        if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n          current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);\n        }\n        var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n          if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n            current.tspan.setAttributeNS(null, 'fill', current.fillColor);\n          }\n          if (current.fillAlpha < 1) {\n            current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha);\n          }\n        } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n          current.tspan.setAttributeNS(null, 'fill', 'transparent');\n        } else {\n          current.tspan.setAttributeNS(null, 'fill', 'none');\n        }\n        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n          this._setStrokeAttributes(current.tspan);\n        }\n        var textMatrix = current.textMatrix;\n        if (current.textRise !== 0) {\n          textMatrix = textMatrix.slice();\n          textMatrix[5] += current.textRise;\n        }\n        current.txtElement.setAttributeNS(null, 'transform', pm(textMatrix) + ' scale(1, -1)');\n        current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');\n        current.txtElement.appendChild(current.tspan);\n        current.txtgrp.appendChild(current.txtElement);\n        this._ensureTransformGroup().appendChild(current.txtElement);\n      },\n      setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {\n        this.setLeading(-y);\n        this.moveText(x, y);\n      },\n      addFontStyle: function SVGGraphics_addFontStyle(fontObj) {\n        if (!this.cssStyle) {\n          this.cssStyle = this.svgFactory.createElement('svg:style');\n          this.cssStyle.setAttributeNS(null, 'type', 'text/css');\n          this.defs.appendChild(this.cssStyle);\n        }\n        var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n        this.cssStyle.textContent += '@font-face { font-family: \"' + fontObj.loadedName + '\";' + ' src: url(' + url + '); }\\n';\n      },\n      setFont: function SVGGraphics_setFont(details) {\n        var current = this.current;\n        var fontObj = this.commonObjs.get(details[0]);\n        var size = details[1];\n        this.current.font = fontObj;\n        if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) {\n          this.addFontStyle(fontObj);\n          this.embeddedFonts[fontObj.loadedName] = fontObj;\n        }\n        current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;\n        var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal';\n        var italic = fontObj.italic ? 'italic' : 'normal';\n        if (size < 0) {\n          size = -size;\n          current.fontDirection = -1;\n        } else {\n          current.fontDirection = 1;\n        }\n        current.fontSize = size;\n        current.fontFamily = fontObj.loadedName;\n        current.fontWeight = bold;\n        current.fontStyle = italic;\n        current.tspan = this.svgFactory.createElement('svg:tspan');\n        current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n        current.xcoords = [];\n      },\n      endText: function endText() {\n        var current = this.current;\n        if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {\n          current.element = current.txtElement;\n          this.clip('nonzero');\n          this.endPath();\n        }\n      },\n\n      setLineWidth: function SVGGraphics_setLineWidth(width) {\n        this.current.lineWidth = width;\n      },\n      setLineCap: function SVGGraphics_setLineCap(style) {\n        this.current.lineCap = LINE_CAP_STYLES[style];\n      },\n      setLineJoin: function SVGGraphics_setLineJoin(style) {\n        this.current.lineJoin = LINE_JOIN_STYLES[style];\n      },\n      setMiterLimit: function SVGGraphics_setMiterLimit(limit) {\n        this.current.miterLimit = limit;\n      },\n      setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) {\n        this.current.strokeAlpha = strokeAlpha;\n      },\n      setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {\n        var color = _util.Util.makeCssRgb(r, g, b);\n        this.current.strokeColor = color;\n      },\n      setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) {\n        this.current.fillAlpha = fillAlpha;\n      },\n      setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {\n        var color = _util.Util.makeCssRgb(r, g, b);\n        this.current.fillColor = color;\n        this.current.tspan = this.svgFactory.createElement('svg:tspan');\n        this.current.xcoords = [];\n      },\n      setDash: function SVGGraphics_setDash(dashArray, dashPhase) {\n        this.current.dashArray = dashArray;\n        this.current.dashPhase = dashPhase;\n      },\n      constructPath: function SVGGraphics_constructPath(ops, args) {\n        var current = this.current;\n        var x = current.x,\n            y = current.y;\n        current.path = this.svgFactory.createElement('svg:path');\n        var d = [];\n        var opLength = ops.length;\n        for (var i = 0, j = 0; i < opLength; i++) {\n          switch (ops[i] | 0) {\n            case _util.OPS.rectangle:\n              x = args[j++];\n              y = args[j++];\n              var width = args[j++];\n              var height = args[j++];\n              var xw = x + width;\n              var yh = y + height;\n              d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z');\n              break;\n            case _util.OPS.moveTo:\n              x = args[j++];\n              y = args[j++];\n              d.push('M', pf(x), pf(y));\n              break;\n            case _util.OPS.lineTo:\n              x = args[j++];\n              y = args[j++];\n              d.push('L', pf(x), pf(y));\n              break;\n            case _util.OPS.curveTo:\n              x = args[j + 4];\n              y = args[j + 5];\n              d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n              j += 6;\n              break;\n            case _util.OPS.curveTo2:\n              x = args[j + 2];\n              y = args[j + 3];\n              d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n              j += 4;\n              break;\n            case _util.OPS.curveTo3:\n              x = args[j + 2];\n              y = args[j + 3];\n              d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n              j += 4;\n              break;\n            case _util.OPS.closePath:\n              d.push('Z');\n              break;\n          }\n        }\n        current.path.setAttributeNS(null, 'd', d.join(' '));\n        current.path.setAttributeNS(null, 'fill', 'none');\n        this._ensureTransformGroup().appendChild(current.path);\n        current.element = current.path;\n        current.setCurrentPoint(x, y);\n      },\n      endPath: function SVGGraphics_endPath() {\n        if (!this.pendingClip) {\n          return;\n        }\n        var current = this.current;\n        var clipId = 'clippath' + clipCount;\n        clipCount++;\n        var clipPath = this.svgFactory.createElement('svg:clipPath');\n        clipPath.setAttributeNS(null, 'id', clipId);\n        clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n        var clipElement = current.element.cloneNode(true);\n        if (this.pendingClip === 'evenodd') {\n          clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');\n        } else {\n          clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');\n        }\n        this.pendingClip = null;\n        clipPath.appendChild(clipElement);\n        this.defs.appendChild(clipPath);\n        if (current.activeClipUrl) {\n          current.clipGroup = null;\n          this.extraStack.forEach(function (prev) {\n            prev.clipGroup = null;\n          });\n          clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl);\n        }\n        current.activeClipUrl = 'url(#' + clipId + ')';\n        this.tgrp = null;\n      },\n      clip: function SVGGraphics_clip(type) {\n        this.pendingClip = type;\n      },\n      closePath: function SVGGraphics_closePath() {\n        var current = this.current;\n        if (current.path) {\n          var d = current.path.getAttributeNS(null, 'd');\n          d += 'Z';\n          current.path.setAttributeNS(null, 'd', d);\n        }\n      },\n      setLeading: function SVGGraphics_setLeading(leading) {\n        this.current.leading = -leading;\n      },\n      setTextRise: function SVGGraphics_setTextRise(textRise) {\n        this.current.textRise = textRise;\n      },\n      setTextRenderingMode: function setTextRenderingMode(textRenderingMode) {\n        this.current.textRenderingMode = textRenderingMode;\n      },\n\n      setHScale: function SVGGraphics_setHScale(scale) {\n        this.current.textHScale = scale / 100;\n      },\n      setGState: function SVGGraphics_setGState(states) {\n        for (var i = 0, ii = states.length; i < ii; i++) {\n          var state = states[i];\n          var key = state[0];\n          var value = state[1];\n          switch (key) {\n            case 'LW':\n              this.setLineWidth(value);\n              break;\n            case 'LC':\n              this.setLineCap(value);\n              break;\n            case 'LJ':\n              this.setLineJoin(value);\n              break;\n            case 'ML':\n              this.setMiterLimit(value);\n              break;\n            case 'D':\n              this.setDash(value[0], value[1]);\n              break;\n            case 'Font':\n              this.setFont(value);\n              break;\n            case 'CA':\n              this.setStrokeAlpha(value);\n              break;\n            case 'ca':\n              this.setFillAlpha(value);\n              break;\n            default:\n              (0, _util.warn)('Unimplemented graphic state ' + key);\n              break;\n          }\n        }\n      },\n      fill: function SVGGraphics_fill() {\n        var current = this.current;\n        if (current.element) {\n          current.element.setAttributeNS(null, 'fill', current.fillColor);\n          current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);\n          this.endPath();\n        }\n      },\n      stroke: function SVGGraphics_stroke() {\n        var current = this.current;\n        if (current.element) {\n          this._setStrokeAttributes(current.element);\n          current.element.setAttributeNS(null, 'fill', 'none');\n          this.endPath();\n        }\n      },\n      _setStrokeAttributes: function _setStrokeAttributes(element) {\n        var current = this.current;\n        element.setAttributeNS(null, 'stroke', current.strokeColor);\n        element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha);\n        element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit));\n        element.setAttributeNS(null, 'stroke-linecap', current.lineCap);\n        element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);\n        element.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px');\n        element.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' '));\n        element.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px');\n      },\n\n      eoFill: function SVGGraphics_eoFill() {\n        if (this.current.element) {\n          this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n        }\n        this.fill();\n      },\n      fillStroke: function SVGGraphics_fillStroke() {\n        this.stroke();\n        this.fill();\n      },\n      eoFillStroke: function SVGGraphics_eoFillStroke() {\n        if (this.current.element) {\n          this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n        }\n        this.fillStroke();\n      },\n      closeStroke: function SVGGraphics_closeStroke() {\n        this.closePath();\n        this.stroke();\n      },\n      closeFillStroke: function SVGGraphics_closeFillStroke() {\n        this.closePath();\n        this.fillStroke();\n      },\n      closeEOFillStroke: function closeEOFillStroke() {\n        this.closePath();\n        this.eoFillStroke();\n      },\n\n      paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() {\n        var current = this.current;\n        var rect = this.svgFactory.createElement('svg:rect');\n        rect.setAttributeNS(null, 'x', '0');\n        rect.setAttributeNS(null, 'y', '0');\n        rect.setAttributeNS(null, 'width', '1px');\n        rect.setAttributeNS(null, 'height', '1px');\n        rect.setAttributeNS(null, 'fill', current.fillColor);\n        this._ensureTransformGroup().appendChild(rect);\n      },\n      paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {\n        var imgObj = this.objs.get(objId);\n        var imgEl = this.svgFactory.createElement('svg:image');\n        imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);\n        imgEl.setAttributeNS(null, 'width', pf(w));\n        imgEl.setAttributeNS(null, 'height', pf(h));\n        imgEl.setAttributeNS(null, 'x', '0');\n        imgEl.setAttributeNS(null, 'y', pf(-h));\n        imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');\n        this._ensureTransformGroup().appendChild(imgEl);\n      },\n      paintImageXObject: function SVGGraphics_paintImageXObject(objId) {\n        var imgData = this.objs.get(objId);\n        if (!imgData) {\n          (0, _util.warn)('Dependent image isn\\'t ready yet');\n          return;\n        }\n        this.paintInlineImageXObject(imgData);\n      },\n      paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) {\n        var width = imgData.width;\n        var height = imgData.height;\n        var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n        var cliprect = this.svgFactory.createElement('svg:rect');\n        cliprect.setAttributeNS(null, 'x', '0');\n        cliprect.setAttributeNS(null, 'y', '0');\n        cliprect.setAttributeNS(null, 'width', pf(width));\n        cliprect.setAttributeNS(null, 'height', pf(height));\n        this.current.element = cliprect;\n        this.clip('nonzero');\n        var imgEl = this.svgFactory.createElement('svg:image');\n        imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);\n        imgEl.setAttributeNS(null, 'x', '0');\n        imgEl.setAttributeNS(null, 'y', pf(-height));\n        imgEl.setAttributeNS(null, 'width', pf(width) + 'px');\n        imgEl.setAttributeNS(null, 'height', pf(height) + 'px');\n        imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')');\n        if (mask) {\n          mask.appendChild(imgEl);\n        } else {\n          this._ensureTransformGroup().appendChild(imgEl);\n        }\n      },\n      paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) {\n        var current = this.current;\n        var width = imgData.width;\n        var height = imgData.height;\n        var fillColor = current.fillColor;\n        current.maskId = 'mask' + maskCount++;\n        var mask = this.svgFactory.createElement('svg:mask');\n        mask.setAttributeNS(null, 'id', current.maskId);\n        var rect = this.svgFactory.createElement('svg:rect');\n        rect.setAttributeNS(null, 'x', '0');\n        rect.setAttributeNS(null, 'y', '0');\n        rect.setAttributeNS(null, 'width', pf(width));\n        rect.setAttributeNS(null, 'height', pf(height));\n        rect.setAttributeNS(null, 'fill', fillColor);\n        rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')');\n        this.defs.appendChild(mask);\n        this._ensureTransformGroup().appendChild(rect);\n        this.paintInlineImageXObject(imgData, mask);\n      },\n      paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {\n        if (Array.isArray(matrix) && matrix.length === 6) {\n          this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n        }\n        if (Array.isArray(bbox) && bbox.length === 4) {\n          var width = bbox[2] - bbox[0];\n          var height = bbox[3] - bbox[1];\n          var cliprect = this.svgFactory.createElement('svg:rect');\n          cliprect.setAttributeNS(null, 'x', bbox[0]);\n          cliprect.setAttributeNS(null, 'y', bbox[1]);\n          cliprect.setAttributeNS(null, 'width', pf(width));\n          cliprect.setAttributeNS(null, 'height', pf(height));\n          this.current.element = cliprect;\n          this.clip('nonzero');\n          this.endPath();\n        }\n      },\n      paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {},\n      _initialize: function _initialize(viewport) {\n        var svg = this.svgFactory.create(viewport.width, viewport.height);\n        var definitions = this.svgFactory.createElement('svg:defs');\n        svg.appendChild(definitions);\n        this.defs = definitions;\n        var rootGroup = this.svgFactory.createElement('svg:g');\n        rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform));\n        svg.appendChild(rootGroup);\n        this.svg = rootGroup;\n        return svg;\n      },\n\n      _ensureClipGroup: function SVGGraphics_ensureClipGroup() {\n        if (!this.current.clipGroup) {\n          var clipGroup = this.svgFactory.createElement('svg:g');\n          clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl);\n          this.svg.appendChild(clipGroup);\n          this.current.clipGroup = clipGroup;\n        }\n        return this.current.clipGroup;\n      },\n      _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() {\n        if (!this.tgrp) {\n          this.tgrp = this.svgFactory.createElement('svg:g');\n          this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n          if (this.current.activeClipUrl) {\n            this._ensureClipGroup().appendChild(this.tgrp);\n          } else {\n            this.svg.appendChild(this.tgrp);\n          }\n        }\n        return this.tgrp;\n      }\n    };\n    return SVGGraphics;\n  }();\n}\nexports.SVGGraphics = SVGGraphics;\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFNodeStream = undefined;\n\nvar _regenerator = __w_pdfjs_require__(137);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(149);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar fs = require('fs');\nvar http = require('http');\nvar https = require('https');\nvar url = require('url');\n\nvar fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\nfunction parseUrl(sourceUrl) {\n  var parsedUrl = url.parse(sourceUrl);\n  if (parsedUrl.protocol === 'file:' || parsedUrl.host) {\n    return parsedUrl;\n  }\n  if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n    return url.parse('file:///' + sourceUrl);\n  }\n  if (!parsedUrl.host) {\n    parsedUrl.protocol = 'file:';\n  }\n  return parsedUrl;\n}\n\nvar PDFNodeStream = function () {\n  function PDFNodeStream(source) {\n    _classCallCheck(this, PDFNodeStream);\n\n    this.source = source;\n    this.url = parseUrl(source.url);\n    this.isHttp = this.url.protocol === 'http:' || this.url.protocol === 'https:';\n    this.isFsUrl = this.url.protocol === 'file:';\n    this.httpHeaders = this.isHttp && source.httpHeaders || {};\n    this._fullRequest = null;\n    this._rangeRequestReaders = [];\n  }\n\n  _createClass(PDFNodeStream, [{\n    key: 'getFullReader',\n    value: function getFullReader() {\n      (0, _util.assert)(!this._fullRequest);\n      this._fullRequest = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n      return this._fullRequest;\n    }\n  }, {\n    key: 'getRangeReader',\n    value: function getRangeReader(start, end) {\n      var rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n      this._rangeRequestReaders.push(rangeReader);\n      return rangeReader;\n    }\n  }, {\n    key: 'cancelAllRequests',\n    value: function cancelAllRequests(reason) {\n      if (this._fullRequest) {\n        this._fullRequest.cancel(reason);\n      }\n      var readers = this._rangeRequestReaders.slice(0);\n      readers.forEach(function (reader) {\n        reader.cancel(reason);\n      });\n    }\n  }]);\n\n  return PDFNodeStream;\n}();\n\nvar BaseFullReader = function () {\n  function BaseFullReader(stream) {\n    _classCallCheck(this, BaseFullReader);\n\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    var source = stream.source;\n    this._contentLength = source.length;\n    this._loaded = 0;\n    this._filename = null;\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    this._readableStream = null;\n    this._readCapability = (0, _util.createPromiseCapability)();\n    this._headersCapability = (0, _util.createPromiseCapability)();\n  }\n\n  _createClass(BaseFullReader, [{\n    key: 'read',\n    value: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n        var chunk, buffer;\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return this._readCapability.promise;\n\n              case 2:\n                if (!this._done) {\n                  _context.next = 4;\n                  break;\n                }\n\n                return _context.abrupt('return', {\n                  value: undefined,\n                  done: true\n                });\n\n              case 4:\n                if (!this._storedError) {\n                  _context.next = 6;\n                  break;\n                }\n\n                throw this._storedError;\n\n              case 6:\n                chunk = this._readableStream.read();\n\n                if (!(chunk === null)) {\n                  _context.next = 10;\n                  break;\n                }\n\n                this._readCapability = (0, _util.createPromiseCapability)();\n                return _context.abrupt('return', this.read());\n\n              case 10:\n                this._loaded += chunk.length;\n                if (this.onProgress) {\n                  this.onProgress({\n                    loaded: this._loaded,\n                    total: this._contentLength\n                  });\n                }\n                buffer = new Uint8Array(chunk).buffer;\n                return _context.abrupt('return', {\n                  value: buffer,\n                  done: false\n                });\n\n              case 14:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function read() {\n        return _ref.apply(this, arguments);\n      }\n\n      return read;\n    }()\n  }, {\n    key: 'cancel',\n    value: function cancel(reason) {\n      if (!this._readableStream) {\n        this._error(reason);\n        return;\n      }\n      this._readableStream.destroy(reason);\n    }\n  }, {\n    key: '_error',\n    value: function _error(reason) {\n      this._storedError = reason;\n      this._readCapability.resolve();\n    }\n  }, {\n    key: '_setReadableStream',\n    value: function _setReadableStream(readableStream) {\n      var _this = this;\n\n      this._readableStream = readableStream;\n      readableStream.on('readable', function () {\n        _this._readCapability.resolve();\n      });\n      readableStream.on('end', function () {\n        readableStream.destroy();\n        _this._done = true;\n        _this._readCapability.resolve();\n      });\n      readableStream.on('error', function (reason) {\n        _this._error(reason);\n      });\n      if (!this._isStreamingSupported && this._isRangeSupported) {\n        this._error(new _util.AbortException('streaming is disabled'));\n      }\n      if (this._storedError) {\n        this._readableStream.destroy(this._storedError);\n      }\n    }\n  }, {\n    key: 'headersReady',\n    get: function get() {\n      return this._headersCapability.promise;\n    }\n  }, {\n    key: 'filename',\n    get: function get() {\n      return this._filename;\n    }\n  }, {\n    key: 'contentLength',\n    get: function get() {\n      return this._contentLength;\n    }\n  }, {\n    key: 'isRangeSupported',\n    get: function get() {\n      return this._isRangeSupported;\n    }\n  }, {\n    key: 'isStreamingSupported',\n    get: function get() {\n      return this._isStreamingSupported;\n    }\n  }]);\n\n  return BaseFullReader;\n}();\n\nvar BaseRangeReader = function () {\n  function BaseRangeReader(stream) {\n    _classCallCheck(this, BaseRangeReader);\n\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    this._loaded = 0;\n    this._readableStream = null;\n    this._readCapability = (0, _util.createPromiseCapability)();\n    var source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n  }\n\n  _createClass(BaseRangeReader, [{\n    key: 'read',\n    value: function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n        var chunk, buffer;\n        return _regenerator2.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return this._readCapability.promise;\n\n              case 2:\n                if (!this._done) {\n                  _context2.next = 4;\n                  break;\n                }\n\n                return _context2.abrupt('return', {\n                  value: undefined,\n                  done: true\n                });\n\n              case 4:\n                if (!this._storedError) {\n                  _context2.next = 6;\n                  break;\n                }\n\n                throw this._storedError;\n\n              case 6:\n                chunk = this._readableStream.read();\n\n                if (!(chunk === null)) {\n                  _context2.next = 10;\n                  break;\n                }\n\n                this._readCapability = (0, _util.createPromiseCapability)();\n                return _context2.abrupt('return', this.read());\n\n              case 10:\n                this._loaded += chunk.length;\n                if (this.onProgress) {\n                  this.onProgress({ loaded: this._loaded });\n                }\n                buffer = new Uint8Array(chunk).buffer;\n                return _context2.abrupt('return', {\n                  value: buffer,\n                  done: false\n                });\n\n              case 14:\n              case 'end':\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function read() {\n        return _ref2.apply(this, arguments);\n      }\n\n      return read;\n    }()\n  }, {\n    key: 'cancel',\n    value: function cancel(reason) {\n      if (!this._readableStream) {\n        this._error(reason);\n        return;\n      }\n      this._readableStream.destroy(reason);\n    }\n  }, {\n    key: '_error',\n    value: function _error(reason) {\n      this._storedError = reason;\n      this._readCapability.resolve();\n    }\n  }, {\n    key: '_setReadableStream',\n    value: function _setReadableStream(readableStream) {\n      var _this2 = this;\n\n      this._readableStream = readableStream;\n      readableStream.on('readable', function () {\n        _this2._readCapability.resolve();\n      });\n      readableStream.on('end', function () {\n        readableStream.destroy();\n        _this2._done = true;\n        _this2._readCapability.resolve();\n      });\n      readableStream.on('error', function (reason) {\n        _this2._error(reason);\n      });\n      if (this._storedError) {\n        this._readableStream.destroy(this._storedError);\n      }\n    }\n  }, {\n    key: 'isStreamingSupported',\n    get: function get() {\n      return this._isStreamingSupported;\n    }\n  }]);\n\n  return BaseRangeReader;\n}();\n\nfunction createRequestOptions(url, headers) {\n  return {\n    protocol: url.protocol,\n    auth: url.auth,\n    host: url.hostname,\n    port: url.port,\n    path: url.path,\n    method: 'GET',\n    headers: headers\n  };\n}\n\nvar PDFNodeStreamFullReader = function (_BaseFullReader) {\n  _inherits(PDFNodeStreamFullReader, _BaseFullReader);\n\n  function PDFNodeStreamFullReader(stream) {\n    _classCallCheck(this, PDFNodeStreamFullReader);\n\n    var _this3 = _possibleConstructorReturn(this, (PDFNodeStreamFullReader.__proto__ || Object.getPrototypeOf(PDFNodeStreamFullReader)).call(this, stream));\n\n    var handleResponse = function handleResponse(response) {\n      if (response.statusCode === 404) {\n        var error = new _util.MissingPDFException('Missing PDF \"' + _this3._url + '\".');\n        _this3._storedError = error;\n        _this3._headersCapability.reject(error);\n        return;\n      }\n      _this3._headersCapability.resolve();\n      _this3._setReadableStream(response);\n      var getResponseHeader = function getResponseHeader(name) {\n        return _this3._readableStream.headers[name.toLowerCase()];\n      };\n\n      var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({\n        getResponseHeader: getResponseHeader,\n        isHttp: stream.isHttp,\n        rangeChunkSize: _this3._rangeChunkSize,\n        disableRange: _this3._disableRange\n      }),\n          allowRangeRequests = _validateRangeRequest.allowRangeRequests,\n          suggestedLength = _validateRangeRequest.suggestedLength;\n\n      _this3._isRangeSupported = allowRangeRequests;\n      _this3._contentLength = suggestedLength || _this3._contentLength;\n      _this3._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n    };\n    _this3._request = null;\n    if (_this3._url.protocol === 'http:') {\n      _this3._request = http.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);\n    } else {\n      _this3._request = https.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);\n    }\n    _this3._request.on('error', function (reason) {\n      _this3._storedError = reason;\n      _this3._headersCapability.reject(reason);\n    });\n    _this3._request.end();\n    return _this3;\n  }\n\n  return PDFNodeStreamFullReader;\n}(BaseFullReader);\n\nvar PDFNodeStreamRangeReader = function (_BaseRangeReader) {\n  _inherits(PDFNodeStreamRangeReader, _BaseRangeReader);\n\n  function PDFNodeStreamRangeReader(stream, start, end) {\n    _classCallCheck(this, PDFNodeStreamRangeReader);\n\n    var _this4 = _possibleConstructorReturn(this, (PDFNodeStreamRangeReader.__proto__ || Object.getPrototypeOf(PDFNodeStreamRangeReader)).call(this, stream));\n\n    _this4._httpHeaders = {};\n    for (var property in stream.httpHeaders) {\n      var value = stream.httpHeaders[property];\n      if (typeof value === 'undefined') {\n        continue;\n      }\n      _this4._httpHeaders[property] = value;\n    }\n    _this4._httpHeaders['Range'] = 'bytes=' + start + '-' + (end - 1);\n    var handleResponse = function handleResponse(response) {\n      if (response.statusCode === 404) {\n        var error = new _util.MissingPDFException('Missing PDF \"' + _this4._url + '\".');\n        _this4._storedError = error;\n        return;\n      }\n      _this4._setReadableStream(response);\n    };\n    _this4._request = null;\n    if (_this4._url.protocol === 'http:') {\n      _this4._request = http.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);\n    } else {\n      _this4._request = https.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);\n    }\n    _this4._request.on('error', function (reason) {\n      _this4._storedError = reason;\n    });\n    _this4._request.end();\n    return _this4;\n  }\n\n  return PDFNodeStreamRangeReader;\n}(BaseRangeReader);\n\nvar PDFNodeStreamFsFullReader = function (_BaseFullReader2) {\n  _inherits(PDFNodeStreamFsFullReader, _BaseFullReader2);\n\n  function PDFNodeStreamFsFullReader(stream) {\n    _classCallCheck(this, PDFNodeStreamFsFullReader);\n\n    var _this5 = _possibleConstructorReturn(this, (PDFNodeStreamFsFullReader.__proto__ || Object.getPrototypeOf(PDFNodeStreamFsFullReader)).call(this, stream));\n\n    var path = decodeURIComponent(_this5._url.path);\n    if (fileUriRegex.test(_this5._url.href)) {\n      path = path.replace(/^\\//, '');\n    }\n    fs.lstat(path, function (error, stat) {\n      if (error) {\n        if (error.code === 'ENOENT') {\n          error = new _util.MissingPDFException('Missing PDF \"' + path + '\".');\n        }\n        _this5._storedError = error;\n        _this5._headersCapability.reject(error);\n        return;\n      }\n      _this5._contentLength = stat.size;\n      _this5._setReadableStream(fs.createReadStream(path));\n      _this5._headersCapability.resolve();\n    });\n    return _this5;\n  }\n\n  return PDFNodeStreamFsFullReader;\n}(BaseFullReader);\n\nvar PDFNodeStreamFsRangeReader = function (_BaseRangeReader2) {\n  _inherits(PDFNodeStreamFsRangeReader, _BaseRangeReader2);\n\n  function PDFNodeStreamFsRangeReader(stream, start, end) {\n    _classCallCheck(this, PDFNodeStreamFsRangeReader);\n\n    var _this6 = _possibleConstructorReturn(this, (PDFNodeStreamFsRangeReader.__proto__ || Object.getPrototypeOf(PDFNodeStreamFsRangeReader)).call(this, stream));\n\n    var path = decodeURIComponent(_this6._url.path);\n    if (fileUriRegex.test(_this6._url.href)) {\n      path = path.replace(/^\\//, '');\n    }\n    _this6._setReadableStream(fs.createReadStream(path, {\n      start: start,\n      end: end - 1\n    }));\n    return _this6;\n  }\n\n  return PDFNodeStreamFsRangeReader;\n}(BaseRangeReader);\n\nexports.PDFNodeStream = PDFNodeStream;\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.validateResponseStatus = exports.validateRangeRequestCapabilities = exports.extractFilenameFromHeader = exports.createResponseStatusError = undefined;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _content_disposition = __w_pdfjs_require__(150);\n\nfunction validateRangeRequestCapabilities(_ref) {\n  var getResponseHeader = _ref.getResponseHeader,\n      isHttp = _ref.isHttp,\n      rangeChunkSize = _ref.rangeChunkSize,\n      disableRange = _ref.disableRange;\n\n  (0, _util.assert)(rangeChunkSize > 0, 'Range chunk size must be larger than zero');\n  var returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined\n  };\n  var length = parseInt(getResponseHeader('Content-Length'), 10);\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n  returnValues.suggestedLength = length;\n  if (length <= 2 * rangeChunkSize) {\n    return returnValues;\n  }\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n  if (getResponseHeader('Accept-Ranges') !== 'bytes') {\n    return returnValues;\n  }\n  var contentEncoding = getResponseHeader('Content-Encoding') || 'identity';\n  if (contentEncoding !== 'identity') {\n    return returnValues;\n  }\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\nfunction extractFilenameFromHeader(getResponseHeader) {\n  var contentDisposition = getResponseHeader('Content-Disposition');\n  if (contentDisposition) {\n    var filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);\n    if (/\\.pdf$/i.test(filename)) {\n      return filename;\n    }\n  }\n  return null;\n}\nfunction createResponseStatusError(status, url) {\n  if (status === 404 || status === 0 && /^file:/.test(url)) {\n    return new _util.MissingPDFException('Missing PDF \"' + url + '\".');\n  }\n  return new _util.UnexpectedResponseException('Unexpected server response (' + status + ') while retrieving PDF \"' + url + '\".', status);\n}\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\nexports.createResponseStatusError = createResponseStatusError;\nexports.extractFilenameFromHeader = extractFilenameFromHeader;\nexports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;\nexports.validateResponseStatus = validateResponseStatus;\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  var needsEncodingFixup = true;\n  var tmp = toParamRegExp('filename\\\\*', 'i').exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    var filename = rfc2616unquote(tmp);\n    filename = unescape(filename);\n    filename = rfc5987decode(filename);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n  tmp = rfc2231getparam(contentDisposition);\n  if (tmp) {\n    var _filename = rfc2047decode(tmp);\n    return fixupEncoding(_filename);\n  }\n  tmp = toParamRegExp('filename', 'i').exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    var _filename2 = rfc2616unquote(tmp);\n    _filename2 = rfc2047decode(_filename2);\n    return fixupEncoding(_filename2);\n  }\n  function toParamRegExp(attributePattern, flags) {\n    return new RegExp('(?:^|;)\\\\s*' + attributePattern + '\\\\s*=\\\\s*' + '(' + '[^\";\\\\s][^;\\\\s]*' + '|' + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + ')', flags);\n  }\n  function textdecode(encoding, value) {\n    if (encoding) {\n      if (!/^[\\x00-\\xFF]+$/.test(value)) {\n        return value;\n      }\n      try {\n        var decoder = new TextDecoder(encoding, { fatal: true });\n        var bytes = new Array(value.length);\n        for (var i = 0; i < value.length; ++i) {\n          bytes[i] = value.charCodeAt(i);\n        }\n        value = decoder.decode(new Uint8Array(bytes));\n        needsEncodingFixup = false;\n      } catch (e) {\n        if (/^utf-?8$/i.test(encoding)) {\n          try {\n            value = decodeURIComponent(escape(value));\n            needsEncodingFixup = false;\n          } catch (err) {}\n        }\n      }\n    }\n    return value;\n  }\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      value = textdecode('utf-8', value);\n      if (needsEncodingFixup) {\n        value = textdecode('iso-8859-1', value);\n      }\n    }\n    return value;\n  }\n  function rfc2231getparam(contentDisposition) {\n    var matches = [],\n        match = void 0;\n    var iter = toParamRegExp('filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)', 'ig');\n    while ((match = iter.exec(contentDisposition)) !== null) {\n      var _match = match,\n          _match2 = _slicedToArray(_match, 4),\n          n = _match2[1],\n          quot = _match2[2],\n          part = _match2[3];\n\n      n = parseInt(n, 10);\n      if (n in matches) {\n        if (n === 0) {\n          break;\n        }\n        continue;\n      }\n      matches[n] = [quot, part];\n    }\n    var parts = [];\n    for (var _n = 0; _n < matches.length; ++_n) {\n      if (!(_n in matches)) {\n        break;\n      }\n\n      var _matches$_n = _slicedToArray(matches[_n], 2),\n          _quot = _matches$_n[0],\n          _part = _matches$_n[1];\n\n      _part = rfc2616unquote(_part);\n      if (_quot) {\n        _part = unescape(_part);\n        if (_n === 0) {\n          _part = rfc5987decode(_part);\n        }\n      }\n      parts.push(_part);\n    }\n    return parts.join('');\n  }\n  function rfc2616unquote(value) {\n    if (value.charAt(0) === '\"') {\n      var parts = value.slice(1).split('\\\\\"');\n      for (var i = 0; i < parts.length; ++i) {\n        var quotindex = parts[i].indexOf('\"');\n        if (quotindex !== -1) {\n          parts[i] = parts[i].slice(0, quotindex);\n          parts.length = i + 1;\n        }\n        parts[i] = parts[i].replace(/\\\\(.)/g, '$1');\n      }\n      value = parts.join('\"');\n    }\n    return value;\n  }\n  function rfc5987decode(extvalue) {\n    var encodingend = extvalue.indexOf('\\'');\n    if (encodingend === -1) {\n      return extvalue;\n    }\n    var encoding = extvalue.slice(0, encodingend);\n    var langvalue = extvalue.slice(encodingend + 1);\n    var value = langvalue.replace(/^[^']*'/, '');\n    return textdecode(encoding, value);\n  }\n  function rfc2047decode(value) {\n    if (value.slice(0, 2) !== '=?' || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n    return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (_, charset, encoding, text) {\n      if (encoding === 'q' || encoding === 'Q') {\n        text = text.replace(/_/g, ' ');\n        text = text.replace(/=([0-9a-fA-F]{2})/g, function (_, hex) {\n          return String.fromCharCode(parseInt(hex, 16));\n        });\n        return textdecode(charset, text);\n      }\n      try {\n        text = atob(text);\n      } catch (e) {}\n      return textdecode(charset, text);\n    });\n  }\n  return '';\n}\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFFetchStream = undefined;\n\nvar _regenerator = __w_pdfjs_require__(137);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(149);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n  return {\n    method: 'GET',\n    headers: headers,\n    signal: abortController && abortController.signal,\n    mode: 'cors',\n    credentials: withCredentials ? 'include' : 'same-origin',\n    redirect: 'follow'\n  };\n}\n\nvar PDFFetchStream = function () {\n  function PDFFetchStream(source) {\n    _classCallCheck(this, PDFFetchStream);\n\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.httpHeaders = this.isHttp && source.httpHeaders || {};\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  _createClass(PDFFetchStream, [{\n    key: 'getFullReader',\n    value: function getFullReader() {\n      (0, _util.assert)(!this._fullRequestReader);\n      this._fullRequestReader = new PDFFetchStreamReader(this);\n      return this._fullRequestReader;\n    }\n  }, {\n    key: 'getRangeReader',\n    value: function getRangeReader(begin, end) {\n      var reader = new PDFFetchStreamRangeReader(this, begin, end);\n      this._rangeRequestReaders.push(reader);\n      return reader;\n    }\n  }, {\n    key: 'cancelAllRequests',\n    value: function cancelAllRequests(reason) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader.cancel(reason);\n      }\n      var readers = this._rangeRequestReaders.slice(0);\n      readers.forEach(function (reader) {\n        reader.cancel(reason);\n      });\n    }\n  }]);\n\n  return PDFFetchStream;\n}();\n\nvar PDFFetchStreamReader = function () {\n  function PDFFetchStreamReader(stream) {\n    var _this = this;\n\n    _classCallCheck(this, PDFFetchStreamReader);\n\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    this._filename = null;\n    var source = stream.source;\n    this._withCredentials = source.withCredentials;\n    this._contentLength = source.length;\n    this._headersCapability = (0, _util.createPromiseCapability)();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    if (typeof AbortController !== 'undefined') {\n      this._abortController = new AbortController();\n    }\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    this._headers = new Headers();\n    for (var property in this._stream.httpHeaders) {\n      var value = this._stream.httpHeaders[property];\n      if (typeof value === 'undefined') {\n        continue;\n      }\n      this._headers.append(property, value);\n    }\n    var url = source.url;\n    fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {\n      if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n        throw (0, _network_utils.createResponseStatusError)(response.status, url);\n      }\n      _this._reader = response.body.getReader();\n      _this._headersCapability.resolve();\n      var getResponseHeader = function getResponseHeader(name) {\n        return response.headers.get(name);\n      };\n\n      var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({\n        getResponseHeader: getResponseHeader,\n        isHttp: _this._stream.isHttp,\n        rangeChunkSize: _this._rangeChunkSize,\n        disableRange: _this._disableRange\n      }),\n          allowRangeRequests = _validateRangeRequest.allowRangeRequests,\n          suggestedLength = _validateRangeRequest.suggestedLength;\n\n      _this._isRangeSupported = allowRangeRequests;\n      _this._contentLength = suggestedLength || _this._contentLength;\n      _this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n      if (!_this._isStreamingSupported && _this._isRangeSupported) {\n        _this.cancel(new _util.AbortException('streaming is disabled'));\n      }\n    }).catch(this._headersCapability.reject);\n    this.onProgress = null;\n  }\n\n  _createClass(PDFFetchStreamReader, [{\n    key: 'read',\n    value: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n        var _ref2, value, done, buffer;\n\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return this._headersCapability.promise;\n\n              case 2:\n                _context.next = 4;\n                return this._reader.read();\n\n              case 4:\n                _ref2 = _context.sent;\n                value = _ref2.value;\n                done = _ref2.done;\n\n                if (!done) {\n                  _context.next = 9;\n                  break;\n                }\n\n                return _context.abrupt('return', {\n                  value: value,\n                  done: done\n                });\n\n              case 9:\n                this._loaded += value.byteLength;\n                if (this.onProgress) {\n                  this.onProgress({\n                    loaded: this._loaded,\n                    total: this._contentLength\n                  });\n                }\n                buffer = new Uint8Array(value).buffer;\n                return _context.abrupt('return', {\n                  value: buffer,\n                  done: false\n                });\n\n              case 13:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function read() {\n        return _ref.apply(this, arguments);\n      }\n\n      return read;\n    }()\n  }, {\n    key: 'cancel',\n    value: function cancel(reason) {\n      if (this._reader) {\n        this._reader.cancel(reason);\n      }\n      if (this._abortController) {\n        this._abortController.abort();\n      }\n    }\n  }, {\n    key: 'headersReady',\n    get: function get() {\n      return this._headersCapability.promise;\n    }\n  }, {\n    key: 'filename',\n    get: function get() {\n      return this._filename;\n    }\n  }, {\n    key: 'contentLength',\n    get: function get() {\n      return this._contentLength;\n    }\n  }, {\n    key: 'isRangeSupported',\n    get: function get() {\n      return this._isRangeSupported;\n    }\n  }, {\n    key: 'isStreamingSupported',\n    get: function get() {\n      return this._isStreamingSupported;\n    }\n  }]);\n\n  return PDFFetchStreamReader;\n}();\n\nvar PDFFetchStreamRangeReader = function () {\n  function PDFFetchStreamRangeReader(stream, begin, end) {\n    var _this2 = this;\n\n    _classCallCheck(this, PDFFetchStreamRangeReader);\n\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    var source = stream.source;\n    this._withCredentials = source.withCredentials;\n    this._readCapability = (0, _util.createPromiseCapability)();\n    this._isStreamingSupported = !source.disableStream;\n    if (typeof AbortController !== 'undefined') {\n      this._abortController = new AbortController();\n    }\n    this._headers = new Headers();\n    for (var property in this._stream.httpHeaders) {\n      var value = this._stream.httpHeaders[property];\n      if (typeof value === 'undefined') {\n        continue;\n      }\n      this._headers.append(property, value);\n    }\n    var rangeStr = begin + '-' + (end - 1);\n    this._headers.append('Range', 'bytes=' + rangeStr);\n    var url = source.url;\n    fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {\n      if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n        throw (0, _network_utils.createResponseStatusError)(response.status, url);\n      }\n      _this2._readCapability.resolve();\n      _this2._reader = response.body.getReader();\n    });\n    this.onProgress = null;\n  }\n\n  _createClass(PDFFetchStreamRangeReader, [{\n    key: 'read',\n    value: function () {\n      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n        var _ref4, value, done, buffer;\n\n        return _regenerator2.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return this._readCapability.promise;\n\n              case 2:\n                _context2.next = 4;\n                return this._reader.read();\n\n              case 4:\n                _ref4 = _context2.sent;\n                value = _ref4.value;\n                done = _ref4.done;\n\n                if (!done) {\n                  _context2.next = 9;\n                  break;\n                }\n\n                return _context2.abrupt('return', {\n                  value: value,\n                  done: done\n                });\n\n              case 9:\n                this._loaded += value.byteLength;\n                if (this.onProgress) {\n                  this.onProgress({ loaded: this._loaded });\n                }\n                buffer = new Uint8Array(value).buffer;\n                return _context2.abrupt('return', {\n                  value: buffer,\n                  done: false\n                });\n\n              case 13:\n              case 'end':\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function read() {\n        return _ref3.apply(this, arguments);\n      }\n\n      return read;\n    }()\n  }, {\n    key: 'cancel',\n    value: function cancel(reason) {\n      if (this._reader) {\n        this._reader.cancel(reason);\n      }\n      if (this._abortController) {\n        this._abortController.abort();\n      }\n    }\n  }, {\n    key: 'isStreamingSupported',\n    get: function get() {\n      return this._isStreamingSupported;\n    }\n  }]);\n\n  return PDFFetchStreamRangeReader;\n}();\n\nexports.PDFFetchStream = PDFFetchStream;\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.NetworkManager = exports.PDFNetworkStream = undefined;\n\nvar _regenerator = __w_pdfjs_require__(137);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(149);\n\nvar _global_scope = __w_pdfjs_require__(3);\n\nvar _global_scope2 = _interopRequireDefault(_global_scope);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\n;\nvar OK_RESPONSE = 200;\nvar PARTIAL_CONTENT_RESPONSE = 206;\nfunction NetworkManager(url, args) {\n  this.url = url;\n  args = args || {};\n  this.isHttp = /^https?:/i.test(url);\n  this.httpHeaders = this.isHttp && args.httpHeaders || {};\n  this.withCredentials = args.withCredentials || false;\n  this.getXhr = args.getXhr || function NetworkManager_getXhr() {\n    return new XMLHttpRequest();\n  };\n  this.currXhrId = 0;\n  this.pendingRequests = Object.create(null);\n  this.loadedRequests = Object.create(null);\n}\nfunction getArrayBuffer(xhr) {\n  var data = xhr.response;\n  if (typeof data !== 'string') {\n    return data;\n  }\n  var array = (0, _util.stringToBytes)(data);\n  return array.buffer;\n}\nvar supportsMozChunked = function supportsMozChunkedClosure() {\n  try {\n    var x = new XMLHttpRequest();\n    x.open('GET', _global_scope2.default.location.href);\n    x.responseType = 'moz-chunked-arraybuffer';\n    return x.responseType === 'moz-chunked-arraybuffer';\n  } catch (e) {\n    return false;\n  }\n}();\nNetworkManager.prototype = {\n  requestRange: function NetworkManager_requestRange(begin, end, listeners) {\n    var args = {\n      begin: begin,\n      end: end\n    };\n    for (var prop in listeners) {\n      args[prop] = listeners[prop];\n    }\n    return this.request(args);\n  },\n  requestFull: function NetworkManager_requestFull(listeners) {\n    return this.request(listeners);\n  },\n  request: function NetworkManager_request(args) {\n    var xhr = this.getXhr();\n    var xhrId = this.currXhrId++;\n    var pendingRequest = this.pendingRequests[xhrId] = { xhr: xhr };\n    xhr.open('GET', this.url);\n    xhr.withCredentials = this.withCredentials;\n    for (var property in this.httpHeaders) {\n      var value = this.httpHeaders[property];\n      if (typeof value === 'undefined') {\n        continue;\n      }\n      xhr.setRequestHeader(property, value);\n    }\n    if (this.isHttp && 'begin' in args && 'end' in args) {\n      var rangeStr = args.begin + '-' + (args.end - 1);\n      xhr.setRequestHeader('Range', 'bytes=' + rangeStr);\n      pendingRequest.expectedStatus = 206;\n    } else {\n      pendingRequest.expectedStatus = 200;\n    }\n    var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData;\n    if (useMozChunkedLoading) {\n      xhr.responseType = 'moz-chunked-arraybuffer';\n      pendingRequest.onProgressiveData = args.onProgressiveData;\n      pendingRequest.mozChunked = true;\n    } else {\n      xhr.responseType = 'arraybuffer';\n    }\n    if (args.onError) {\n      xhr.onerror = function (evt) {\n        args.onError(xhr.status);\n      };\n    }\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n    xhr.send(null);\n    return xhrId;\n  },\n  onProgress: function NetworkManager_onProgress(xhrId, evt) {\n    var pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return;\n    }\n    if (pendingRequest.mozChunked) {\n      var chunk = getArrayBuffer(pendingRequest.xhr);\n      pendingRequest.onProgressiveData(chunk);\n    }\n    var onProgress = pendingRequest.onProgress;\n    if (onProgress) {\n      onProgress(evt);\n    }\n  },\n  onStateChange: function NetworkManager_onStateChange(xhrId, evt) {\n    var pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return;\n    }\n    var xhr = pendingRequest.xhr;\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n    if (xhr.readyState !== 4) {\n      return;\n    }\n    if (!(xhrId in this.pendingRequests)) {\n      return;\n    }\n    delete this.pendingRequests[xhrId];\n    if (xhr.status === 0 && this.isHttp) {\n      if (pendingRequest.onError) {\n        pendingRequest.onError(xhr.status);\n      }\n      return;\n    }\n    var xhrStatus = xhr.status || OK_RESPONSE;\n    var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n    if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n      if (pendingRequest.onError) {\n        pendingRequest.onError(xhr.status);\n      }\n      return;\n    }\n    this.loadedRequests[xhrId] = true;\n    var chunk = getArrayBuffer(xhr);\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n      var rangeHeader = xhr.getResponseHeader('Content-Range');\n      var matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n      var begin = parseInt(matches[1], 10);\n      pendingRequest.onDone({\n        begin: begin,\n        chunk: chunk\n      });\n    } else if (pendingRequest.onProgressiveData) {\n      pendingRequest.onDone(null);\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk: chunk\n      });\n    } else if (pendingRequest.onError) {\n      pendingRequest.onError(xhr.status);\n    }\n  },\n  hasPendingRequests: function NetworkManager_hasPendingRequests() {\n    for (var xhrId in this.pendingRequests) {\n      return true;\n    }\n    return false;\n  },\n  getRequestXhr: function NetworkManager_getXhr(xhrId) {\n    return this.pendingRequests[xhrId].xhr;\n  },\n  isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) {\n    return !!this.pendingRequests[xhrId].onProgressiveData;\n  },\n  isPendingRequest: function NetworkManager_isPendingRequest(xhrId) {\n    return xhrId in this.pendingRequests;\n  },\n  isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) {\n    return xhrId in this.loadedRequests;\n  },\n  abortAllRequests: function NetworkManager_abortAllRequests() {\n    for (var xhrId in this.pendingRequests) {\n      this.abortRequest(xhrId | 0);\n    }\n  },\n  abortRequest: function NetworkManager_abortRequest(xhrId) {\n    var xhr = this.pendingRequests[xhrId].xhr;\n    delete this.pendingRequests[xhrId];\n    xhr.abort();\n  }\n};\nfunction PDFNetworkStream(source) {\n  this._source = source;\n  this._manager = new NetworkManager(source.url, {\n    httpHeaders: source.httpHeaders,\n    withCredentials: source.withCredentials\n  });\n  this._rangeChunkSize = source.rangeChunkSize;\n  this._fullRequestReader = null;\n  this._rangeRequestReaders = [];\n}\nPDFNetworkStream.prototype = {\n  _onRangeRequestReaderClosed: function PDFNetworkStream_onRangeRequestReaderClosed(reader) {\n    var i = this._rangeRequestReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  },\n  getFullReader: function PDFNetworkStream_getFullReader() {\n    (0, _util.assert)(!this._fullRequestReader);\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n    return this._fullRequestReader;\n  },\n  getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) {\n    var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  },\n  cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    var readers = this._rangeRequestReaders.slice(0);\n    readers.forEach(function (reader) {\n      reader.cancel(reason);\n    });\n  }\n};\nfunction PDFNetworkStreamFullRequestReader(manager, source) {\n  this._manager = manager;\n  var args = {\n    onHeadersReceived: this._onHeadersReceived.bind(this),\n    onProgressiveData: source.disableStream ? null : this._onProgressiveData.bind(this),\n    onDone: this._onDone.bind(this),\n    onError: this._onError.bind(this),\n    onProgress: this._onProgress.bind(this)\n  };\n  this._url = source.url;\n  this._fullRequestId = manager.requestFull(args);\n  this._headersReceivedCapability = (0, _util.createPromiseCapability)();\n  this._disableRange = source.disableRange || false;\n  this._contentLength = source.length;\n  this._rangeChunkSize = source.rangeChunkSize;\n  if (!this._rangeChunkSize && !this._disableRange) {\n    this._disableRange = true;\n  }\n  this._isStreamingSupported = false;\n  this._isRangeSupported = false;\n  this._cachedChunks = [];\n  this._requests = [];\n  this._done = false;\n  this._storedError = undefined;\n  this._filename = null;\n  this.onProgress = null;\n}\nPDFNetworkStreamFullRequestReader.prototype = {\n  _onHeadersReceived: function PDFNetworkStreamFullRequestReader_onHeadersReceived() {\n    var fullRequestXhrId = this._fullRequestId;\n    var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n    var getResponseHeader = function getResponseHeader(name) {\n      return fullRequestXhr.getResponseHeader(name);\n    };\n\n    var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({\n      getResponseHeader: getResponseHeader,\n      isHttp: this._manager.isHttp,\n      rangeChunkSize: this._rangeChunkSize,\n      disableRange: this._disableRange\n    }),\n        allowRangeRequests = _validateRangeRequest.allowRangeRequests,\n        suggestedLength = _validateRangeRequest.suggestedLength;\n\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n    this._contentLength = suggestedLength || this._contentLength;\n    this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n    var networkManager = this._manager;\n    if (networkManager.isStreamingRequest(fullRequestXhrId)) {\n      this._isStreamingSupported = true;\n    } else if (this._isRangeSupported) {\n      networkManager.abortRequest(fullRequestXhrId);\n    }\n    this._headersReceivedCapability.resolve();\n  },\n  _onProgressiveData: function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) {\n    if (this._requests.length > 0) {\n      var requestCapability = this._requests.shift();\n      requestCapability.resolve({\n        value: chunk,\n        done: false\n      });\n    } else {\n      this._cachedChunks.push(chunk);\n    }\n  },\n  _onDone: function PDFNetworkStreamFullRequestReader_onDone(args) {\n    if (args) {\n      this._onProgressiveData(args.chunk);\n    }\n    this._done = true;\n    if (this._cachedChunks.length > 0) {\n      return;\n    }\n    this._requests.forEach(function (requestCapability) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    });\n    this._requests = [];\n  },\n  _onError: function PDFNetworkStreamFullRequestReader_onError(status) {\n    var url = this._url;\n    var exception = (0, _network_utils.createResponseStatusError)(status, url);\n    this._storedError = exception;\n    this._headersReceivedCapability.reject(exception);\n    this._requests.forEach(function (requestCapability) {\n      requestCapability.reject(exception);\n    });\n    this._requests = [];\n    this._cachedChunks = [];\n  },\n  _onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) {\n    if (this.onProgress) {\n      this.onProgress({\n        loaded: data.loaded,\n        total: data.lengthComputable ? data.total : this._contentLength\n      });\n    }\n  },\n  get filename() {\n    return this._filename;\n  },\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  },\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  },\n  get contentLength() {\n    return this._contentLength;\n  },\n  get headersReady() {\n    return this._headersReceivedCapability.promise;\n  },\n  read: function () {\n    var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n      var chunk, requestCapability;\n      return _regenerator2.default.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              if (!this._storedError) {\n                _context.next = 2;\n                break;\n              }\n\n              throw this._storedError;\n\n            case 2:\n              if (!(this._cachedChunks.length > 0)) {\n                _context.next = 5;\n                break;\n              }\n\n              chunk = this._cachedChunks.shift();\n              return _context.abrupt('return', {\n                value: chunk,\n                done: false\n              });\n\n            case 5:\n              if (!this._done) {\n                _context.next = 7;\n                break;\n              }\n\n              return _context.abrupt('return', {\n                value: undefined,\n                done: true\n              });\n\n            case 7:\n              requestCapability = (0, _util.createPromiseCapability)();\n\n              this._requests.push(requestCapability);\n              return _context.abrupt('return', requestCapability.promise);\n\n            case 10:\n            case 'end':\n              return _context.stop();\n          }\n        }\n      }, _callee, this);\n    }));\n\n    function read() {\n      return _ref.apply(this, arguments);\n    }\n\n    return read;\n  }(),\n\n  cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) {\n    this._done = true;\n    this._headersReceivedCapability.reject(reason);\n    this._requests.forEach(function (requestCapability) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    });\n    this._requests = [];\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\n      this._manager.abortRequest(this._fullRequestId);\n    }\n    this._fullRequestReader = null;\n  }\n};\nfunction PDFNetworkStreamRangeRequestReader(manager, begin, end) {\n  this._manager = manager;\n  var args = {\n    onDone: this._onDone.bind(this),\n    onProgress: this._onProgress.bind(this)\n  };\n  this._requestId = manager.requestRange(begin, end, args);\n  this._requests = [];\n  this._queuedChunk = null;\n  this._done = false;\n  this.onProgress = null;\n  this.onClosed = null;\n}\nPDFNetworkStreamRangeRequestReader.prototype = {\n  _close: function PDFNetworkStreamRangeRequestReader_close() {\n    if (this.onClosed) {\n      this.onClosed(this);\n    }\n  },\n  _onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) {\n    var chunk = data.chunk;\n    if (this._requests.length > 0) {\n      var requestCapability = this._requests.shift();\n      requestCapability.resolve({\n        value: chunk,\n        done: false\n      });\n    } else {\n      this._queuedChunk = chunk;\n    }\n    this._done = true;\n    this._requests.forEach(function (requestCapability) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    });\n    this._requests = [];\n    this._close();\n  },\n  _onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) {\n    if (!this.isStreamingSupported && this.onProgress) {\n      this.onProgress({ loaded: evt.loaded });\n    }\n  },\n  get isStreamingSupported() {\n    return false;\n  },\n  read: function () {\n    var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n      var chunk, requestCapability;\n      return _regenerator2.default.wrap(function _callee2$(_context2) {\n        while (1) {\n          switch (_context2.prev = _context2.next) {\n            case 0:\n              if (!(this._queuedChunk !== null)) {\n                _context2.next = 4;\n                break;\n              }\n\n              chunk = this._queuedChunk;\n\n              this._queuedChunk = null;\n              return _context2.abrupt('return', {\n                value: chunk,\n                done: false\n              });\n\n            case 4:\n              if (!this._done) {\n                _context2.next = 6;\n                break;\n              }\n\n              return _context2.abrupt('return', {\n                value: undefined,\n                done: true\n              });\n\n            case 6:\n              requestCapability = (0, _util.createPromiseCapability)();\n\n              this._requests.push(requestCapability);\n              return _context2.abrupt('return', requestCapability.promise);\n\n            case 9:\n            case 'end':\n              return _context2.stop();\n          }\n        }\n      }, _callee2, this);\n    }));\n\n    function read() {\n      return _ref2.apply(this, arguments);\n    }\n\n    return read;\n  }(),\n\n  cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) {\n    this._done = true;\n    this._requests.forEach(function (requestCapability) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    });\n    this._requests = [];\n    if (this._manager.isPendingRequest(this._requestId)) {\n      this._manager.abortRequest(this._requestId);\n    }\n    this._close();\n  }\n};\nexports.PDFNetworkStream = PDFNetworkStream;\nexports.NetworkManager = NetworkManager;\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pdf.js.map"
  },
  {
    "path": "static/js/pdfjs/build/pdf.worker.js",
    "content": "/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = root.pdfjsWorker = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__w_pdfjs_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__w_pdfjs_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__w_pdfjs_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__w_pdfjs_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__w_pdfjs_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__w_pdfjs_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__w_pdfjs_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar pdfjsVersion = '2.0.943';\nvar pdfjsBuild = 'dc98bf76';\nvar pdfjsCoreWorker = __w_pdfjs_require__(1);\nexports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.WorkerMessageHandler = exports.WorkerTask = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _pdf_manager = __w_pdfjs_require__(130);\n\nvar _is_node = __w_pdfjs_require__(5);\n\nvar _is_node2 = _interopRequireDefault(_is_node);\n\nvar _message_handler = __w_pdfjs_require__(172);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar WorkerTask = function WorkerTaskClosure() {\n  function WorkerTask(name) {\n    this.name = name;\n    this.terminated = false;\n    this._capability = (0, _util.createPromiseCapability)();\n  }\n  WorkerTask.prototype = {\n    get finished() {\n      return this._capability.promise;\n    },\n    finish: function finish() {\n      this._capability.resolve();\n    },\n    terminate: function terminate() {\n      this.terminated = true;\n    },\n    ensureNotTerminated: function ensureNotTerminated() {\n      if (this.terminated) {\n        throw new Error('Worker task was terminated');\n      }\n    }\n  };\n  return WorkerTask;\n}();\n;\nvar PDFWorkerStream = function PDFWorkerStreamClosure() {\n  function PDFWorkerStream(msgHandler) {\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  PDFWorkerStream.prototype = {\n    getFullReader: function getFullReader() {\n      (0, _util.assert)(!this._fullRequestReader);\n      this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n      return this._fullRequestReader;\n    },\n    getRangeReader: function getRangeReader(begin, end) {\n      var reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n      this._rangeRequestReaders.push(reader);\n      return reader;\n    },\n    cancelAllRequests: function cancelAllRequests(reason) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader.cancel(reason);\n      }\n      var readers = this._rangeRequestReaders.slice(0);\n      readers.forEach(function (reader) {\n        reader.cancel(reason);\n      });\n    }\n  };\n  function PDFWorkerStreamReader(msgHandler) {\n    var _this = this;\n\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._isRangeSupported = false;\n    this._isStreamingSupported = false;\n    var readableStream = this._msgHandler.sendWithStream('GetReader');\n    this._reader = readableStream.getReader();\n    this._headersReady = this._msgHandler.sendWithPromise('ReaderHeadersReady').then(function (data) {\n      _this._isStreamingSupported = data.isStreamingSupported;\n      _this._isRangeSupported = data.isRangeSupported;\n      _this._contentLength = data.contentLength;\n    });\n  }\n  PDFWorkerStreamReader.prototype = {\n    get headersReady() {\n      return this._headersReady;\n    },\n    get contentLength() {\n      return this._contentLength;\n    },\n    get isStreamingSupported() {\n      return this._isStreamingSupported;\n    },\n    get isRangeSupported() {\n      return this._isRangeSupported;\n    },\n    read: function read() {\n      return this._reader.read().then(function (_ref) {\n        var value = _ref.value,\n            done = _ref.done;\n\n        if (done) {\n          return {\n            value: undefined,\n            done: true\n          };\n        }\n        return {\n          value: value.buffer,\n          done: false\n        };\n      });\n    },\n    cancel: function cancel(reason) {\n      this._reader.cancel(reason);\n    }\n  };\n  function PDFWorkerStreamRangeReader(begin, end, msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n    var readableStream = this._msgHandler.sendWithStream('GetRangeReader', {\n      begin: begin,\n      end: end\n    });\n    this._reader = readableStream.getReader();\n  }\n  PDFWorkerStreamRangeReader.prototype = {\n    get isStreamingSupported() {\n      return false;\n    },\n    read: function read() {\n      return this._reader.read().then(function (_ref2) {\n        var value = _ref2.value,\n            done = _ref2.done;\n\n        if (done) {\n          return {\n            value: undefined,\n            done: true\n          };\n        }\n        return {\n          value: value.buffer,\n          done: false\n        };\n      });\n    },\n    cancel: function cancel(reason) {\n      this._reader.cancel(reason);\n    }\n  };\n  return PDFWorkerStream;\n}();\nvar WorkerMessageHandler = {\n  setup: function setup(handler, port) {\n    var testMessageProcessed = false;\n    handler.on('test', function wphSetupTest(data) {\n      if (testMessageProcessed) {\n        return;\n      }\n      testMessageProcessed = true;\n      if (!(data instanceof Uint8Array)) {\n        handler.send('test', false);\n        return;\n      }\n      var supportTransfers = data[0] === 255;\n      handler.postMessageTransfers = supportTransfers;\n      var xhr = new XMLHttpRequest();\n      var responseExists = 'response' in xhr;\n      try {\n        xhr.responseType;\n      } catch (e) {\n        responseExists = false;\n      }\n      if (!responseExists) {\n        handler.send('test', false);\n        return;\n      }\n      handler.send('test', {\n        supportTypedArray: true,\n        supportTransfers: supportTransfers\n      });\n    });\n    handler.on('configure', function wphConfigure(data) {\n      (0, _util.setVerbosityLevel)(data.verbosity);\n    });\n    handler.on('GetDocRequest', function wphSetupDoc(data) {\n      return WorkerMessageHandler.createDocumentHandler(data, port);\n    });\n  },\n  createDocumentHandler: function createDocumentHandler(docParams, port) {\n    var pdfManager;\n    var terminated = false;\n    var cancelXHRs = null;\n    var WorkerTasks = [];\n    var apiVersion = docParams.apiVersion;\n    var workerVersion = '2.0.943';\n    if (apiVersion !== workerVersion) {\n      throw new Error('The API version \"' + apiVersion + '\" does not match ' + ('the Worker version \"' + workerVersion + '\".'));\n    }\n    var docId = docParams.docId;\n    var docBaseUrl = docParams.docBaseUrl;\n    var workerHandlerName = docParams.docId + '_worker';\n    var handler = new _message_handler.MessageHandler(workerHandlerName, docId, port);\n    handler.postMessageTransfers = docParams.postMessageTransfers;\n    function ensureNotTerminated() {\n      if (terminated) {\n        throw new Error('Worker was terminated');\n      }\n    }\n    function startWorkerTask(task) {\n      WorkerTasks.push(task);\n    }\n    function finishWorkerTask(task) {\n      task.finish();\n      var i = WorkerTasks.indexOf(task);\n      WorkerTasks.splice(i, 1);\n    }\n    function loadDocument(recoveryMode) {\n      var loadDocumentCapability = (0, _util.createPromiseCapability)();\n      var parseSuccess = function parseSuccess() {\n        Promise.all([pdfManager.ensureDoc('numPages'), pdfManager.ensureDoc('fingerprint')]).then(function (_ref3) {\n          var _ref4 = _slicedToArray(_ref3, 2),\n              numPages = _ref4[0],\n              fingerprint = _ref4[1];\n\n          loadDocumentCapability.resolve({\n            numPages: numPages,\n            fingerprint: fingerprint\n          });\n        }, parseFailure);\n      };\n      var parseFailure = function parseFailure(e) {\n        loadDocumentCapability.reject(e);\n      };\n      pdfManager.ensureDoc('checkHeader', []).then(function () {\n        pdfManager.ensureDoc('parseStartXRef', []).then(function () {\n          pdfManager.ensureDoc('parse', [recoveryMode]).then(parseSuccess, parseFailure);\n        }, parseFailure);\n      }, parseFailure);\n      return loadDocumentCapability.promise;\n    }\n    function getPdfManager(data, evaluatorOptions) {\n      var pdfManagerCapability = (0, _util.createPromiseCapability)();\n      var pdfManager;\n      var source = data.source;\n      if (source.data) {\n        try {\n          pdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, evaluatorOptions, docBaseUrl);\n          pdfManagerCapability.resolve(pdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        return pdfManagerCapability.promise;\n      }\n      var pdfStream,\n          cachedChunks = [];\n      try {\n        pdfStream = new PDFWorkerStream(handler);\n      } catch (ex) {\n        pdfManagerCapability.reject(ex);\n        return pdfManagerCapability.promise;\n      }\n      var fullRequest = pdfStream.getFullReader();\n      fullRequest.headersReady.then(function () {\n        if (!fullRequest.isRangeSupported) {\n          return;\n        }\n        var disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported;\n        pdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, {\n          msgHandler: handler,\n          url: source.url,\n          password: source.password,\n          length: fullRequest.contentLength,\n          disableAutoFetch: disableAutoFetch,\n          rangeChunkSize: source.rangeChunkSize\n        }, evaluatorOptions, docBaseUrl);\n        for (var i = 0; i < cachedChunks.length; i++) {\n          pdfManager.sendProgressiveData(cachedChunks[i]);\n        }\n        cachedChunks = [];\n        pdfManagerCapability.resolve(pdfManager);\n        cancelXHRs = null;\n      }).catch(function (reason) {\n        pdfManagerCapability.reject(reason);\n        cancelXHRs = null;\n      });\n      var loaded = 0;\n      var flushChunks = function flushChunks() {\n        var pdfFile = (0, _util.arraysToBytes)(cachedChunks);\n        if (source.length && pdfFile.length !== source.length) {\n          (0, _util.warn)('reported HTTP length is different from actual');\n        }\n        try {\n          pdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, evaluatorOptions, docBaseUrl);\n          pdfManagerCapability.resolve(pdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        cachedChunks = [];\n      };\n      var readPromise = new Promise(function (resolve, reject) {\n        var readChunk = function readChunk(chunk) {\n          try {\n            ensureNotTerminated();\n            if (chunk.done) {\n              if (!pdfManager) {\n                flushChunks();\n              }\n              cancelXHRs = null;\n              return;\n            }\n            var data = chunk.value;\n            loaded += (0, _util.arrayByteLength)(data);\n            if (!fullRequest.isStreamingSupported) {\n              handler.send('DocProgress', {\n                loaded: loaded,\n                total: Math.max(loaded, fullRequest.contentLength || 0)\n              });\n            }\n            if (pdfManager) {\n              pdfManager.sendProgressiveData(data);\n            } else {\n              cachedChunks.push(data);\n            }\n            fullRequest.read().then(readChunk, reject);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        fullRequest.read().then(readChunk, reject);\n      });\n      readPromise.catch(function (e) {\n        pdfManagerCapability.reject(e);\n        cancelXHRs = null;\n      });\n      cancelXHRs = function cancelXHRs() {\n        pdfStream.cancelAllRequests('abort');\n      };\n      return pdfManagerCapability.promise;\n    }\n    function setupDoc(data) {\n      function onSuccess(doc) {\n        ensureNotTerminated();\n        handler.send('GetDoc', { pdfInfo: doc });\n      }\n      function onFailure(e) {\n        ensureNotTerminated();\n        if (e instanceof _util.PasswordException) {\n          var task = new WorkerTask('PasswordException: response ' + e.code);\n          startWorkerTask(task);\n          handler.sendWithPromise('PasswordRequest', e).then(function (data) {\n            finishWorkerTask(task);\n            pdfManager.updatePassword(data.password);\n            pdfManagerReady();\n          }).catch(function (boundException) {\n            finishWorkerTask(task);\n            handler.send('PasswordException', boundException);\n          }.bind(null, e));\n        } else if (e instanceof _util.InvalidPDFException) {\n          handler.send('InvalidPDF', e);\n        } else if (e instanceof _util.MissingPDFException) {\n          handler.send('MissingPDF', e);\n        } else if (e instanceof _util.UnexpectedResponseException) {\n          handler.send('UnexpectedResponse', e);\n        } else {\n          handler.send('UnknownError', new _util.UnknownErrorException(e.message, e.toString()));\n        }\n      }\n      function pdfManagerReady() {\n        ensureNotTerminated();\n        loadDocument(false).then(onSuccess, function loadFailure(ex) {\n          ensureNotTerminated();\n          if (!(ex instanceof _util.XRefParseException)) {\n            onFailure(ex);\n            return;\n          }\n          pdfManager.requestLoadedStream();\n          pdfManager.onLoadedStream().then(function () {\n            ensureNotTerminated();\n            loadDocument(true).then(onSuccess, onFailure);\n          });\n        }, onFailure);\n      }\n      ensureNotTerminated();\n      var evaluatorOptions = {\n        forceDataSchema: data.disableCreateObjectURL,\n        maxImageSize: data.maxImageSize,\n        disableFontFace: data.disableFontFace,\n        nativeImageDecoderSupport: data.nativeImageDecoderSupport,\n        ignoreErrors: data.ignoreErrors,\n        isEvalSupported: data.isEvalSupported\n      };\n      getPdfManager(data, evaluatorOptions).then(function (newPdfManager) {\n        if (terminated) {\n          newPdfManager.terminate();\n          throw new Error('Worker was terminated');\n        }\n        pdfManager = newPdfManager;\n        pdfManager.onLoadedStream().then(function (stream) {\n          handler.send('DataLoaded', { length: stream.bytes.byteLength });\n        });\n      }).then(pdfManagerReady, onFailure);\n    }\n    handler.on('GetPage', function wphSetupGetPage(data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return Promise.all([pdfManager.ensure(page, 'rotate'), pdfManager.ensure(page, 'ref'), pdfManager.ensure(page, 'userUnit'), pdfManager.ensure(page, 'view')]).then(function (_ref5) {\n          var _ref6 = _slicedToArray(_ref5, 4),\n              rotate = _ref6[0],\n              ref = _ref6[1],\n              userUnit = _ref6[2],\n              view = _ref6[3];\n\n          return {\n            rotate: rotate,\n            ref: ref,\n            userUnit: userUnit,\n            view: view\n          };\n        });\n      });\n    });\n    handler.on('GetPageIndex', function wphSetupGetPageIndex(data) {\n      var ref = new _primitives.Ref(data.ref.num, data.ref.gen);\n      var catalog = pdfManager.pdfDocument.catalog;\n      return catalog.getPageIndex(ref);\n    });\n    handler.on('GetDestinations', function wphSetupGetDestinations(data) {\n      return pdfManager.ensureCatalog('destinations');\n    });\n    handler.on('GetDestination', function wphSetupGetDestination(data) {\n      return pdfManager.ensureCatalog('getDestination', [data.id]);\n    });\n    handler.on('GetPageLabels', function wphSetupGetPageLabels(data) {\n      return pdfManager.ensureCatalog('pageLabels');\n    });\n    handler.on('GetPageMode', function wphSetupGetPageMode(data) {\n      return pdfManager.ensureCatalog('pageMode');\n    });\n    handler.on('GetAttachments', function wphSetupGetAttachments(data) {\n      return pdfManager.ensureCatalog('attachments');\n    });\n    handler.on('GetJavaScript', function wphSetupGetJavaScript(data) {\n      return pdfManager.ensureCatalog('javaScript');\n    });\n    handler.on('GetOutline', function wphSetupGetOutline(data) {\n      return pdfManager.ensureCatalog('documentOutline');\n    });\n    handler.on('GetPermissions', function (data) {\n      return pdfManager.ensureCatalog('permissions');\n    });\n    handler.on('GetMetadata', function wphSetupGetMetadata(data) {\n      return Promise.all([pdfManager.ensureDoc('documentInfo'), pdfManager.ensureCatalog('metadata')]);\n    });\n    handler.on('GetData', function wphSetupGetData(data) {\n      pdfManager.requestLoadedStream();\n      return pdfManager.onLoadedStream().then(function (stream) {\n        return stream.bytes;\n      });\n    });\n    handler.on('GetStats', function wphSetupGetStats(data) {\n      return pdfManager.pdfDocument.xref.stats;\n    });\n    handler.on('GetAnnotations', function (_ref7) {\n      var pageIndex = _ref7.pageIndex,\n          intent = _ref7.intent;\n\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return page.getAnnotationsData(intent);\n      });\n    });\n    handler.on('RenderPageRequest', function wphSetupRenderPage(data) {\n      var pageIndex = data.pageIndex;\n      pdfManager.getPage(pageIndex).then(function (page) {\n        var task = new WorkerTask('RenderPageRequest: page ' + pageIndex);\n        startWorkerTask(task);\n        var pageNum = pageIndex + 1;\n        var start = Date.now();\n        page.getOperatorList({\n          handler: handler,\n          task: task,\n          intent: data.intent,\n          renderInteractiveForms: data.renderInteractiveForms\n        }).then(function (operatorList) {\n          finishWorkerTask(task);\n          (0, _util.info)('page=' + pageNum + ' - getOperatorList: time=' + (Date.now() - start) + 'ms, len=' + operatorList.totalLength);\n        }, function (e) {\n          finishWorkerTask(task);\n          if (task.terminated) {\n            return;\n          }\n          handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown });\n          var minimumStackMessage = 'worker.js: while trying to getPage() and getOperatorList()';\n          var wrappedException;\n          if (typeof e === 'string') {\n            wrappedException = {\n              message: e,\n              stack: minimumStackMessage\n            };\n          } else if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object') {\n            wrappedException = {\n              message: e.message || e.toString(),\n              stack: e.stack || minimumStackMessage\n            };\n          } else {\n            wrappedException = {\n              message: 'Unknown exception type: ' + (typeof e === 'undefined' ? 'undefined' : _typeof(e)),\n              stack: minimumStackMessage\n            };\n          }\n          handler.send('PageError', {\n            pageNum: pageNum,\n            error: wrappedException,\n            intent: data.intent\n          });\n        });\n      });\n    }, this);\n    handler.on('GetTextContent', function wphExtractText(data, sink) {\n      var pageIndex = data.pageIndex;\n      sink.onPull = function (desiredSize) {};\n      sink.onCancel = function (reason) {};\n      pdfManager.getPage(pageIndex).then(function (page) {\n        var task = new WorkerTask('GetTextContent: page ' + pageIndex);\n        startWorkerTask(task);\n        var pageNum = pageIndex + 1;\n        var start = Date.now();\n        page.extractTextContent({\n          handler: handler,\n          task: task,\n          sink: sink,\n          normalizeWhitespace: data.normalizeWhitespace,\n          combineTextItems: data.combineTextItems\n        }).then(function () {\n          finishWorkerTask(task);\n          (0, _util.info)('text indexing: page=' + pageNum + ' - time=' + (Date.now() - start) + 'ms');\n          sink.close();\n        }, function (reason) {\n          finishWorkerTask(task);\n          if (task.terminated) {\n            return;\n          }\n          sink.error(reason);\n          throw reason;\n        });\n      });\n    });\n    handler.on('Cleanup', function wphCleanup(data) {\n      return pdfManager.cleanup();\n    });\n    handler.on('Terminate', function wphTerminate(data) {\n      terminated = true;\n      if (pdfManager) {\n        pdfManager.terminate();\n        pdfManager = null;\n      }\n      if (cancelXHRs) {\n        cancelXHRs();\n      }\n      var waitOn = [];\n      WorkerTasks.forEach(function (task) {\n        waitOn.push(task.finished);\n        task.terminate();\n      });\n      return Promise.all(waitOn).then(function () {\n        handler.destroy();\n        handler = null;\n      });\n    });\n    handler.on('Ready', function wphReady(data) {\n      setupDoc(docParams);\n      docParams = null;\n    });\n    return workerHandlerName;\n  },\n  initializeFromPort: function initializeFromPort(port) {\n    var handler = new _message_handler.MessageHandler('worker', 'main', port);\n    WorkerMessageHandler.setup(handler, port);\n    handler.send('ready', null);\n  }\n};\nfunction isMessagePort(maybePort) {\n  return typeof maybePort.postMessage === 'function' && 'onmessage' in maybePort;\n}\nif (typeof window === 'undefined' && !(0, _is_node2.default)() && typeof self !== 'undefined' && isMessagePort(self)) {\n  WorkerMessageHandler.initializeFromPort(self);\n}\nexports.WorkerTask = WorkerTask;\nexports.WorkerMessageHandler = WorkerMessageHandler;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.URL = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isSpace = exports.isString = exports.isNum = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.info = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.getInheritableProperty = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.toRomanNumerals = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n__w_pdfjs_require__(3);\n\nvar _streams_polyfill = __w_pdfjs_require__(126);\n\nvar _url_polyfill = __w_pdfjs_require__(128);\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nvar NativeImageDecoding = {\n  NONE: 'none',\n  DECODE: 'decode',\n  DISPLAY: 'display'\n};\nvar PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800\n};\nvar TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4\n};\nvar ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3\n};\nvar AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26\n};\nvar AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200\n};\nvar AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000\n};\nvar AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5\n};\nvar StreamType = {\n  UNKNOWN: 0,\n  FLATE: 1,\n  LZW: 2,\n  DCT: 3,\n  JPX: 4,\n  JBIG: 5,\n  A85: 6,\n  AHX: 7,\n  CCF: 8,\n  RL: 9\n};\nvar FontType = {\n  UNKNOWN: 0,\n  TYPE1: 1,\n  TYPE1C: 2,\n  CIDFONTTYPE0: 3,\n  CIDFONTTYPE0C: 4,\n  TRUETYPE: 5,\n  CIDFONTTYPE2: 6,\n  TYPE3: 7,\n  OPENTYPE: 8,\n  TYPE0: 9,\n  MMTYPE1: 10\n};\nvar VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5\n};\nvar CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2\n};\nvar OPS = {\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91\n};\nvar UNSUPPORTED_FEATURES = {\n  unknown: 'unknown',\n  forms: 'forms',\n  javaScript: 'javaScript',\n  smask: 'smask',\n  shadingPattern: 'shadingPattern',\n  font: 'font'\n};\nvar PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2\n};\nvar verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\nfunction getVerbosityLevel() {\n  return verbosity;\n}\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log('Info: ' + msg);\n  }\n}\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log('Warning: ' + msg);\n  }\n}\nfunction deprecated(details) {\n  console.log('Deprecated API usage: ' + details);\n}\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\nfunction isSameOrigin(baseUrl, otherUrl) {\n  try {\n    var base = new _url_polyfill.URL(baseUrl);\n    if (!base.origin || base.origin === 'null') {\n      return false;\n    }\n  } catch (e) {\n    return false;\n  }\n  var other = new _url_polyfill.URL(otherUrl, base);\n  return base.origin === other.origin;\n}\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n  switch (url.protocol) {\n    case 'http:':\n    case 'https:':\n    case 'ftp:':\n    case 'mailto:':\n    case 'tel:':\n      return true;\n    default:\n      return false;\n  }\n}\nfunction createValidAbsoluteUrl(url, baseUrl) {\n  if (!url) {\n    return null;\n  }\n  try {\n    var absoluteUrl = baseUrl ? new _url_polyfill.URL(url, baseUrl) : new _url_polyfill.URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {}\n  return null;\n}\nfunction shadow(obj, prop, value) {\n  Object.defineProperty(obj, prop, {\n    value: value,\n    enumerable: true,\n    configurable: true,\n    writable: false\n  });\n  return value;\n}\nfunction getLookupTableFactory(initializer) {\n  var lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\nvar PasswordException = function PasswordExceptionClosure() {\n  function PasswordException(msg, code) {\n    this.name = 'PasswordException';\n    this.message = msg;\n    this.code = code;\n  }\n  PasswordException.prototype = new Error();\n  PasswordException.constructor = PasswordException;\n  return PasswordException;\n}();\nvar UnknownErrorException = function UnknownErrorExceptionClosure() {\n  function UnknownErrorException(msg, details) {\n    this.name = 'UnknownErrorException';\n    this.message = msg;\n    this.details = details;\n  }\n  UnknownErrorException.prototype = new Error();\n  UnknownErrorException.constructor = UnknownErrorException;\n  return UnknownErrorException;\n}();\nvar InvalidPDFException = function InvalidPDFExceptionClosure() {\n  function InvalidPDFException(msg) {\n    this.name = 'InvalidPDFException';\n    this.message = msg;\n  }\n  InvalidPDFException.prototype = new Error();\n  InvalidPDFException.constructor = InvalidPDFException;\n  return InvalidPDFException;\n}();\nvar MissingPDFException = function MissingPDFExceptionClosure() {\n  function MissingPDFException(msg) {\n    this.name = 'MissingPDFException';\n    this.message = msg;\n  }\n  MissingPDFException.prototype = new Error();\n  MissingPDFException.constructor = MissingPDFException;\n  return MissingPDFException;\n}();\nvar UnexpectedResponseException = function UnexpectedResponseExceptionClosure() {\n  function UnexpectedResponseException(msg, status) {\n    this.name = 'UnexpectedResponseException';\n    this.message = msg;\n    this.status = status;\n  }\n  UnexpectedResponseException.prototype = new Error();\n  UnexpectedResponseException.constructor = UnexpectedResponseException;\n  return UnexpectedResponseException;\n}();\nvar MissingDataException = function MissingDataExceptionClosure() {\n  function MissingDataException(begin, end) {\n    this.begin = begin;\n    this.end = end;\n    this.message = 'Missing data [' + begin + ', ' + end + ')';\n  }\n  MissingDataException.prototype = new Error();\n  MissingDataException.prototype.name = 'MissingDataException';\n  MissingDataException.constructor = MissingDataException;\n  return MissingDataException;\n}();\nvar XRefParseException = function XRefParseExceptionClosure() {\n  function XRefParseException(msg) {\n    this.message = msg;\n  }\n  XRefParseException.prototype = new Error();\n  XRefParseException.prototype.name = 'XRefParseException';\n  XRefParseException.constructor = XRefParseException;\n  return XRefParseException;\n}();\nvar FormatError = function FormatErrorClosure() {\n  function FormatError(msg) {\n    this.message = msg;\n  }\n  FormatError.prototype = new Error();\n  FormatError.prototype.name = 'FormatError';\n  FormatError.constructor = FormatError;\n  return FormatError;\n}();\nvar AbortException = function AbortExceptionClosure() {\n  function AbortException(msg) {\n    this.name = 'AbortException';\n    this.message = msg;\n  }\n  AbortException.prototype = new Error();\n  AbortException.constructor = AbortException;\n  return AbortException;\n}();\nvar NullCharactersRegExp = /\\x00/g;\nfunction removeNullCharacters(str) {\n  if (typeof str !== 'string') {\n    warn('The argument for removeNullCharacters must be a string.');\n    return str;\n  }\n  return str.replace(NullCharactersRegExp, '');\n}\nfunction bytesToString(bytes) {\n  assert(bytes !== null && (typeof bytes === 'undefined' ? 'undefined' : _typeof(bytes)) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString');\n  var length = bytes.length;\n  var MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  var strBuf = [];\n  for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    var chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join('');\n}\nfunction stringToBytes(str) {\n  assert(typeof str === 'string', 'Invalid argument for stringToBytes');\n  var length = str.length;\n  var bytes = new Uint8Array(length);\n  for (var i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xFF;\n  }\n  return bytes;\n}\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  assert(arr.byteLength !== undefined);\n  return arr.byteLength;\n}\nfunction arraysToBytes(arr) {\n  if (arr.length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n  var resultLength = 0;\n  var i,\n      ii = arr.length;\n  var item, itemLength;\n  for (i = 0; i < ii; i++) {\n    item = arr[i];\n    itemLength = arrayByteLength(item);\n    resultLength += itemLength;\n  }\n  var pos = 0;\n  var data = new Uint8Array(resultLength);\n  for (i = 0; i < ii; i++) {\n    item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === 'string') {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\nfunction string32(value) {\n  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\nfunction readInt8(data, start) {\n  return data[start] << 24 >> 24;\n}\nfunction readUint16(data, offset) {\n  return data[offset] << 8 | data[offset + 1];\n}\nfunction readUint32(data, offset) {\n  return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;\n}\nfunction isLittleEndian() {\n  var buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\nfunction isEvalSupported() {\n  try {\n    new Function('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nfunction getInheritableProperty(_ref) {\n  var dict = _ref.dict,\n      key = _ref.key,\n      _ref$getArray = _ref.getArray,\n      getArray = _ref$getArray === undefined ? false : _ref$getArray,\n      _ref$stopWhenFound = _ref.stopWhenFound,\n      stopWhenFound = _ref$stopWhenFound === undefined ? true : _ref$stopWhenFound;\n\n  var LOOP_LIMIT = 100;\n  var loopCount = 0;\n  var values = void 0;\n  while (dict) {\n    var value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      if (!values) {\n        values = [];\n      }\n      values.push(value);\n    }\n    if (++loopCount > LOOP_LIMIT) {\n      warn('getInheritableProperty: maximum loop count exceeded for \"' + key + '\"');\n      break;\n    }\n    dict = dict.get('Parent');\n  }\n  return values;\n}\nvar Util = function UtilClosure() {\n  function Util() {}\n  var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n  Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n    rgbBuf[1] = r;\n    rgbBuf[3] = g;\n    rgbBuf[5] = b;\n    return rgbBuf.join('');\n  };\n  Util.transform = function Util_transform(m1, m2) {\n    return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n  };\n  Util.applyTransform = function Util_applyTransform(p, m) {\n    var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  };\n  Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n    var d = m[0] * m[3] - m[1] * m[2];\n    var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  };\n  Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) {\n    var p1 = Util.applyTransform(r, m);\n    var p2 = Util.applyTransform(r.slice(2, 4), m);\n    var p3 = Util.applyTransform([r[0], r[3]], m);\n    var p4 = Util.applyTransform([r[2], r[1]], m);\n    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n  };\n  Util.inverseTransform = function Util_inverseTransform(m) {\n    var d = m[0] * m[3] - m[1] * m[2];\n    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n  };\n  Util.apply3dTransform = function Util_apply3dTransform(m, v) {\n    return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n  };\n  Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) {\n    var transpose = [m[0], m[2], m[1], m[3]];\n    var a = m[0] * transpose[0] + m[1] * transpose[2];\n    var b = m[0] * transpose[1] + m[1] * transpose[3];\n    var c = m[2] * transpose[0] + m[3] * transpose[2];\n    var d = m[2] * transpose[1] + m[3] * transpose[3];\n    var first = (a + d) / 2;\n    var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n    var sx = first + second || 1;\n    var sy = first - second || 1;\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  };\n  Util.normalizeRect = function Util_normalizeRect(rect) {\n    var r = rect.slice(0);\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  };\n  Util.intersect = function Util_intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n    var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n        orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n        result = [];\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n    if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return false;\n    }\n    if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return false;\n    }\n    return result;\n  };\n  return Util;\n}();\nvar ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'];\nfunction toRomanNumerals(number) {\n  var lowerCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  assert(Number.isInteger(number) && number > 0, 'The number should be a positive integer.');\n  var pos = void 0,\n      romanBuf = [];\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push('M');\n  }\n  pos = number / 100 | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  pos = number / 10 | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n  var romanStr = romanBuf.join('');\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\nvar PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];\nfunction stringToPDFString(str) {\n  var i,\n      n = str.length,\n      strBuf = [];\n  if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n    for (i = 2; i < n; i += 2) {\n      strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));\n    }\n  } else {\n    for (i = 0; i < n; ++i) {\n      var code = PDFStringTranslateTable[str.charCodeAt(i)];\n      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n    }\n  }\n  return strBuf.join('');\n}\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\nfunction isEmptyObj(obj) {\n  for (var key in obj) {\n    return false;\n  }\n  return true;\n}\nfunction isBool(v) {\n  return typeof v === 'boolean';\n}\nfunction isNum(v) {\n  return typeof v === 'number';\n}\nfunction isString(v) {\n  return typeof v === 'string';\n}\nfunction isArrayBuffer(v) {\n  return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.byteLength !== undefined;\n}\nfunction isSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A;\n}\nfunction createPromiseCapability() {\n  var capability = {};\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = resolve;\n    capability.reject = reject;\n  });\n  return capability;\n}\nvar createObjectURL = function createObjectURLClosure() {\n  var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n  return function createObjectURL(data, contentType) {\n    var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n    if (!forceDataSchema && _url_polyfill.URL.createObjectURL) {\n      var blob = new Blob([data], { type: contentType });\n      return _url_polyfill.URL.createObjectURL(blob);\n    }\n    var buffer = 'data:' + contentType + ';base64,';\n    for (var i = 0, ii = data.length; i < ii; i += 3) {\n      var b1 = data[i] & 0xFF;\n      var b2 = data[i + 1] & 0xFF;\n      var b3 = data[i + 2] & 0xFF;\n      var d1 = b1 >> 2,\n          d2 = (b1 & 3) << 4 | b2 >> 4;\n      var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64;\n      var d4 = i + 2 < ii ? b3 & 0x3F : 64;\n      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n    }\n    return buffer;\n  };\n}();\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nexports.OPS = OPS;\nexports.VerbosityLevel = VerbosityLevel;\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nexports.AnnotationFlag = AnnotationFlag;\nexports.AnnotationType = AnnotationType;\nexports.FontType = FontType;\nexports.ImageKind = ImageKind;\nexports.CMapCompressionType = CMapCompressionType;\nexports.AbortException = AbortException;\nexports.InvalidPDFException = InvalidPDFException;\nexports.MissingDataException = MissingDataException;\nexports.MissingPDFException = MissingPDFException;\nexports.NativeImageDecoding = NativeImageDecoding;\nexports.PasswordException = PasswordException;\nexports.PasswordResponses = PasswordResponses;\nexports.PermissionFlag = PermissionFlag;\nexports.StreamType = StreamType;\nexports.TextRenderingMode = TextRenderingMode;\nexports.UnexpectedResponseException = UnexpectedResponseException;\nexports.UnknownErrorException = UnknownErrorException;\nexports.Util = Util;\nexports.toRomanNumerals = toRomanNumerals;\nexports.XRefParseException = XRefParseException;\nexports.FormatError = FormatError;\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.createObjectURL = createObjectURL;\nexports.deprecated = deprecated;\nexports.getInheritableProperty = getInheritableProperty;\nexports.getLookupTableFactory = getLookupTableFactory;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isBool = isBool;\nexports.isEmptyObj = isEmptyObj;\nexports.isNum = isNum;\nexports.isString = isString;\nexports.isSpace = isSpace;\nexports.isSameOrigin = isSameOrigin;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.isLittleEndian = isLittleEndian;\nexports.isEvalSupported = isEvalSupported;\nexports.log2 = log2;\nexports.readInt8 = readInt8;\nexports.readUint16 = readUint16;\nexports.readUint32 = readUint32;\nexports.removeNullCharacters = removeNullCharacters;\nexports.ReadableStream = _streams_polyfill.ReadableStream;\nexports.URL = _url_polyfill.URL;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\nexports.unreachable = unreachable;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar globalScope = __w_pdfjs_require__(4);\nif (!globalScope._pdfjsCompatibilityChecked) {\n  globalScope._pdfjsCompatibilityChecked = true;\n  var isNodeJS = __w_pdfjs_require__(5);\n  var hasDOM = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object';\n  (function checkNodeBtoa() {\n    if (globalScope.btoa || !isNodeJS()) {\n      return;\n    }\n    globalScope.btoa = function (chars) {\n      return Buffer.from(chars, 'binary').toString('base64');\n    };\n  })();\n  (function checkNodeAtob() {\n    if (globalScope.atob || !isNodeJS()) {\n      return;\n    }\n    globalScope.atob = function (input) {\n      return Buffer.from(input, 'base64').toString('binary');\n    };\n  })();\n  (function checkCurrentScript() {\n    if (!hasDOM) {\n      return;\n    }\n    if ('currentScript' in document) {\n      return;\n    }\n    Object.defineProperty(document, 'currentScript', {\n      get: function get() {\n        var scripts = document.getElementsByTagName('script');\n        return scripts[scripts.length - 1];\n      },\n\n      enumerable: true,\n      configurable: true\n    });\n  })();\n  (function checkChildNodeRemove() {\n    if (!hasDOM) {\n      return;\n    }\n    if (typeof Element.prototype.remove !== 'undefined') {\n      return;\n    }\n    Element.prototype.remove = function () {\n      if (this.parentNode) {\n        this.parentNode.removeChild(this);\n      }\n    };\n  })();\n  (function checkDOMTokenListToggle() {\n    if (!hasDOM || isNodeJS()) {\n      return;\n    }\n    var div = document.createElement('div');\n    if (div.classList.toggle('test', 0) === false) {\n      return;\n    }\n    var originalDOMTokenListToggle = DOMTokenList.prototype.toggle;\n    DOMTokenList.prototype.toggle = function (token) {\n      if (arguments.length > 1) {\n        var force = !!arguments[1];\n        return this[force ? 'add' : 'remove'](token), force;\n      }\n      return originalDOMTokenListToggle(token);\n    };\n  })();\n  (function checkStringIncludes() {\n    if (String.prototype.includes) {\n      return;\n    }\n    __w_pdfjs_require__(6);\n  })();\n  (function checkArrayIncludes() {\n    if (Array.prototype.includes) {\n      return;\n    }\n    __w_pdfjs_require__(34);\n  })();\n  (function checkObjectAssign() {\n    if (Object.assign) {\n      return;\n    }\n    __w_pdfjs_require__(43);\n  })();\n  (function checkMathLog2() {\n    if (Math.log2) {\n      return;\n    }\n    Math.log2 = __w_pdfjs_require__(53);\n  })();\n  (function checkNumberIsNaN() {\n    if (Number.isNaN) {\n      return;\n    }\n    Number.isNaN = __w_pdfjs_require__(55);\n  })();\n  (function checkNumberIsInteger() {\n    if (Number.isInteger) {\n      return;\n    }\n    Number.isInteger = __w_pdfjs_require__(57);\n  })();\n  (function checkPromise() {\n    if (globalScope.Promise) {\n      return;\n    }\n    globalScope.Promise = __w_pdfjs_require__(60);\n  })();\n  (function checkWeakMap() {\n    if (globalScope.WeakMap) {\n      return;\n    }\n    globalScope.WeakMap = __w_pdfjs_require__(95);\n  })();\n  (function checkStringCodePointAt() {\n    if (String.codePointAt) {\n      return;\n    }\n    String.codePointAt = __w_pdfjs_require__(112);\n  })();\n  (function checkStringFromCodePoint() {\n    if (String.fromCodePoint) {\n      return;\n    }\n    String.fromCodePoint = __w_pdfjs_require__(114);\n  })();\n  (function checkSymbol() {\n    if (globalScope.Symbol) {\n      return;\n    }\n    __w_pdfjs_require__(116);\n  })();\n  (function checkObjectValues() {\n    if (Object.values) {\n      return;\n    }\n    Object.values = __w_pdfjs_require__(123);\n  })();\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nmodule.exports = function isNodeJS() {\n  return (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process + '' === '[object process]';\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(7);\nmodule.exports = __w_pdfjs_require__(10).String.includes;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\nvar context = __w_pdfjs_require__(26);\nvar INCLUDES = 'includes';\n$export($export.P + $export.F * __w_pdfjs_require__(33)(INCLUDES), 'String', {\n  includes: function includes(searchString) {\n    return !!~context(this, searchString, INCLUDES).indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(9);\nvar core = __w_pdfjs_require__(10);\nvar hide = __w_pdfjs_require__(11);\nvar redefine = __w_pdfjs_require__(21);\nvar ctx = __w_pdfjs_require__(24);\nvar PROTOTYPE = 'prototype';\nvar $export = function $export(type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    own = !IS_FORCED && target && target[key] !== undefined;\n    out = (own ? target : source)[key];\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    if (target) redefine(target, key, out, type & $export.U);\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n$export.F = 1;\n$export.G = 2;\n$export.S = 4;\n$export.P = 8;\n$export.B = 16;\n$export.W = 32;\n$export.U = 64;\n$export.R = 128;\nmodule.exports = $export;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif (typeof __g == 'number') __g = global;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar dP = __w_pdfjs_require__(12);\nvar createDesc = __w_pdfjs_require__(20);\nmodule.exports = __w_pdfjs_require__(16) ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar anObject = __w_pdfjs_require__(13);\nvar IE8_DOM_DEFINE = __w_pdfjs_require__(15);\nvar toPrimitive = __w_pdfjs_require__(19);\nvar dP = Object.defineProperty;\nexports.f = __w_pdfjs_require__(16) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) {}\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(14);\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nmodule.exports = function (it) {\n  return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) === 'object' ? it !== null : typeof it === 'function';\n};\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = !__w_pdfjs_require__(16) && !__w_pdfjs_require__(17)(function () {\n  return Object.defineProperty(__w_pdfjs_require__(18)('div'), 'a', {\n    get: function get() {\n      return 7;\n    }\n  }).a != 7;\n});\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = !__w_pdfjs_require__(17)(function () {\n  return Object.defineProperty({}, 'a', {\n    get: function get() {\n      return 7;\n    }\n  }).a != 7;\n});\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(14);\nvar document = __w_pdfjs_require__(9).document;\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(14);\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(9);\nvar hide = __w_pdfjs_require__(11);\nvar has = __w_pdfjs_require__(22);\nvar SRC = __w_pdfjs_require__(23)('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n__w_pdfjs_require__(10).inspectSource = function (it) {\n  return $toString.call(it);\n};\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar aFunction = __w_pdfjs_require__(25);\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1:\n      return function (a) {\n        return fn.call(that, a);\n      };\n    case 2:\n      return function (a, b) {\n        return fn.call(that, a, b);\n      };\n    case 3:\n      return function (a, b, c) {\n        return fn.call(that, a, b, c);\n      };\n  }\n  return function () {\n    return fn.apply(that, arguments);\n  };\n};\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isRegExp = __w_pdfjs_require__(27);\nvar defined = __w_pdfjs_require__(32);\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(14);\nvar cof = __w_pdfjs_require__(28);\nvar MATCH = __w_pdfjs_require__(29)('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar toString = {}.toString;\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar store = __w_pdfjs_require__(30)('wks');\nvar uid = __w_pdfjs_require__(23);\nvar _Symbol = __w_pdfjs_require__(9).Symbol;\nvar USE_SYMBOL = typeof _Symbol == 'function';\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] = USE_SYMBOL && _Symbol[name] || (USE_SYMBOL ? _Symbol : uid)('Symbol.' + name));\n};\n$exports.store = store;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar core = __w_pdfjs_require__(10);\nvar global = __w_pdfjs_require__(9);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __w_pdfjs_require__(31) ? 'pure' : 'global',\n  copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = false;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar MATCH = __w_pdfjs_require__(29)('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) {}\n  }\n  return true;\n};\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(35);\nmodule.exports = __w_pdfjs_require__(10).Array.includes;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\nvar $includes = __w_pdfjs_require__(36)(true);\n$export($export.P, 'Array', {\n  includes: function includes(el) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n__w_pdfjs_require__(42)('includes');\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar toIObject = __w_pdfjs_require__(37);\nvar toLength = __w_pdfjs_require__(39);\nvar toAbsoluteIndex = __w_pdfjs_require__(41);\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      if (value != value) return true;\n    } else for (; length > index; index++) {\n      if (IS_INCLUDES || index in O) {\n        if (O[index] === el) return IS_INCLUDES || index || 0;\n      }\n    }return !IS_INCLUDES && -1;\n  };\n};\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar IObject = __w_pdfjs_require__(38);\nvar defined = __w_pdfjs_require__(32);\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar cof = __w_pdfjs_require__(28);\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar toInteger = __w_pdfjs_require__(40);\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0;\n};\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar toInteger = __w_pdfjs_require__(40);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar UNSCOPABLES = __w_pdfjs_require__(29)('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __w_pdfjs_require__(11)(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(44);\nmodule.exports = __w_pdfjs_require__(10).Object.assign;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\n$export($export.S + $export.F, 'Object', { assign: __w_pdfjs_require__(45) });\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar getKeys = __w_pdfjs_require__(46);\nvar gOPS = __w_pdfjs_require__(50);\nvar pIE = __w_pdfjs_require__(51);\nvar toObject = __w_pdfjs_require__(52);\nvar IObject = __w_pdfjs_require__(38);\nvar $assign = Object.assign;\nmodule.exports = !$assign || __w_pdfjs_require__(17)(function () {\n  var A = {};\n  var B = {};\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) {\n    B[k] = k;\n  });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) {\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n    }\n  }\n  return T;\n} : $assign;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $keys = __w_pdfjs_require__(47);\nvar enumBugKeys = __w_pdfjs_require__(49);\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar has = __w_pdfjs_require__(22);\nvar toIObject = __w_pdfjs_require__(37);\nvar arrayIndexOf = __w_pdfjs_require__(36)(false);\nvar IE_PROTO = __w_pdfjs_require__(48)('IE_PROTO');\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) {\n    if (key != IE_PROTO) has(O, key) && result.push(key);\n  }while (names.length > i) {\n    if (has(O, key = names[i++])) {\n      ~arrayIndexOf(result, key) || result.push(key);\n    }\n  }return result;\n};\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar shared = __w_pdfjs_require__(30)('keys');\nvar uid = __w_pdfjs_require__(23);\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(',');\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nexports.f = Object.getOwnPropertySymbols;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nexports.f = {}.propertyIsEnumerable;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar defined = __w_pdfjs_require__(32);\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(54);\nmodule.exports = __w_pdfjs_require__(10).Math.log2;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\n$export($export.S, 'Math', {\n  log2: function log2(x) {\n    return Math.log(x) / Math.LN2;\n  }\n});\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(56);\nmodule.exports = __w_pdfjs_require__(10).Number.isNaN;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\n$export($export.S, 'Number', {\n  isNaN: function isNaN(number) {\n    return number != number;\n  }\n});\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(58);\nmodule.exports = __w_pdfjs_require__(10).Number.isInteger;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\n$export($export.S, 'Number', { isInteger: __w_pdfjs_require__(59) });\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(14);\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(61);\n__w_pdfjs_require__(63);\n__w_pdfjs_require__(73);\n__w_pdfjs_require__(76);\n__w_pdfjs_require__(93);\n__w_pdfjs_require__(94);\nmodule.exports = __w_pdfjs_require__(10).Promise;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar classof = __w_pdfjs_require__(62);\nvar test = {};\ntest[__w_pdfjs_require__(29)('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n  __w_pdfjs_require__(21)(Object.prototype, 'toString', function toString() {\n    return '[object ' + classof(this) + ']';\n  }, true);\n}\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar cof = __w_pdfjs_require__(28);\nvar TAG = __w_pdfjs_require__(29)('toStringTag');\nvar ARG = cof(function () {\n  return arguments;\n}()) == 'Arguments';\nvar tryGet = function tryGet(it, key) {\n  try {\n    return it[key];\n  } catch (e) {}\n};\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T : ARG ? cof(O) : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $at = __w_pdfjs_require__(64)(true);\n__w_pdfjs_require__(65)(String, 'String', function (iterated) {\n  this._t = String(iterated);\n  this._i = 0;\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return {\n    value: undefined,\n    done: true\n  };\n  point = $at(O, index);\n  this._i += point.length;\n  return {\n    value: point,\n    done: false\n  };\n});\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar toInteger = __w_pdfjs_require__(40);\nvar defined = __w_pdfjs_require__(32);\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar LIBRARY = __w_pdfjs_require__(31);\nvar $export = __w_pdfjs_require__(8);\nvar redefine = __w_pdfjs_require__(21);\nvar hide = __w_pdfjs_require__(11);\nvar Iterators = __w_pdfjs_require__(66);\nvar $iterCreate = __w_pdfjs_require__(67);\nvar setToStringTag = __w_pdfjs_require__(71);\nvar getPrototypeOf = __w_pdfjs_require__(72);\nvar ITERATOR = __w_pdfjs_require__(29)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys());\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar returnThis = function returnThis() {\n  return this;\n};\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function getMethod(kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS:\n        return function keys() {\n          return new Constructor(this, kind);\n        };\n      case VALUES:\n        return function values() {\n          return new Constructor(this, kind);\n        };\n    }\n    return function entries() {\n      return new Constructor(this, kind);\n    };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      setToStringTag(IteratorPrototype, TAG, true);\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() {\n      return $native.call(this);\n    };\n  }\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {};\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar create = __w_pdfjs_require__(68);\nvar descriptor = __w_pdfjs_require__(20);\nvar setToStringTag = __w_pdfjs_require__(71);\nvar IteratorPrototype = {};\n__w_pdfjs_require__(11)(IteratorPrototype, __w_pdfjs_require__(29)('iterator'), function () {\n  return this;\n});\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar anObject = __w_pdfjs_require__(13);\nvar dPs = __w_pdfjs_require__(69);\nvar enumBugKeys = __w_pdfjs_require__(49);\nvar IE_PROTO = __w_pdfjs_require__(48)('IE_PROTO');\nvar Empty = function Empty() {};\nvar PROTOTYPE = 'prototype';\nvar _createDict = function createDict() {\n  var iframe = __w_pdfjs_require__(18)('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __w_pdfjs_require__(70).appendChild(iframe);\n  iframe.src = 'javascript:';\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  _createDict = iframeDocument.F;\n  while (i--) {\n    delete _createDict[PROTOTYPE][enumBugKeys[i]];\n  }return _createDict();\n};\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    result[IE_PROTO] = O;\n  } else result = _createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar dP = __w_pdfjs_require__(12);\nvar anObject = __w_pdfjs_require__(13);\nvar getKeys = __w_pdfjs_require__(46);\nmodule.exports = __w_pdfjs_require__(16) ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) {\n    dP.f(O, P = keys[i++], Properties[P]);\n  }return O;\n};\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar document = __w_pdfjs_require__(9).document;\nmodule.exports = document && document.documentElement;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar def = __w_pdfjs_require__(12).f;\nvar has = __w_pdfjs_require__(22);\nvar TAG = __w_pdfjs_require__(29)('toStringTag');\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {\n    configurable: true,\n    value: tag\n  });\n};\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar has = __w_pdfjs_require__(22);\nvar toObject = __w_pdfjs_require__(52);\nvar IE_PROTO = __w_pdfjs_require__(48)('IE_PROTO');\nvar ObjectProto = Object.prototype;\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  }\n  return O instanceof Object ? ObjectProto : null;\n};\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $iterators = __w_pdfjs_require__(74);\nvar getKeys = __w_pdfjs_require__(46);\nvar redefine = __w_pdfjs_require__(21);\nvar global = __w_pdfjs_require__(9);\nvar hide = __w_pdfjs_require__(11);\nvar Iterators = __w_pdfjs_require__(66);\nvar wks = __w_pdfjs_require__(29);\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\nvar DOMIterables = {\n  CSSRuleList: true,\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true,\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true,\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) {\n      if (!proto[key]) redefine(proto, key, $iterators[key], true);\n    }\n  }\n}\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar addToUnscopables = __w_pdfjs_require__(42);\nvar step = __w_pdfjs_require__(75);\nvar Iterators = __w_pdfjs_require__(66);\nvar toIObject = __w_pdfjs_require__(37);\nmodule.exports = __w_pdfjs_require__(65)(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated);\n  this._i = 0;\n  this._k = kind;\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\nIterators.Arguments = Iterators.Array;\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (done, value) {\n  return {\n    value: value,\n    done: !!done\n  };\n};\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar LIBRARY = __w_pdfjs_require__(31);\nvar global = __w_pdfjs_require__(9);\nvar ctx = __w_pdfjs_require__(24);\nvar classof = __w_pdfjs_require__(62);\nvar $export = __w_pdfjs_require__(8);\nvar isObject = __w_pdfjs_require__(14);\nvar aFunction = __w_pdfjs_require__(25);\nvar anInstance = __w_pdfjs_require__(77);\nvar forOf = __w_pdfjs_require__(78);\nvar speciesConstructor = __w_pdfjs_require__(82);\nvar task = __w_pdfjs_require__(83).set;\nvar microtask = __w_pdfjs_require__(85)();\nvar newPromiseCapabilityModule = __w_pdfjs_require__(86);\nvar perform = __w_pdfjs_require__(87);\nvar userAgent = __w_pdfjs_require__(88);\nvar promiseResolve = __w_pdfjs_require__(89);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function empty() {};\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\nvar USE_NATIVE = !!function () {\n  try {\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[__w_pdfjs_require__(29)('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) {}\n}();\nvar isThenable = function isThenable(it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function notify(promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function run(reaction) {\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;else {\n            if (domain) domain.enter();\n            result = handler(value);\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) {\n      run(chain[i++]);\n    }promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function onUnhandled(promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({\n            promise: promise,\n            reason: value\n          });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    }\n    promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function isUnhandled(promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function onHandleUnhandled(promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({\n        promise: promise,\n        reason: promise._v\n      });\n    }\n  });\n};\nvar $reject = function $reject(value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise;\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function $resolve(value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise;\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = {\n          _w: promise,\n          _d: false\n        };\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({\n      _w: promise,\n      _d: false\n    }, e);\n  }\n};\nif (!USE_NATIVE) {\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  Internal = function Promise(executor) {\n    this._c = [];\n    this._a = undefined;\n    this._s = 0;\n    this._d = false;\n    this._v = undefined;\n    this._h = 0;\n    this._n = false;\n  };\n  Internal.prototype = __w_pdfjs_require__(90)($Promise.prototype, {\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    'catch': function _catch(onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function OwnPromiseCapability() {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) {\n    return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);\n  };\n}\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__w_pdfjs_require__(71)($Promise, PROMISE);\n__w_pdfjs_require__(91)(PROMISE);\nWrapper = __w_pdfjs_require__(10)[PROMISE];\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __w_pdfjs_require__(92)(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[$index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  },\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) {\n    throw TypeError(name + ': incorrect invocation!');\n  }\n  return it;\n};\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar ctx = __w_pdfjs_require__(24);\nvar call = __w_pdfjs_require__(79);\nvar isArrayIter = __w_pdfjs_require__(80);\nvar anObject = __w_pdfjs_require__(13);\nvar toLength = __w_pdfjs_require__(39);\nvar getIterFn = __w_pdfjs_require__(81);\nvar BREAK = {};\nvar RETURN = {};\nvar _exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () {\n    return iterable;\n  } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\n_exports.BREAK = BREAK;\n_exports.RETURN = RETURN;\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar anObject = __w_pdfjs_require__(13);\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar Iterators = __w_pdfjs_require__(66);\nvar ITERATOR = __w_pdfjs_require__(29)('iterator');\nvar ArrayProto = Array.prototype;\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar classof = __w_pdfjs_require__(62);\nvar ITERATOR = __w_pdfjs_require__(29)('iterator');\nvar Iterators = __w_pdfjs_require__(66);\nmodule.exports = __w_pdfjs_require__(10).getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];\n};\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar anObject = __w_pdfjs_require__(13);\nvar aFunction = __w_pdfjs_require__(25);\nvar SPECIES = __w_pdfjs_require__(29)('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar ctx = __w_pdfjs_require__(24);\nvar invoke = __w_pdfjs_require__(84);\nvar html = __w_pdfjs_require__(70);\nvar cel = __w_pdfjs_require__(18);\nvar global = __w_pdfjs_require__(9);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function run() {\n  var id = +this;\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function listener(event) {\n  run.call(event.data);\n};\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) {\n      args.push(arguments[i++]);\n    }queue[++counter] = function () {\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  if (__w_pdfjs_require__(28)(process) == 'process') {\n    defer = function defer(id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  } else if (Dispatch && Dispatch.now) {\n    defer = function defer(id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function defer(id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function defer(id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  } else {\n    defer = function defer(id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0:\n      return un ? fn() : fn.call(that);\n    case 1:\n      return un ? fn(args[0]) : fn.call(that, args[0]);\n    case 2:\n      return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]);\n    case 3:\n      return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]);\n    case 4:\n      return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]);\n  }\n  return fn.apply(that, args);\n};\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(9);\nvar macrotask = __w_pdfjs_require__(83).set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __w_pdfjs_require__(28)(process) == 'process';\nmodule.exports = function () {\n  var head, last, notify;\n  var flush = function flush() {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();else last = undefined;\n        throw e;\n      }\n    }\n    last = undefined;\n    if (parent) parent.enter();\n  };\n  if (isNode) {\n    notify = function notify() {\n      process.nextTick(flush);\n    };\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true });\n    notify = function notify() {\n      node.data = toggle = !toggle;\n    };\n  } else if (Promise && Promise.resolve) {\n    var promise = Promise.resolve(undefined);\n    notify = function notify() {\n      promise.then(flush);\n    };\n  } else {\n    notify = function notify() {\n      macrotask.call(global, flush);\n    };\n  }\n  return function (fn) {\n    var task = {\n      fn: fn,\n      next: undefined\n    };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    }\n    last = task;\n  };\n};\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar aFunction = __w_pdfjs_require__(25);\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (exec) {\n  try {\n    return {\n      e: false,\n      v: exec()\n    };\n  } catch (e) {\n    return {\n      e: true,\n      v: e\n    };\n  }\n};\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(9);\nvar navigator = global.navigator;\nmodule.exports = navigator && navigator.userAgent || '';\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar anObject = __w_pdfjs_require__(13);\nvar isObject = __w_pdfjs_require__(14);\nvar newPromiseCapability = __w_pdfjs_require__(86);\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar redefine = __w_pdfjs_require__(21);\nmodule.exports = function (target, src, safe) {\n  for (var key in src) {\n    redefine(target, key, src[key], safe);\n  }return target;\n};\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(9);\nvar dP = __w_pdfjs_require__(12);\nvar DESCRIPTORS = __w_pdfjs_require__(16);\nvar SPECIES = __w_pdfjs_require__(29)('species');\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function get() {\n      return this;\n    }\n  });\n};\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar ITERATOR = __w_pdfjs_require__(29)('iterator');\nvar SAFE_CLOSING = false;\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () {\n    SAFE_CLOSING = true;\n  };\n  Array.from(riter, function () {\n    throw 2;\n  });\n} catch (e) {}\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () {\n      return { done: safe = true };\n    };\n    arr[ITERATOR] = function () {\n      return iter;\n    };\n    exec(arr);\n  } catch (e) {}\n  return safe;\n};\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\nvar core = __w_pdfjs_require__(10);\nvar global = __w_pdfjs_require__(9);\nvar speciesConstructor = __w_pdfjs_require__(82);\nvar promiseResolve = __w_pdfjs_require__(89);\n$export($export.P + $export.R, 'Promise', {\n  'finally': function _finally(onFinally) {\n    var C = speciesConstructor(this, core.Promise || global.Promise);\n    var isFunction = typeof onFinally == 'function';\n    return this.then(isFunction ? function (x) {\n      return promiseResolve(C, onFinally()).then(function () {\n        return x;\n      });\n    } : onFinally, isFunction ? function (e) {\n      return promiseResolve(C, onFinally()).then(function () {\n        throw e;\n      });\n    } : onFinally);\n  }\n});\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\nvar newPromiseCapability = __w_pdfjs_require__(86);\nvar perform = __w_pdfjs_require__(87);\n$export($export.S, 'Promise', {\n  'try': function _try(callbackfn) {\n    var promiseCapability = newPromiseCapability.f(this);\n    var result = perform(callbackfn);\n    (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n    return promiseCapability.promise;\n  }\n});\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(61);\n__w_pdfjs_require__(73);\n__w_pdfjs_require__(96);\n__w_pdfjs_require__(108);\n__w_pdfjs_require__(110);\nmodule.exports = __w_pdfjs_require__(10).WeakMap;\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar each = __w_pdfjs_require__(97)(0);\nvar redefine = __w_pdfjs_require__(21);\nvar meta = __w_pdfjs_require__(101);\nvar assign = __w_pdfjs_require__(45);\nvar weak = __w_pdfjs_require__(102);\nvar isObject = __w_pdfjs_require__(14);\nvar fails = __w_pdfjs_require__(17);\nvar validate = __w_pdfjs_require__(103);\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\nvar wrapper = function wrapper(get) {\n  return function WeakMap() {\n    return get(this, arguments.length > 0 ? arguments[0] : undefined);\n  };\n};\nvar methods = {\n  get: function get(key) {\n    if (isObject(key)) {\n      var data = getWeak(key);\n      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n      return data ? data[this._i] : undefined;\n    }\n  },\n  set: function set(key, value) {\n    return weak.def(validate(this, WEAK_MAP), key, value);\n  }\n};\nvar $WeakMap = module.exports = __w_pdfjs_require__(104)(WEAK_MAP, wrapper, methods, weak, true, true);\nif (fails(function () {\n  return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7;\n})) {\n  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n  assign(InternalMap.prototype, methods);\n  meta.NEED = true;\n  each(['delete', 'has', 'get', 'set'], function (key) {\n    var proto = $WeakMap.prototype;\n    var method = proto[key];\n    redefine(proto, key, function (a, b) {\n      if (isObject(a) && !isExtensible(a)) {\n        if (!this._f) this._f = new InternalMap();\n        var result = this._f[key](a, b);\n        return key == 'set' ? this : result;\n      }\n      return method.call(this, a, b);\n    });\n  });\n}\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar ctx = __w_pdfjs_require__(24);\nvar IObject = __w_pdfjs_require__(38);\nvar toObject = __w_pdfjs_require__(52);\nvar toLength = __w_pdfjs_require__(39);\nvar asc = __w_pdfjs_require__(98);\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (; length > index; index++) {\n      if (NO_HOLES || index in self) {\n        val = self[index];\n        res = f(val, index, O);\n        if (TYPE) {\n          if (IS_MAP) result[index] = res;else if (res) switch (TYPE) {\n            case 3:\n              return true;\n            case 5:\n              return val;\n            case 6:\n              return index;\n            case 2:\n              result.push(val);\n          } else if (IS_EVERY) return false;\n        }\n      }\n    }return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar speciesConstructor = __w_pdfjs_require__(99);\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(14);\nvar isArray = __w_pdfjs_require__(100);\nvar SPECIES = __w_pdfjs_require__(29)('species');\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  }\n  return C === undefined ? Array : C;\n};\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar cof = __w_pdfjs_require__(28);\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar META = __w_pdfjs_require__(23)('meta');\nvar isObject = __w_pdfjs_require__(14);\nvar has = __w_pdfjs_require__(22);\nvar setDesc = __w_pdfjs_require__(12).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !__w_pdfjs_require__(17)(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function setMeta(it) {\n  setDesc(it, META, {\n    value: {\n      i: 'O' + ++id,\n      w: {}\n    }\n  });\n};\nvar fastKey = function fastKey(it, create) {\n  if (!isObject(it)) return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    if (!isExtensible(it)) return 'F';\n    if (!create) return 'E';\n    setMeta(it);\n  }\n  return it[META].i;\n};\nvar getWeak = function getWeak(it, create) {\n  if (!has(it, META)) {\n    if (!isExtensible(it)) return true;\n    if (!create) return false;\n    setMeta(it);\n  }\n  return it[META].w;\n};\nvar onFreeze = function onFreeze(it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar redefineAll = __w_pdfjs_require__(90);\nvar getWeak = __w_pdfjs_require__(101).getWeak;\nvar anObject = __w_pdfjs_require__(13);\nvar isObject = __w_pdfjs_require__(14);\nvar anInstance = __w_pdfjs_require__(77);\nvar forOf = __w_pdfjs_require__(78);\nvar createArrayMethod = __w_pdfjs_require__(97);\nvar $has = __w_pdfjs_require__(22);\nvar validate = __w_pdfjs_require__(103);\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\nvar uncaughtFrozenStore = function uncaughtFrozenStore(that) {\n  return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function UncaughtFrozenStore() {\n  this.a = [];\n};\nvar findUncaughtFrozen = function findUncaughtFrozen(store, key) {\n  return arrayFind(store.a, function (it) {\n    return it[0] === key;\n  });\n};\nUncaughtFrozenStore.prototype = {\n  get: function get(key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function has(key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function set(key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;else this.a.push([key, value]);\n  },\n  'delete': function _delete(key) {\n    var index = arrayFindIndex(this.a, function (it) {\n      return it[0] === key;\n    });\n    if (~index) this.a.splice(index, 1);\n    return !!~index;\n  }\n};\nmodule.exports = {\n  getConstructor: function getConstructor(wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;\n      that._i = id++;\n      that._l = undefined;\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      'delete': function _delete(key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n        return data && $has(data, this._i) && delete data[this._i];\n      },\n      has: function has(key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n        return data && $has(data, this._i);\n      }\n    });\n    return C;\n  },\n  def: function def(that, key, value) {\n    var data = getWeak(anObject(key), true);\n    if (data === true) uncaughtFrozenStore(that).set(key, value);else data[that._i] = value;\n    return that;\n  },\n  ufstore: uncaughtFrozenStore\n};\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(14);\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(9);\nvar $export = __w_pdfjs_require__(8);\nvar redefine = __w_pdfjs_require__(21);\nvar redefineAll = __w_pdfjs_require__(90);\nvar meta = __w_pdfjs_require__(101);\nvar forOf = __w_pdfjs_require__(78);\nvar anInstance = __w_pdfjs_require__(77);\nvar isObject = __w_pdfjs_require__(14);\nvar fails = __w_pdfjs_require__(17);\nvar $iterDetect = __w_pdfjs_require__(92);\nvar setToStringTag = __w_pdfjs_require__(71);\nvar inheritIfRequired = __w_pdfjs_require__(105);\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n  var Base = global[NAME];\n  var C = Base;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var proto = C && C.prototype;\n  var O = {};\n  var fixMethod = function fixMethod(KEY) {\n    var fn = proto[KEY];\n    redefine(proto, KEY, KEY == 'delete' ? function (a) {\n      return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n    } : KEY == 'has' ? function has(a) {\n      return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n    } : KEY == 'get' ? function get(a) {\n      return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n    } : KEY == 'add' ? function add(a) {\n      fn.call(this, a === 0 ? 0 : a);\n      return this;\n    } : function set(a, b) {\n      fn.call(this, a === 0 ? 0 : a, b);\n      return this;\n    });\n  };\n  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n    new C().entries().next();\n  }))) {\n    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n    redefineAll(C.prototype, methods);\n    meta.NEED = true;\n  } else {\n    var instance = new C();\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    var THROWS_ON_PRIMITIVES = fails(function () {\n      instance.has(1);\n    });\n    var ACCEPT_ITERABLES = $iterDetect(function (iter) {\n      new C(iter);\n    });\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      var $instance = new C();\n      var index = 5;\n      while (index--) {\n        $instance[ADDER](index, index);\n      }return !$instance.has(-0);\n    });\n    if (!ACCEPT_ITERABLES) {\n      C = wrapper(function (target, iterable) {\n        anInstance(target, C, NAME);\n        var that = inheritIfRequired(new Base(), target, C);\n        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n        return that;\n      });\n      C.prototype = proto;\n      proto.constructor = C;\n    }\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n    if (IS_WEAK && proto.clear) delete proto.clear;\n  }\n  setToStringTag(C, NAME);\n  O[NAME] = C;\n  $export($export.G + $export.W + $export.F * (C != Base), O);\n  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n  return C;\n};\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(14);\nvar setPrototypeOf = __w_pdfjs_require__(106).set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  }\n  return that;\n};\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isObject = __w_pdfjs_require__(14);\nvar anObject = __w_pdfjs_require__(13);\nvar check = function check(O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? function (test, buggy, set) {\n    try {\n      set = __w_pdfjs_require__(24)(Function.call, __w_pdfjs_require__(107).f(Object.prototype, '__proto__').set, 2);\n      set(test, []);\n      buggy = !(test instanceof Array);\n    } catch (e) {\n      buggy = true;\n    }\n    return function setPrototypeOf(O, proto) {\n      check(O, proto);\n      if (buggy) O.__proto__ = proto;else set(O, proto);\n      return O;\n    };\n  }({}, false) : undefined),\n  check: check\n};\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar pIE = __w_pdfjs_require__(51);\nvar createDesc = __w_pdfjs_require__(20);\nvar toIObject = __w_pdfjs_require__(37);\nvar toPrimitive = __w_pdfjs_require__(19);\nvar has = __w_pdfjs_require__(22);\nvar IE8_DOM_DEFINE = __w_pdfjs_require__(15);\nvar gOPD = Object.getOwnPropertyDescriptor;\nexports.f = __w_pdfjs_require__(16) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) {}\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(109)('WeakMap');\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, {\n    of: function of() {\n      var length = arguments.length;\n      var A = new Array(length);\n      while (length--) {\n        A[length] = arguments[length];\n      }return new this(A);\n    }\n  });\n};\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(111)('WeakMap');\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\nvar aFunction = __w_pdfjs_require__(25);\nvar ctx = __w_pdfjs_require__(24);\nvar forOf = __w_pdfjs_require__(78);\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, {\n    from: function from(source) {\n      var mapFn = arguments[1];\n      var mapping, A, n, cb;\n      aFunction(this);\n      mapping = mapFn !== undefined;\n      if (mapping) aFunction(mapFn);\n      if (source == undefined) return new this();\n      A = [];\n      if (mapping) {\n        n = 0;\n        cb = ctx(mapFn, arguments[2], 2);\n        forOf(source, false, function (nextItem) {\n          A.push(cb(nextItem, n++));\n        });\n      } else {\n        forOf(source, false, A.push, A);\n      }\n      return new this(A);\n    }\n  });\n};\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(113);\nmodule.exports = __w_pdfjs_require__(10).String.codePointAt;\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\nvar $at = __w_pdfjs_require__(64)(false);\n$export($export.P, 'String', {\n  codePointAt: function codePointAt(pos) {\n    return $at(this, pos);\n  }\n});\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(115);\nmodule.exports = __w_pdfjs_require__(10).String.fromCodePoint;\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\nvar toAbsoluteIndex = __w_pdfjs_require__(41);\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n  fromCodePoint: function fromCodePoint(x) {\n    var res = [];\n    var aLen = arguments.length;\n    var i = 0;\n    var code;\n    while (aLen > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n      res.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00));\n    }\n    return res.join('');\n  }\n});\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(117);\n__w_pdfjs_require__(61);\nmodule.exports = __w_pdfjs_require__(10).Symbol;\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar global = __w_pdfjs_require__(9);\nvar has = __w_pdfjs_require__(22);\nvar DESCRIPTORS = __w_pdfjs_require__(16);\nvar $export = __w_pdfjs_require__(8);\nvar redefine = __w_pdfjs_require__(21);\nvar META = __w_pdfjs_require__(101).KEY;\nvar $fails = __w_pdfjs_require__(17);\nvar shared = __w_pdfjs_require__(30);\nvar setToStringTag = __w_pdfjs_require__(71);\nvar uid = __w_pdfjs_require__(23);\nvar wks = __w_pdfjs_require__(29);\nvar wksExt = __w_pdfjs_require__(118);\nvar wksDefine = __w_pdfjs_require__(119);\nvar enumKeys = __w_pdfjs_require__(120);\nvar isArray = __w_pdfjs_require__(100);\nvar anObject = __w_pdfjs_require__(13);\nvar isObject = __w_pdfjs_require__(14);\nvar toIObject = __w_pdfjs_require__(37);\nvar toPrimitive = __w_pdfjs_require__(19);\nvar createDesc = __w_pdfjs_require__(20);\nvar _create = __w_pdfjs_require__(68);\nvar gOPNExt = __w_pdfjs_require__(121);\nvar $GOPD = __w_pdfjs_require__(107);\nvar $DP = __w_pdfjs_require__(12);\nvar $keys = __w_pdfjs_require__(46);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function get() {\n      return dP(this, 'a', { value: 7 }).a;\n    }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\nvar wrap = function wrap(tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\nvar isSymbol = USE_NATIVE && _typeof($Symbol.iterator) == 'symbol' ? function (it) {\n  return (typeof it === 'undefined' ? 'undefined' : _typeof(it)) == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    }\n    return setSymbolDesc(it, key, D);\n  }\n  return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) {\n    $defineProperty(it, key = keys[i++], P[key]);\n  }return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  }\n  return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  }\n  return result;\n};\nif (!USE_NATIVE) {\n  $Symbol = function _Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function $set(value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {\n      configurable: true,\n      set: $set\n    });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  __w_pdfjs_require__(122).f = gOPNExt.f = $getOwnPropertyNames;\n  __w_pdfjs_require__(51).f = $propertyIsEnumerable;\n  __w_pdfjs_require__(50).f = $getOwnPropertySymbols;\n  if (DESCRIPTORS && !__w_pdfjs_require__(31)) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\nfor (var es6Symbols = 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) {\n  wks(es6Symbols[j++]);\n}for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) {\n  wksDefine(wellKnownSymbols[k++]);\n}$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  'for': function _for(key) {\n    return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n  },\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) {\n      if (SymbolRegistry[key] === sym) return key;\n    }\n  },\n  useSetter: function useSetter() {\n    setter = true;\n  },\n  useSimple: function useSimple() {\n    setter = false;\n  }\n});\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  create: $create,\n  defineProperty: $defineProperty,\n  defineProperties: $defineProperties,\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  getOwnPropertyNames: $getOwnPropertyNames,\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) {\n      args.push(arguments[i++]);\n    }$replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return;\n    if (!isArray(replacer)) replacer = function replacer(key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __w_pdfjs_require__(11)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\nsetToStringTag($Symbol, 'Symbol');\nsetToStringTag(Math, 'Math', true);\nsetToStringTag(global.JSON, 'JSON', true);\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nexports.f = __w_pdfjs_require__(29);\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar global = __w_pdfjs_require__(9);\nvar core = __w_pdfjs_require__(10);\nvar LIBRARY = __w_pdfjs_require__(31);\nvar wksExt = __w_pdfjs_require__(118);\nvar defineProperty = __w_pdfjs_require__(12).f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar getKeys = __w_pdfjs_require__(46);\nvar gOPS = __w_pdfjs_require__(50);\nvar pIE = __w_pdfjs_require__(51);\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) {\n      if (isEnum.call(it, key = symbols[i++])) result.push(key);\n    }\n  }\n  return result;\n};\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar toIObject = __w_pdfjs_require__(37);\nvar gOPN = __w_pdfjs_require__(122).f;\nvar toString = {}.toString;\nvar windowNames = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];\nvar getWindowNames = function getWindowNames(it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $keys = __w_pdfjs_require__(47);\nvar hiddenKeys = __w_pdfjs_require__(49).concat('length', 'prototype');\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n__w_pdfjs_require__(124);\nmodule.exports = __w_pdfjs_require__(10).Object.values;\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar $export = __w_pdfjs_require__(8);\nvar $values = __w_pdfjs_require__(125)(false);\n$export($export.S, 'Object', {\n  values: function values(it) {\n    return $values(it);\n  }\n});\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar getKeys = __w_pdfjs_require__(46);\nvar toIObject = __w_pdfjs_require__(37);\nvar isEnum = __w_pdfjs_require__(51).f;\nmodule.exports = function (isEntries) {\n  return function (it) {\n    var O = toIObject(it);\n    var keys = getKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      if (isEnum.call(O, key = keys[i++])) {\n        result.push(isEntries ? [key, O[key]] : O[key]);\n      }\n    }return result;\n  };\n};\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar isReadableStreamSupported = false;\nif (typeof ReadableStream !== 'undefined') {\n  try {\n    new ReadableStream({\n      start: function start(controller) {\n        controller.close();\n      }\n    });\n    isReadableStreamSupported = true;\n  } catch (e) {}\n}\nif (isReadableStreamSupported) {\n  exports.ReadableStream = ReadableStream;\n} else {\n  exports.ReadableStream = __w_pdfjs_require__(127).ReadableStream;\n}\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof2 = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n(function (e, a) {\n  for (var i in a) {\n    e[i] = a[i];\n  }\n})(exports, function (modules) {\n  var installedModules = {};\n  function __w_pdfjs_require__(moduleId) {\n    if (installedModules[moduleId]) return installedModules[moduleId].exports;\n    var module = installedModules[moduleId] = {\n      i: moduleId,\n      l: false,\n      exports: {}\n    };\n    modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n    module.l = true;\n    return module.exports;\n  }\n  __w_pdfjs_require__.m = modules;\n  __w_pdfjs_require__.c = installedModules;\n  __w_pdfjs_require__.i = function (value) {\n    return value;\n  };\n  __w_pdfjs_require__.d = function (exports, name, getter) {\n    if (!__w_pdfjs_require__.o(exports, name)) {\n      Object.defineProperty(exports, name, {\n        configurable: false,\n        enumerable: true,\n        get: getter\n      });\n    }\n  };\n  __w_pdfjs_require__.n = function (module) {\n    var getter = module && module.__esModule ? function getDefault() {\n      return module['default'];\n    } : function getModuleExports() {\n      return module;\n    };\n    __w_pdfjs_require__.d(getter, 'a', getter);\n    return getter;\n  };\n  __w_pdfjs_require__.o = function (object, property) {\n    return Object.prototype.hasOwnProperty.call(object, property);\n  };\n  __w_pdfjs_require__.p = \"\";\n  return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);\n}([function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n    return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);\n  };\n  var _require = __w_pdfjs_require__(1),\n      assert = _require.assert;\n  function IsPropertyKey(argument) {\n    return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';\n  }\n  exports.typeIsObject = function (x) {\n    return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';\n  };\n  exports.createDataProperty = function (o, p, v) {\n    assert(exports.typeIsObject(o));\n    Object.defineProperty(o, p, {\n      value: v,\n      writable: true,\n      enumerable: true,\n      configurable: true\n    });\n  };\n  exports.createArrayFromList = function (elements) {\n    return elements.slice();\n  };\n  exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {\n    new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n  };\n  exports.CreateIterResultObject = function (value, done) {\n    assert(typeof done === 'boolean');\n    var obj = {};\n    Object.defineProperty(obj, 'value', {\n      value: value,\n      enumerable: true,\n      writable: true,\n      configurable: true\n    });\n    Object.defineProperty(obj, 'done', {\n      value: done,\n      enumerable: true,\n      writable: true,\n      configurable: true\n    });\n    return obj;\n  };\n  exports.IsFiniteNonNegativeNumber = function (v) {\n    if (Number.isNaN(v)) {\n      return false;\n    }\n    if (v === Infinity) {\n      return false;\n    }\n    if (v < 0) {\n      return false;\n    }\n    return true;\n  };\n  function Call(F, V, args) {\n    if (typeof F !== 'function') {\n      throw new TypeError('Argument is not a function');\n    }\n    return Function.prototype.apply.call(F, V, args);\n  }\n  exports.InvokeOrNoop = function (O, P, args) {\n    assert(O !== undefined);\n    assert(IsPropertyKey(P));\n    assert(Array.isArray(args));\n    var method = O[P];\n    if (method === undefined) {\n      return undefined;\n    }\n    return Call(method, O, args);\n  };\n  exports.PromiseInvokeOrNoop = function (O, P, args) {\n    assert(O !== undefined);\n    assert(IsPropertyKey(P));\n    assert(Array.isArray(args));\n    try {\n      return Promise.resolve(exports.InvokeOrNoop(O, P, args));\n    } catch (returnValueE) {\n      return Promise.reject(returnValueE);\n    }\n  };\n  exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {\n    assert(O !== undefined);\n    assert(IsPropertyKey(P));\n    assert(Array.isArray(args));\n    assert(Array.isArray(argsF));\n    var method = void 0;\n    try {\n      method = O[P];\n    } catch (methodE) {\n      return Promise.reject(methodE);\n    }\n    if (method === undefined) {\n      return F.apply(null, argsF);\n    }\n    try {\n      return Promise.resolve(Call(method, O, args));\n    } catch (e) {\n      return Promise.reject(e);\n    }\n  };\n  exports.TransferArrayBuffer = function (O) {\n    return O.slice();\n  };\n  exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {\n    highWaterMark = Number(highWaterMark);\n    if (Number.isNaN(highWaterMark) || highWaterMark < 0) {\n      throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n    }\n    return highWaterMark;\n  };\n  exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {\n    if (size !== undefined && typeof size !== 'function') {\n      throw new TypeError('size property of a queuing strategy must be a function');\n    }\n    highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);\n    return {\n      size: size,\n      highWaterMark: highWaterMark\n    };\n  };\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  function rethrowAssertionErrorRejection(e) {\n    if (e && e.constructor === AssertionError) {\n      setTimeout(function () {\n        throw e;\n      }, 0);\n    }\n  }\n  function AssertionError(message) {\n    this.name = 'AssertionError';\n    this.message = message || '';\n    this.stack = new Error().stack;\n  }\n  AssertionError.prototype = Object.create(Error.prototype);\n  AssertionError.prototype.constructor = AssertionError;\n  function assert(value, message) {\n    if (!value) {\n      throw new AssertionError(message);\n    }\n  }\n  module.exports = {\n    rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,\n    AssertionError: AssertionError,\n    assert: assert\n  };\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var _createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n  var _require = __w_pdfjs_require__(0),\n      InvokeOrNoop = _require.InvokeOrNoop,\n      PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n      ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n      typeIsObject = _require.typeIsObject;\n  var _require2 = __w_pdfjs_require__(1),\n      assert = _require2.assert,\n      rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;\n  var _require3 = __w_pdfjs_require__(3),\n      DequeueValue = _require3.DequeueValue,\n      EnqueueValueWithSize = _require3.EnqueueValueWithSize,\n      PeekQueueValue = _require3.PeekQueueValue,\n      ResetQueue = _require3.ResetQueue;\n  var WritableStream = function () {\n    function WritableStream() {\n      var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          size = _ref.size,\n          _ref$highWaterMark = _ref.highWaterMark,\n          highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;\n      _classCallCheck(this, WritableStream);\n      this._state = 'writable';\n      this._storedError = undefined;\n      this._writer = undefined;\n      this._writableStreamController = undefined;\n      this._writeRequests = [];\n      this._inFlightWriteRequest = undefined;\n      this._closeRequest = undefined;\n      this._inFlightCloseRequest = undefined;\n      this._pendingAbortRequest = undefined;\n      this._backpressure = false;\n      var type = underlyingSink.type;\n      if (type !== undefined) {\n        throw new RangeError('Invalid type is specified');\n      }\n      this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);\n      this._writableStreamController.__startSteps();\n    }\n    _createClass(WritableStream, [{\n      key: 'abort',\n      value: function abort(reason) {\n        if (IsWritableStream(this) === false) {\n          return Promise.reject(streamBrandCheckException('abort'));\n        }\n        if (IsWritableStreamLocked(this) === true) {\n          return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));\n        }\n        return WritableStreamAbort(this, reason);\n      }\n    }, {\n      key: 'getWriter',\n      value: function getWriter() {\n        if (IsWritableStream(this) === false) {\n          throw streamBrandCheckException('getWriter');\n        }\n        return AcquireWritableStreamDefaultWriter(this);\n      }\n    }, {\n      key: 'locked',\n      get: function get() {\n        if (IsWritableStream(this) === false) {\n          throw streamBrandCheckException('locked');\n        }\n        return IsWritableStreamLocked(this);\n      }\n    }]);\n    return WritableStream;\n  }();\n  module.exports = {\n    AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,\n    IsWritableStream: IsWritableStream,\n    IsWritableStreamLocked: IsWritableStreamLocked,\n    WritableStream: WritableStream,\n    WritableStreamAbort: WritableStreamAbort,\n    WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,\n    WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,\n    WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,\n    WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,\n    WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight\n  };\n  function AcquireWritableStreamDefaultWriter(stream) {\n    return new WritableStreamDefaultWriter(stream);\n  }\n  function IsWritableStream(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n      return false;\n    }\n    return true;\n  }\n  function IsWritableStreamLocked(stream) {\n    assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');\n    if (stream._writer === undefined) {\n      return false;\n    }\n    return true;\n  }\n  function WritableStreamAbort(stream, reason) {\n    var state = stream._state;\n    if (state === 'closed') {\n      return Promise.resolve(undefined);\n    }\n    if (state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    var error = new TypeError('Requested to abort');\n    if (stream._pendingAbortRequest !== undefined) {\n      return Promise.reject(error);\n    }\n    assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');\n    var wasAlreadyErroring = false;\n    if (state === 'erroring') {\n      wasAlreadyErroring = true;\n      reason = undefined;\n    }\n    var promise = new Promise(function (resolve, reject) {\n      stream._pendingAbortRequest = {\n        _resolve: resolve,\n        _reject: reject,\n        _reason: reason,\n        _wasAlreadyErroring: wasAlreadyErroring\n      };\n    });\n    if (wasAlreadyErroring === false) {\n      WritableStreamStartErroring(stream, error);\n    }\n    return promise;\n  }\n  function WritableStreamAddWriteRequest(stream) {\n    assert(IsWritableStreamLocked(stream) === true);\n    assert(stream._state === 'writable');\n    var promise = new Promise(function (resolve, reject) {\n      var writeRequest = {\n        _resolve: resolve,\n        _reject: reject\n      };\n      stream._writeRequests.push(writeRequest);\n    });\n    return promise;\n  }\n  function WritableStreamDealWithRejection(stream, error) {\n    var state = stream._state;\n    if (state === 'writable') {\n      WritableStreamStartErroring(stream, error);\n      return;\n    }\n    assert(state === 'erroring');\n    WritableStreamFinishErroring(stream);\n  }\n  function WritableStreamStartErroring(stream, reason) {\n    assert(stream._storedError === undefined, 'stream._storedError === undefined');\n    assert(stream._state === 'writable', 'state must be writable');\n    var controller = stream._writableStreamController;\n    assert(controller !== undefined, 'controller must not be undefined');\n    stream._state = 'erroring';\n    stream._storedError = reason;\n    var writer = stream._writer;\n    if (writer !== undefined) {\n      WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n    }\n    if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n      WritableStreamFinishErroring(stream);\n    }\n  }\n  function WritableStreamFinishErroring(stream) {\n    assert(stream._state === 'erroring', 'stream._state === erroring');\n    assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');\n    stream._state = 'errored';\n    stream._writableStreamController.__errorSteps();\n    var storedError = stream._storedError;\n    for (var i = 0; i < stream._writeRequests.length; i++) {\n      var writeRequest = stream._writeRequests[i];\n      writeRequest._reject(storedError);\n    }\n    stream._writeRequests = [];\n    if (stream._pendingAbortRequest === undefined) {\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n      return;\n    }\n    var abortRequest = stream._pendingAbortRequest;\n    stream._pendingAbortRequest = undefined;\n    if (abortRequest._wasAlreadyErroring === true) {\n      abortRequest._reject(storedError);\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n      return;\n    }\n    var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);\n    promise.then(function () {\n      abortRequest._resolve();\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    }, function (reason) {\n      abortRequest._reject(reason);\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    });\n  }\n  function WritableStreamFinishInFlightWrite(stream) {\n    assert(stream._inFlightWriteRequest !== undefined);\n    stream._inFlightWriteRequest._resolve(undefined);\n    stream._inFlightWriteRequest = undefined;\n  }\n  function WritableStreamFinishInFlightWriteWithError(stream, error) {\n    assert(stream._inFlightWriteRequest !== undefined);\n    stream._inFlightWriteRequest._reject(error);\n    stream._inFlightWriteRequest = undefined;\n    assert(stream._state === 'writable' || stream._state === 'erroring');\n    WritableStreamDealWithRejection(stream, error);\n  }\n  function WritableStreamFinishInFlightClose(stream) {\n    assert(stream._inFlightCloseRequest !== undefined);\n    stream._inFlightCloseRequest._resolve(undefined);\n    stream._inFlightCloseRequest = undefined;\n    var state = stream._state;\n    assert(state === 'writable' || state === 'erroring');\n    if (state === 'erroring') {\n      stream._storedError = undefined;\n      if (stream._pendingAbortRequest !== undefined) {\n        stream._pendingAbortRequest._resolve();\n        stream._pendingAbortRequest = undefined;\n      }\n    }\n    stream._state = 'closed';\n    var writer = stream._writer;\n    if (writer !== undefined) {\n      defaultWriterClosedPromiseResolve(writer);\n    }\n    assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');\n    assert(stream._storedError === undefined, 'stream._storedError === undefined');\n  }\n  function WritableStreamFinishInFlightCloseWithError(stream, error) {\n    assert(stream._inFlightCloseRequest !== undefined);\n    stream._inFlightCloseRequest._reject(error);\n    stream._inFlightCloseRequest = undefined;\n    assert(stream._state === 'writable' || stream._state === 'erroring');\n    if (stream._pendingAbortRequest !== undefined) {\n      stream._pendingAbortRequest._reject(error);\n      stream._pendingAbortRequest = undefined;\n    }\n    WritableStreamDealWithRejection(stream, error);\n  }\n  function WritableStreamCloseQueuedOrInFlight(stream) {\n    if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n      return false;\n    }\n    return true;\n  }\n  function WritableStreamHasOperationMarkedInFlight(stream) {\n    if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n      return false;\n    }\n    return true;\n  }\n  function WritableStreamMarkCloseRequestInFlight(stream) {\n    assert(stream._inFlightCloseRequest === undefined);\n    assert(stream._closeRequest !== undefined);\n    stream._inFlightCloseRequest = stream._closeRequest;\n    stream._closeRequest = undefined;\n  }\n  function WritableStreamMarkFirstWriteRequestInFlight(stream) {\n    assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');\n    assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');\n    stream._inFlightWriteRequest = stream._writeRequests.shift();\n  }\n  function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n    assert(stream._state === 'errored', '_stream_.[[state]] is `\"errored\"`');\n    if (stream._closeRequest !== undefined) {\n      assert(stream._inFlightCloseRequest === undefined);\n      stream._closeRequest._reject(stream._storedError);\n      stream._closeRequest = undefined;\n    }\n    var writer = stream._writer;\n    if (writer !== undefined) {\n      defaultWriterClosedPromiseReject(writer, stream._storedError);\n      writer._closedPromise.catch(function () {});\n    }\n  }\n  function WritableStreamUpdateBackpressure(stream, backpressure) {\n    assert(stream._state === 'writable');\n    assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n    var writer = stream._writer;\n    if (writer !== undefined && backpressure !== stream._backpressure) {\n      if (backpressure === true) {\n        defaultWriterReadyPromiseReset(writer);\n      } else {\n        assert(backpressure === false);\n        defaultWriterReadyPromiseResolve(writer);\n      }\n    }\n    stream._backpressure = backpressure;\n  }\n  var WritableStreamDefaultWriter = function () {\n    function WritableStreamDefaultWriter(stream) {\n      _classCallCheck(this, WritableStreamDefaultWriter);\n      if (IsWritableStream(stream) === false) {\n        throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n      }\n      if (IsWritableStreamLocked(stream) === true) {\n        throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n      }\n      this._ownerWritableStream = stream;\n      stream._writer = this;\n      var state = stream._state;\n      if (state === 'writable') {\n        if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n          defaultWriterReadyPromiseInitialize(this);\n        } else {\n          defaultWriterReadyPromiseInitializeAsResolved(this);\n        }\n        defaultWriterClosedPromiseInitialize(this);\n      } else if (state === 'erroring') {\n        defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n        this._readyPromise.catch(function () {});\n        defaultWriterClosedPromiseInitialize(this);\n      } else if (state === 'closed') {\n        defaultWriterReadyPromiseInitializeAsResolved(this);\n        defaultWriterClosedPromiseInitializeAsResolved(this);\n      } else {\n        assert(state === 'errored', 'state must be errored');\n        var storedError = stream._storedError;\n        defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n        this._readyPromise.catch(function () {});\n        defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n        this._closedPromise.catch(function () {});\n      }\n    }\n    _createClass(WritableStreamDefaultWriter, [{\n      key: 'abort',\n      value: function abort(reason) {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          return Promise.reject(defaultWriterBrandCheckException('abort'));\n        }\n        if (this._ownerWritableStream === undefined) {\n          return Promise.reject(defaultWriterLockException('abort'));\n        }\n        return WritableStreamDefaultWriterAbort(this, reason);\n      }\n    }, {\n      key: 'close',\n      value: function close() {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          return Promise.reject(defaultWriterBrandCheckException('close'));\n        }\n        var stream = this._ownerWritableStream;\n        if (stream === undefined) {\n          return Promise.reject(defaultWriterLockException('close'));\n        }\n        if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n          return Promise.reject(new TypeError('cannot close an already-closing stream'));\n        }\n        return WritableStreamDefaultWriterClose(this);\n      }\n    }, {\n      key: 'releaseLock',\n      value: function releaseLock() {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          throw defaultWriterBrandCheckException('releaseLock');\n        }\n        var stream = this._ownerWritableStream;\n        if (stream === undefined) {\n          return;\n        }\n        assert(stream._writer !== undefined);\n        WritableStreamDefaultWriterRelease(this);\n      }\n    }, {\n      key: 'write',\n      value: function write(chunk) {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          return Promise.reject(defaultWriterBrandCheckException('write'));\n        }\n        if (this._ownerWritableStream === undefined) {\n          return Promise.reject(defaultWriterLockException('write to'));\n        }\n        return WritableStreamDefaultWriterWrite(this, chunk);\n      }\n    }, {\n      key: 'closed',\n      get: function get() {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          return Promise.reject(defaultWriterBrandCheckException('closed'));\n        }\n        return this._closedPromise;\n      }\n    }, {\n      key: 'desiredSize',\n      get: function get() {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          throw defaultWriterBrandCheckException('desiredSize');\n        }\n        if (this._ownerWritableStream === undefined) {\n          throw defaultWriterLockException('desiredSize');\n        }\n        return WritableStreamDefaultWriterGetDesiredSize(this);\n      }\n    }, {\n      key: 'ready',\n      get: function get() {\n        if (IsWritableStreamDefaultWriter(this) === false) {\n          return Promise.reject(defaultWriterBrandCheckException('ready'));\n        }\n        return this._readyPromise;\n      }\n    }]);\n    return WritableStreamDefaultWriter;\n  }();\n  function IsWritableStreamDefaultWriter(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n      return false;\n    }\n    return true;\n  }\n  function WritableStreamDefaultWriterAbort(writer, reason) {\n    var stream = writer._ownerWritableStream;\n    assert(stream !== undefined);\n    return WritableStreamAbort(stream, reason);\n  }\n  function WritableStreamDefaultWriterClose(writer) {\n    var stream = writer._ownerWritableStream;\n    assert(stream !== undefined);\n    var state = stream._state;\n    if (state === 'closed' || state === 'errored') {\n      return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));\n    }\n    assert(state === 'writable' || state === 'erroring');\n    assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n    var promise = new Promise(function (resolve, reject) {\n      var closeRequest = {\n        _resolve: resolve,\n        _reject: reject\n      };\n      stream._closeRequest = closeRequest;\n    });\n    if (stream._backpressure === true && state === 'writable') {\n      defaultWriterReadyPromiseResolve(writer);\n    }\n    WritableStreamDefaultControllerClose(stream._writableStreamController);\n    return promise;\n  }\n  function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n    var stream = writer._ownerWritableStream;\n    assert(stream !== undefined);\n    var state = stream._state;\n    if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n      return Promise.resolve();\n    }\n    if (state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    assert(state === 'writable' || state === 'erroring');\n    return WritableStreamDefaultWriterClose(writer);\n  }\n  function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n    if (writer._closedPromiseState === 'pending') {\n      defaultWriterClosedPromiseReject(writer, error);\n    } else {\n      defaultWriterClosedPromiseResetToRejected(writer, error);\n    }\n    writer._closedPromise.catch(function () {});\n  }\n  function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n    if (writer._readyPromiseState === 'pending') {\n      defaultWriterReadyPromiseReject(writer, error);\n    } else {\n      defaultWriterReadyPromiseResetToRejected(writer, error);\n    }\n    writer._readyPromise.catch(function () {});\n  }\n  function WritableStreamDefaultWriterGetDesiredSize(writer) {\n    var stream = writer._ownerWritableStream;\n    var state = stream._state;\n    if (state === 'errored' || state === 'erroring') {\n      return null;\n    }\n    if (state === 'closed') {\n      return 0;\n    }\n    return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n  }\n  function WritableStreamDefaultWriterRelease(writer) {\n    var stream = writer._ownerWritableStream;\n    assert(stream !== undefined);\n    assert(stream._writer === writer);\n    var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n    WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n    WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n    stream._writer = undefined;\n    writer._ownerWritableStream = undefined;\n  }\n  function WritableStreamDefaultWriterWrite(writer, chunk) {\n    var stream = writer._ownerWritableStream;\n    assert(stream !== undefined);\n    var controller = stream._writableStreamController;\n    var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n    if (stream !== writer._ownerWritableStream) {\n      return Promise.reject(defaultWriterLockException('write to'));\n    }\n    var state = stream._state;\n    if (state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n      return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));\n    }\n    if (state === 'erroring') {\n      return Promise.reject(stream._storedError);\n    }\n    assert(state === 'writable');\n    var promise = WritableStreamAddWriteRequest(stream);\n    WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n    return promise;\n  }\n  var WritableStreamDefaultController = function () {\n    function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {\n      _classCallCheck(this, WritableStreamDefaultController);\n      if (IsWritableStream(stream) === false) {\n        throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');\n      }\n      if (stream._writableStreamController !== undefined) {\n        throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');\n      }\n      this._controlledWritableStream = stream;\n      this._underlyingSink = underlyingSink;\n      this._queue = undefined;\n      this._queueTotalSize = undefined;\n      ResetQueue(this);\n      this._started = false;\n      var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n      this._strategySize = normalizedStrategy.size;\n      this._strategyHWM = normalizedStrategy.highWaterMark;\n      var backpressure = WritableStreamDefaultControllerGetBackpressure(this);\n      WritableStreamUpdateBackpressure(stream, backpressure);\n    }\n    _createClass(WritableStreamDefaultController, [{\n      key: 'error',\n      value: function error(e) {\n        if (IsWritableStreamDefaultController(this) === false) {\n          throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n        }\n        var state = this._controlledWritableStream._state;\n        if (state !== 'writable') {\n          return;\n        }\n        WritableStreamDefaultControllerError(this, e);\n      }\n    }, {\n      key: '__abortSteps',\n      value: function __abortSteps(reason) {\n        return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);\n      }\n    }, {\n      key: '__errorSteps',\n      value: function __errorSteps() {\n        ResetQueue(this);\n      }\n    }, {\n      key: '__startSteps',\n      value: function __startSteps() {\n        var _this = this;\n        var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);\n        var stream = this._controlledWritableStream;\n        Promise.resolve(startResult).then(function () {\n          assert(stream._state === 'writable' || stream._state === 'erroring');\n          _this._started = true;\n          WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);\n        }, function (r) {\n          assert(stream._state === 'writable' || stream._state === 'erroring');\n          _this._started = true;\n          WritableStreamDealWithRejection(stream, r);\n        }).catch(rethrowAssertionErrorRejection);\n      }\n    }]);\n    return WritableStreamDefaultController;\n  }();\n  function WritableStreamDefaultControllerClose(controller) {\n    EnqueueValueWithSize(controller, 'close', 0);\n    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n  }\n  function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n    var strategySize = controller._strategySize;\n    if (strategySize === undefined) {\n      return 1;\n    }\n    try {\n      return strategySize(chunk);\n    } catch (chunkSizeE) {\n      WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n      return 1;\n    }\n  }\n  function WritableStreamDefaultControllerGetDesiredSize(controller) {\n    return controller._strategyHWM - controller._queueTotalSize;\n  }\n  function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n    var writeRecord = { chunk: chunk };\n    try {\n      EnqueueValueWithSize(controller, writeRecord, chunkSize);\n    } catch (enqueueE) {\n      WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n      return;\n    }\n    var stream = controller._controlledWritableStream;\n    if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n      var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n      WritableStreamUpdateBackpressure(stream, backpressure);\n    }\n    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n  }\n  function IsWritableStreamDefaultController(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {\n      return false;\n    }\n    return true;\n  }\n  function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n    var stream = controller._controlledWritableStream;\n    if (controller._started === false) {\n      return;\n    }\n    if (stream._inFlightWriteRequest !== undefined) {\n      return;\n    }\n    var state = stream._state;\n    if (state === 'closed' || state === 'errored') {\n      return;\n    }\n    if (state === 'erroring') {\n      WritableStreamFinishErroring(stream);\n      return;\n    }\n    if (controller._queue.length === 0) {\n      return;\n    }\n    var writeRecord = PeekQueueValue(controller);\n    if (writeRecord === 'close') {\n      WritableStreamDefaultControllerProcessClose(controller);\n    } else {\n      WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n    }\n  }\n  function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n    if (controller._controlledWritableStream._state === 'writable') {\n      WritableStreamDefaultControllerError(controller, error);\n    }\n  }\n  function WritableStreamDefaultControllerProcessClose(controller) {\n    var stream = controller._controlledWritableStream;\n    WritableStreamMarkCloseRequestInFlight(stream);\n    DequeueValue(controller);\n    assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');\n    var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);\n    sinkClosePromise.then(function () {\n      WritableStreamFinishInFlightClose(stream);\n    }, function (reason) {\n      WritableStreamFinishInFlightCloseWithError(stream, reason);\n    }).catch(rethrowAssertionErrorRejection);\n  }\n  function WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n    var stream = controller._controlledWritableStream;\n    WritableStreamMarkFirstWriteRequestInFlight(stream);\n    var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);\n    sinkWritePromise.then(function () {\n      WritableStreamFinishInFlightWrite(stream);\n      var state = stream._state;\n      assert(state === 'writable' || state === 'erroring');\n      DequeueValue(controller);\n      if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n        var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n        WritableStreamUpdateBackpressure(stream, backpressure);\n      }\n      WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n    }, function (reason) {\n      WritableStreamFinishInFlightWriteWithError(stream, reason);\n    }).catch(rethrowAssertionErrorRejection);\n  }\n  function WritableStreamDefaultControllerGetBackpressure(controller) {\n    var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n    return desiredSize <= 0;\n  }\n  function WritableStreamDefaultControllerError(controller, error) {\n    var stream = controller._controlledWritableStream;\n    assert(stream._state === 'writable');\n    WritableStreamStartErroring(stream, error);\n  }\n  function streamBrandCheckException(name) {\n    return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');\n  }\n  function defaultWriterBrandCheckException(name) {\n    return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');\n  }\n  function defaultWriterLockException(name) {\n    return new TypeError('Cannot ' + name + ' a stream using a released writer');\n  }\n  function defaultWriterClosedPromiseInitialize(writer) {\n    writer._closedPromise = new Promise(function (resolve, reject) {\n      writer._closedPromise_resolve = resolve;\n      writer._closedPromise_reject = reject;\n      writer._closedPromiseState = 'pending';\n    });\n  }\n  function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n    writer._closedPromise = Promise.reject(reason);\n    writer._closedPromise_resolve = undefined;\n    writer._closedPromise_reject = undefined;\n    writer._closedPromiseState = 'rejected';\n  }\n  function defaultWriterClosedPromiseInitializeAsResolved(writer) {\n    writer._closedPromise = Promise.resolve(undefined);\n    writer._closedPromise_resolve = undefined;\n    writer._closedPromise_reject = undefined;\n    writer._closedPromiseState = 'resolved';\n  }\n  function defaultWriterClosedPromiseReject(writer, reason) {\n    assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n    assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n    assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n    writer._closedPromise_reject(reason);\n    writer._closedPromise_resolve = undefined;\n    writer._closedPromise_reject = undefined;\n    writer._closedPromiseState = 'rejected';\n  }\n  function defaultWriterClosedPromiseResetToRejected(writer, reason) {\n    assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');\n    assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');\n    assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');\n    writer._closedPromise = Promise.reject(reason);\n    writer._closedPromiseState = 'rejected';\n  }\n  function defaultWriterClosedPromiseResolve(writer) {\n    assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n    assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n    assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n    writer._closedPromise_resolve(undefined);\n    writer._closedPromise_resolve = undefined;\n    writer._closedPromise_reject = undefined;\n    writer._closedPromiseState = 'resolved';\n  }\n  function defaultWriterReadyPromiseInitialize(writer) {\n    writer._readyPromise = new Promise(function (resolve, reject) {\n      writer._readyPromise_resolve = resolve;\n      writer._readyPromise_reject = reject;\n    });\n    writer._readyPromiseState = 'pending';\n  }\n  function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n    writer._readyPromise = Promise.reject(reason);\n    writer._readyPromise_resolve = undefined;\n    writer._readyPromise_reject = undefined;\n    writer._readyPromiseState = 'rejected';\n  }\n  function defaultWriterReadyPromiseInitializeAsResolved(writer) {\n    writer._readyPromise = Promise.resolve(undefined);\n    writer._readyPromise_resolve = undefined;\n    writer._readyPromise_reject = undefined;\n    writer._readyPromiseState = 'fulfilled';\n  }\n  function defaultWriterReadyPromiseReject(writer, reason) {\n    assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n    assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n    writer._readyPromise_reject(reason);\n    writer._readyPromise_resolve = undefined;\n    writer._readyPromise_reject = undefined;\n    writer._readyPromiseState = 'rejected';\n  }\n  function defaultWriterReadyPromiseReset(writer) {\n    assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n    assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n    writer._readyPromise = new Promise(function (resolve, reject) {\n      writer._readyPromise_resolve = resolve;\n      writer._readyPromise_reject = reject;\n    });\n    writer._readyPromiseState = 'pending';\n  }\n  function defaultWriterReadyPromiseResetToRejected(writer, reason) {\n    assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n    assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n    writer._readyPromise = Promise.reject(reason);\n    writer._readyPromiseState = 'rejected';\n  }\n  function defaultWriterReadyPromiseResolve(writer) {\n    assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n    assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n    writer._readyPromise_resolve(undefined);\n    writer._readyPromise_resolve = undefined;\n    writer._readyPromise_reject = undefined;\n    writer._readyPromiseState = 'fulfilled';\n  }\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var _require = __w_pdfjs_require__(0),\n      IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;\n  var _require2 = __w_pdfjs_require__(1),\n      assert = _require2.assert;\n  exports.DequeueValue = function (container) {\n    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n    assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');\n    var pair = container._queue.shift();\n    container._queueTotalSize -= pair.size;\n    if (container._queueTotalSize < 0) {\n      container._queueTotalSize = 0;\n    }\n    return pair.value;\n  };\n  exports.EnqueueValueWithSize = function (container, value, size) {\n    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');\n    size = Number(size);\n    if (!IsFiniteNonNegativeNumber(size)) {\n      throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n    }\n    container._queue.push({\n      value: value,\n      size: size\n    });\n    container._queueTotalSize += size;\n  };\n  exports.PeekQueueValue = function (container) {\n    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n    assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');\n    var pair = container._queue[0];\n    return pair.value;\n  };\n  exports.ResetQueue = function (container) {\n    assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n    container._queue = [];\n    container._queueTotalSize = 0;\n  };\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var _createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n  var _require = __w_pdfjs_require__(0),\n      ArrayBufferCopy = _require.ArrayBufferCopy,\n      CreateIterResultObject = _require.CreateIterResultObject,\n      IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,\n      InvokeOrNoop = _require.InvokeOrNoop,\n      PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n      TransferArrayBuffer = _require.TransferArrayBuffer,\n      ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n      ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;\n  var _require2 = __w_pdfjs_require__(0),\n      createArrayFromList = _require2.createArrayFromList,\n      createDataProperty = _require2.createDataProperty,\n      typeIsObject = _require2.typeIsObject;\n  var _require3 = __w_pdfjs_require__(1),\n      assert = _require3.assert,\n      rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;\n  var _require4 = __w_pdfjs_require__(3),\n      DequeueValue = _require4.DequeueValue,\n      EnqueueValueWithSize = _require4.EnqueueValueWithSize,\n      ResetQueue = _require4.ResetQueue;\n  var _require5 = __w_pdfjs_require__(2),\n      AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,\n      IsWritableStream = _require5.IsWritableStream,\n      IsWritableStreamLocked = _require5.IsWritableStreamLocked,\n      WritableStreamAbort = _require5.WritableStreamAbort,\n      WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,\n      WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,\n      WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,\n      WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;\n  var ReadableStream = function () {\n    function ReadableStream() {\n      var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          size = _ref.size,\n          highWaterMark = _ref.highWaterMark;\n      _classCallCheck(this, ReadableStream);\n      this._state = 'readable';\n      this._reader = undefined;\n      this._storedError = undefined;\n      this._disturbed = false;\n      this._readableStreamController = undefined;\n      var type = underlyingSource.type;\n      var typeString = String(type);\n      if (typeString === 'bytes') {\n        if (highWaterMark === undefined) {\n          highWaterMark = 0;\n        }\n        this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);\n      } else if (type === undefined) {\n        if (highWaterMark === undefined) {\n          highWaterMark = 1;\n        }\n        this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);\n      } else {\n        throw new RangeError('Invalid type is specified');\n      }\n    }\n    _createClass(ReadableStream, [{\n      key: 'cancel',\n      value: function cancel(reason) {\n        if (IsReadableStream(this) === false) {\n          return Promise.reject(streamBrandCheckException('cancel'));\n        }\n        if (IsReadableStreamLocked(this) === true) {\n          return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));\n        }\n        return ReadableStreamCancel(this, reason);\n      }\n    }, {\n      key: 'getReader',\n      value: function getReader() {\n        var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n            mode = _ref2.mode;\n        if (IsReadableStream(this) === false) {\n          throw streamBrandCheckException('getReader');\n        }\n        if (mode === undefined) {\n          return AcquireReadableStreamDefaultReader(this);\n        }\n        mode = String(mode);\n        if (mode === 'byob') {\n          return AcquireReadableStreamBYOBReader(this);\n        }\n        throw new RangeError('Invalid mode is specified');\n      }\n    }, {\n      key: 'pipeThrough',\n      value: function pipeThrough(_ref3, options) {\n        var writable = _ref3.writable,\n            readable = _ref3.readable;\n        var promise = this.pipeTo(writable, options);\n        ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);\n        return readable;\n      }\n    }, {\n      key: 'pipeTo',\n      value: function pipeTo(dest) {\n        var _this = this;\n        var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n            preventClose = _ref4.preventClose,\n            preventAbort = _ref4.preventAbort,\n            preventCancel = _ref4.preventCancel;\n        if (IsReadableStream(this) === false) {\n          return Promise.reject(streamBrandCheckException('pipeTo'));\n        }\n        if (IsWritableStream(dest) === false) {\n          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n        }\n        preventClose = Boolean(preventClose);\n        preventAbort = Boolean(preventAbort);\n        preventCancel = Boolean(preventCancel);\n        if (IsReadableStreamLocked(this) === true) {\n          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n        }\n        if (IsWritableStreamLocked(dest) === true) {\n          return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n        }\n        var reader = AcquireReadableStreamDefaultReader(this);\n        var writer = AcquireWritableStreamDefaultWriter(dest);\n        var shuttingDown = false;\n        var currentWrite = Promise.resolve();\n        return new Promise(function (resolve, reject) {\n          function pipeLoop() {\n            currentWrite = Promise.resolve();\n            if (shuttingDown === true) {\n              return Promise.resolve();\n            }\n            return writer._readyPromise.then(function () {\n              return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {\n                var value = _ref5.value,\n                    done = _ref5.done;\n                if (done === true) {\n                  return;\n                }\n                currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});\n              });\n            }).then(pipeLoop);\n          }\n          isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {\n            if (preventAbort === false) {\n              shutdownWithAction(function () {\n                return WritableStreamAbort(dest, storedError);\n              }, true, storedError);\n            } else {\n              shutdown(true, storedError);\n            }\n          });\n          isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n            if (preventCancel === false) {\n              shutdownWithAction(function () {\n                return ReadableStreamCancel(_this, storedError);\n              }, true, storedError);\n            } else {\n              shutdown(true, storedError);\n            }\n          });\n          isOrBecomesClosed(_this, reader._closedPromise, function () {\n            if (preventClose === false) {\n              shutdownWithAction(function () {\n                return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n              });\n            } else {\n              shutdown();\n            }\n          });\n          if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n            var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n            if (preventCancel === false) {\n              shutdownWithAction(function () {\n                return ReadableStreamCancel(_this, destClosed);\n              }, true, destClosed);\n            } else {\n              shutdown(true, destClosed);\n            }\n          }\n          pipeLoop().catch(function (err) {\n            currentWrite = Promise.resolve();\n            rethrowAssertionErrorRejection(err);\n          });\n          function waitForWritesToFinish() {\n            var oldCurrentWrite = currentWrite;\n            return currentWrite.then(function () {\n              return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n            });\n          }\n          function isOrBecomesErrored(stream, promise, action) {\n            if (stream._state === 'errored') {\n              action(stream._storedError);\n            } else {\n              promise.catch(action).catch(rethrowAssertionErrorRejection);\n            }\n          }\n          function isOrBecomesClosed(stream, promise, action) {\n            if (stream._state === 'closed') {\n              action();\n            } else {\n              promise.then(action).catch(rethrowAssertionErrorRejection);\n            }\n          }\n          function shutdownWithAction(action, originalIsError, originalError) {\n            if (shuttingDown === true) {\n              return;\n            }\n            shuttingDown = true;\n            if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n              waitForWritesToFinish().then(doTheRest);\n            } else {\n              doTheRest();\n            }\n            function doTheRest() {\n              action().then(function () {\n                return finalize(originalIsError, originalError);\n              }, function (newError) {\n                return finalize(true, newError);\n              }).catch(rethrowAssertionErrorRejection);\n            }\n          }\n          function shutdown(isError, error) {\n            if (shuttingDown === true) {\n              return;\n            }\n            shuttingDown = true;\n            if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n              waitForWritesToFinish().then(function () {\n                return finalize(isError, error);\n              }).catch(rethrowAssertionErrorRejection);\n            } else {\n              finalize(isError, error);\n            }\n          }\n          function finalize(isError, error) {\n            WritableStreamDefaultWriterRelease(writer);\n            ReadableStreamReaderGenericRelease(reader);\n            if (isError) {\n              reject(error);\n            } else {\n              resolve(undefined);\n            }\n          }\n        });\n      }\n    }, {\n      key: 'tee',\n      value: function tee() {\n        if (IsReadableStream(this) === false) {\n          throw streamBrandCheckException('tee');\n        }\n        var branches = ReadableStreamTee(this, false);\n        return createArrayFromList(branches);\n      }\n    }, {\n      key: 'locked',\n      get: function get() {\n        if (IsReadableStream(this) === false) {\n          throw streamBrandCheckException('locked');\n        }\n        return IsReadableStreamLocked(this);\n      }\n    }]);\n    return ReadableStream;\n  }();\n  module.exports = {\n    ReadableStream: ReadableStream,\n    IsReadableStreamDisturbed: IsReadableStreamDisturbed,\n    ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,\n    ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,\n    ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,\n    ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize\n  };\n  function AcquireReadableStreamBYOBReader(stream) {\n    return new ReadableStreamBYOBReader(stream);\n  }\n  function AcquireReadableStreamDefaultReader(stream) {\n    return new ReadableStreamDefaultReader(stream);\n  }\n  function IsReadableStream(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n      return false;\n    }\n    return true;\n  }\n  function IsReadableStreamDisturbed(stream) {\n    assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');\n    return stream._disturbed;\n  }\n  function IsReadableStreamLocked(stream) {\n    assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');\n    if (stream._reader === undefined) {\n      return false;\n    }\n    return true;\n  }\n  function ReadableStreamTee(stream, cloneForBranch2) {\n    assert(IsReadableStream(stream) === true);\n    assert(typeof cloneForBranch2 === 'boolean');\n    var reader = AcquireReadableStreamDefaultReader(stream);\n    var teeState = {\n      closedOrErrored: false,\n      canceled1: false,\n      canceled2: false,\n      reason1: undefined,\n      reason2: undefined\n    };\n    teeState.promise = new Promise(function (resolve) {\n      teeState._resolve = resolve;\n    });\n    var pull = create_ReadableStreamTeePullFunction();\n    pull._reader = reader;\n    pull._teeState = teeState;\n    pull._cloneForBranch2 = cloneForBranch2;\n    var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();\n    cancel1._stream = stream;\n    cancel1._teeState = teeState;\n    var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();\n    cancel2._stream = stream;\n    cancel2._teeState = teeState;\n    var underlyingSource1 = Object.create(Object.prototype);\n    createDataProperty(underlyingSource1, 'pull', pull);\n    createDataProperty(underlyingSource1, 'cancel', cancel1);\n    var branch1Stream = new ReadableStream(underlyingSource1);\n    var underlyingSource2 = Object.create(Object.prototype);\n    createDataProperty(underlyingSource2, 'pull', pull);\n    createDataProperty(underlyingSource2, 'cancel', cancel2);\n    var branch2Stream = new ReadableStream(underlyingSource2);\n    pull._branch1 = branch1Stream._readableStreamController;\n    pull._branch2 = branch2Stream._readableStreamController;\n    reader._closedPromise.catch(function (r) {\n      if (teeState.closedOrErrored === true) {\n        return;\n      }\n      ReadableStreamDefaultControllerError(pull._branch1, r);\n      ReadableStreamDefaultControllerError(pull._branch2, r);\n      teeState.closedOrErrored = true;\n    });\n    return [branch1Stream, branch2Stream];\n  }\n  function create_ReadableStreamTeePullFunction() {\n    function f() {\n      var reader = f._reader,\n          branch1 = f._branch1,\n          branch2 = f._branch2,\n          teeState = f._teeState;\n      return ReadableStreamDefaultReaderRead(reader).then(function (result) {\n        assert(typeIsObject(result));\n        var value = result.value;\n        var done = result.done;\n        assert(typeof done === 'boolean');\n        if (done === true && teeState.closedOrErrored === false) {\n          if (teeState.canceled1 === false) {\n            ReadableStreamDefaultControllerClose(branch1);\n          }\n          if (teeState.canceled2 === false) {\n            ReadableStreamDefaultControllerClose(branch2);\n          }\n          teeState.closedOrErrored = true;\n        }\n        if (teeState.closedOrErrored === true) {\n          return;\n        }\n        var value1 = value;\n        var value2 = value;\n        if (teeState.canceled1 === false) {\n          ReadableStreamDefaultControllerEnqueue(branch1, value1);\n        }\n        if (teeState.canceled2 === false) {\n          ReadableStreamDefaultControllerEnqueue(branch2, value2);\n        }\n      });\n    }\n    return f;\n  }\n  function create_ReadableStreamTeeBranch1CancelFunction() {\n    function f(reason) {\n      var stream = f._stream,\n          teeState = f._teeState;\n      teeState.canceled1 = true;\n      teeState.reason1 = reason;\n      if (teeState.canceled2 === true) {\n        var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n        var cancelResult = ReadableStreamCancel(stream, compositeReason);\n        teeState._resolve(cancelResult);\n      }\n      return teeState.promise;\n    }\n    return f;\n  }\n  function create_ReadableStreamTeeBranch2CancelFunction() {\n    function f(reason) {\n      var stream = f._stream,\n          teeState = f._teeState;\n      teeState.canceled2 = true;\n      teeState.reason2 = reason;\n      if (teeState.canceled1 === true) {\n        var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n        var cancelResult = ReadableStreamCancel(stream, compositeReason);\n        teeState._resolve(cancelResult);\n      }\n      return teeState.promise;\n    }\n    return f;\n  }\n  function ReadableStreamAddReadIntoRequest(stream) {\n    assert(IsReadableStreamBYOBReader(stream._reader) === true);\n    assert(stream._state === 'readable' || stream._state === 'closed');\n    var promise = new Promise(function (resolve, reject) {\n      var readIntoRequest = {\n        _resolve: resolve,\n        _reject: reject\n      };\n      stream._reader._readIntoRequests.push(readIntoRequest);\n    });\n    return promise;\n  }\n  function ReadableStreamAddReadRequest(stream) {\n    assert(IsReadableStreamDefaultReader(stream._reader) === true);\n    assert(stream._state === 'readable');\n    var promise = new Promise(function (resolve, reject) {\n      var readRequest = {\n        _resolve: resolve,\n        _reject: reject\n      };\n      stream._reader._readRequests.push(readRequest);\n    });\n    return promise;\n  }\n  function ReadableStreamCancel(stream, reason) {\n    stream._disturbed = true;\n    if (stream._state === 'closed') {\n      return Promise.resolve(undefined);\n    }\n    if (stream._state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    ReadableStreamClose(stream);\n    var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);\n    return sourceCancelPromise.then(function () {\n      return undefined;\n    });\n  }\n  function ReadableStreamClose(stream) {\n    assert(stream._state === 'readable');\n    stream._state = 'closed';\n    var reader = stream._reader;\n    if (reader === undefined) {\n      return undefined;\n    }\n    if (IsReadableStreamDefaultReader(reader) === true) {\n      for (var i = 0; i < reader._readRequests.length; i++) {\n        var _resolve = reader._readRequests[i]._resolve;\n        _resolve(CreateIterResultObject(undefined, true));\n      }\n      reader._readRequests = [];\n    }\n    defaultReaderClosedPromiseResolve(reader);\n    return undefined;\n  }\n  function ReadableStreamError(stream, e) {\n    assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');\n    assert(stream._state === 'readable', 'state must be readable');\n    stream._state = 'errored';\n    stream._storedError = e;\n    var reader = stream._reader;\n    if (reader === undefined) {\n      return undefined;\n    }\n    if (IsReadableStreamDefaultReader(reader) === true) {\n      for (var i = 0; i < reader._readRequests.length; i++) {\n        var readRequest = reader._readRequests[i];\n        readRequest._reject(e);\n      }\n      reader._readRequests = [];\n    } else {\n      assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');\n      for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {\n        var readIntoRequest = reader._readIntoRequests[_i];\n        readIntoRequest._reject(e);\n      }\n      reader._readIntoRequests = [];\n    }\n    defaultReaderClosedPromiseReject(reader, e);\n    reader._closedPromise.catch(function () {});\n  }\n  function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n    var reader = stream._reader;\n    assert(reader._readIntoRequests.length > 0);\n    var readIntoRequest = reader._readIntoRequests.shift();\n    readIntoRequest._resolve(CreateIterResultObject(chunk, done));\n  }\n  function ReadableStreamFulfillReadRequest(stream, chunk, done) {\n    var reader = stream._reader;\n    assert(reader._readRequests.length > 0);\n    var readRequest = reader._readRequests.shift();\n    readRequest._resolve(CreateIterResultObject(chunk, done));\n  }\n  function ReadableStreamGetNumReadIntoRequests(stream) {\n    return stream._reader._readIntoRequests.length;\n  }\n  function ReadableStreamGetNumReadRequests(stream) {\n    return stream._reader._readRequests.length;\n  }\n  function ReadableStreamHasBYOBReader(stream) {\n    var reader = stream._reader;\n    if (reader === undefined) {\n      return false;\n    }\n    if (IsReadableStreamBYOBReader(reader) === false) {\n      return false;\n    }\n    return true;\n  }\n  function ReadableStreamHasDefaultReader(stream) {\n    var reader = stream._reader;\n    if (reader === undefined) {\n      return false;\n    }\n    if (IsReadableStreamDefaultReader(reader) === false) {\n      return false;\n    }\n    return true;\n  }\n  var ReadableStreamDefaultReader = function () {\n    function ReadableStreamDefaultReader(stream) {\n      _classCallCheck(this, ReadableStreamDefaultReader);\n      if (IsReadableStream(stream) === false) {\n        throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n      }\n      if (IsReadableStreamLocked(stream) === true) {\n        throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n      }\n      ReadableStreamReaderGenericInitialize(this, stream);\n      this._readRequests = [];\n    }\n    _createClass(ReadableStreamDefaultReader, [{\n      key: 'cancel',\n      value: function cancel(reason) {\n        if (IsReadableStreamDefaultReader(this) === false) {\n          return Promise.reject(defaultReaderBrandCheckException('cancel'));\n        }\n        if (this._ownerReadableStream === undefined) {\n          return Promise.reject(readerLockException('cancel'));\n        }\n        return ReadableStreamReaderGenericCancel(this, reason);\n      }\n    }, {\n      key: 'read',\n      value: function read() {\n        if (IsReadableStreamDefaultReader(this) === false) {\n          return Promise.reject(defaultReaderBrandCheckException('read'));\n        }\n        if (this._ownerReadableStream === undefined) {\n          return Promise.reject(readerLockException('read from'));\n        }\n        return ReadableStreamDefaultReaderRead(this);\n      }\n    }, {\n      key: 'releaseLock',\n      value: function releaseLock() {\n        if (IsReadableStreamDefaultReader(this) === false) {\n          throw defaultReaderBrandCheckException('releaseLock');\n        }\n        if (this._ownerReadableStream === undefined) {\n          return;\n        }\n        if (this._readRequests.length > 0) {\n          throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n        }\n        ReadableStreamReaderGenericRelease(this);\n      }\n    }, {\n      key: 'closed',\n      get: function get() {\n        if (IsReadableStreamDefaultReader(this) === false) {\n          return Promise.reject(defaultReaderBrandCheckException('closed'));\n        }\n        return this._closedPromise;\n      }\n    }]);\n    return ReadableStreamDefaultReader;\n  }();\n  var ReadableStreamBYOBReader = function () {\n    function ReadableStreamBYOBReader(stream) {\n      _classCallCheck(this, ReadableStreamBYOBReader);\n      if (!IsReadableStream(stream)) {\n        throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n      }\n      if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n        throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n      }\n      if (IsReadableStreamLocked(stream)) {\n        throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n      }\n      ReadableStreamReaderGenericInitialize(this, stream);\n      this._readIntoRequests = [];\n    }\n    _createClass(ReadableStreamBYOBReader, [{\n      key: 'cancel',\n      value: function cancel(reason) {\n        if (!IsReadableStreamBYOBReader(this)) {\n          return Promise.reject(byobReaderBrandCheckException('cancel'));\n        }\n        if (this._ownerReadableStream === undefined) {\n          return Promise.reject(readerLockException('cancel'));\n        }\n        return ReadableStreamReaderGenericCancel(this, reason);\n      }\n    }, {\n      key: 'read',\n      value: function read(view) {\n        if (!IsReadableStreamBYOBReader(this)) {\n          return Promise.reject(byobReaderBrandCheckException('read'));\n        }\n        if (this._ownerReadableStream === undefined) {\n          return Promise.reject(readerLockException('read from'));\n        }\n        if (!ArrayBuffer.isView(view)) {\n          return Promise.reject(new TypeError('view must be an array buffer view'));\n        }\n        if (view.byteLength === 0) {\n          return Promise.reject(new TypeError('view must have non-zero byteLength'));\n        }\n        return ReadableStreamBYOBReaderRead(this, view);\n      }\n    }, {\n      key: 'releaseLock',\n      value: function releaseLock() {\n        if (!IsReadableStreamBYOBReader(this)) {\n          throw byobReaderBrandCheckException('releaseLock');\n        }\n        if (this._ownerReadableStream === undefined) {\n          return;\n        }\n        if (this._readIntoRequests.length > 0) {\n          throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n        }\n        ReadableStreamReaderGenericRelease(this);\n      }\n    }, {\n      key: 'closed',\n      get: function get() {\n        if (!IsReadableStreamBYOBReader(this)) {\n          return Promise.reject(byobReaderBrandCheckException('closed'));\n        }\n        return this._closedPromise;\n      }\n    }]);\n    return ReadableStreamBYOBReader;\n  }();\n  function IsReadableStreamBYOBReader(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n      return false;\n    }\n    return true;\n  }\n  function IsReadableStreamDefaultReader(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n      return false;\n    }\n    return true;\n  }\n  function ReadableStreamReaderGenericInitialize(reader, stream) {\n    reader._ownerReadableStream = stream;\n    stream._reader = reader;\n    if (stream._state === 'readable') {\n      defaultReaderClosedPromiseInitialize(reader);\n    } else if (stream._state === 'closed') {\n      defaultReaderClosedPromiseInitializeAsResolved(reader);\n    } else {\n      assert(stream._state === 'errored', 'state must be errored');\n      defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n      reader._closedPromise.catch(function () {});\n    }\n  }\n  function ReadableStreamReaderGenericCancel(reader, reason) {\n    var stream = reader._ownerReadableStream;\n    assert(stream !== undefined);\n    return ReadableStreamCancel(stream, reason);\n  }\n  function ReadableStreamReaderGenericRelease(reader) {\n    assert(reader._ownerReadableStream !== undefined);\n    assert(reader._ownerReadableStream._reader === reader);\n    if (reader._ownerReadableStream._state === 'readable') {\n      defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n    } else {\n      defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n    }\n    reader._closedPromise.catch(function () {});\n    reader._ownerReadableStream._reader = undefined;\n    reader._ownerReadableStream = undefined;\n  }\n  function ReadableStreamBYOBReaderRead(reader, view) {\n    var stream = reader._ownerReadableStream;\n    assert(stream !== undefined);\n    stream._disturbed = true;\n    if (stream._state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n  }\n  function ReadableStreamDefaultReaderRead(reader) {\n    var stream = reader._ownerReadableStream;\n    assert(stream !== undefined);\n    stream._disturbed = true;\n    if (stream._state === 'closed') {\n      return Promise.resolve(CreateIterResultObject(undefined, true));\n    }\n    if (stream._state === 'errored') {\n      return Promise.reject(stream._storedError);\n    }\n    assert(stream._state === 'readable');\n    return stream._readableStreamController.__pullSteps();\n  }\n  var ReadableStreamDefaultController = function () {\n    function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {\n      _classCallCheck(this, ReadableStreamDefaultController);\n      if (IsReadableStream(stream) === false) {\n        throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');\n      }\n      if (stream._readableStreamController !== undefined) {\n        throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');\n      }\n      this._controlledReadableStream = stream;\n      this._underlyingSource = underlyingSource;\n      this._queue = undefined;\n      this._queueTotalSize = undefined;\n      ResetQueue(this);\n      this._started = false;\n      this._closeRequested = false;\n      this._pullAgain = false;\n      this._pulling = false;\n      var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n      this._strategySize = normalizedStrategy.size;\n      this._strategyHWM = normalizedStrategy.highWaterMark;\n      var controller = this;\n      var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);\n      Promise.resolve(startResult).then(function () {\n        controller._started = true;\n        assert(controller._pulling === false);\n        assert(controller._pullAgain === false);\n        ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n      }, function (r) {\n        ReadableStreamDefaultControllerErrorIfNeeded(controller, r);\n      }).catch(rethrowAssertionErrorRejection);\n    }\n    _createClass(ReadableStreamDefaultController, [{\n      key: 'close',\n      value: function close() {\n        if (IsReadableStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('close');\n        }\n        if (this._closeRequested === true) {\n          throw new TypeError('The stream has already been closed; do not close it again!');\n        }\n        var state = this._controlledReadableStream._state;\n        if (state !== 'readable') {\n          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n        }\n        ReadableStreamDefaultControllerClose(this);\n      }\n    }, {\n      key: 'enqueue',\n      value: function enqueue(chunk) {\n        if (IsReadableStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('enqueue');\n        }\n        if (this._closeRequested === true) {\n          throw new TypeError('stream is closed or draining');\n        }\n        var state = this._controlledReadableStream._state;\n        if (state !== 'readable') {\n          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n        }\n        return ReadableStreamDefaultControllerEnqueue(this, chunk);\n      }\n    }, {\n      key: 'error',\n      value: function error(e) {\n        if (IsReadableStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('error');\n        }\n        var stream = this._controlledReadableStream;\n        if (stream._state !== 'readable') {\n          throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n        }\n        ReadableStreamDefaultControllerError(this, e);\n      }\n    }, {\n      key: '__cancelSteps',\n      value: function __cancelSteps(reason) {\n        ResetQueue(this);\n        return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);\n      }\n    }, {\n      key: '__pullSteps',\n      value: function __pullSteps() {\n        var stream = this._controlledReadableStream;\n        if (this._queue.length > 0) {\n          var chunk = DequeueValue(this);\n          if (this._closeRequested === true && this._queue.length === 0) {\n            ReadableStreamClose(stream);\n          } else {\n            ReadableStreamDefaultControllerCallPullIfNeeded(this);\n          }\n          return Promise.resolve(CreateIterResultObject(chunk, false));\n        }\n        var pendingPromise = ReadableStreamAddReadRequest(stream);\n        ReadableStreamDefaultControllerCallPullIfNeeded(this);\n        return pendingPromise;\n      }\n    }, {\n      key: 'desiredSize',\n      get: function get() {\n        if (IsReadableStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('desiredSize');\n        }\n        return ReadableStreamDefaultControllerGetDesiredSize(this);\n      }\n    }]);\n    return ReadableStreamDefaultController;\n  }();\n  function IsReadableStreamDefaultController(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {\n      return false;\n    }\n    return true;\n  }\n  function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n    var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n    if (shouldPull === false) {\n      return undefined;\n    }\n    if (controller._pulling === true) {\n      controller._pullAgain = true;\n      return undefined;\n    }\n    assert(controller._pullAgain === false);\n    controller._pulling = true;\n    var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);\n    pullPromise.then(function () {\n      controller._pulling = false;\n      if (controller._pullAgain === true) {\n        controller._pullAgain = false;\n        return ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n      }\n      return undefined;\n    }, function (e) {\n      ReadableStreamDefaultControllerErrorIfNeeded(controller, e);\n    }).catch(rethrowAssertionErrorRejection);\n    return undefined;\n  }\n  function ReadableStreamDefaultControllerShouldCallPull(controller) {\n    var stream = controller._controlledReadableStream;\n    if (stream._state === 'closed' || stream._state === 'errored') {\n      return false;\n    }\n    if (controller._closeRequested === true) {\n      return false;\n    }\n    if (controller._started === false) {\n      return false;\n    }\n    if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n      return true;\n    }\n    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n    if (desiredSize > 0) {\n      return true;\n    }\n    return false;\n  }\n  function ReadableStreamDefaultControllerClose(controller) {\n    var stream = controller._controlledReadableStream;\n    assert(controller._closeRequested === false);\n    assert(stream._state === 'readable');\n    controller._closeRequested = true;\n    if (controller._queue.length === 0) {\n      ReadableStreamClose(stream);\n    }\n  }\n  function ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n    var stream = controller._controlledReadableStream;\n    assert(controller._closeRequested === false);\n    assert(stream._state === 'readable');\n    if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n      ReadableStreamFulfillReadRequest(stream, chunk, false);\n    } else {\n      var chunkSize = 1;\n      if (controller._strategySize !== undefined) {\n        var strategySize = controller._strategySize;\n        try {\n          chunkSize = strategySize(chunk);\n        } catch (chunkSizeE) {\n          ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n          throw chunkSizeE;\n        }\n      }\n      try {\n        EnqueueValueWithSize(controller, chunk, chunkSize);\n      } catch (enqueueE) {\n        ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n        throw enqueueE;\n      }\n    }\n    ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n    return undefined;\n  }\n  function ReadableStreamDefaultControllerError(controller, e) {\n    var stream = controller._controlledReadableStream;\n    assert(stream._state === 'readable');\n    ResetQueue(controller);\n    ReadableStreamError(stream, e);\n  }\n  function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {\n    if (controller._controlledReadableStream._state === 'readable') {\n      ReadableStreamDefaultControllerError(controller, e);\n    }\n  }\n  function ReadableStreamDefaultControllerGetDesiredSize(controller) {\n    var stream = controller._controlledReadableStream;\n    var state = stream._state;\n    if (state === 'errored') {\n      return null;\n    }\n    if (state === 'closed') {\n      return 0;\n    }\n    return controller._strategyHWM - controller._queueTotalSize;\n  }\n  var ReadableStreamBYOBRequest = function () {\n    function ReadableStreamBYOBRequest(controller, view) {\n      _classCallCheck(this, ReadableStreamBYOBRequest);\n      this._associatedReadableByteStreamController = controller;\n      this._view = view;\n    }\n    _createClass(ReadableStreamBYOBRequest, [{\n      key: 'respond',\n      value: function respond(bytesWritten) {\n        if (IsReadableStreamBYOBRequest(this) === false) {\n          throw byobRequestBrandCheckException('respond');\n        }\n        if (this._associatedReadableByteStreamController === undefined) {\n          throw new TypeError('This BYOB request has been invalidated');\n        }\n        ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n      }\n    }, {\n      key: 'respondWithNewView',\n      value: function respondWithNewView(view) {\n        if (IsReadableStreamBYOBRequest(this) === false) {\n          throw byobRequestBrandCheckException('respond');\n        }\n        if (this._associatedReadableByteStreamController === undefined) {\n          throw new TypeError('This BYOB request has been invalidated');\n        }\n        if (!ArrayBuffer.isView(view)) {\n          throw new TypeError('You can only respond with array buffer views');\n        }\n        ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n      }\n    }, {\n      key: 'view',\n      get: function get() {\n        return this._view;\n      }\n    }]);\n    return ReadableStreamBYOBRequest;\n  }();\n  var ReadableByteStreamController = function () {\n    function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {\n      _classCallCheck(this, ReadableByteStreamController);\n      if (IsReadableStream(stream) === false) {\n        throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');\n      }\n      if (stream._readableStreamController !== undefined) {\n        throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');\n      }\n      this._controlledReadableStream = stream;\n      this._underlyingByteSource = underlyingByteSource;\n      this._pullAgain = false;\n      this._pulling = false;\n      ReadableByteStreamControllerClearPendingPullIntos(this);\n      this._queue = this._queueTotalSize = undefined;\n      ResetQueue(this);\n      this._closeRequested = false;\n      this._started = false;\n      this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n      var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n      if (autoAllocateChunkSize !== undefined) {\n        if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n          throw new RangeError('autoAllocateChunkSize must be a positive integer');\n        }\n      }\n      this._autoAllocateChunkSize = autoAllocateChunkSize;\n      this._pendingPullIntos = [];\n      var controller = this;\n      var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);\n      Promise.resolve(startResult).then(function () {\n        controller._started = true;\n        assert(controller._pulling === false);\n        assert(controller._pullAgain === false);\n        ReadableByteStreamControllerCallPullIfNeeded(controller);\n      }, function (r) {\n        if (stream._state === 'readable') {\n          ReadableByteStreamControllerError(controller, r);\n        }\n      }).catch(rethrowAssertionErrorRejection);\n    }\n    _createClass(ReadableByteStreamController, [{\n      key: 'close',\n      value: function close() {\n        if (IsReadableByteStreamController(this) === false) {\n          throw byteStreamControllerBrandCheckException('close');\n        }\n        if (this._closeRequested === true) {\n          throw new TypeError('The stream has already been closed; do not close it again!');\n        }\n        var state = this._controlledReadableStream._state;\n        if (state !== 'readable') {\n          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n        }\n        ReadableByteStreamControllerClose(this);\n      }\n    }, {\n      key: 'enqueue',\n      value: function enqueue(chunk) {\n        if (IsReadableByteStreamController(this) === false) {\n          throw byteStreamControllerBrandCheckException('enqueue');\n        }\n        if (this._closeRequested === true) {\n          throw new TypeError('stream is closed or draining');\n        }\n        var state = this._controlledReadableStream._state;\n        if (state !== 'readable') {\n          throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n        }\n        if (!ArrayBuffer.isView(chunk)) {\n          throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n        }\n        ReadableByteStreamControllerEnqueue(this, chunk);\n      }\n    }, {\n      key: 'error',\n      value: function error(e) {\n        if (IsReadableByteStreamController(this) === false) {\n          throw byteStreamControllerBrandCheckException('error');\n        }\n        var stream = this._controlledReadableStream;\n        if (stream._state !== 'readable') {\n          throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n        }\n        ReadableByteStreamControllerError(this, e);\n      }\n    }, {\n      key: '__cancelSteps',\n      value: function __cancelSteps(reason) {\n        if (this._pendingPullIntos.length > 0) {\n          var firstDescriptor = this._pendingPullIntos[0];\n          firstDescriptor.bytesFilled = 0;\n        }\n        ResetQueue(this);\n        return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);\n      }\n    }, {\n      key: '__pullSteps',\n      value: function __pullSteps() {\n        var stream = this._controlledReadableStream;\n        assert(ReadableStreamHasDefaultReader(stream) === true);\n        if (this._queueTotalSize > 0) {\n          assert(ReadableStreamGetNumReadRequests(stream) === 0);\n          var entry = this._queue.shift();\n          this._queueTotalSize -= entry.byteLength;\n          ReadableByteStreamControllerHandleQueueDrain(this);\n          var view = void 0;\n          try {\n            view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n          } catch (viewE) {\n            return Promise.reject(viewE);\n          }\n          return Promise.resolve(CreateIterResultObject(view, false));\n        }\n        var autoAllocateChunkSize = this._autoAllocateChunkSize;\n        if (autoAllocateChunkSize !== undefined) {\n          var buffer = void 0;\n          try {\n            buffer = new ArrayBuffer(autoAllocateChunkSize);\n          } catch (bufferE) {\n            return Promise.reject(bufferE);\n          }\n          var pullIntoDescriptor = {\n            buffer: buffer,\n            byteOffset: 0,\n            byteLength: autoAllocateChunkSize,\n            bytesFilled: 0,\n            elementSize: 1,\n            ctor: Uint8Array,\n            readerType: 'default'\n          };\n          this._pendingPullIntos.push(pullIntoDescriptor);\n        }\n        var promise = ReadableStreamAddReadRequest(stream);\n        ReadableByteStreamControllerCallPullIfNeeded(this);\n        return promise;\n      }\n    }, {\n      key: 'byobRequest',\n      get: function get() {\n        if (IsReadableByteStreamController(this) === false) {\n          throw byteStreamControllerBrandCheckException('byobRequest');\n        }\n        if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n          var firstDescriptor = this._pendingPullIntos[0];\n          var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n          this._byobRequest = new ReadableStreamBYOBRequest(this, view);\n        }\n        return this._byobRequest;\n      }\n    }, {\n      key: 'desiredSize',\n      get: function get() {\n        if (IsReadableByteStreamController(this) === false) {\n          throw byteStreamControllerBrandCheckException('desiredSize');\n        }\n        return ReadableByteStreamControllerGetDesiredSize(this);\n      }\n    }]);\n    return ReadableByteStreamController;\n  }();\n  function IsReadableByteStreamController(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {\n      return false;\n    }\n    return true;\n  }\n  function IsReadableStreamBYOBRequest(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n      return false;\n    }\n    return true;\n  }\n  function ReadableByteStreamControllerCallPullIfNeeded(controller) {\n    var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n    if (shouldPull === false) {\n      return undefined;\n    }\n    if (controller._pulling === true) {\n      controller._pullAgain = true;\n      return undefined;\n    }\n    assert(controller._pullAgain === false);\n    controller._pulling = true;\n    var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);\n    pullPromise.then(function () {\n      controller._pulling = false;\n      if (controller._pullAgain === true) {\n        controller._pullAgain = false;\n        ReadableByteStreamControllerCallPullIfNeeded(controller);\n      }\n    }, function (e) {\n      if (controller._controlledReadableStream._state === 'readable') {\n        ReadableByteStreamControllerError(controller, e);\n      }\n    }).catch(rethrowAssertionErrorRejection);\n    return undefined;\n  }\n  function ReadableByteStreamControllerClearPendingPullIntos(controller) {\n    ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n    controller._pendingPullIntos = [];\n  }\n  function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n    assert(stream._state !== 'errored', 'state must not be errored');\n    var done = false;\n    if (stream._state === 'closed') {\n      assert(pullIntoDescriptor.bytesFilled === 0);\n      done = true;\n    }\n    var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n    if (pullIntoDescriptor.readerType === 'default') {\n      ReadableStreamFulfillReadRequest(stream, filledView, done);\n    } else {\n      assert(pullIntoDescriptor.readerType === 'byob');\n      ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n    }\n  }\n  function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n    var bytesFilled = pullIntoDescriptor.bytesFilled;\n    var elementSize = pullIntoDescriptor.elementSize;\n    assert(bytesFilled <= pullIntoDescriptor.byteLength);\n    assert(bytesFilled % elementSize === 0);\n    return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n  }\n  function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n    controller._queue.push({\n      buffer: buffer,\n      byteOffset: byteOffset,\n      byteLength: byteLength\n    });\n    controller._queueTotalSize += byteLength;\n  }\n  function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n    var elementSize = pullIntoDescriptor.elementSize;\n    var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n    var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n    var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n    var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n    var totalBytesToCopyRemaining = maxBytesToCopy;\n    var ready = false;\n    if (maxAlignedBytes > currentAlignedBytes) {\n      totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n      ready = true;\n    }\n    var queue = controller._queue;\n    while (totalBytesToCopyRemaining > 0) {\n      var headOfQueue = queue[0];\n      var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n      var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n      ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n      if (headOfQueue.byteLength === bytesToCopy) {\n        queue.shift();\n      } else {\n        headOfQueue.byteOffset += bytesToCopy;\n        headOfQueue.byteLength -= bytesToCopy;\n      }\n      controller._queueTotalSize -= bytesToCopy;\n      ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n      totalBytesToCopyRemaining -= bytesToCopy;\n    }\n    if (ready === false) {\n      assert(controller._queueTotalSize === 0, 'queue must be empty');\n      assert(pullIntoDescriptor.bytesFilled > 0);\n      assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);\n    }\n    return ready;\n  }\n  function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n    assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);\n    ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n    pullIntoDescriptor.bytesFilled += size;\n  }\n  function ReadableByteStreamControllerHandleQueueDrain(controller) {\n    assert(controller._controlledReadableStream._state === 'readable');\n    if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n      ReadableStreamClose(controller._controlledReadableStream);\n    } else {\n      ReadableByteStreamControllerCallPullIfNeeded(controller);\n    }\n  }\n  function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n    if (controller._byobRequest === undefined) {\n      return;\n    }\n    controller._byobRequest._associatedReadableByteStreamController = undefined;\n    controller._byobRequest._view = undefined;\n    controller._byobRequest = undefined;\n  }\n  function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n    assert(controller._closeRequested === false);\n    while (controller._pendingPullIntos.length > 0) {\n      if (controller._queueTotalSize === 0) {\n        return;\n      }\n      var pullIntoDescriptor = controller._pendingPullIntos[0];\n      if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n        ReadableByteStreamControllerShiftPendingPullInto(controller);\n        ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n      }\n    }\n  }\n  function ReadableByteStreamControllerPullInto(controller, view) {\n    var stream = controller._controlledReadableStream;\n    var elementSize = 1;\n    if (view.constructor !== DataView) {\n      elementSize = view.constructor.BYTES_PER_ELEMENT;\n    }\n    var ctor = view.constructor;\n    var pullIntoDescriptor = {\n      buffer: view.buffer,\n      byteOffset: view.byteOffset,\n      byteLength: view.byteLength,\n      bytesFilled: 0,\n      elementSize: elementSize,\n      ctor: ctor,\n      readerType: 'byob'\n    };\n    if (controller._pendingPullIntos.length > 0) {\n      pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n      controller._pendingPullIntos.push(pullIntoDescriptor);\n      return ReadableStreamAddReadIntoRequest(stream);\n    }\n    if (stream._state === 'closed') {\n      var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n      return Promise.resolve(CreateIterResultObject(emptyView, true));\n    }\n    if (controller._queueTotalSize > 0) {\n      if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n        var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n        ReadableByteStreamControllerHandleQueueDrain(controller);\n        return Promise.resolve(CreateIterResultObject(filledView, false));\n      }\n      if (controller._closeRequested === true) {\n        var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n        ReadableByteStreamControllerError(controller, e);\n        return Promise.reject(e);\n      }\n    }\n    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n    controller._pendingPullIntos.push(pullIntoDescriptor);\n    var promise = ReadableStreamAddReadIntoRequest(stream);\n    ReadableByteStreamControllerCallPullIfNeeded(controller);\n    return promise;\n  }\n  function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n    firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n    assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');\n    var stream = controller._controlledReadableStream;\n    if (ReadableStreamHasBYOBReader(stream) === true) {\n      while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n        var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n        ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n      }\n    }\n  }\n  function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n    if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n      throw new RangeError('bytesWritten out of range');\n    }\n    ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n    if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n      return;\n    }\n    ReadableByteStreamControllerShiftPendingPullInto(controller);\n    var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n    if (remainderSize > 0) {\n      var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n      var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n      ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n    }\n    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n    pullIntoDescriptor.bytesFilled -= remainderSize;\n    ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n  }\n  function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n    var firstDescriptor = controller._pendingPullIntos[0];\n    var stream = controller._controlledReadableStream;\n    if (stream._state === 'closed') {\n      if (bytesWritten !== 0) {\n        throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n      }\n      ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n    } else {\n      assert(stream._state === 'readable');\n      ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n    }\n  }\n  function ReadableByteStreamControllerShiftPendingPullInto(controller) {\n    var descriptor = controller._pendingPullIntos.shift();\n    ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n    return descriptor;\n  }\n  function ReadableByteStreamControllerShouldCallPull(controller) {\n    var stream = controller._controlledReadableStream;\n    if (stream._state !== 'readable') {\n      return false;\n    }\n    if (controller._closeRequested === true) {\n      return false;\n    }\n    if (controller._started === false) {\n      return false;\n    }\n    if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n      return true;\n    }\n    if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n      return true;\n    }\n    if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {\n      return true;\n    }\n    return false;\n  }\n  function ReadableByteStreamControllerClose(controller) {\n    var stream = controller._controlledReadableStream;\n    assert(controller._closeRequested === false);\n    assert(stream._state === 'readable');\n    if (controller._queueTotalSize > 0) {\n      controller._closeRequested = true;\n      return;\n    }\n    if (controller._pendingPullIntos.length > 0) {\n      var firstPendingPullInto = controller._pendingPullIntos[0];\n      if (firstPendingPullInto.bytesFilled > 0) {\n        var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n        ReadableByteStreamControllerError(controller, e);\n        throw e;\n      }\n    }\n    ReadableStreamClose(stream);\n  }\n  function ReadableByteStreamControllerEnqueue(controller, chunk) {\n    var stream = controller._controlledReadableStream;\n    assert(controller._closeRequested === false);\n    assert(stream._state === 'readable');\n    var buffer = chunk.buffer;\n    var byteOffset = chunk.byteOffset;\n    var byteLength = chunk.byteLength;\n    var transferredBuffer = TransferArrayBuffer(buffer);\n    if (ReadableStreamHasDefaultReader(stream) === true) {\n      if (ReadableStreamGetNumReadRequests(stream) === 0) {\n        ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n      } else {\n        assert(controller._queue.length === 0);\n        var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n        ReadableStreamFulfillReadRequest(stream, transferredView, false);\n      }\n    } else if (ReadableStreamHasBYOBReader(stream) === true) {\n      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n      ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n    } else {\n      assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');\n      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n    }\n  }\n  function ReadableByteStreamControllerError(controller, e) {\n    var stream = controller._controlledReadableStream;\n    assert(stream._state === 'readable');\n    ReadableByteStreamControllerClearPendingPullIntos(controller);\n    ResetQueue(controller);\n    ReadableStreamError(stream, e);\n  }\n  function ReadableByteStreamControllerGetDesiredSize(controller) {\n    var stream = controller._controlledReadableStream;\n    var state = stream._state;\n    if (state === 'errored') {\n      return null;\n    }\n    if (state === 'closed') {\n      return 0;\n    }\n    return controller._strategyHWM - controller._queueTotalSize;\n  }\n  function ReadableByteStreamControllerRespond(controller, bytesWritten) {\n    bytesWritten = Number(bytesWritten);\n    if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n      throw new RangeError('bytesWritten must be a finite');\n    }\n    assert(controller._pendingPullIntos.length > 0);\n    ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n  }\n  function ReadableByteStreamControllerRespondWithNewView(controller, view) {\n    assert(controller._pendingPullIntos.length > 0);\n    var firstDescriptor = controller._pendingPullIntos[0];\n    if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n      throw new RangeError('The region specified by view does not match byobRequest');\n    }\n    if (firstDescriptor.byteLength !== view.byteLength) {\n      throw new RangeError('The buffer of view has different capacity than byobRequest');\n    }\n    firstDescriptor.buffer = view.buffer;\n    ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n  }\n  function streamBrandCheckException(name) {\n    return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');\n  }\n  function readerLockException(name) {\n    return new TypeError('Cannot ' + name + ' a stream using a released reader');\n  }\n  function defaultReaderBrandCheckException(name) {\n    return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');\n  }\n  function defaultReaderClosedPromiseInitialize(reader) {\n    reader._closedPromise = new Promise(function (resolve, reject) {\n      reader._closedPromise_resolve = resolve;\n      reader._closedPromise_reject = reject;\n    });\n  }\n  function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n    reader._closedPromise = Promise.reject(reason);\n    reader._closedPromise_resolve = undefined;\n    reader._closedPromise_reject = undefined;\n  }\n  function defaultReaderClosedPromiseInitializeAsResolved(reader) {\n    reader._closedPromise = Promise.resolve(undefined);\n    reader._closedPromise_resolve = undefined;\n    reader._closedPromise_reject = undefined;\n  }\n  function defaultReaderClosedPromiseReject(reader, reason) {\n    assert(reader._closedPromise_resolve !== undefined);\n    assert(reader._closedPromise_reject !== undefined);\n    reader._closedPromise_reject(reason);\n    reader._closedPromise_resolve = undefined;\n    reader._closedPromise_reject = undefined;\n  }\n  function defaultReaderClosedPromiseResetToRejected(reader, reason) {\n    assert(reader._closedPromise_resolve === undefined);\n    assert(reader._closedPromise_reject === undefined);\n    reader._closedPromise = Promise.reject(reason);\n  }\n  function defaultReaderClosedPromiseResolve(reader) {\n    assert(reader._closedPromise_resolve !== undefined);\n    assert(reader._closedPromise_reject !== undefined);\n    reader._closedPromise_resolve(undefined);\n    reader._closedPromise_resolve = undefined;\n    reader._closedPromise_reject = undefined;\n  }\n  function byobReaderBrandCheckException(name) {\n    return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');\n  }\n  function defaultControllerBrandCheckException(name) {\n    return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');\n  }\n  function byobRequestBrandCheckException(name) {\n    return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');\n  }\n  function byteStreamControllerBrandCheckException(name) {\n    return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');\n  }\n  function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {\n    try {\n      Promise.prototype.then.call(promise, undefined, function () {});\n    } catch (e) {}\n  }\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var transformStream = __w_pdfjs_require__(6);\n  var readableStream = __w_pdfjs_require__(4);\n  var writableStream = __w_pdfjs_require__(2);\n  exports.TransformStream = transformStream.TransformStream;\n  exports.ReadableStream = readableStream.ReadableStream;\n  exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;\n  exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;\n  exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;\n  exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;\n  exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;\n  exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;\n  exports.IsWritableStream = writableStream.IsWritableStream;\n  exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;\n  exports.WritableStream = writableStream.WritableStream;\n  exports.WritableStreamAbort = writableStream.WritableStreamAbort;\n  exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;\n  exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;\n  exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;\n  exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;\n}, function (module, exports, __w_pdfjs_require__) {\n  \"use strict\";\n\n  var _createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n  var _require = __w_pdfjs_require__(1),\n      assert = _require.assert;\n  var _require2 = __w_pdfjs_require__(0),\n      InvokeOrNoop = _require2.InvokeOrNoop,\n      PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,\n      PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,\n      typeIsObject = _require2.typeIsObject;\n  var _require3 = __w_pdfjs_require__(4),\n      ReadableStream = _require3.ReadableStream,\n      ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,\n      ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,\n      ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,\n      ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;\n  var _require4 = __w_pdfjs_require__(2),\n      WritableStream = _require4.WritableStream,\n      WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;\n  function TransformStreamCloseReadable(transformStream) {\n    if (transformStream._errored === true) {\n      throw new TypeError('TransformStream is already errored');\n    }\n    if (transformStream._readableClosed === true) {\n      throw new TypeError('Readable side is already closed');\n    }\n    TransformStreamCloseReadableInternal(transformStream);\n  }\n  function TransformStreamEnqueueToReadable(transformStream, chunk) {\n    if (transformStream._errored === true) {\n      throw new TypeError('TransformStream is already errored');\n    }\n    if (transformStream._readableClosed === true) {\n      throw new TypeError('Readable side is already closed');\n    }\n    var controller = transformStream._readableController;\n    try {\n      ReadableStreamDefaultControllerEnqueue(controller, chunk);\n    } catch (e) {\n      transformStream._readableClosed = true;\n      TransformStreamErrorIfNeeded(transformStream, e);\n      throw transformStream._storedError;\n    }\n    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n    var maybeBackpressure = desiredSize <= 0;\n    if (maybeBackpressure === true && transformStream._backpressure === false) {\n      TransformStreamSetBackpressure(transformStream, true);\n    }\n  }\n  function TransformStreamError(transformStream, e) {\n    if (transformStream._errored === true) {\n      throw new TypeError('TransformStream is already errored');\n    }\n    TransformStreamErrorInternal(transformStream, e);\n  }\n  function TransformStreamCloseReadableInternal(transformStream) {\n    assert(transformStream._errored === false);\n    assert(transformStream._readableClosed === false);\n    try {\n      ReadableStreamDefaultControllerClose(transformStream._readableController);\n    } catch (e) {\n      assert(false);\n    }\n    transformStream._readableClosed = true;\n  }\n  function TransformStreamErrorIfNeeded(transformStream, e) {\n    if (transformStream._errored === false) {\n      TransformStreamErrorInternal(transformStream, e);\n    }\n  }\n  function TransformStreamErrorInternal(transformStream, e) {\n    assert(transformStream._errored === false);\n    transformStream._errored = true;\n    transformStream._storedError = e;\n    if (transformStream._writableDone === false) {\n      WritableStreamDefaultControllerError(transformStream._writableController, e);\n    }\n    if (transformStream._readableClosed === false) {\n      ReadableStreamDefaultControllerError(transformStream._readableController, e);\n    }\n  }\n  function TransformStreamReadableReadyPromise(transformStream) {\n    assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n    if (transformStream._backpressure === false) {\n      return Promise.resolve();\n    }\n    assert(transformStream._backpressure === true, '_backpressure should have been initialized');\n    return transformStream._backpressureChangePromise;\n  }\n  function TransformStreamSetBackpressure(transformStream, backpressure) {\n    assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');\n    if (transformStream._backpressureChangePromise !== undefined) {\n      transformStream._backpressureChangePromise_resolve(backpressure);\n    }\n    transformStream._backpressureChangePromise = new Promise(function (resolve) {\n      transformStream._backpressureChangePromise_resolve = resolve;\n    });\n    transformStream._backpressureChangePromise.then(function (resolution) {\n      assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');\n    });\n    transformStream._backpressure = backpressure;\n  }\n  function TransformStreamDefaultTransform(chunk, transformStreamController) {\n    var transformStream = transformStreamController._controlledTransformStream;\n    TransformStreamEnqueueToReadable(transformStream, chunk);\n    return Promise.resolve();\n  }\n  function TransformStreamTransform(transformStream, chunk) {\n    assert(transformStream._errored === false);\n    assert(transformStream._transforming === false);\n    assert(transformStream._backpressure === false);\n    transformStream._transforming = true;\n    var transformer = transformStream._transformer;\n    var controller = transformStream._transformStreamController;\n    var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);\n    return transformPromise.then(function () {\n      transformStream._transforming = false;\n      return TransformStreamReadableReadyPromise(transformStream);\n    }, function (e) {\n      TransformStreamErrorIfNeeded(transformStream, e);\n      return Promise.reject(e);\n    });\n  }\n  function IsTransformStreamDefaultController(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n      return false;\n    }\n    return true;\n  }\n  function IsTransformStream(x) {\n    if (!typeIsObject(x)) {\n      return false;\n    }\n    if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n      return false;\n    }\n    return true;\n  }\n  var TransformStreamSink = function () {\n    function TransformStreamSink(transformStream, startPromise) {\n      _classCallCheck(this, TransformStreamSink);\n      this._transformStream = transformStream;\n      this._startPromise = startPromise;\n    }\n    _createClass(TransformStreamSink, [{\n      key: 'start',\n      value: function start(c) {\n        var transformStream = this._transformStream;\n        transformStream._writableController = c;\n        return this._startPromise.then(function () {\n          return TransformStreamReadableReadyPromise(transformStream);\n        });\n      }\n    }, {\n      key: 'write',\n      value: function write(chunk) {\n        var transformStream = this._transformStream;\n        return TransformStreamTransform(transformStream, chunk);\n      }\n    }, {\n      key: 'abort',\n      value: function abort() {\n        var transformStream = this._transformStream;\n        transformStream._writableDone = true;\n        TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));\n      }\n    }, {\n      key: 'close',\n      value: function close() {\n        var transformStream = this._transformStream;\n        assert(transformStream._transforming === false);\n        transformStream._writableDone = true;\n        var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);\n        return flushPromise.then(function () {\n          if (transformStream._errored === true) {\n            return Promise.reject(transformStream._storedError);\n          }\n          if (transformStream._readableClosed === false) {\n            TransformStreamCloseReadableInternal(transformStream);\n          }\n          return Promise.resolve();\n        }).catch(function (r) {\n          TransformStreamErrorIfNeeded(transformStream, r);\n          return Promise.reject(transformStream._storedError);\n        });\n      }\n    }]);\n    return TransformStreamSink;\n  }();\n  var TransformStreamSource = function () {\n    function TransformStreamSource(transformStream, startPromise) {\n      _classCallCheck(this, TransformStreamSource);\n      this._transformStream = transformStream;\n      this._startPromise = startPromise;\n    }\n    _createClass(TransformStreamSource, [{\n      key: 'start',\n      value: function start(c) {\n        var transformStream = this._transformStream;\n        transformStream._readableController = c;\n        return this._startPromise.then(function () {\n          assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n          if (transformStream._backpressure === true) {\n            return Promise.resolve();\n          }\n          assert(transformStream._backpressure === false, '_backpressure should have been initialized');\n          return transformStream._backpressureChangePromise;\n        });\n      }\n    }, {\n      key: 'pull',\n      value: function pull() {\n        var transformStream = this._transformStream;\n        assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');\n        assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n        TransformStreamSetBackpressure(transformStream, false);\n        return transformStream._backpressureChangePromise;\n      }\n    }, {\n      key: 'cancel',\n      value: function cancel() {\n        var transformStream = this._transformStream;\n        transformStream._readableClosed = true;\n        TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));\n      }\n    }]);\n    return TransformStreamSource;\n  }();\n  var TransformStreamDefaultController = function () {\n    function TransformStreamDefaultController(transformStream) {\n      _classCallCheck(this, TransformStreamDefaultController);\n      if (IsTransformStream(transformStream) === false) {\n        throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');\n      }\n      if (transformStream._transformStreamController !== undefined) {\n        throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');\n      }\n      this._controlledTransformStream = transformStream;\n    }\n    _createClass(TransformStreamDefaultController, [{\n      key: 'enqueue',\n      value: function enqueue(chunk) {\n        if (IsTransformStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('enqueue');\n        }\n        TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);\n      }\n    }, {\n      key: 'close',\n      value: function close() {\n        if (IsTransformStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('close');\n        }\n        TransformStreamCloseReadable(this._controlledTransformStream);\n      }\n    }, {\n      key: 'error',\n      value: function error(reason) {\n        if (IsTransformStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('error');\n        }\n        TransformStreamError(this._controlledTransformStream, reason);\n      }\n    }, {\n      key: 'desiredSize',\n      get: function get() {\n        if (IsTransformStreamDefaultController(this) === false) {\n          throw defaultControllerBrandCheckException('desiredSize');\n        }\n        var transformStream = this._controlledTransformStream;\n        var readableController = transformStream._readableController;\n        return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n      }\n    }]);\n    return TransformStreamDefaultController;\n  }();\n  var TransformStream = function () {\n    function TransformStream() {\n      var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      _classCallCheck(this, TransformStream);\n      this._transformer = transformer;\n      var readableStrategy = transformer.readableStrategy,\n          writableStrategy = transformer.writableStrategy;\n      this._transforming = false;\n      this._errored = false;\n      this._storedError = undefined;\n      this._writableController = undefined;\n      this._readableController = undefined;\n      this._transformStreamController = undefined;\n      this._writableDone = false;\n      this._readableClosed = false;\n      this._backpressure = undefined;\n      this._backpressureChangePromise = undefined;\n      this._backpressureChangePromise_resolve = undefined;\n      this._transformStreamController = new TransformStreamDefaultController(this);\n      var startPromise_resolve = void 0;\n      var startPromise = new Promise(function (resolve) {\n        startPromise_resolve = resolve;\n      });\n      var source = new TransformStreamSource(this, startPromise);\n      this._readable = new ReadableStream(source, readableStrategy);\n      var sink = new TransformStreamSink(this, startPromise);\n      this._writable = new WritableStream(sink, writableStrategy);\n      assert(this._writableController !== undefined);\n      assert(this._readableController !== undefined);\n      var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);\n      TransformStreamSetBackpressure(this, desiredSize <= 0);\n      var transformStream = this;\n      var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);\n      startPromise_resolve(startResult);\n      startPromise.catch(function (e) {\n        if (transformStream._errored === false) {\n          transformStream._errored = true;\n          transformStream._storedError = e;\n        }\n      });\n    }\n    _createClass(TransformStream, [{\n      key: 'readable',\n      get: function get() {\n        if (IsTransformStream(this) === false) {\n          throw streamBrandCheckException('readable');\n        }\n        return this._readable;\n      }\n    }, {\n      key: 'writable',\n      get: function get() {\n        if (IsTransformStream(this) === false) {\n          throw streamBrandCheckException('writable');\n        }\n        return this._writable;\n      }\n    }]);\n    return TransformStream;\n  }();\n  module.exports = { TransformStream: TransformStream };\n  function defaultControllerBrandCheckException(name) {\n    return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');\n  }\n  function streamBrandCheckException(name) {\n    return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');\n  }\n}, function (module, exports, __w_pdfjs_require__) {\n  module.exports = __w_pdfjs_require__(5);\n}]));\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n{\n  var isURLSupported = false;\n  try {\n    if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) {\n      var u = new URL('b', 'http://a');\n      u.pathname = 'c%20d';\n      isURLSupported = u.href === 'http://a/c%20d';\n    }\n  } catch (ex) {}\n  if (isURLSupported) {\n    exports.URL = URL;\n  } else {\n    var PolyfillURL = __w_pdfjs_require__(129).URL;\n    var OriginalURL = __w_pdfjs_require__(4).URL;\n    if (OriginalURL) {\n      PolyfillURL.createObjectURL = function (blob) {\n        return OriginalURL.createObjectURL.apply(OriginalURL, arguments);\n      };\n      PolyfillURL.revokeObjectURL = function (url) {\n        OriginalURL.revokeObjectURL(url);\n      };\n    }\n    exports.URL = PolyfillURL;\n  }\n}\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\n(function URLConstructorClosure() {\n  'use strict';\n\n  var relative = Object.create(null);\n  relative['ftp'] = 21;\n  relative['file'] = 0;\n  relative['gopher'] = 70;\n  relative['http'] = 80;\n  relative['https'] = 443;\n  relative['ws'] = 80;\n  relative['wss'] = 443;\n  var relativePathDotMapping = Object.create(null);\n  relativePathDotMapping['%2e'] = '.';\n  relativePathDotMapping['.%2e'] = '..';\n  relativePathDotMapping['%2e.'] = '..';\n  relativePathDotMapping['%2e%2e'] = '..';\n  function isRelativeScheme(scheme) {\n    return relative[scheme] !== undefined;\n  }\n  function invalid() {\n    clear.call(this);\n    this._isInvalid = true;\n  }\n  function IDNAToASCII(h) {\n    if (h === '') {\n      invalid.call(this);\n    }\n    return h.toLowerCase();\n  }\n  function percentEscape(c) {\n    var unicode = c.charCodeAt(0);\n    if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) {\n      return c;\n    }\n    return encodeURIComponent(c);\n  }\n  function percentEscapeQuery(c) {\n    var unicode = c.charCodeAt(0);\n    if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) {\n      return c;\n    }\n    return encodeURIComponent(c);\n  }\n  var EOF,\n      ALPHA = /[a-zA-Z]/,\n      ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n  function parse(input, stateOverride, base) {\n    function err(message) {\n      errors.push(message);\n    }\n    var state = stateOverride || 'scheme start',\n        cursor = 0,\n        buffer = '',\n        seenAt = false,\n        seenBracket = false,\n        errors = [];\n    loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) {\n      var c = input[cursor];\n      switch (state) {\n        case 'scheme start':\n          if (c && ALPHA.test(c)) {\n            buffer += c.toLowerCase();\n            state = 'scheme';\n          } else if (!stateOverride) {\n            buffer = '';\n            state = 'no scheme';\n            continue;\n          } else {\n            err('Invalid scheme.');\n            break loop;\n          }\n          break;\n        case 'scheme':\n          if (c && ALPHANUMERIC.test(c)) {\n            buffer += c.toLowerCase();\n          } else if (c === ':') {\n            this._scheme = buffer;\n            buffer = '';\n            if (stateOverride) {\n              break loop;\n            }\n            if (isRelativeScheme(this._scheme)) {\n              this._isRelative = true;\n            }\n            if (this._scheme === 'file') {\n              state = 'relative';\n            } else if (this._isRelative && base && base._scheme === this._scheme) {\n              state = 'relative or authority';\n            } else if (this._isRelative) {\n              state = 'authority first slash';\n            } else {\n              state = 'scheme data';\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            cursor = 0;\n            state = 'no scheme';\n            continue;\n          } else if (c === EOF) {\n            break loop;\n          } else {\n            err('Code point not allowed in scheme: ' + c);\n            break loop;\n          }\n          break;\n        case 'scheme data':\n          if (c === '?') {\n            this._query = '?';\n            state = 'query';\n          } else if (c === '#') {\n            this._fragment = '#';\n            state = 'fragment';\n          } else {\n            if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n              this._schemeData += percentEscape(c);\n            }\n          }\n          break;\n        case 'no scheme':\n          if (!base || !isRelativeScheme(base._scheme)) {\n            err('Missing scheme.');\n            invalid.call(this);\n          } else {\n            state = 'relative';\n            continue;\n          }\n          break;\n        case 'relative or authority':\n          if (c === '/' && input[cursor + 1] === '/') {\n            state = 'authority ignore slashes';\n          } else {\n            err('Expected /, got: ' + c);\n            state = 'relative';\n            continue;\n          }\n          break;\n        case 'relative':\n          this._isRelative = true;\n          if (this._scheme !== 'file') {\n            this._scheme = base._scheme;\n          }\n          if (c === EOF) {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = base._query;\n            this._username = base._username;\n            this._password = base._password;\n            break loop;\n          } else if (c === '/' || c === '\\\\') {\n            if (c === '\\\\') {\n              err('\\\\ is an invalid code point.');\n            }\n            state = 'relative slash';\n          } else if (c === '?') {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = '?';\n            this._username = base._username;\n            this._password = base._password;\n            state = 'query';\n          } else if (c === '#') {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = base._query;\n            this._fragment = '#';\n            this._username = base._username;\n            this._password = base._password;\n            state = 'fragment';\n          } else {\n            var nextC = input[cursor + 1];\n            var nextNextC = input[cursor + 2];\n            if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\\\' && nextNextC !== '?' && nextNextC !== '#') {\n              this._host = base._host;\n              this._port = base._port;\n              this._username = base._username;\n              this._password = base._password;\n              this._path = base._path.slice();\n              this._path.pop();\n            }\n            state = 'relative path';\n            continue;\n          }\n          break;\n        case 'relative slash':\n          if (c === '/' || c === '\\\\') {\n            if (c === '\\\\') {\n              err('\\\\ is an invalid code point.');\n            }\n            if (this._scheme === 'file') {\n              state = 'file host';\n            } else {\n              state = 'authority ignore slashes';\n            }\n          } else {\n            if (this._scheme !== 'file') {\n              this._host = base._host;\n              this._port = base._port;\n              this._username = base._username;\n              this._password = base._password;\n            }\n            state = 'relative path';\n            continue;\n          }\n          break;\n        case 'authority first slash':\n          if (c === '/') {\n            state = 'authority second slash';\n          } else {\n            err('Expected \\'/\\', got: ' + c);\n            state = 'authority ignore slashes';\n            continue;\n          }\n          break;\n        case 'authority second slash':\n          state = 'authority ignore slashes';\n          if (c !== '/') {\n            err('Expected \\'/\\', got: ' + c);\n            continue;\n          }\n          break;\n        case 'authority ignore slashes':\n          if (c !== '/' && c !== '\\\\') {\n            state = 'authority';\n            continue;\n          } else {\n            err('Expected authority, got: ' + c);\n          }\n          break;\n        case 'authority':\n          if (c === '@') {\n            if (seenAt) {\n              err('@ already seen.');\n              buffer += '%40';\n            }\n            seenAt = true;\n            for (var i = 0; i < buffer.length; i++) {\n              var cp = buffer[i];\n              if (cp === '\\t' || cp === '\\n' || cp === '\\r') {\n                err('Invalid whitespace in authority.');\n                continue;\n              }\n              if (cp === ':' && this._password === null) {\n                this._password = '';\n                continue;\n              }\n              var tempC = percentEscape(cp);\n              if (this._password !== null) {\n                this._password += tempC;\n              } else {\n                this._username += tempC;\n              }\n            }\n            buffer = '';\n          } else if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n            cursor -= buffer.length;\n            buffer = '';\n            state = 'host';\n            continue;\n          } else {\n            buffer += c;\n          }\n          break;\n        case 'file host':\n          if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n            if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) {\n              state = 'relative path';\n            } else if (buffer.length === 0) {\n              state = 'relative path start';\n            } else {\n              this._host = IDNAToASCII.call(this, buffer);\n              buffer = '';\n              state = 'relative path start';\n            }\n            continue;\n          } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n            err('Invalid whitespace in file host.');\n          } else {\n            buffer += c;\n          }\n          break;\n        case 'host':\n        case 'hostname':\n          if (c === ':' && !seenBracket) {\n            this._host = IDNAToASCII.call(this, buffer);\n            buffer = '';\n            state = 'port';\n            if (stateOverride === 'hostname') {\n              break loop;\n            }\n          } else if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n            this._host = IDNAToASCII.call(this, buffer);\n            buffer = '';\n            state = 'relative path start';\n            if (stateOverride) {\n              break loop;\n            }\n            continue;\n          } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            if (c === '[') {\n              seenBracket = true;\n            } else if (c === ']') {\n              seenBracket = false;\n            }\n            buffer += c;\n          } else {\n            err('Invalid code point in host/hostname: ' + c);\n          }\n          break;\n        case 'port':\n          if (/[0-9]/.test(c)) {\n            buffer += c;\n          } else if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#' || stateOverride) {\n            if (buffer !== '') {\n              var temp = parseInt(buffer, 10);\n              if (temp !== relative[this._scheme]) {\n                this._port = temp + '';\n              }\n              buffer = '';\n            }\n            if (stateOverride) {\n              break loop;\n            }\n            state = 'relative path start';\n            continue;\n          } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n            err('Invalid code point in port: ' + c);\n          } else {\n            invalid.call(this);\n          }\n          break;\n        case 'relative path start':\n          if (c === '\\\\') {\n            err('\\'\\\\\\' not allowed in path.');\n          }\n          state = 'relative path';\n          if (c !== '/' && c !== '\\\\') {\n            continue;\n          }\n          break;\n        case 'relative path':\n          if (c === EOF || c === '/' || c === '\\\\' || !stateOverride && (c === '?' || c === '#')) {\n            if (c === '\\\\') {\n              err('\\\\ not allowed in relative path.');\n            }\n            var tmp;\n            if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {\n              buffer = tmp;\n            }\n            if (buffer === '..') {\n              this._path.pop();\n              if (c !== '/' && c !== '\\\\') {\n                this._path.push('');\n              }\n            } else if (buffer === '.' && c !== '/' && c !== '\\\\') {\n              this._path.push('');\n            } else if (buffer !== '.') {\n              if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') {\n                buffer = buffer[0] + ':';\n              }\n              this._path.push(buffer);\n            }\n            buffer = '';\n            if (c === '?') {\n              this._query = '?';\n              state = 'query';\n            } else if (c === '#') {\n              this._fragment = '#';\n              state = 'fragment';\n            }\n          } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            buffer += percentEscape(c);\n          }\n          break;\n        case 'query':\n          if (!stateOverride && c === '#') {\n            this._fragment = '#';\n            state = 'fragment';\n          } else if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            this._query += percentEscapeQuery(c);\n          }\n          break;\n        case 'fragment':\n          if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            this._fragment += c;\n          }\n          break;\n      }\n      cursor++;\n    }\n  }\n  function clear() {\n    this._scheme = '';\n    this._schemeData = '';\n    this._username = '';\n    this._password = null;\n    this._host = '';\n    this._port = '';\n    this._path = [];\n    this._query = '';\n    this._fragment = '';\n    this._isInvalid = false;\n    this._isRelative = false;\n  }\n  function JURL(url, base) {\n    if (base !== undefined && !(base instanceof JURL)) {\n      base = new JURL(String(base));\n    }\n    this._url = url;\n    clear.call(this);\n    var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n    parse.call(this, input, null, base);\n  }\n  JURL.prototype = {\n    toString: function toString() {\n      return this.href;\n    },\n\n    get href() {\n      if (this._isInvalid) {\n        return this._url;\n      }\n      var authority = '';\n      if (this._username !== '' || this._password !== null) {\n        authority = this._username + (this._password !== null ? ':' + this._password : '') + '@';\n      }\n      return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment;\n    },\n    set href(value) {\n      clear.call(this);\n      parse.call(this, value);\n    },\n    get protocol() {\n      return this._scheme + ':';\n    },\n    set protocol(value) {\n      if (this._isInvalid) {\n        return;\n      }\n      parse.call(this, value + ':', 'scheme start');\n    },\n    get host() {\n      return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host;\n    },\n    set host(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'host');\n    },\n    get hostname() {\n      return this._host;\n    },\n    set hostname(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'hostname');\n    },\n    get port() {\n      return this._port;\n    },\n    set port(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'port');\n    },\n    get pathname() {\n      return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData;\n    },\n    set pathname(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      this._path = [];\n      parse.call(this, value, 'relative path start');\n    },\n    get search() {\n      return this._isInvalid || !this._query || this._query === '?' ? '' : this._query;\n    },\n    set search(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      this._query = '?';\n      if (value[0] === '?') {\n        value = value.slice(1);\n      }\n      parse.call(this, value, 'query');\n    },\n    get hash() {\n      return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment;\n    },\n    set hash(value) {\n      if (this._isInvalid) {\n        return;\n      }\n      this._fragment = '#';\n      if (value[0] === '#') {\n        value = value.slice(1);\n      }\n      parse.call(this, value, 'fragment');\n    },\n    get origin() {\n      var host;\n      if (this._isInvalid || !this._scheme) {\n        return '';\n      }\n      switch (this._scheme) {\n        case 'data':\n        case 'file':\n        case 'javascript':\n        case 'mailto':\n          return 'null';\n        case 'blob':\n          try {\n            return new JURL(this._schemeData).origin || 'null';\n          } catch (_) {}\n          return 'null';\n      }\n      host = this.host;\n      if (!host) {\n        return '';\n      }\n      return this._scheme + '://' + host;\n    }\n  };\n  exports.URL = JURL;\n})();\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.NetworkPdfManager = exports.LocalPdfManager = undefined;\n\nvar _regenerator = __w_pdfjs_require__(131);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _chunked_stream = __w_pdfjs_require__(135);\n\nvar _document = __w_pdfjs_require__(136);\n\nvar _stream = __w_pdfjs_require__(140);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BasePdfManager = function () {\n  function BasePdfManager() {\n    _classCallCheck(this, BasePdfManager);\n\n    if (this.constructor === BasePdfManager) {\n      (0, _util.unreachable)('Cannot initialize BasePdfManager.');\n    }\n  }\n\n  _createClass(BasePdfManager, [{\n    key: 'onLoadedStream',\n    value: function onLoadedStream() {\n      (0, _util.unreachable)('Abstract method `onLoadedStream` called');\n    }\n  }, {\n    key: 'ensureDoc',\n    value: function ensureDoc(prop, args) {\n      return this.ensure(this.pdfDocument, prop, args);\n    }\n  }, {\n    key: 'ensureXRef',\n    value: function ensureXRef(prop, args) {\n      return this.ensure(this.pdfDocument.xref, prop, args);\n    }\n  }, {\n    key: 'ensureCatalog',\n    value: function ensureCatalog(prop, args) {\n      return this.ensure(this.pdfDocument.catalog, prop, args);\n    }\n  }, {\n    key: 'getPage',\n    value: function getPage(pageIndex) {\n      return this.pdfDocument.getPage(pageIndex);\n    }\n  }, {\n    key: 'cleanup',\n    value: function cleanup() {\n      return this.pdfDocument.cleanup();\n    }\n  }, {\n    key: 'ensure',\n    value: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(obj, prop, args) {\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                (0, _util.unreachable)('Abstract method `ensure` called');\n\n              case 1:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function ensure(_x, _x2, _x3) {\n        return _ref.apply(this, arguments);\n      }\n\n      return ensure;\n    }()\n  }, {\n    key: 'requestRange',\n    value: function requestRange(begin, end) {\n      (0, _util.unreachable)('Abstract method `requestRange` called');\n    }\n  }, {\n    key: 'requestLoadedStream',\n    value: function requestLoadedStream() {\n      (0, _util.unreachable)('Abstract method `requestLoadedStream` called');\n    }\n  }, {\n    key: 'sendProgressiveData',\n    value: function sendProgressiveData(chunk) {\n      (0, _util.unreachable)('Abstract method `sendProgressiveData` called');\n    }\n  }, {\n    key: 'updatePassword',\n    value: function updatePassword(password) {\n      this._password = password;\n    }\n  }, {\n    key: 'terminate',\n    value: function terminate() {\n      (0, _util.unreachable)('Abstract method `terminate` called');\n    }\n  }, {\n    key: 'docId',\n    get: function get() {\n      return this._docId;\n    }\n  }, {\n    key: 'password',\n    get: function get() {\n      return this._password;\n    }\n  }, {\n    key: 'docBaseUrl',\n    get: function get() {\n      var docBaseUrl = null;\n      if (this._docBaseUrl) {\n        var absoluteUrl = (0, _util.createValidAbsoluteUrl)(this._docBaseUrl);\n        if (absoluteUrl) {\n          docBaseUrl = absoluteUrl.href;\n        } else {\n          (0, _util.warn)('Invalid absolute docBaseUrl: \"' + this._docBaseUrl + '\".');\n        }\n      }\n      return (0, _util.shadow)(this, 'docBaseUrl', docBaseUrl);\n    }\n  }]);\n\n  return BasePdfManager;\n}();\n\nvar LocalPdfManager = function (_BasePdfManager) {\n  _inherits(LocalPdfManager, _BasePdfManager);\n\n  function LocalPdfManager(docId, data, password, evaluatorOptions, docBaseUrl) {\n    _classCallCheck(this, LocalPdfManager);\n\n    var _this = _possibleConstructorReturn(this, (LocalPdfManager.__proto__ || Object.getPrototypeOf(LocalPdfManager)).call(this));\n\n    _this._docId = docId;\n    _this._password = password;\n    _this._docBaseUrl = docBaseUrl;\n    _this.evaluatorOptions = evaluatorOptions;\n    var stream = new _stream.Stream(data);\n    _this.pdfDocument = new _document.PDFDocument(_this, stream);\n    _this._loadedStreamPromise = Promise.resolve(stream);\n    return _this;\n  }\n\n  _createClass(LocalPdfManager, [{\n    key: 'ensure',\n    value: function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(obj, prop, args) {\n        var value;\n        return _regenerator2.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                value = obj[prop];\n\n                if (!(typeof value === 'function')) {\n                  _context2.next = 3;\n                  break;\n                }\n\n                return _context2.abrupt('return', value.apply(obj, args));\n\n              case 3:\n                return _context2.abrupt('return', value);\n\n              case 4:\n              case 'end':\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function ensure(_x4, _x5, _x6) {\n        return _ref2.apply(this, arguments);\n      }\n\n      return ensure;\n    }()\n  }, {\n    key: 'requestRange',\n    value: function requestRange(begin, end) {\n      return Promise.resolve();\n    }\n  }, {\n    key: 'requestLoadedStream',\n    value: function requestLoadedStream() {}\n  }, {\n    key: 'onLoadedStream',\n    value: function onLoadedStream() {\n      return this._loadedStreamPromise;\n    }\n  }, {\n    key: 'terminate',\n    value: function terminate() {}\n  }]);\n\n  return LocalPdfManager;\n}(BasePdfManager);\n\nvar NetworkPdfManager = function (_BasePdfManager2) {\n  _inherits(NetworkPdfManager, _BasePdfManager2);\n\n  function NetworkPdfManager(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {\n    _classCallCheck(this, NetworkPdfManager);\n\n    var _this2 = _possibleConstructorReturn(this, (NetworkPdfManager.__proto__ || Object.getPrototypeOf(NetworkPdfManager)).call(this));\n\n    _this2._docId = docId;\n    _this2._password = args.password;\n    _this2._docBaseUrl = docBaseUrl;\n    _this2.msgHandler = args.msgHandler;\n    _this2.evaluatorOptions = evaluatorOptions;\n    _this2.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, {\n      msgHandler: args.msgHandler,\n      url: args.url,\n      length: args.length,\n      disableAutoFetch: args.disableAutoFetch,\n      rangeChunkSize: args.rangeChunkSize\n    });\n    _this2.pdfDocument = new _document.PDFDocument(_this2, _this2.streamManager.getStream());\n    return _this2;\n  }\n\n  _createClass(NetworkPdfManager, [{\n    key: 'ensure',\n    value: function () {\n      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(obj, prop, args) {\n        var value;\n        return _regenerator2.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.prev = 0;\n                value = obj[prop];\n\n                if (!(typeof value === 'function')) {\n                  _context3.next = 4;\n                  break;\n                }\n\n                return _context3.abrupt('return', value.apply(obj, args));\n\n              case 4:\n                return _context3.abrupt('return', value);\n\n              case 7:\n                _context3.prev = 7;\n                _context3.t0 = _context3['catch'](0);\n\n                if (_context3.t0 instanceof _util.MissingDataException) {\n                  _context3.next = 11;\n                  break;\n                }\n\n                throw _context3.t0;\n\n              case 11:\n                _context3.next = 13;\n                return this.requestRange(_context3.t0.begin, _context3.t0.end);\n\n              case 13:\n                return _context3.abrupt('return', this.ensure(obj, prop, args));\n\n              case 14:\n              case 'end':\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this, [[0, 7]]);\n      }));\n\n      function ensure(_x7, _x8, _x9) {\n        return _ref3.apply(this, arguments);\n      }\n\n      return ensure;\n    }()\n  }, {\n    key: 'requestRange',\n    value: function requestRange(begin, end) {\n      return this.streamManager.requestRange(begin, end);\n    }\n  }, {\n    key: 'requestLoadedStream',\n    value: function requestLoadedStream() {\n      this.streamManager.requestAllChunks();\n    }\n  }, {\n    key: 'sendProgressiveData',\n    value: function sendProgressiveData(chunk) {\n      this.streamManager.onReceiveData({ chunk: chunk });\n    }\n  }, {\n    key: 'onLoadedStream',\n    value: function onLoadedStream() {\n      return this.streamManager.onLoadedStream();\n    }\n  }, {\n    key: 'terminate',\n    value: function terminate() {\n      this.streamManager.abort();\n    }\n  }]);\n\n  return NetworkPdfManager;\n}(BasePdfManager);\n\nexports.LocalPdfManager = LocalPdfManager;\nexports.NetworkPdfManager = NetworkPdfManager;\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __w_pdfjs_require__(132);\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar g = function () {\n  return this;\n}() || Function(\"return this\")();\nvar hadRuntime = g.regeneratorRuntime && Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\ng.regeneratorRuntime = undefined;\nmodule.exports = __w_pdfjs_require__(133);\nif (hadRuntime) {\n  g.regeneratorRuntime = oldRuntime;\n} else {\n  try {\n    delete g.regeneratorRuntime;\n  } catch (e) {\n    g.regeneratorRuntime = undefined;\n  }\n}\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n!function (global) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined;\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n  var inModule = ( false ? undefined : _typeof(module)) === \"object\";\n  var runtime = global.regeneratorRuntime;\n  if (runtime) {\n    if (inModule) {\n      module.exports = runtime;\n    }\n    return;\n  }\n  runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n    return generator;\n  }\n  runtime.wrap = wrap;\n  function tryCatch(fn, obj, arg) {\n    try {\n      return {\n        type: \"normal\",\n        arg: fn.call(obj, arg)\n      };\n    } catch (err) {\n      return {\n        type: \"throw\",\n        arg: err\n      };\n    }\n  }\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n  var ContinueSentinel = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\";\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function (method) {\n      prototype[method] = function (arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n  runtime.isGeneratorFunction = function (genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n  };\n  runtime.mark = function (genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n  runtime.awrap = function (arg) {\n    return { __await: arg };\n  };\n  function AsyncIterator(generator) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) === \"object\" && hasOwn.call(value, \"__await\")) {\n          return Promise.resolve(value.__await).then(function (value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function (err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n        return Promise.resolve(value).then(function (unwrapped) {\n          result.value = unwrapped;\n          resolve(result);\n        }, reject);\n      }\n    }\n    var previousPromise;\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new Promise(function (resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n      return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n    }\n    this._invoke = enqueue;\n  }\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  runtime.AsyncIterator = AsyncIterator;\n  runtime.async = function (innerFn, outerFn, self, tryLocsList) {\n    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));\n    return runtime.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n      return result.done ? result.value : iter.next();\n    });\n  };\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n        return doneResult();\n      }\n      context.method = method;\n      context.arg = arg;\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n        if (context.method === \"next\") {\n          context.sent = context._sent = context.arg;\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n          context.dispatchException(context.arg);\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n        state = GenStateExecuting;\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n          return {\n            value: record.arg,\n            done: context.done\n          };\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      context.delegate = null;\n      if (context.method === \"throw\") {\n        if (delegate.iterator.return) {\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n          if (context.method === \"throw\") {\n            return ContinueSentinel;\n          }\n        }\n        context.method = \"throw\";\n        context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n      }\n      return ContinueSentinel;\n    }\n    var record = tryCatch(method, delegate.iterator, context.arg);\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n    var info = record.arg;\n    if (!info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n    if (info.done) {\n      context[delegate.resultName] = info.value;\n      context.next = delegate.nextLoc;\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n    } else {\n      return info;\n    }\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n  defineIteratorMethods(Gp);\n  Gp[toStringTagSymbol] = \"Generator\";\n  Gp[iteratorSymbol] = function () {\n    return this;\n  };\n  Gp.toString = function () {\n    return \"[object Generator]\";\n  };\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n    this.tryEntries.push(entry);\n  }\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n  function Context(tryLocsList) {\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n  runtime.keys = function (object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n      next.done = true;\n      return next;\n    };\n  };\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n      if (!isNaN(iterable.length)) {\n        var i = -1,\n            next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n          next.value = undefined;\n          next.done = true;\n          return next;\n        };\n        return next.next = next;\n      }\n    }\n    return { next: doneResult };\n  }\n  runtime.values = values;\n  function doneResult() {\n    return {\n      value: undefined,\n      done: true\n    };\n  }\n  Context.prototype = {\n    constructor: Context,\n    reset: function reset(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n      this.method = \"next\";\n      this.arg = undefined;\n      this.tryEntries.forEach(resetTryEntry);\n      if (!skipTempReset) {\n        for (var name in this) {\n          if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n    stop: function stop() {\n      this.done = true;\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n      return this.rval;\n    },\n    dispatchException: function dispatchException(exception) {\n      if (this.done) {\n        throw exception;\n      }\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n        if (caught) {\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n        return !!caught;\n      }\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n        if (entry.tryLoc === \"root\") {\n          return handle(\"end\");\n        }\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n      if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n        finallyEntry = null;\n      }\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n      return this.complete(record);\n    },\n    complete: function complete(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n      if (record.type === \"break\" || record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n      return ContinueSentinel;\n    },\n    finish: function finish(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n    \"catch\": function _catch(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n      throw new Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n      if (this.method === \"next\") {\n        this.arg = undefined;\n      }\n      return ContinueSentinel;\n    }\n  };\n}(function () {\n  return this;\n}() || Function(\"return this\")());\n/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(134)(module)))\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (module) {\n  if (!module.webpackPolyfill) {\n    module.deprecate = function () {};\n    module.paths = [];\n    if (!module.children) module.children = [];\n    Object.defineProperty(module, \"loaded\", {\n      enumerable: true,\n      get: function get() {\n        return module.l;\n      }\n    });\n    Object.defineProperty(module, \"id\", {\n      enumerable: true,\n      get: function get() {\n        return module.i;\n      }\n    });\n    module.webpackPolyfill = 1;\n  }\n  return module;\n};\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ChunkedStreamManager = exports.ChunkedStream = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar ChunkedStream = function ChunkedStreamClosure() {\n  function ChunkedStream(length, chunkSize, manager) {\n    this.bytes = new Uint8Array(length);\n    this.start = 0;\n    this.pos = 0;\n    this.end = length;\n    this.chunkSize = chunkSize;\n    this.loadedChunks = [];\n    this.numChunksLoaded = 0;\n    this.numChunks = Math.ceil(length / chunkSize);\n    this.manager = manager;\n    this.progressiveDataLength = 0;\n    this.lastSuccessfulEnsureByteChunk = -1;\n  }\n  ChunkedStream.prototype = {\n    getMissingChunks: function ChunkedStream_getMissingChunks() {\n      var chunks = [];\n      for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n        if (!this.loadedChunks[chunk]) {\n          chunks.push(chunk);\n        }\n      }\n      return chunks;\n    },\n    getBaseStreams: function ChunkedStream_getBaseStreams() {\n      return [this];\n    },\n    allChunksLoaded: function ChunkedStream_allChunksLoaded() {\n      return this.numChunksLoaded === this.numChunks;\n    },\n    onReceiveData: function ChunkedStream_onReceiveData(begin, chunk) {\n      var end = begin + chunk.byteLength;\n      if (begin % this.chunkSize !== 0) {\n        throw new Error('Bad begin offset: ' + begin);\n      }\n      var length = this.bytes.length;\n      if (end % this.chunkSize !== 0 && end !== length) {\n        throw new Error('Bad end offset: ' + end);\n      }\n      this.bytes.set(new Uint8Array(chunk), begin);\n      var chunkSize = this.chunkSize;\n      var beginChunk = Math.floor(begin / chunkSize);\n      var endChunk = Math.floor((end - 1) / chunkSize) + 1;\n      var curChunk;\n      for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n        if (!this.loadedChunks[curChunk]) {\n          this.loadedChunks[curChunk] = true;\n          ++this.numChunksLoaded;\n        }\n      }\n    },\n    onReceiveProgressiveData: function ChunkedStream_onReceiveProgressiveData(data) {\n      var position = this.progressiveDataLength;\n      var beginChunk = Math.floor(position / this.chunkSize);\n      this.bytes.set(new Uint8Array(data), position);\n      position += data.byteLength;\n      this.progressiveDataLength = position;\n      var endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize);\n      var curChunk;\n      for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n        if (!this.loadedChunks[curChunk]) {\n          this.loadedChunks[curChunk] = true;\n          ++this.numChunksLoaded;\n        }\n      }\n    },\n    ensureByte: function ChunkedStream_ensureByte(pos) {\n      var chunk = Math.floor(pos / this.chunkSize);\n      if (chunk === this.lastSuccessfulEnsureByteChunk) {\n        return;\n      }\n      if (!this.loadedChunks[chunk]) {\n        throw new _util.MissingDataException(pos, pos + 1);\n      }\n      this.lastSuccessfulEnsureByteChunk = chunk;\n    },\n    ensureRange: function ChunkedStream_ensureRange(begin, end) {\n      if (begin >= end) {\n        return;\n      }\n      if (end <= this.progressiveDataLength) {\n        return;\n      }\n      var chunkSize = this.chunkSize;\n      var beginChunk = Math.floor(begin / chunkSize);\n      var endChunk = Math.floor((end - 1) / chunkSize) + 1;\n      for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!this.loadedChunks[chunk]) {\n          throw new _util.MissingDataException(begin, end);\n        }\n      }\n    },\n    nextEmptyChunk: function ChunkedStream_nextEmptyChunk(beginChunk) {\n      var chunk,\n          numChunks = this.numChunks;\n      for (var i = 0; i < numChunks; ++i) {\n        chunk = (beginChunk + i) % numChunks;\n        if (!this.loadedChunks[chunk]) {\n          return chunk;\n        }\n      }\n      return null;\n    },\n    hasChunk: function ChunkedStream_hasChunk(chunk) {\n      return !!this.loadedChunks[chunk];\n    },\n    get length() {\n      return this.end - this.start;\n    },\n    get isEmpty() {\n      return this.length === 0;\n    },\n    getByte: function ChunkedStream_getByte() {\n      var pos = this.pos;\n      if (pos >= this.end) {\n        return -1;\n      }\n      this.ensureByte(pos);\n      return this.bytes[this.pos++];\n    },\n    getUint16: function ChunkedStream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function ChunkedStream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    getBytes: function getBytes(length) {\n      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var bytes = this.bytes;\n      var pos = this.pos;\n      var strEnd = this.end;\n      if (!length) {\n        this.ensureRange(pos, strEnd);\n        var _subarray = bytes.subarray(pos, strEnd);\n        return forceClamped ? new Uint8ClampedArray(_subarray) : _subarray;\n      }\n      var end = pos + length;\n      if (end > strEnd) {\n        end = strEnd;\n      }\n      this.ensureRange(pos, end);\n      this.pos = end;\n      var subarray = bytes.subarray(pos, end);\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    },\n\n    peekByte: function ChunkedStream_peekByte() {\n      var peekedByte = this.getByte();\n      this.pos--;\n      return peekedByte;\n    },\n    peekBytes: function peekBytes(length) {\n      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n\n    getByteRange: function ChunkedStream_getBytes(begin, end) {\n      this.ensureRange(begin, end);\n      return this.bytes.subarray(begin, end);\n    },\n    skip: function ChunkedStream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function ChunkedStream_reset() {\n      this.pos = this.start;\n    },\n    moveStart: function ChunkedStream_moveStart() {\n      this.start = this.pos;\n    },\n    makeSubStream: function ChunkedStream_makeSubStream(start, length, dict) {\n      this.ensureRange(start, start + length);\n      function ChunkedStreamSubstream() {}\n      ChunkedStreamSubstream.prototype = Object.create(this);\n      ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n        var chunkSize = this.chunkSize;\n        var beginChunk = Math.floor(this.start / chunkSize);\n        var endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n        var missingChunks = [];\n        for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n          if (!this.loadedChunks[chunk]) {\n            missingChunks.push(chunk);\n          }\n        }\n        return missingChunks;\n      };\n      var subStream = new ChunkedStreamSubstream();\n      subStream.pos = subStream.start = start;\n      subStream.end = start + length || this.end;\n      subStream.dict = dict;\n      return subStream;\n    }\n  };\n  return ChunkedStream;\n}();\nvar ChunkedStreamManager = function ChunkedStreamManagerClosure() {\n  function ChunkedStreamManager(pdfNetworkStream, args) {\n    var chunkSize = args.rangeChunkSize;\n    var length = args.length;\n    this.stream = new ChunkedStream(length, chunkSize, this);\n    this.length = length;\n    this.chunkSize = chunkSize;\n    this.pdfNetworkStream = pdfNetworkStream;\n    this.url = args.url;\n    this.disableAutoFetch = args.disableAutoFetch;\n    this.msgHandler = args.msgHandler;\n    this.currRequestId = 0;\n    this.chunksNeededByRequest = Object.create(null);\n    this.requestsByChunk = Object.create(null);\n    this.promisesByRequest = Object.create(null);\n    this.progressiveDataLength = 0;\n    this.aborted = false;\n    this._loadedStreamCapability = (0, _util.createPromiseCapability)();\n  }\n  ChunkedStreamManager.prototype = {\n    onLoadedStream: function ChunkedStreamManager_getLoadedStream() {\n      return this._loadedStreamCapability.promise;\n    },\n    sendRequest: function ChunkedStreamManager_sendRequest(begin, end) {\n      var _this = this;\n\n      var rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n      if (!rangeReader.isStreamingSupported) {\n        rangeReader.onProgress = this.onProgress.bind(this);\n      }\n      var chunks = [],\n          loaded = 0;\n      var manager = this;\n      var promise = new Promise(function (resolve, reject) {\n        var readChunk = function readChunk(chunk) {\n          try {\n            if (!chunk.done) {\n              var data = chunk.value;\n              chunks.push(data);\n              loaded += (0, _util.arrayByteLength)(data);\n              if (rangeReader.isStreamingSupported) {\n                manager.onProgress({ loaded: loaded });\n              }\n              rangeReader.read().then(readChunk, reject);\n              return;\n            }\n            var chunkData = (0, _util.arraysToBytes)(chunks);\n            chunks = null;\n            resolve(chunkData);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        rangeReader.read().then(readChunk, reject);\n      });\n      promise.then(function (data) {\n        if (_this.aborted) {\n          return;\n        }\n        _this.onReceiveData({\n          chunk: data,\n          begin: begin\n        });\n      });\n    },\n    requestAllChunks: function ChunkedStreamManager_requestAllChunks() {\n      var missingChunks = this.stream.getMissingChunks();\n      this._requestChunks(missingChunks);\n      return this._loadedStreamCapability.promise;\n    },\n    _requestChunks: function ChunkedStreamManager_requestChunks(chunks) {\n      var requestId = this.currRequestId++;\n      var i, ii;\n      var chunksNeeded = Object.create(null);\n      this.chunksNeededByRequest[requestId] = chunksNeeded;\n      for (i = 0, ii = chunks.length; i < ii; i++) {\n        if (!this.stream.hasChunk(chunks[i])) {\n          chunksNeeded[chunks[i]] = true;\n        }\n      }\n      if ((0, _util.isEmptyObj)(chunksNeeded)) {\n        return Promise.resolve();\n      }\n      var capability = (0, _util.createPromiseCapability)();\n      this.promisesByRequest[requestId] = capability;\n      var chunksToRequest = [];\n      for (var chunk in chunksNeeded) {\n        chunk = chunk | 0;\n        if (!(chunk in this.requestsByChunk)) {\n          this.requestsByChunk[chunk] = [];\n          chunksToRequest.push(chunk);\n        }\n        this.requestsByChunk[chunk].push(requestId);\n      }\n      if (!chunksToRequest.length) {\n        return capability.promise;\n      }\n      var groupedChunksToRequest = this.groupChunks(chunksToRequest);\n      for (i = 0; i < groupedChunksToRequest.length; ++i) {\n        var groupedChunk = groupedChunksToRequest[i];\n        var begin = groupedChunk.beginChunk * this.chunkSize;\n        var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n        this.sendRequest(begin, end);\n      }\n      return capability.promise;\n    },\n    getStream: function ChunkedStreamManager_getStream() {\n      return this.stream;\n    },\n    requestRange: function ChunkedStreamManager_requestRange(begin, end) {\n      end = Math.min(end, this.length);\n      var beginChunk = this.getBeginChunk(begin);\n      var endChunk = this.getEndChunk(end);\n      var chunks = [];\n      for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n        chunks.push(chunk);\n      }\n      return this._requestChunks(chunks);\n    },\n    requestRanges: function ChunkedStreamManager_requestRanges(ranges) {\n      ranges = ranges || [];\n      var chunksToRequest = [];\n      for (var i = 0; i < ranges.length; i++) {\n        var beginChunk = this.getBeginChunk(ranges[i].begin);\n        var endChunk = this.getEndChunk(ranges[i].end);\n        for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n          if (!chunksToRequest.includes(chunk)) {\n            chunksToRequest.push(chunk);\n          }\n        }\n      }\n      chunksToRequest.sort(function (a, b) {\n        return a - b;\n      });\n      return this._requestChunks(chunksToRequest);\n    },\n    groupChunks: function ChunkedStreamManager_groupChunks(chunks) {\n      var groupedChunks = [];\n      var beginChunk = -1;\n      var prevChunk = -1;\n      for (var i = 0; i < chunks.length; ++i) {\n        var chunk = chunks[i];\n        if (beginChunk < 0) {\n          beginChunk = chunk;\n        }\n        if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n          groupedChunks.push({\n            beginChunk: beginChunk,\n            endChunk: prevChunk + 1\n          });\n          beginChunk = chunk;\n        }\n        if (i + 1 === chunks.length) {\n          groupedChunks.push({\n            beginChunk: beginChunk,\n            endChunk: chunk + 1\n          });\n        }\n        prevChunk = chunk;\n      }\n      return groupedChunks;\n    },\n    onProgress: function ChunkedStreamManager_onProgress(args) {\n      var bytesLoaded = this.stream.numChunksLoaded * this.chunkSize + args.loaded;\n      this.msgHandler.send('DocProgress', {\n        loaded: bytesLoaded,\n        total: this.length\n      });\n    },\n    onReceiveData: function ChunkedStreamManager_onReceiveData(args) {\n      var chunk = args.chunk;\n      var isProgressive = args.begin === undefined;\n      var begin = isProgressive ? this.progressiveDataLength : args.begin;\n      var end = begin + chunk.byteLength;\n      var beginChunk = Math.floor(begin / this.chunkSize);\n      var endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize);\n      if (isProgressive) {\n        this.stream.onReceiveProgressiveData(chunk);\n        this.progressiveDataLength = end;\n      } else {\n        this.stream.onReceiveData(begin, chunk);\n      }\n      if (this.stream.allChunksLoaded()) {\n        this._loadedStreamCapability.resolve(this.stream);\n      }\n      var loadedRequests = [];\n      var i, requestId;\n      for (chunk = beginChunk; chunk < endChunk; ++chunk) {\n        var requestIds = this.requestsByChunk[chunk] || [];\n        delete this.requestsByChunk[chunk];\n        for (i = 0; i < requestIds.length; ++i) {\n          requestId = requestIds[i];\n          var chunksNeeded = this.chunksNeededByRequest[requestId];\n          if (chunk in chunksNeeded) {\n            delete chunksNeeded[chunk];\n          }\n          if (!(0, _util.isEmptyObj)(chunksNeeded)) {\n            continue;\n          }\n          loadedRequests.push(requestId);\n        }\n      }\n      if (!this.disableAutoFetch && (0, _util.isEmptyObj)(this.requestsByChunk)) {\n        var nextEmptyChunk;\n        if (this.stream.numChunksLoaded === 1) {\n          var lastChunk = this.stream.numChunks - 1;\n          if (!this.stream.hasChunk(lastChunk)) {\n            nextEmptyChunk = lastChunk;\n          }\n        } else {\n          nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n        }\n        if (Number.isInteger(nextEmptyChunk)) {\n          this._requestChunks([nextEmptyChunk]);\n        }\n      }\n      for (i = 0; i < loadedRequests.length; ++i) {\n        requestId = loadedRequests[i];\n        var capability = this.promisesByRequest[requestId];\n        delete this.promisesByRequest[requestId];\n        capability.resolve();\n      }\n      this.msgHandler.send('DocProgress', {\n        loaded: this.stream.numChunksLoaded * this.chunkSize,\n        total: this.length\n      });\n    },\n    onError: function ChunkedStreamManager_onError(err) {\n      this._loadedStreamCapability.reject(err);\n    },\n    getBeginChunk: function ChunkedStreamManager_getBeginChunk(begin) {\n      var chunk = Math.floor(begin / this.chunkSize);\n      return chunk;\n    },\n    getEndChunk: function ChunkedStreamManager_getEndChunk(end) {\n      var chunk = Math.floor((end - 1) / this.chunkSize) + 1;\n      return chunk;\n    },\n    abort: function ChunkedStreamManager_abort() {\n      this.aborted = true;\n      if (this.pdfNetworkStream) {\n        this.pdfNetworkStream.cancelAllRequests('abort');\n      }\n      for (var requestId in this.promisesByRequest) {\n        var capability = this.promisesByRequest[requestId];\n        capability.reject(new Error('Request was aborted'));\n      }\n    }\n  };\n  return ChunkedStreamManager;\n}();\nexports.ChunkedStream = ChunkedStream;\nexports.ChunkedStreamManager = ChunkedStreamManager;\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFDocument = exports.Page = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _obj = __w_pdfjs_require__(137);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _stream = __w_pdfjs_require__(140);\n\nvar _annotation = __w_pdfjs_require__(152);\n\nvar _crypto = __w_pdfjs_require__(150);\n\nvar _parser = __w_pdfjs_require__(139);\n\nvar _operator_list = __w_pdfjs_require__(153);\n\nvar _evaluator = __w_pdfjs_require__(154);\n\nvar _function = __w_pdfjs_require__(168);\n\nvar Page = function PageClosure() {\n  var DEFAULT_USER_UNIT = 1.0;\n  var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n  function isAnnotationRenderable(annotation, intent) {\n    return intent === 'display' && annotation.viewable || intent === 'print' && annotation.printable;\n  }\n  function Page(_ref) {\n    var pdfManager = _ref.pdfManager,\n        xref = _ref.xref,\n        pageIndex = _ref.pageIndex,\n        pageDict = _ref.pageDict,\n        ref = _ref.ref,\n        fontCache = _ref.fontCache,\n        builtInCMapCache = _ref.builtInCMapCache,\n        pdfFunctionFactory = _ref.pdfFunctionFactory;\n\n    this.pdfManager = pdfManager;\n    this.pageIndex = pageIndex;\n    this.pageDict = pageDict;\n    this.xref = xref;\n    this.ref = ref;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.pdfFunctionFactory = pdfFunctionFactory;\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\n    this.resourcesPromise = null;\n    var uniquePrefix = 'p' + this.pageIndex + '_';\n    var idCounters = { obj: 0 };\n    this.idFactory = {\n      createObjId: function createObjId() {\n        return uniquePrefix + ++idCounters.obj;\n      }\n    };\n  }\n  Page.prototype = {\n    _getInheritableProperty: function _getInheritableProperty(key) {\n      var getArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var value = (0, _util.getInheritableProperty)({\n        dict: this.pageDict,\n        key: key,\n        getArray: getArray,\n        stopWhenFound: false\n      });\n      if (!Array.isArray(value)) {\n        return value;\n      }\n      if (value.length === 1 || !(0, _primitives.isDict)(value[0])) {\n        return value[0];\n      }\n      return _primitives.Dict.merge(this.xref, value);\n    },\n\n    get content() {\n      return this.pageDict.get('Contents');\n    },\n    get resources() {\n      return (0, _util.shadow)(this, 'resources', this._getInheritableProperty('Resources') || _primitives.Dict.empty);\n    },\n    get mediaBox() {\n      var mediaBox = this._getInheritableProperty('MediaBox', true);\n      if (!Array.isArray(mediaBox) || mediaBox.length !== 4) {\n        return (0, _util.shadow)(this, 'mediaBox', LETTER_SIZE_MEDIABOX);\n      }\n      return (0, _util.shadow)(this, 'mediaBox', mediaBox);\n    },\n    get cropBox() {\n      var cropBox = this._getInheritableProperty('CropBox', true);\n      if (!Array.isArray(cropBox) || cropBox.length !== 4) {\n        return (0, _util.shadow)(this, 'cropBox', this.mediaBox);\n      }\n      return (0, _util.shadow)(this, 'cropBox', cropBox);\n    },\n    get userUnit() {\n      var obj = this.pageDict.get('UserUnit');\n      if (!(0, _util.isNum)(obj) || obj <= 0) {\n        obj = DEFAULT_USER_UNIT;\n      }\n      return (0, _util.shadow)(this, 'userUnit', obj);\n    },\n    get view() {\n      var mediaBox = this.mediaBox,\n          cropBox = this.cropBox;\n      if (mediaBox === cropBox) {\n        return (0, _util.shadow)(this, 'view', mediaBox);\n      }\n      var intersection = _util.Util.intersect(cropBox, mediaBox);\n      return (0, _util.shadow)(this, 'view', intersection || mediaBox);\n    },\n    get rotate() {\n      var rotate = this._getInheritableProperty('Rotate') || 0;\n      if (rotate % 90 !== 0) {\n        rotate = 0;\n      } else if (rotate >= 360) {\n        rotate = rotate % 360;\n      } else if (rotate < 0) {\n        rotate = (rotate % 360 + 360) % 360;\n      }\n      return (0, _util.shadow)(this, 'rotate', rotate);\n    },\n    getContentStream: function Page_getContentStream() {\n      var content = this.content;\n      var stream;\n      if (Array.isArray(content)) {\n        var xref = this.xref;\n        var i,\n            n = content.length;\n        var streams = [];\n        for (i = 0; i < n; ++i) {\n          streams.push(xref.fetchIfRef(content[i]));\n        }\n        stream = new _stream.StreamsSequenceStream(streams);\n      } else if ((0, _primitives.isStream)(content)) {\n        stream = content;\n      } else {\n        stream = new _stream.NullStream();\n      }\n      return stream;\n    },\n    loadResources: function Page_loadResources(keys) {\n      var _this = this;\n\n      if (!this.resourcesPromise) {\n        this.resourcesPromise = this.pdfManager.ensure(this, 'resources');\n      }\n      return this.resourcesPromise.then(function () {\n        var objectLoader = new _obj.ObjectLoader(_this.resources, keys, _this.xref);\n        return objectLoader.load();\n      });\n    },\n    getOperatorList: function getOperatorList(_ref2) {\n      var _this2 = this;\n\n      var handler = _ref2.handler,\n          task = _ref2.task,\n          intent = _ref2.intent,\n          renderInteractiveForms = _ref2.renderInteractiveForms;\n\n      var contentStreamPromise = this.pdfManager.ensure(this, 'getContentStream');\n      var resourcesPromise = this.loadResources(['ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font']);\n      var partialEvaluator = new _evaluator.PartialEvaluator({\n        pdfManager: this.pdfManager,\n        xref: this.xref,\n        handler: handler,\n        pageIndex: this.pageIndex,\n        idFactory: this.idFactory,\n        fontCache: this.fontCache,\n        builtInCMapCache: this.builtInCMapCache,\n        options: this.evaluatorOptions,\n        pdfFunctionFactory: this.pdfFunctionFactory\n      });\n      var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n      var pageListPromise = dataPromises.then(function (_ref3) {\n        var _ref4 = _slicedToArray(_ref3, 1),\n            contentStream = _ref4[0];\n\n        var opList = new _operator_list.OperatorList(intent, handler, _this2.pageIndex);\n        handler.send('StartRenderPage', {\n          transparency: partialEvaluator.hasBlendModes(_this2.resources),\n          pageIndex: _this2.pageIndex,\n          intent: intent\n        });\n        return partialEvaluator.getOperatorList({\n          stream: contentStream,\n          task: task,\n          resources: _this2.resources,\n          operatorList: opList\n        }).then(function () {\n          return opList;\n        });\n      });\n      return Promise.all([pageListPromise, this._parsedAnnotations]).then(function (_ref5) {\n        var _ref6 = _slicedToArray(_ref5, 2),\n            pageOpList = _ref6[0],\n            annotations = _ref6[1];\n\n        if (annotations.length === 0) {\n          pageOpList.flush(true);\n          return pageOpList;\n        }\n        var i,\n            ii,\n            opListPromises = [];\n        for (i = 0, ii = annotations.length; i < ii; i++) {\n          if (isAnnotationRenderable(annotations[i], intent)) {\n            opListPromises.push(annotations[i].getOperatorList(partialEvaluator, task, renderInteractiveForms));\n          }\n        }\n        return Promise.all(opListPromises).then(function (opLists) {\n          pageOpList.addOp(_util.OPS.beginAnnotations, []);\n          for (i = 0, ii = opLists.length; i < ii; i++) {\n            pageOpList.addOpList(opLists[i]);\n          }\n          pageOpList.addOp(_util.OPS.endAnnotations, []);\n          pageOpList.flush(true);\n          return pageOpList;\n        });\n      });\n    },\n    extractTextContent: function extractTextContent(_ref7) {\n      var _this3 = this;\n\n      var handler = _ref7.handler,\n          task = _ref7.task,\n          normalizeWhitespace = _ref7.normalizeWhitespace,\n          sink = _ref7.sink,\n          combineTextItems = _ref7.combineTextItems;\n\n      var contentStreamPromise = this.pdfManager.ensure(this, 'getContentStream');\n      var resourcesPromise = this.loadResources(['ExtGState', 'XObject', 'Font']);\n      var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n      return dataPromises.then(function (_ref8) {\n        var _ref9 = _slicedToArray(_ref8, 1),\n            contentStream = _ref9[0];\n\n        var partialEvaluator = new _evaluator.PartialEvaluator({\n          pdfManager: _this3.pdfManager,\n          xref: _this3.xref,\n          handler: handler,\n          pageIndex: _this3.pageIndex,\n          idFactory: _this3.idFactory,\n          fontCache: _this3.fontCache,\n          builtInCMapCache: _this3.builtInCMapCache,\n          options: _this3.evaluatorOptions,\n          pdfFunctionFactory: _this3.pdfFunctionFactory\n        });\n        return partialEvaluator.getTextContent({\n          stream: contentStream,\n          task: task,\n          resources: _this3.resources,\n          normalizeWhitespace: normalizeWhitespace,\n          combineTextItems: combineTextItems,\n          sink: sink\n        });\n      });\n    },\n    getAnnotationsData: function getAnnotationsData(intent) {\n      return this._parsedAnnotations.then(function (annotations) {\n        var annotationsData = [];\n        for (var i = 0, ii = annotations.length; i < ii; i++) {\n          if (!intent || isAnnotationRenderable(annotations[i], intent)) {\n            annotationsData.push(annotations[i].data);\n          }\n        }\n        return annotationsData;\n      });\n    },\n\n    get annotations() {\n      return (0, _util.shadow)(this, 'annotations', this._getInheritableProperty('Annots') || []);\n    },\n    get _parsedAnnotations() {\n      var _this4 = this;\n\n      var parsedAnnotations = this.pdfManager.ensure(this, 'annotations').then(function () {\n        var annotationRefs = _this4.annotations;\n        var annotationPromises = [];\n        for (var i = 0, ii = annotationRefs.length; i < ii; i++) {\n          annotationPromises.push(_annotation.AnnotationFactory.create(_this4.xref, annotationRefs[i], _this4.pdfManager, _this4.idFactory));\n        }\n        return Promise.all(annotationPromises).then(function (annotations) {\n          return annotations.filter(function isDefined(annotation) {\n            return !!annotation;\n          });\n        }, function (reason) {\n          (0, _util.warn)('_parsedAnnotations: \"' + reason + '\".');\n          return [];\n        });\n      });\n      return (0, _util.shadow)(this, '_parsedAnnotations', parsedAnnotations);\n    }\n  };\n  return Page;\n}();\nvar PDFDocument = function PDFDocumentClosure() {\n  var FINGERPRINT_FIRST_BYTES = 1024;\n  var EMPTY_FINGERPRINT = '\\x00\\x00\\x00\\x00\\x00\\x00\\x00' + '\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00';\n  function PDFDocument(pdfManager, arg) {\n    var stream;\n    if ((0, _primitives.isStream)(arg)) {\n      stream = arg;\n    } else if ((0, _util.isArrayBuffer)(arg)) {\n      stream = new _stream.Stream(arg);\n    } else {\n      throw new Error('PDFDocument: Unknown argument type');\n    }\n    if (stream.length <= 0) {\n      throw new Error('PDFDocument: stream must have data');\n    }\n    this.pdfManager = pdfManager;\n    this.stream = stream;\n    this.xref = new _obj.XRef(stream, pdfManager);\n    var evaluatorOptions = pdfManager.evaluatorOptions;\n    this.pdfFunctionFactory = new _function.PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: evaluatorOptions.isEvalSupported\n    });\n    this._pagePromises = [];\n  }\n  function find(stream, needle, limit, backwards) {\n    var pos = stream.pos;\n    var end = stream.end;\n    var strBuf = [];\n    if (pos + limit > end) {\n      limit = end - pos;\n    }\n    for (var n = 0; n < limit; ++n) {\n      strBuf.push(String.fromCharCode(stream.getByte()));\n    }\n    var str = strBuf.join('');\n    stream.pos = pos;\n    var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle);\n    if (index === -1) {\n      return false;\n    }\n    stream.pos += index;\n    return true;\n  }\n  var DocumentInfoValidators = {\n    Title: _util.isString,\n    Author: _util.isString,\n    Subject: _util.isString,\n    Keywords: _util.isString,\n    Creator: _util.isString,\n    Producer: _util.isString,\n    CreationDate: _util.isString,\n    ModDate: _util.isString,\n    Trapped: _primitives.isName\n  };\n  PDFDocument.prototype = {\n    parse: function PDFDocument_parse(recoveryMode) {\n      this.setup(recoveryMode);\n      var version = this.catalog.catDict.get('Version');\n      if ((0, _primitives.isName)(version)) {\n        this.pdfFormatVersion = version.name;\n      }\n      try {\n        this.acroForm = this.catalog.catDict.get('AcroForm');\n        if (this.acroForm) {\n          this.xfa = this.acroForm.get('XFA');\n          var fields = this.acroForm.get('Fields');\n          if ((!fields || !Array.isArray(fields) || fields.length === 0) && !this.xfa) {\n            this.acroForm = null;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof _util.MissingDataException) {\n          throw ex;\n        }\n        (0, _util.info)('Something wrong with AcroForm entry');\n        this.acroForm = null;\n      }\n    },\n    get linearization() {\n      var linearization = null;\n      try {\n        linearization = _parser.Linearization.create(this.stream);\n      } catch (err) {\n        if (err instanceof _util.MissingDataException) {\n          throw err;\n        }\n        (0, _util.info)(err);\n      }\n      return (0, _util.shadow)(this, 'linearization', linearization);\n    },\n    get startXRef() {\n      var stream = this.stream;\n      var startXRef = 0;\n      var linearization = this.linearization;\n      if (linearization) {\n        stream.reset();\n        if (find(stream, 'endobj', 1024)) {\n          startXRef = stream.pos + 6;\n        }\n      } else {\n        var step = 1024;\n        var found = false,\n            pos = stream.end;\n        while (!found && pos > 0) {\n          pos -= step - 'startxref'.length;\n          if (pos < 0) {\n            pos = 0;\n          }\n          stream.pos = pos;\n          found = find(stream, 'startxref', step, true);\n        }\n        if (found) {\n          stream.skip(9);\n          var ch;\n          do {\n            ch = stream.getByte();\n          } while ((0, _util.isSpace)(ch));\n          var str = '';\n          while (ch >= 0x20 && ch <= 0x39) {\n            str += String.fromCharCode(ch);\n            ch = stream.getByte();\n          }\n          startXRef = parseInt(str, 10);\n          if (isNaN(startXRef)) {\n            startXRef = 0;\n          }\n        }\n      }\n      return (0, _util.shadow)(this, 'startXRef', startXRef);\n    },\n    checkHeader: function PDFDocument_checkHeader() {\n      var stream = this.stream;\n      stream.reset();\n      if (find(stream, '%PDF-', 1024)) {\n        stream.moveStart();\n        var MAX_VERSION_LENGTH = 12;\n        var version = '',\n            ch;\n        while ((ch = stream.getByte()) > 0x20) {\n          if (version.length >= MAX_VERSION_LENGTH) {\n            break;\n          }\n          version += String.fromCharCode(ch);\n        }\n        if (!this.pdfFormatVersion) {\n          this.pdfFormatVersion = version.substring(5);\n        }\n        return;\n      }\n    },\n    parseStartXRef: function PDFDocument_parseStartXRef() {\n      var startXRef = this.startXRef;\n      this.xref.setStartXRef(startXRef);\n    },\n    setup: function PDFDocument_setup(recoveryMode) {\n      this.xref.parse(recoveryMode);\n      this.catalog = new _obj.Catalog(this.pdfManager, this.xref);\n    },\n    get numPages() {\n      var linearization = this.linearization;\n      var num = linearization ? linearization.numPages : this.catalog.numPages;\n      return (0, _util.shadow)(this, 'numPages', num);\n    },\n    get documentInfo() {\n      var docInfo = {\n        PDFFormatVersion: this.pdfFormatVersion,\n        IsLinearized: !!this.linearization,\n        IsAcroFormPresent: !!this.acroForm,\n        IsXFAPresent: !!this.xfa\n      };\n      var infoDict = void 0;\n      try {\n        infoDict = this.xref.trailer.get('Info');\n      } catch (err) {\n        if (err instanceof _util.MissingDataException) {\n          throw err;\n        }\n        (0, _util.info)('The document information dictionary is invalid.');\n      }\n      if ((0, _primitives.isDict)(infoDict)) {\n        for (var key in DocumentInfoValidators) {\n          if (infoDict.has(key)) {\n            var value = infoDict.get(key);\n            if (DocumentInfoValidators[key](value)) {\n              docInfo[key] = typeof value !== 'string' ? value : (0, _util.stringToPDFString)(value);\n            } else {\n              (0, _util.info)('Bad value in document info for \"' + key + '\"');\n            }\n          }\n        }\n      }\n      return (0, _util.shadow)(this, 'documentInfo', docInfo);\n    },\n    get fingerprint() {\n      var xref = this.xref,\n          hash,\n          fileID = '';\n      var idArray = xref.trailer.get('ID');\n      if (Array.isArray(idArray) && idArray[0] && (0, _util.isString)(idArray[0]) && idArray[0] !== EMPTY_FINGERPRINT) {\n        hash = (0, _util.stringToBytes)(idArray[0]);\n      } else {\n        if (this.stream.ensureRange) {\n          this.stream.ensureRange(0, Math.min(FINGERPRINT_FIRST_BYTES, this.stream.end));\n        }\n        hash = (0, _crypto.calculateMD5)(this.stream.bytes.subarray(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n      }\n      for (var i = 0, n = hash.length; i < n; i++) {\n        var hex = hash[i].toString(16);\n        fileID += hex.length === 1 ? '0' + hex : hex;\n      }\n      return (0, _util.shadow)(this, 'fingerprint', fileID);\n    },\n    _getLinearizationPage: function _getLinearizationPage(pageIndex) {\n      var catalog = this.catalog,\n          linearization = this.linearization;\n\n      (0, _util.assert)(linearization && linearization.pageFirst === pageIndex);\n      var ref = new _primitives.Ref(linearization.objectNumberFirst, 0);\n      return this.xref.fetchAsync(ref).then(function (obj) {\n        if ((0, _primitives.isDict)(obj, 'Page') || (0, _primitives.isDict)(obj) && !obj.has('Type') && obj.has('Contents')) {\n          if (ref && !catalog.pageKidsCountCache.has(ref)) {\n            catalog.pageKidsCountCache.put(ref, 1);\n          }\n          return [obj, ref];\n        }\n        throw new _util.FormatError('The Linearization dictionary doesn\\'t point ' + 'to a valid Page dictionary.');\n      }).catch(function (reason) {\n        (0, _util.info)(reason);\n        return catalog.getPageDict(pageIndex);\n      });\n    },\n    getPage: function getPage(pageIndex) {\n      var _this5 = this;\n\n      if (this._pagePromises[pageIndex] !== undefined) {\n        return this._pagePromises[pageIndex];\n      }\n      var catalog = this.catalog,\n          linearization = this.linearization;\n\n      var promise = linearization && linearization.pageFirst === pageIndex ? this._getLinearizationPage(pageIndex) : catalog.getPageDict(pageIndex);\n      return this._pagePromises[pageIndex] = promise.then(function (_ref10) {\n        var _ref11 = _slicedToArray(_ref10, 2),\n            pageDict = _ref11[0],\n            ref = _ref11[1];\n\n        return new Page({\n          pdfManager: _this5.pdfManager,\n          xref: _this5.xref,\n          pageIndex: pageIndex,\n          pageDict: pageDict,\n          ref: ref,\n          fontCache: catalog.fontCache,\n          builtInCMapCache: catalog.builtInCMapCache,\n          pdfFunctionFactory: _this5.pdfFunctionFactory\n        });\n      });\n    },\n\n    cleanup: function PDFDocument_cleanup() {\n      return this.catalog.cleanup();\n    }\n  };\n  return PDFDocument;\n}();\nexports.Page = Page;\nexports.PDFDocument = PDFDocument;\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.FileSpec = exports.XRef = exports.ObjectLoader = exports.Catalog = undefined;\n\nvar _regenerator = __w_pdfjs_require__(131);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _parser = __w_pdfjs_require__(139);\n\nvar _chunked_stream = __w_pdfjs_require__(135);\n\nvar _crypto = __w_pdfjs_require__(150);\n\nvar _colorspace = __w_pdfjs_require__(151);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction fetchDestination(dest) {\n  return (0, _primitives.isDict)(dest) ? dest.get('D') : dest;\n}\n\nvar Catalog = function () {\n  function Catalog(pdfManager, xref) {\n    _classCallCheck(this, Catalog);\n\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n    this.catDict = xref.getCatalogObj();\n    if (!(0, _primitives.isDict)(this.catDict)) {\n      throw new _util.FormatError('Catalog object is not a dictionary.');\n    }\n    this.fontCache = new _primitives.RefSetCache();\n    this.builtInCMapCache = new Map();\n    this.pageKidsCountCache = new _primitives.RefSetCache();\n  }\n\n  _createClass(Catalog, [{\n    key: '_readDocumentOutline',\n    value: function _readDocumentOutline() {\n      var obj = this.catDict.get('Outlines');\n      if (!(0, _primitives.isDict)(obj)) {\n        return null;\n      }\n      obj = obj.getRaw('First');\n      if (!(0, _primitives.isRef)(obj)) {\n        return null;\n      }\n      var root = { items: [] };\n      var queue = [{\n        obj: obj,\n        parent: root\n      }];\n      var processed = new _primitives.RefSet();\n      processed.put(obj);\n      var xref = this.xref,\n          blackColor = new Uint8ClampedArray(3);\n      while (queue.length > 0) {\n        var i = queue.shift();\n        var outlineDict = xref.fetchIfRef(i.obj);\n        if (outlineDict === null) {\n          continue;\n        }\n        if (!outlineDict.has('Title')) {\n          throw new _util.FormatError('Invalid outline item encountered.');\n        }\n        var data = {\n          url: null,\n          dest: null\n        };\n        Catalog.parseDestDictionary({\n          destDict: outlineDict,\n          resultObj: data,\n          docBaseUrl: this.pdfManager.docBaseUrl\n        });\n        var title = outlineDict.get('Title');\n        var flags = outlineDict.get('F') || 0;\n        var color = outlineDict.getArray('C');\n        var rgbColor = blackColor;\n        if (Array.isArray(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n          rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0);\n        }\n        var outlineItem = {\n          dest: data.dest,\n          url: data.url,\n          unsafeUrl: data.unsafeUrl,\n          newWindow: data.newWindow,\n          title: (0, _util.stringToPDFString)(title),\n          color: rgbColor,\n          count: outlineDict.get('Count'),\n          bold: !!(flags & 2),\n          italic: !!(flags & 1),\n          items: []\n        };\n        i.parent.items.push(outlineItem);\n        obj = outlineDict.getRaw('First');\n        if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {\n          queue.push({\n            obj: obj,\n            parent: outlineItem\n          });\n          processed.put(obj);\n        }\n        obj = outlineDict.getRaw('Next');\n        if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {\n          queue.push({\n            obj: obj,\n            parent: i.parent\n          });\n          processed.put(obj);\n        }\n      }\n      return root.items.length > 0 ? root.items : null;\n    }\n  }, {\n    key: '_readPermissions',\n    value: function _readPermissions() {\n      var encrypt = this.xref.trailer.get('Encrypt');\n      if (!(0, _primitives.isDict)(encrypt)) {\n        return null;\n      }\n      var flags = encrypt.get('P');\n      if (!(0, _util.isNum)(flags)) {\n        return null;\n      }\n      flags += Math.pow(2, 32);\n      var permissions = [];\n      for (var key in _util.PermissionFlag) {\n        var value = _util.PermissionFlag[key];\n        if (flags & value) {\n          permissions.push(value);\n        }\n      }\n      return permissions;\n    }\n  }, {\n    key: 'getDestination',\n    value: function getDestination(destinationId) {\n      var obj = this._readDests();\n      if (obj instanceof NameTree || obj instanceof _primitives.Dict) {\n        return fetchDestination(obj.get(destinationId) || null);\n      }\n      return null;\n    }\n  }, {\n    key: '_readDests',\n    value: function _readDests() {\n      var obj = this.catDict.get('Names');\n      if (obj && obj.has('Dests')) {\n        return new NameTree(obj.getRaw('Dests'), this.xref);\n      } else if (this.catDict.has('Dests')) {\n        return this.catDict.get('Dests');\n      }\n    }\n  }, {\n    key: '_readPageLabels',\n    value: function _readPageLabels() {\n      var obj = this.catDict.getRaw('PageLabels');\n      if (!obj) {\n        return null;\n      }\n      var pageLabels = new Array(this.numPages);\n      var style = null,\n          prefix = '';\n      var numberTree = new NumberTree(obj, this.xref);\n      var nums = numberTree.getAll();\n      var currentLabel = '',\n          currentIndex = 1;\n      for (var i = 0, ii = this.numPages; i < ii; i++) {\n        if (i in nums) {\n          var labelDict = nums[i];\n          if (!(0, _primitives.isDict)(labelDict)) {\n            throw new _util.FormatError('PageLabel is not a dictionary.');\n          }\n          if (labelDict.has('Type') && !(0, _primitives.isName)(labelDict.get('Type'), 'PageLabel')) {\n            throw new _util.FormatError('Invalid type in PageLabel dictionary.');\n          }\n          if (labelDict.has('S')) {\n            var s = labelDict.get('S');\n            if (!(0, _primitives.isName)(s)) {\n              throw new _util.FormatError('Invalid style in PageLabel dictionary.');\n            }\n            style = s.name;\n          } else {\n            style = null;\n          }\n          if (labelDict.has('P')) {\n            var p = labelDict.get('P');\n            if (!(0, _util.isString)(p)) {\n              throw new _util.FormatError('Invalid prefix in PageLabel dictionary.');\n            }\n            prefix = (0, _util.stringToPDFString)(p);\n          } else {\n            prefix = '';\n          }\n          if (labelDict.has('St')) {\n            var st = labelDict.get('St');\n            if (!(Number.isInteger(st) && st >= 1)) {\n              throw new _util.FormatError('Invalid start in PageLabel dictionary.');\n            }\n            currentIndex = st;\n          } else {\n            currentIndex = 1;\n          }\n        }\n        switch (style) {\n          case 'D':\n            currentLabel = currentIndex;\n            break;\n          case 'R':\n          case 'r':\n            currentLabel = (0, _util.toRomanNumerals)(currentIndex, style === 'r');\n            break;\n          case 'A':\n          case 'a':\n            var LIMIT = 26;\n            var A_UPPER_CASE = 0x41,\n                A_LOWER_CASE = 0x61;\n            var baseCharCode = style === 'a' ? A_LOWER_CASE : A_UPPER_CASE;\n            var letterIndex = currentIndex - 1;\n            var character = String.fromCharCode(baseCharCode + letterIndex % LIMIT);\n            var charBuf = [];\n            for (var j = 0, jj = letterIndex / LIMIT | 0; j <= jj; j++) {\n              charBuf.push(character);\n            }\n            currentLabel = charBuf.join('');\n            break;\n          default:\n            if (style) {\n              throw new _util.FormatError('Invalid style \"' + style + '\" in PageLabel dictionary.');\n            }\n            currentLabel = '';\n        }\n        pageLabels[i] = prefix + currentLabel;\n        currentIndex++;\n      }\n      return pageLabels;\n    }\n  }, {\n    key: 'cleanup',\n    value: function cleanup() {\n      var _this = this;\n\n      this.pageKidsCountCache.clear();\n      var promises = [];\n      this.fontCache.forEach(function (promise) {\n        promises.push(promise);\n      });\n      return Promise.all(promises).then(function (translatedFonts) {\n        for (var i = 0, ii = translatedFonts.length; i < ii; i++) {\n          var font = translatedFonts[i].dict;\n          delete font.translated;\n        }\n        _this.fontCache.clear();\n        _this.builtInCMapCache.clear();\n      });\n    }\n  }, {\n    key: 'getPageDict',\n    value: function getPageDict(pageIndex) {\n      var capability = (0, _util.createPromiseCapability)();\n      var nodesToVisit = [this.catDict.getRaw('Pages')];\n      var xref = this.xref,\n          pageKidsCountCache = this.pageKidsCountCache;\n      var count = void 0,\n          currentPageIndex = 0;\n      function next() {\n        var _loop = function _loop() {\n          var currentNode = nodesToVisit.pop();\n          if ((0, _primitives.isRef)(currentNode)) {\n            count = pageKidsCountCache.get(currentNode);\n            if (count > 0 && currentPageIndex + count < pageIndex) {\n              currentPageIndex += count;\n              return 'continue';\n            }\n            xref.fetchAsync(currentNode).then(function (obj) {\n              if ((0, _primitives.isDict)(obj, 'Page') || (0, _primitives.isDict)(obj) && !obj.has('Kids')) {\n                if (pageIndex === currentPageIndex) {\n                  if (currentNode && !pageKidsCountCache.has(currentNode)) {\n                    pageKidsCountCache.put(currentNode, 1);\n                  }\n                  capability.resolve([obj, currentNode]);\n                } else {\n                  currentPageIndex++;\n                  next();\n                }\n                return;\n              }\n              nodesToVisit.push(obj);\n              next();\n            }, capability.reject);\n            return {\n              v: void 0\n            };\n          }\n          if (!(0, _primitives.isDict)(currentNode)) {\n            capability.reject(new _util.FormatError('Page dictionary kid reference points to wrong type of object.'));\n            return {\n              v: void 0\n            };\n          }\n          count = currentNode.get('Count');\n          if (Number.isInteger(count) && count >= 0) {\n            var objId = currentNode.objId;\n            if (objId && !pageKidsCountCache.has(objId)) {\n              pageKidsCountCache.put(objId, count);\n            }\n            if (currentPageIndex + count <= pageIndex) {\n              currentPageIndex += count;\n              return 'continue';\n            }\n          }\n          var kids = currentNode.get('Kids');\n          if (!Array.isArray(kids)) {\n            if ((0, _primitives.isName)(currentNode.get('Type'), 'Page') || !currentNode.has('Type') && currentNode.has('Contents')) {\n              if (currentPageIndex === pageIndex) {\n                capability.resolve([currentNode, null]);\n                return {\n                  v: void 0\n                };\n              }\n              currentPageIndex++;\n              return 'continue';\n            }\n            capability.reject(new _util.FormatError('Page dictionary kids object is not an array.'));\n            return {\n              v: void 0\n            };\n          }\n          for (var last = kids.length - 1; last >= 0; last--) {\n            nodesToVisit.push(kids[last]);\n          }\n        };\n\n        while (nodesToVisit.length) {\n          var _ret = _loop();\n\n          switch (_ret) {\n            case 'continue':\n              continue;\n\n            default:\n              if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n          }\n        }\n        capability.reject(new Error('Page index ' + pageIndex + ' not found.'));\n      }\n      next();\n      return capability.promise;\n    }\n  }, {\n    key: 'getPageIndex',\n    value: function getPageIndex(pageRef) {\n      var xref = this.xref;\n      function pagesBeforeRef(kidRef) {\n        var total = 0,\n            parentRef = void 0;\n        return xref.fetchAsync(kidRef).then(function (node) {\n          if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, 'Page') && !((0, _primitives.isDict)(node) && !node.has('Type') && node.has('Contents'))) {\n            throw new _util.FormatError('The reference does not point to a /Page dictionary.');\n          }\n          if (!node) {\n            return null;\n          }\n          if (!(0, _primitives.isDict)(node)) {\n            throw new _util.FormatError('Node must be a dictionary.');\n          }\n          parentRef = node.getRaw('Parent');\n          return node.getAsync('Parent');\n        }).then(function (parent) {\n          if (!parent) {\n            return null;\n          }\n          if (!(0, _primitives.isDict)(parent)) {\n            throw new _util.FormatError('Parent must be a dictionary.');\n          }\n          return parent.getAsync('Kids');\n        }).then(function (kids) {\n          if (!kids) {\n            return null;\n          }\n          var kidPromises = [];\n          var found = false;\n          for (var i = 0, ii = kids.length; i < ii; i++) {\n            var kid = kids[i];\n            if (!(0, _primitives.isRef)(kid)) {\n              throw new _util.FormatError('Kid must be a reference.');\n            }\n            if ((0, _primitives.isRefsEqual)(kid, kidRef)) {\n              found = true;\n              break;\n            }\n            kidPromises.push(xref.fetchAsync(kid).then(function (kid) {\n              if (!(0, _primitives.isDict)(kid)) {\n                throw new _util.FormatError('Kid node must be a dictionary.');\n              }\n              if (kid.has('Count')) {\n                total += kid.get('Count');\n              } else {\n                total++;\n              }\n            }));\n          }\n          if (!found) {\n            throw new _util.FormatError('Kid reference not found in parent\\'s kids.');\n          }\n          return Promise.all(kidPromises).then(function () {\n            return [total, parentRef];\n          });\n        });\n      }\n      var total = 0;\n      function next(ref) {\n        return pagesBeforeRef(ref).then(function (args) {\n          if (!args) {\n            return total;\n          }\n\n          var _args = _slicedToArray(args, 2),\n              count = _args[0],\n              parentRef = _args[1];\n\n          total += count;\n          return next(parentRef);\n        });\n      }\n      return next(pageRef);\n    }\n  }, {\n    key: 'metadata',\n    get: function get() {\n      var streamRef = this.catDict.getRaw('Metadata');\n      if (!(0, _primitives.isRef)(streamRef)) {\n        return (0, _util.shadow)(this, 'metadata', null);\n      }\n      var suppressEncryption = !(this.xref.encrypt && this.xref.encrypt.encryptMetadata);\n      var stream = this.xref.fetch(streamRef, suppressEncryption);\n      var metadata = void 0;\n      if (stream && (0, _primitives.isDict)(stream.dict)) {\n        var type = stream.dict.get('Type');\n        var subtype = stream.dict.get('Subtype');\n        if ((0, _primitives.isName)(type, 'Metadata') && (0, _primitives.isName)(subtype, 'XML')) {\n          try {\n            metadata = (0, _util.stringToUTF8String)((0, _util.bytesToString)(stream.getBytes()));\n          } catch (e) {\n            if (e instanceof _util.MissingDataException) {\n              throw e;\n            }\n            (0, _util.info)('Skipping invalid metadata.');\n          }\n        }\n      }\n      return (0, _util.shadow)(this, 'metadata', metadata);\n    }\n  }, {\n    key: 'toplevelPagesDict',\n    get: function get() {\n      var pagesObj = this.catDict.get('Pages');\n      if (!(0, _primitives.isDict)(pagesObj)) {\n        throw new _util.FormatError('Invalid top-level pages dictionary.');\n      }\n      return (0, _util.shadow)(this, 'toplevelPagesDict', pagesObj);\n    }\n  }, {\n    key: 'documentOutline',\n    get: function get() {\n      var obj = null;\n      try {\n        obj = this._readDocumentOutline();\n      } catch (ex) {\n        if (ex instanceof _util.MissingDataException) {\n          throw ex;\n        }\n        (0, _util.warn)('Unable to read document outline.');\n      }\n      return (0, _util.shadow)(this, 'documentOutline', obj);\n    }\n  }, {\n    key: 'permissions',\n    get: function get() {\n      var permissions = null;\n      try {\n        permissions = this._readPermissions();\n      } catch (ex) {\n        if (ex instanceof _util.MissingDataException) {\n          throw ex;\n        }\n        (0, _util.warn)('Unable to read permissions.');\n      }\n      return (0, _util.shadow)(this, 'permissions', permissions);\n    }\n  }, {\n    key: 'numPages',\n    get: function get() {\n      var obj = this.toplevelPagesDict.get('Count');\n      if (!Number.isInteger(obj)) {\n        throw new _util.FormatError('Page count in top-level pages dictionary is not an integer.');\n      }\n      return (0, _util.shadow)(this, 'numPages', obj);\n    }\n  }, {\n    key: 'destinations',\n    get: function get() {\n      var obj = this._readDests(),\n          dests = Object.create(null);\n      if (obj instanceof NameTree) {\n        var names = obj.getAll();\n        for (var name in names) {\n          dests[name] = fetchDestination(names[name]);\n        }\n      } else if (obj instanceof _primitives.Dict) {\n        obj.forEach(function (key, value) {\n          if (value) {\n            dests[key] = fetchDestination(value);\n          }\n        });\n      }\n      return (0, _util.shadow)(this, 'destinations', dests);\n    }\n  }, {\n    key: 'pageLabels',\n    get: function get() {\n      var obj = null;\n      try {\n        obj = this._readPageLabels();\n      } catch (ex) {\n        if (ex instanceof _util.MissingDataException) {\n          throw ex;\n        }\n        (0, _util.warn)('Unable to read page labels.');\n      }\n      return (0, _util.shadow)(this, 'pageLabels', obj);\n    }\n  }, {\n    key: 'pageMode',\n    get: function get() {\n      var obj = this.catDict.get('PageMode');\n      var pageMode = 'UseNone';\n      if ((0, _primitives.isName)(obj)) {\n        switch (obj.name) {\n          case 'UseNone':\n          case 'UseOutlines':\n          case 'UseThumbs':\n          case 'FullScreen':\n          case 'UseOC':\n          case 'UseAttachments':\n            pageMode = obj.name;\n        }\n      }\n      return (0, _util.shadow)(this, 'pageMode', pageMode);\n    }\n  }, {\n    key: 'attachments',\n    get: function get() {\n      var obj = this.catDict.get('Names');\n      var attachments = null;\n      if (obj && obj.has('EmbeddedFiles')) {\n        var nameTree = new NameTree(obj.getRaw('EmbeddedFiles'), this.xref);\n        var names = nameTree.getAll();\n        for (var name in names) {\n          var fs = new FileSpec(names[name], this.xref);\n          if (!attachments) {\n            attachments = Object.create(null);\n          }\n          attachments[(0, _util.stringToPDFString)(name)] = fs.serializable;\n        }\n      }\n      return (0, _util.shadow)(this, 'attachments', attachments);\n    }\n  }, {\n    key: 'javaScript',\n    get: function get() {\n      var obj = this.catDict.get('Names');\n      var javaScript = null;\n      function appendIfJavaScriptDict(jsDict) {\n        var type = jsDict.get('S');\n        if (!(0, _primitives.isName)(type, 'JavaScript')) {\n          return;\n        }\n        var js = jsDict.get('JS');\n        if ((0, _primitives.isStream)(js)) {\n          js = (0, _util.bytesToString)(js.getBytes());\n        } else if (!(0, _util.isString)(js)) {\n          return;\n        }\n        if (!javaScript) {\n          javaScript = [];\n        }\n        javaScript.push((0, _util.stringToPDFString)(js));\n      }\n      if (obj && obj.has('JavaScript')) {\n        var nameTree = new NameTree(obj.getRaw('JavaScript'), this.xref);\n        var names = nameTree.getAll();\n        for (var name in names) {\n          var jsDict = names[name];\n          if ((0, _primitives.isDict)(jsDict)) {\n            appendIfJavaScriptDict(jsDict);\n          }\n        }\n      }\n      var openActionDict = this.catDict.get('OpenAction');\n      if ((0, _primitives.isDict)(openActionDict, 'Action')) {\n        var actionType = openActionDict.get('S');\n        if ((0, _primitives.isName)(actionType, 'Named')) {\n          var action = openActionDict.get('N');\n          if ((0, _primitives.isName)(action, 'Print')) {\n            if (!javaScript) {\n              javaScript = [];\n            }\n            javaScript.push('print({});');\n          }\n        } else {\n          appendIfJavaScriptDict(openActionDict);\n        }\n      }\n      return (0, _util.shadow)(this, 'javaScript', javaScript);\n    }\n  }], [{\n    key: 'parseDestDictionary',\n    value: function parseDestDictionary(params) {\n      function addDefaultProtocolToUrl(url) {\n        if (url.indexOf('www.') === 0) {\n          return 'http://' + url;\n        }\n        return url;\n      }\n      function tryConvertUrlEncoding(url) {\n        try {\n          return (0, _util.stringToUTF8String)(url);\n        } catch (e) {\n          return url;\n        }\n      }\n      var destDict = params.destDict;\n      if (!(0, _primitives.isDict)(destDict)) {\n        (0, _util.warn)('parseDestDictionary: `destDict` must be a dictionary.');\n        return;\n      }\n      var resultObj = params.resultObj;\n      if ((typeof resultObj === 'undefined' ? 'undefined' : _typeof(resultObj)) !== 'object') {\n        (0, _util.warn)('parseDestDictionary: `resultObj` must be an object.');\n        return;\n      }\n      var docBaseUrl = params.docBaseUrl || null;\n      var action = destDict.get('A'),\n          url = void 0,\n          dest = void 0;\n      if (!(0, _primitives.isDict)(action) && destDict.has('Dest')) {\n        action = destDict.get('Dest');\n      }\n      if ((0, _primitives.isDict)(action)) {\n        var actionType = action.get('S');\n        if (!(0, _primitives.isName)(actionType)) {\n          (0, _util.warn)('parseDestDictionary: Invalid type in Action dictionary.');\n          return;\n        }\n        var actionName = actionType.name;\n        switch (actionName) {\n          case 'URI':\n            url = action.get('URI');\n            if ((0, _primitives.isName)(url)) {\n              url = '/' + url.name;\n            } else if ((0, _util.isString)(url)) {\n              url = addDefaultProtocolToUrl(url);\n            }\n            break;\n          case 'GoTo':\n            dest = action.get('D');\n            break;\n          case 'Launch':\n          case 'GoToR':\n            var urlDict = action.get('F');\n            if ((0, _primitives.isDict)(urlDict)) {\n              url = urlDict.get('F') || null;\n            } else if ((0, _util.isString)(urlDict)) {\n              url = urlDict;\n            }\n            var remoteDest = action.get('D');\n            if (remoteDest) {\n              if ((0, _primitives.isName)(remoteDest)) {\n                remoteDest = remoteDest.name;\n              }\n              if ((0, _util.isString)(url)) {\n                var baseUrl = url.split('#')[0];\n                if ((0, _util.isString)(remoteDest)) {\n                  url = baseUrl + '#' + remoteDest;\n                } else if (Array.isArray(remoteDest)) {\n                  url = baseUrl + '#' + JSON.stringify(remoteDest);\n                }\n              }\n            }\n            var newWindow = action.get('NewWindow');\n            if ((0, _util.isBool)(newWindow)) {\n              resultObj.newWindow = newWindow;\n            }\n            break;\n          case 'Named':\n            var namedAction = action.get('N');\n            if ((0, _primitives.isName)(namedAction)) {\n              resultObj.action = namedAction.name;\n            }\n            break;\n          case 'JavaScript':\n            var jsAction = action.get('JS');\n            var js = void 0;\n            if ((0, _primitives.isStream)(jsAction)) {\n              js = (0, _util.bytesToString)(jsAction.getBytes());\n            } else if ((0, _util.isString)(jsAction)) {\n              js = jsAction;\n            }\n            if (js) {\n              var URL_OPEN_METHODS = ['app.launchURL', 'window.open'];\n              var regex = new RegExp('^\\\\s*(' + URL_OPEN_METHODS.join('|').split('.').join('\\\\.') + ')\\\\((?:\\'|\\\")([^\\'\\\"]*)(?:\\'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))', 'i');\n              var jsUrl = regex.exec((0, _util.stringToPDFString)(js));\n              if (jsUrl && jsUrl[2]) {\n                url = jsUrl[2];\n                if (jsUrl[3] === 'true' && jsUrl[1] === 'app.launchURL') {\n                  resultObj.newWindow = true;\n                }\n                break;\n              }\n            }\n          default:\n            (0, _util.warn)('parseDestDictionary: unsupported action type \"' + actionName + '\".');\n            break;\n        }\n      } else if (destDict.has('Dest')) {\n        dest = destDict.get('Dest');\n      }\n      if ((0, _util.isString)(url)) {\n        url = tryConvertUrlEncoding(url);\n        var absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl);\n        if (absoluteUrl) {\n          resultObj.url = absoluteUrl.href;\n        }\n        resultObj.unsafeUrl = url;\n      }\n      if (dest) {\n        if ((0, _primitives.isName)(dest)) {\n          dest = dest.name;\n        }\n        if ((0, _util.isString)(dest) || Array.isArray(dest)) {\n          resultObj.dest = dest;\n        }\n      }\n    }\n  }]);\n\n  return Catalog;\n}();\n\nvar XRef = function XRefClosure() {\n  function XRef(stream, pdfManager) {\n    this.stream = stream;\n    this.pdfManager = pdfManager;\n    this.entries = [];\n    this.xrefstms = Object.create(null);\n    this.cache = [];\n    this.stats = {\n      streamTypes: [],\n      fontTypes: []\n    };\n  }\n  XRef.prototype = {\n    setStartXRef: function XRef_setStartXRef(startXRef) {\n      this.startXRefQueue = [startXRef];\n    },\n    parse: function XRef_parse(recoveryMode) {\n      var trailerDict;\n      if (!recoveryMode) {\n        trailerDict = this.readXRef();\n      } else {\n        (0, _util.warn)('Indexing all PDF objects');\n        trailerDict = this.indexObjects();\n      }\n      trailerDict.assignXref(this);\n      this.trailer = trailerDict;\n      var encrypt = void 0;\n      try {\n        encrypt = trailerDict.get('Encrypt');\n      } catch (ex) {\n        if (ex instanceof _util.MissingDataException) {\n          throw ex;\n        }\n        (0, _util.warn)('XRef.parse - Invalid \"Encrypt\" reference: \"' + ex + '\".');\n      }\n      if ((0, _primitives.isDict)(encrypt)) {\n        var ids = trailerDict.get('ID');\n        var fileId = ids && ids.length ? ids[0] : '';\n        encrypt.suppressEncryption = true;\n        this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password);\n      }\n      var root = void 0;\n      try {\n        root = trailerDict.get('Root');\n      } catch (ex) {\n        if (ex instanceof _util.MissingDataException) {\n          throw ex;\n        }\n        (0, _util.warn)('XRef.parse - Invalid \"Root\" reference: \"' + ex + '\".');\n      }\n      if ((0, _primitives.isDict)(root) && root.has('Pages')) {\n        this.root = root;\n      } else {\n        if (!recoveryMode) {\n          throw new _util.XRefParseException();\n        }\n        throw new _util.FormatError('Invalid root reference');\n      }\n    },\n    processXRefTable: function XRef_processXRefTable(parser) {\n      if (!('tableState' in this)) {\n        this.tableState = {\n          entryNum: 0,\n          streamPos: parser.lexer.stream.pos,\n          parserBuf1: parser.buf1,\n          parserBuf2: parser.buf2\n        };\n      }\n      var obj = this.readXRefTable(parser);\n      if (!(0, _primitives.isCmd)(obj, 'trailer')) {\n        throw new _util.FormatError('Invalid XRef table: could not find trailer dictionary');\n      }\n      var dict = parser.getObj();\n      if (!(0, _primitives.isDict)(dict) && dict.dict) {\n        dict = dict.dict;\n      }\n      if (!(0, _primitives.isDict)(dict)) {\n        throw new _util.FormatError('Invalid XRef table: could not parse trailer dictionary');\n      }\n      delete this.tableState;\n      return dict;\n    },\n    readXRefTable: function XRef_readXRefTable(parser) {\n      var stream = parser.lexer.stream;\n      var tableState = this.tableState;\n      stream.pos = tableState.streamPos;\n      parser.buf1 = tableState.parserBuf1;\n      parser.buf2 = tableState.parserBuf2;\n      var obj;\n      while (true) {\n        if (!('firstEntryNum' in tableState) || !('entryCount' in tableState)) {\n          if ((0, _primitives.isCmd)(obj = parser.getObj(), 'trailer')) {\n            break;\n          }\n          tableState.firstEntryNum = obj;\n          tableState.entryCount = parser.getObj();\n        }\n        var first = tableState.firstEntryNum;\n        var count = tableState.entryCount;\n        if (!Number.isInteger(first) || !Number.isInteger(count)) {\n          throw new _util.FormatError('Invalid XRef table: wrong types in subsection header');\n        }\n        for (var i = tableState.entryNum; i < count; i++) {\n          tableState.streamPos = stream.pos;\n          tableState.entryNum = i;\n          tableState.parserBuf1 = parser.buf1;\n          tableState.parserBuf2 = parser.buf2;\n          var entry = {};\n          entry.offset = parser.getObj();\n          entry.gen = parser.getObj();\n          var type = parser.getObj();\n          if ((0, _primitives.isCmd)(type, 'f')) {\n            entry.free = true;\n          } else if ((0, _primitives.isCmd)(type, 'n')) {\n            entry.uncompressed = true;\n          }\n          if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {\n            throw new _util.FormatError('Invalid entry in XRef subsection: ' + first + ', ' + count);\n          }\n          if (i === 0 && entry.free && first === 1) {\n            first = 0;\n          }\n          if (!this.entries[i + first]) {\n            this.entries[i + first] = entry;\n          }\n        }\n        tableState.entryNum = 0;\n        tableState.streamPos = stream.pos;\n        tableState.parserBuf1 = parser.buf1;\n        tableState.parserBuf2 = parser.buf2;\n        delete tableState.firstEntryNum;\n        delete tableState.entryCount;\n      }\n      if (this.entries[0] && !this.entries[0].free) {\n        throw new _util.FormatError('Invalid XRef table: unexpected first object');\n      }\n      return obj;\n    },\n    processXRefStream: function XRef_processXRefStream(stream) {\n      if (!('streamState' in this)) {\n        var streamParameters = stream.dict;\n        var byteWidths = streamParameters.get('W');\n        var range = streamParameters.get('Index');\n        if (!range) {\n          range = [0, streamParameters.get('Size')];\n        }\n        this.streamState = {\n          entryRanges: range,\n          byteWidths: byteWidths,\n          entryNum: 0,\n          streamPos: stream.pos\n        };\n      }\n      this.readXRefStream(stream);\n      delete this.streamState;\n      return stream.dict;\n    },\n    readXRefStream: function XRef_readXRefStream(stream) {\n      var i, j;\n      var streamState = this.streamState;\n      stream.pos = streamState.streamPos;\n      var byteWidths = streamState.byteWidths;\n      var typeFieldWidth = byteWidths[0];\n      var offsetFieldWidth = byteWidths[1];\n      var generationFieldWidth = byteWidths[2];\n      var entryRanges = streamState.entryRanges;\n      while (entryRanges.length > 0) {\n        var first = entryRanges[0];\n        var n = entryRanges[1];\n        if (!Number.isInteger(first) || !Number.isInteger(n)) {\n          throw new _util.FormatError('Invalid XRef range fields: ' + first + ', ' + n);\n        }\n        if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {\n          throw new _util.FormatError('Invalid XRef entry fields length: ' + first + ', ' + n);\n        }\n        for (i = streamState.entryNum; i < n; ++i) {\n          streamState.entryNum = i;\n          streamState.streamPos = stream.pos;\n          var type = 0,\n              offset = 0,\n              generation = 0;\n          for (j = 0; j < typeFieldWidth; ++j) {\n            type = type << 8 | stream.getByte();\n          }\n          if (typeFieldWidth === 0) {\n            type = 1;\n          }\n          for (j = 0; j < offsetFieldWidth; ++j) {\n            offset = offset << 8 | stream.getByte();\n          }\n          for (j = 0; j < generationFieldWidth; ++j) {\n            generation = generation << 8 | stream.getByte();\n          }\n          var entry = {};\n          entry.offset = offset;\n          entry.gen = generation;\n          switch (type) {\n            case 0:\n              entry.free = true;\n              break;\n            case 1:\n              entry.uncompressed = true;\n              break;\n            case 2:\n              break;\n            default:\n              throw new _util.FormatError('Invalid XRef entry type: ' + type);\n          }\n          if (!this.entries[first + i]) {\n            this.entries[first + i] = entry;\n          }\n        }\n        streamState.entryNum = 0;\n        streamState.streamPos = stream.pos;\n        entryRanges.splice(0, 2);\n      }\n    },\n    indexObjects: function XRef_indexObjects() {\n      var TAB = 0x9,\n          LF = 0xA,\n          CR = 0xD,\n          SPACE = 0x20;\n      var PERCENT = 0x25,\n          LT = 0x3C;\n      function readToken(data, offset) {\n        var token = '',\n            ch = data[offset];\n        while (ch !== LF && ch !== CR && ch !== LT) {\n          if (++offset >= data.length) {\n            break;\n          }\n          token += String.fromCharCode(ch);\n          ch = data[offset];\n        }\n        return token;\n      }\n      function skipUntil(data, offset, what) {\n        var length = what.length,\n            dataLength = data.length;\n        var skipped = 0;\n        while (offset < dataLength) {\n          var i = 0;\n          while (i < length && data[offset + i] === what[i]) {\n            ++i;\n          }\n          if (i >= length) {\n            break;\n          }\n          offset++;\n          skipped++;\n        }\n        return skipped;\n      }\n      var objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n      var endobjRegExp = /\\bendobj[\\b\\s]$/;\n      var nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s])$/;\n      var CHECK_CONTENT_LENGTH = 25;\n      var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n      var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);\n      var objBytes = new Uint8Array([111, 98, 106]);\n      var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n      this.entries.length = 0;\n      var stream = this.stream;\n      stream.pos = 0;\n      var buffer = stream.getBytes();\n      var position = stream.start,\n          length = buffer.length;\n      var trailers = [],\n          xrefStms = [];\n      while (position < length) {\n        var ch = buffer[position];\n        if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n          ++position;\n          continue;\n        }\n        if (ch === PERCENT) {\n          do {\n            ++position;\n            if (position >= length) {\n              break;\n            }\n            ch = buffer[position];\n          } while (ch !== LF && ch !== CR);\n          continue;\n        }\n        var token = readToken(buffer, position);\n        var m;\n        if (token.indexOf('xref') === 0 && (token.length === 4 || /\\s/.test(token[4]))) {\n          position += skipUntil(buffer, position, trailerBytes);\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else if (m = objRegExp.exec(token)) {\n          if (typeof this.entries[m[1]] === 'undefined') {\n            this.entries[m[1]] = {\n              offset: position - stream.start,\n              gen: m[2] | 0,\n              uncompressed: true\n            };\n          }\n          var contentLength = void 0,\n              startPos = position + token.length;\n          while (startPos < buffer.length) {\n            var endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n            contentLength = endPos - position;\n            var checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n            var tokenStr = (0, _util.bytesToString)(buffer.subarray(checkPos, endPos));\n            if (endobjRegExp.test(tokenStr)) {\n              break;\n            } else {\n              var objToken = nestedObjRegExp.exec(tokenStr);\n              if (objToken && objToken[1]) {\n                (0, _util.warn)('indexObjects: Found new \"obj\" inside of another \"obj\", ' + 'caused by missing \"endobj\" -- trying to recover.');\n                contentLength -= objToken[1].length;\n                break;\n              }\n            }\n            startPos = endPos;\n          }\n          var content = buffer.subarray(position, position + contentLength);\n          var xrefTagOffset = skipUntil(content, 0, xrefBytes);\n          if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n            xrefStms.push(position - stream.start);\n            this.xrefstms[position - stream.start] = 1;\n          }\n          position += contentLength;\n        } else if (token.indexOf('trailer') === 0 && (token.length === 7 || /\\s/.test(token[7]))) {\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else {\n          position += token.length + 1;\n        }\n      }\n      var i, ii;\n      for (i = 0, ii = xrefStms.length; i < ii; ++i) {\n        this.startXRefQueue.push(xrefStms[i]);\n        this.readXRef(true);\n      }\n      var trailerDict = void 0;\n      for (i = 0, ii = trailers.length; i < ii; ++i) {\n        stream.pos = trailers[i];\n        var parser = new _parser.Parser(new _parser.Lexer(stream), true, this, true);\n        var obj = parser.getObj();\n        if (!(0, _primitives.isCmd)(obj, 'trailer')) {\n          continue;\n        }\n        var dict = parser.getObj();\n        if (!(0, _primitives.isDict)(dict)) {\n          continue;\n        }\n        var rootDict = void 0;\n        try {\n          rootDict = dict.get('Root');\n        } catch (ex) {\n          if (ex instanceof _util.MissingDataException) {\n            throw ex;\n          }\n          continue;\n        }\n        if (!(0, _primitives.isDict)(rootDict) || !rootDict.has('Pages')) {\n          continue;\n        }\n        if (dict.has('ID')) {\n          return dict;\n        }\n        trailerDict = dict;\n      }\n      if (trailerDict) {\n        return trailerDict;\n      }\n      throw new _util.InvalidPDFException('Invalid PDF structure');\n    },\n    readXRef: function XRef_readXRef(recoveryMode) {\n      var stream = this.stream;\n      var startXRefParsedCache = Object.create(null);\n      try {\n        while (this.startXRefQueue.length) {\n          var startXRef = this.startXRefQueue[0];\n          if (startXRefParsedCache[startXRef]) {\n            (0, _util.warn)('readXRef - skipping XRef table since it was already parsed.');\n            this.startXRefQueue.shift();\n            continue;\n          }\n          startXRefParsedCache[startXRef] = true;\n          stream.pos = startXRef + stream.start;\n          var parser = new _parser.Parser(new _parser.Lexer(stream), true, this);\n          var obj = parser.getObj();\n          var dict;\n          if ((0, _primitives.isCmd)(obj, 'xref')) {\n            dict = this.processXRefTable(parser);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n            obj = dict.get('XRefStm');\n            if (Number.isInteger(obj)) {\n              var pos = obj;\n              if (!(pos in this.xrefstms)) {\n                this.xrefstms[pos] = 1;\n                this.startXRefQueue.push(pos);\n              }\n            }\n          } else if (Number.isInteger(obj)) {\n            if (!Number.isInteger(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), 'obj') || !(0, _primitives.isStream)(obj = parser.getObj())) {\n              throw new _util.FormatError('Invalid XRef stream');\n            }\n            dict = this.processXRefStream(obj);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n            if (!dict) {\n              throw new _util.FormatError('Failed to read XRef stream');\n            }\n          } else {\n            throw new _util.FormatError('Invalid XRef stream header');\n          }\n          obj = dict.get('Prev');\n          if (Number.isInteger(obj)) {\n            this.startXRefQueue.push(obj);\n          } else if ((0, _primitives.isRef)(obj)) {\n            this.startXRefQueue.push(obj.num);\n          }\n          this.startXRefQueue.shift();\n        }\n        return this.topDict;\n      } catch (e) {\n        if (e instanceof _util.MissingDataException) {\n          throw e;\n        }\n        (0, _util.info)('(while reading XRef): ' + e);\n      }\n      if (recoveryMode) {\n        return;\n      }\n      throw new _util.XRefParseException();\n    },\n    getEntry: function XRef_getEntry(i) {\n      var xrefEntry = this.entries[i];\n      if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n        return xrefEntry;\n      }\n      return null;\n    },\n    fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {\n      if (!(0, _primitives.isRef)(obj)) {\n        return obj;\n      }\n      return this.fetch(obj, suppressEncryption);\n    },\n    fetch: function XRef_fetch(ref, suppressEncryption) {\n      if (!(0, _primitives.isRef)(ref)) {\n        throw new Error('ref object is not a reference');\n      }\n      var num = ref.num;\n      if (num in this.cache) {\n        var cacheEntry = this.cache[num];\n        if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) {\n          cacheEntry.objId = ref.toString();\n        }\n        return cacheEntry;\n      }\n      var xrefEntry = this.getEntry(num);\n      if (xrefEntry === null) {\n        return this.cache[num] = null;\n      }\n      if (xrefEntry.uncompressed) {\n        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n      } else {\n        xrefEntry = this.fetchCompressed(xrefEntry, suppressEncryption);\n      }\n      if ((0, _primitives.isDict)(xrefEntry)) {\n        xrefEntry.objId = ref.toString();\n      } else if ((0, _primitives.isStream)(xrefEntry)) {\n        xrefEntry.dict.objId = ref.toString();\n      }\n      return xrefEntry;\n    },\n    fetchUncompressed: function XRef_fetchUncompressed(ref, xrefEntry, suppressEncryption) {\n      var gen = ref.gen;\n      var num = ref.num;\n      if (xrefEntry.gen !== gen) {\n        throw new _util.FormatError('inconsistent generation in XRef');\n      }\n      var stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start);\n      var parser = new _parser.Parser(new _parser.Lexer(stream), true, this);\n      var obj1 = parser.getObj();\n      var obj2 = parser.getObj();\n      var obj3 = parser.getObj();\n      if (!Number.isInteger(obj1)) {\n        obj1 = parseInt(obj1, 10);\n      }\n      if (!Number.isInteger(obj2)) {\n        obj2 = parseInt(obj2, 10);\n      }\n      if (obj1 !== num || obj2 !== gen || !(0, _primitives.isCmd)(obj3)) {\n        throw new _util.FormatError('bad XRef entry');\n      }\n      if (obj3.cmd !== 'obj') {\n        if (obj3.cmd.indexOf('obj') === 0) {\n          num = parseInt(obj3.cmd.substring(3), 10);\n          if (!Number.isNaN(num)) {\n            return num;\n          }\n        }\n        throw new _util.FormatError('bad XRef entry');\n      }\n      if (this.encrypt && !suppressEncryption) {\n        xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n      } else {\n        xrefEntry = parser.getObj();\n      }\n      if (!(0, _primitives.isStream)(xrefEntry)) {\n        this.cache[num] = xrefEntry;\n      }\n      return xrefEntry;\n    },\n    fetchCompressed: function XRef_fetchCompressed(xrefEntry, suppressEncryption) {\n      var tableOffset = xrefEntry.offset;\n      var stream = this.fetch(new _primitives.Ref(tableOffset, 0));\n      if (!(0, _primitives.isStream)(stream)) {\n        throw new _util.FormatError('bad ObjStm stream');\n      }\n      var first = stream.dict.get('First');\n      var n = stream.dict.get('N');\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\n        throw new _util.FormatError('invalid first and n parameters for ObjStm stream');\n      }\n      var parser = new _parser.Parser(new _parser.Lexer(stream), false, this);\n      parser.allowStreams = true;\n      var i,\n          entries = [],\n          num,\n          nums = [];\n      for (i = 0; i < n; ++i) {\n        num = parser.getObj();\n        if (!Number.isInteger(num)) {\n          throw new _util.FormatError('invalid object number in the ObjStm stream: ' + num);\n        }\n        nums.push(num);\n        var offset = parser.getObj();\n        if (!Number.isInteger(offset)) {\n          throw new _util.FormatError('invalid object offset in the ObjStm stream: ' + offset);\n        }\n      }\n      for (i = 0; i < n; ++i) {\n        entries.push(parser.getObj());\n        if ((0, _primitives.isCmd)(parser.buf1, 'endobj')) {\n          parser.shift();\n        }\n        num = nums[i];\n        var entry = this.entries[num];\n        if (entry && entry.offset === tableOffset && entry.gen === i) {\n          this.cache[num] = entries[i];\n        }\n      }\n      xrefEntry = entries[xrefEntry.gen];\n      if (xrefEntry === undefined) {\n        throw new _util.FormatError('bad XRef entry for compressed object');\n      }\n      return xrefEntry;\n    },\n    fetchIfRefAsync: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(obj, suppressEncryption) {\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if ((0, _primitives.isRef)(obj)) {\n                  _context.next = 2;\n                  break;\n                }\n\n                return _context.abrupt('return', obj);\n\n              case 2:\n                return _context.abrupt('return', this.fetchAsync(obj, suppressEncryption));\n\n              case 3:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function fetchIfRefAsync(_x, _x2) {\n        return _ref.apply(this, arguments);\n      }\n\n      return fetchIfRefAsync;\n    }(),\n    fetchAsync: function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(ref, suppressEncryption) {\n        return _regenerator2.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.prev = 0;\n                return _context2.abrupt('return', this.fetch(ref, suppressEncryption));\n\n              case 4:\n                _context2.prev = 4;\n                _context2.t0 = _context2['catch'](0);\n\n                if (_context2.t0 instanceof _util.MissingDataException) {\n                  _context2.next = 8;\n                  break;\n                }\n\n                throw _context2.t0;\n\n              case 8:\n                _context2.next = 10;\n                return this.pdfManager.requestRange(_context2.t0.begin, _context2.t0.end);\n\n              case 10:\n                return _context2.abrupt('return', this.fetchAsync(ref, suppressEncryption));\n\n              case 11:\n              case 'end':\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this, [[0, 4]]);\n      }));\n\n      function fetchAsync(_x3, _x4) {\n        return _ref2.apply(this, arguments);\n      }\n\n      return fetchAsync;\n    }(),\n\n    getCatalogObj: function XRef_getCatalogObj() {\n      return this.root;\n    }\n  };\n  return XRef;\n}();\n\nvar NameOrNumberTree = function () {\n  function NameOrNumberTree(root, xref, type) {\n    _classCallCheck(this, NameOrNumberTree);\n\n    if (this.constructor === NameOrNumberTree) {\n      (0, _util.unreachable)('Cannot initialize NameOrNumberTree.');\n    }\n    this.root = root;\n    this.xref = xref;\n    this._type = type;\n  }\n\n  _createClass(NameOrNumberTree, [{\n    key: 'getAll',\n    value: function getAll() {\n      var dict = Object.create(null);\n      if (!this.root) {\n        return dict;\n      }\n      var xref = this.xref;\n      var processed = new _primitives.RefSet();\n      processed.put(this.root);\n      var queue = [this.root];\n      while (queue.length > 0) {\n        var obj = xref.fetchIfRef(queue.shift());\n        if (!(0, _primitives.isDict)(obj)) {\n          continue;\n        }\n        if (obj.has('Kids')) {\n          var _kids = obj.get('Kids');\n          for (var i = 0, ii = _kids.length; i < ii; i++) {\n            var kid = _kids[i];\n            if (processed.has(kid)) {\n              throw new _util.FormatError('Duplicate entry in \"' + this._type + '\" tree.');\n            }\n            queue.push(kid);\n            processed.put(kid);\n          }\n          continue;\n        }\n        var entries = obj.get(this._type);\n        if (Array.isArray(entries)) {\n          for (var _i2 = 0, _ii = entries.length; _i2 < _ii; _i2 += 2) {\n            dict[xref.fetchIfRef(entries[_i2])] = xref.fetchIfRef(entries[_i2 + 1]);\n          }\n        }\n      }\n      return dict;\n    }\n  }, {\n    key: 'get',\n    value: function get(key) {\n      if (!this.root) {\n        return null;\n      }\n      var xref = this.xref;\n      var kidsOrEntries = xref.fetchIfRef(this.root);\n      var loopCount = 0;\n      var MAX_LEVELS = 10;\n      while (kidsOrEntries.has('Kids')) {\n        if (++loopCount > MAX_LEVELS) {\n          (0, _util.warn)('Search depth limit reached for \"' + this._type + '\" tree.');\n          return null;\n        }\n        var _kids2 = kidsOrEntries.get('Kids');\n        if (!Array.isArray(_kids2)) {\n          return null;\n        }\n        var l = 0,\n            r = _kids2.length - 1;\n        while (l <= r) {\n          var m = l + r >> 1;\n          var kid = xref.fetchIfRef(_kids2[m]);\n          var limits = kid.get('Limits');\n          if (key < xref.fetchIfRef(limits[0])) {\n            r = m - 1;\n          } else if (key > xref.fetchIfRef(limits[1])) {\n            l = m + 1;\n          } else {\n            kidsOrEntries = xref.fetchIfRef(_kids2[m]);\n            break;\n          }\n        }\n        if (l > r) {\n          return null;\n        }\n      }\n      var entries = kidsOrEntries.get(this._type);\n      if (Array.isArray(entries)) {\n        var _l = 0,\n            _r = entries.length - 2;\n        while (_l <= _r) {\n          var _m = _l + _r & ~1;\n          var currentKey = xref.fetchIfRef(entries[_m]);\n          if (key < currentKey) {\n            _r = _m - 2;\n          } else if (key > currentKey) {\n            _l = _m + 2;\n          } else {\n            return xref.fetchIfRef(entries[_m + 1]);\n          }\n        }\n      }\n      return null;\n    }\n  }]);\n\n  return NameOrNumberTree;\n}();\n\nvar NameTree = function (_NameOrNumberTree) {\n  _inherits(NameTree, _NameOrNumberTree);\n\n  function NameTree(root, xref) {\n    _classCallCheck(this, NameTree);\n\n    return _possibleConstructorReturn(this, (NameTree.__proto__ || Object.getPrototypeOf(NameTree)).call(this, root, xref, 'Names'));\n  }\n\n  return NameTree;\n}(NameOrNumberTree);\n\nvar NumberTree = function (_NameOrNumberTree2) {\n  _inherits(NumberTree, _NameOrNumberTree2);\n\n  function NumberTree(root, xref) {\n    _classCallCheck(this, NumberTree);\n\n    return _possibleConstructorReturn(this, (NumberTree.__proto__ || Object.getPrototypeOf(NumberTree)).call(this, root, xref, 'Nums'));\n  }\n\n  return NumberTree;\n}(NameOrNumberTree);\n\nvar FileSpec = function FileSpecClosure() {\n  function FileSpec(root, xref) {\n    if (!root || !(0, _primitives.isDict)(root)) {\n      return;\n    }\n    this.xref = xref;\n    this.root = root;\n    if (root.has('FS')) {\n      this.fs = root.get('FS');\n    }\n    this.description = root.has('Desc') ? (0, _util.stringToPDFString)(root.get('Desc')) : '';\n    if (root.has('RF')) {\n      (0, _util.warn)('Related file specifications are not supported');\n    }\n    this.contentAvailable = true;\n    if (!root.has('EF')) {\n      this.contentAvailable = false;\n      (0, _util.warn)('Non-embedded file specifications are not supported');\n    }\n  }\n  function pickPlatformItem(dict) {\n    if (dict.has('UF')) {\n      return dict.get('UF');\n    } else if (dict.has('F')) {\n      return dict.get('F');\n    } else if (dict.has('Unix')) {\n      return dict.get('Unix');\n    } else if (dict.has('Mac')) {\n      return dict.get('Mac');\n    } else if (dict.has('DOS')) {\n      return dict.get('DOS');\n    }\n    return null;\n  }\n  FileSpec.prototype = {\n    get filename() {\n      if (!this._filename && this.root) {\n        var filename = pickPlatformItem(this.root) || 'unnamed';\n        this._filename = (0, _util.stringToPDFString)(filename).replace(/\\\\\\\\/g, '\\\\').replace(/\\\\\\//g, '/').replace(/\\\\/g, '/');\n      }\n      return this._filename;\n    },\n    get content() {\n      if (!this.contentAvailable) {\n        return null;\n      }\n      if (!this.contentRef && this.root) {\n        this.contentRef = pickPlatformItem(this.root.get('EF'));\n      }\n      var content = null;\n      if (this.contentRef) {\n        var xref = this.xref;\n        var fileObj = xref.fetchIfRef(this.contentRef);\n        if (fileObj && (0, _primitives.isStream)(fileObj)) {\n          content = fileObj.getBytes();\n        } else {\n          (0, _util.warn)('Embedded file specification points to non-existing/invalid ' + 'content');\n        }\n      } else {\n        (0, _util.warn)('Embedded file specification does not have a content');\n      }\n      return content;\n    },\n    get serializable() {\n      return {\n        filename: this.filename,\n        content: this.content\n      };\n    }\n  };\n  return FileSpec;\n}();\nvar ObjectLoader = function () {\n  function mayHaveChildren(value) {\n    return (0, _primitives.isRef)(value) || (0, _primitives.isDict)(value) || Array.isArray(value) || (0, _primitives.isStream)(value);\n  }\n  function addChildren(node, nodesToVisit) {\n    if ((0, _primitives.isDict)(node) || (0, _primitives.isStream)(node)) {\n      var dict = (0, _primitives.isDict)(node) ? node : node.dict;\n      var dictKeys = dict.getKeys();\n      for (var i = 0, ii = dictKeys.length; i < ii; i++) {\n        var rawValue = dict.getRaw(dictKeys[i]);\n        if (mayHaveChildren(rawValue)) {\n          nodesToVisit.push(rawValue);\n        }\n      }\n    } else if (Array.isArray(node)) {\n      for (var _i3 = 0, _ii2 = node.length; _i3 < _ii2; _i3++) {\n        var value = node[_i3];\n        if (mayHaveChildren(value)) {\n          nodesToVisit.push(value);\n        }\n      }\n    }\n  }\n  function ObjectLoader(dict, keys, xref) {\n    this.dict = dict;\n    this.keys = keys;\n    this.xref = xref;\n    this.refSet = null;\n    this.capability = null;\n  }\n  ObjectLoader.prototype = {\n    load: function load() {\n      this.capability = (0, _util.createPromiseCapability)();\n      if (!(this.xref.stream instanceof _chunked_stream.ChunkedStream) || this.xref.stream.getMissingChunks().length === 0) {\n        this.capability.resolve();\n        return this.capability.promise;\n      }\n      var keys = this.keys,\n          dict = this.dict;\n\n      this.refSet = new _primitives.RefSet();\n      var nodesToVisit = [];\n      for (var i = 0, ii = keys.length; i < ii; i++) {\n        var rawValue = dict.getRaw(keys[i]);\n        if (rawValue !== undefined) {\n          nodesToVisit.push(rawValue);\n        }\n      }\n      this._walk(nodesToVisit);\n      return this.capability.promise;\n    },\n    _walk: function _walk(nodesToVisit) {\n      var _this4 = this;\n\n      var nodesToRevisit = [];\n      var pendingRequests = [];\n      while (nodesToVisit.length) {\n        var _currentNode = nodesToVisit.pop();\n        if ((0, _primitives.isRef)(_currentNode)) {\n          if (this.refSet.has(_currentNode)) {\n            continue;\n          }\n          try {\n            this.refSet.put(_currentNode);\n            _currentNode = this.xref.fetch(_currentNode);\n          } catch (ex) {\n            if (!(ex instanceof _util.MissingDataException)) {\n              throw ex;\n            }\n            nodesToRevisit.push(_currentNode);\n            pendingRequests.push({\n              begin: ex.begin,\n              end: ex.end\n            });\n          }\n        }\n        if (_currentNode && _currentNode.getBaseStreams) {\n          var baseStreams = _currentNode.getBaseStreams();\n          var foundMissingData = false;\n          for (var i = 0, ii = baseStreams.length; i < ii; i++) {\n            var stream = baseStreams[i];\n            if (stream.getMissingChunks && stream.getMissingChunks().length) {\n              foundMissingData = true;\n              pendingRequests.push({\n                begin: stream.start,\n                end: stream.end\n              });\n            }\n          }\n          if (foundMissingData) {\n            nodesToRevisit.push(_currentNode);\n          }\n        }\n        addChildren(_currentNode, nodesToVisit);\n      }\n      if (pendingRequests.length) {\n        this.xref.stream.manager.requestRanges(pendingRequests).then(function () {\n          for (var _i4 = 0, _ii3 = nodesToRevisit.length; _i4 < _ii3; _i4++) {\n            var node = nodesToRevisit[_i4];\n            if ((0, _primitives.isRef)(node)) {\n              _this4.refSet.remove(node);\n            }\n          }\n          _this4._walk(nodesToRevisit);\n        }, this.capability.reject);\n        return;\n      }\n      this.refSet = null;\n      this.capability.resolve();\n    }\n  };\n  return ObjectLoader;\n}();\nexports.Catalog = Catalog;\nexports.ObjectLoader = ObjectLoader;\nexports.XRef = XRef;\nexports.FileSpec = FileSpec;\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar EOF = {};\nvar Name = function NameClosure() {\n  function Name(name) {\n    this.name = name;\n  }\n  Name.prototype = {};\n  var nameCache = Object.create(null);\n  Name.get = function Name_get(name) {\n    var nameValue = nameCache[name];\n    return nameValue ? nameValue : nameCache[name] = new Name(name);\n  };\n  return Name;\n}();\nvar Cmd = function CmdClosure() {\n  function Cmd(cmd) {\n    this.cmd = cmd;\n  }\n  Cmd.prototype = {};\n  var cmdCache = Object.create(null);\n  Cmd.get = function Cmd_get(cmd) {\n    var cmdValue = cmdCache[cmd];\n    return cmdValue ? cmdValue : cmdCache[cmd] = new Cmd(cmd);\n  };\n  return Cmd;\n}();\nvar Dict = function DictClosure() {\n  var nonSerializable = function nonSerializableClosure() {\n    return nonSerializable;\n  };\n  function Dict(xref) {\n    this._map = Object.create(null);\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable;\n  }\n  Dict.prototype = {\n    assignXref: function Dict_assignXref(newXref) {\n      this.xref = newXref;\n    },\n    get: function Dict_get(key1, key2, key3) {\n      var value;\n      var xref = this.xref,\n          suppressEncryption = this.suppressEncryption;\n      if (typeof (value = this._map[key1]) !== 'undefined' || key1 in this._map || typeof key2 === 'undefined') {\n        return xref ? xref.fetchIfRef(value, suppressEncryption) : value;\n      }\n      if (typeof (value = this._map[key2]) !== 'undefined' || key2 in this._map || typeof key3 === 'undefined') {\n        return xref ? xref.fetchIfRef(value, suppressEncryption) : value;\n      }\n      value = this._map[key3] || null;\n      return xref ? xref.fetchIfRef(value, suppressEncryption) : value;\n    },\n    getAsync: function Dict_getAsync(key1, key2, key3) {\n      var value;\n      var xref = this.xref,\n          suppressEncryption = this.suppressEncryption;\n      if (typeof (value = this._map[key1]) !== 'undefined' || key1 in this._map || typeof key2 === 'undefined') {\n        if (xref) {\n          return xref.fetchIfRefAsync(value, suppressEncryption);\n        }\n        return Promise.resolve(value);\n      }\n      if (typeof (value = this._map[key2]) !== 'undefined' || key2 in this._map || typeof key3 === 'undefined') {\n        if (xref) {\n          return xref.fetchIfRefAsync(value, suppressEncryption);\n        }\n        return Promise.resolve(value);\n      }\n      value = this._map[key3] || null;\n      if (xref) {\n        return xref.fetchIfRefAsync(value, suppressEncryption);\n      }\n      return Promise.resolve(value);\n    },\n    getArray: function Dict_getArray(key1, key2, key3) {\n      var value = this.get(key1, key2, key3);\n      var xref = this.xref,\n          suppressEncryption = this.suppressEncryption;\n      if (!Array.isArray(value) || !xref) {\n        return value;\n      }\n      value = value.slice();\n      for (var i = 0, ii = value.length; i < ii; i++) {\n        if (!isRef(value[i])) {\n          continue;\n        }\n        value[i] = xref.fetch(value[i], suppressEncryption);\n      }\n      return value;\n    },\n    getRaw: function Dict_getRaw(key) {\n      return this._map[key];\n    },\n    getKeys: function Dict_getKeys() {\n      return Object.keys(this._map);\n    },\n    set: function Dict_set(key, value) {\n      this._map[key] = value;\n    },\n    has: function Dict_has(key) {\n      return key in this._map;\n    },\n    forEach: function Dict_forEach(callback) {\n      for (var key in this._map) {\n        callback(key, this.get(key));\n      }\n    }\n  };\n  Dict.empty = new Dict(null);\n  Dict.merge = function (xref, dictArray) {\n    var mergedDict = new Dict(xref);\n    for (var i = 0, ii = dictArray.length; i < ii; i++) {\n      var dict = dictArray[i];\n      if (!isDict(dict)) {\n        continue;\n      }\n      for (var keyName in dict._map) {\n        if (mergedDict._map[keyName] !== undefined) {\n          continue;\n        }\n        mergedDict._map[keyName] = dict._map[keyName];\n      }\n    }\n    return mergedDict;\n  };\n  return Dict;\n}();\nvar Ref = function RefClosure() {\n  function Ref(num, gen) {\n    this.num = num;\n    this.gen = gen;\n  }\n  Ref.prototype = {\n    toString: function Ref_toString() {\n      var str = this.num + 'R';\n      if (this.gen !== 0) {\n        str += this.gen;\n      }\n      return str;\n    }\n  };\n  return Ref;\n}();\nvar RefSet = function RefSetClosure() {\n  function RefSet() {\n    this.dict = Object.create(null);\n  }\n  RefSet.prototype = {\n    has: function RefSet_has(ref) {\n      return ref.toString() in this.dict;\n    },\n    put: function RefSet_put(ref) {\n      this.dict[ref.toString()] = true;\n    },\n    remove: function RefSet_remove(ref) {\n      delete this.dict[ref.toString()];\n    }\n  };\n  return RefSet;\n}();\nvar RefSetCache = function RefSetCacheClosure() {\n  function RefSetCache() {\n    this.dict = Object.create(null);\n  }\n  RefSetCache.prototype = {\n    get: function RefSetCache_get(ref) {\n      return this.dict[ref.toString()];\n    },\n    has: function RefSetCache_has(ref) {\n      return ref.toString() in this.dict;\n    },\n    put: function RefSetCache_put(ref, obj) {\n      this.dict[ref.toString()] = obj;\n    },\n    putAlias: function RefSetCache_putAlias(ref, aliasRef) {\n      this.dict[ref.toString()] = this.get(aliasRef);\n    },\n    forEach: function RefSetCache_forEach(fn, thisArg) {\n      for (var i in this.dict) {\n        fn.call(thisArg, this.dict[i]);\n      }\n    },\n    clear: function RefSetCache_clear() {\n      this.dict = Object.create(null);\n    }\n  };\n  return RefSetCache;\n}();\nfunction isEOF(v) {\n  return v === EOF;\n}\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\nfunction isDict(v, type) {\n  return v instanceof Dict && (type === undefined || isName(v.get('Type'), type));\n}\nfunction isRef(v) {\n  return v instanceof Ref;\n}\nfunction isRefsEqual(v1, v2) {\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\nfunction isStream(v) {\n  return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.getBytes !== undefined;\n}\nexports.EOF = EOF;\nexports.Cmd = Cmd;\nexports.Dict = Dict;\nexports.Name = Name;\nexports.Ref = Ref;\nexports.RefSet = RefSet;\nexports.RefSetCache = RefSetCache;\nexports.isEOF = isEOF;\nexports.isCmd = isCmd;\nexports.isDict = isDict;\nexports.isName = isName;\nexports.isRef = isRef;\nexports.isRefsEqual = isRefsEqual;\nexports.isStream = isStream;\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Parser = exports.Linearization = exports.Lexer = undefined;\n\nvar _stream = __w_pdfjs_require__(140);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _ccitt_stream = __w_pdfjs_require__(141);\n\nvar _jbig2_stream = __w_pdfjs_require__(143);\n\nvar _jpeg_stream = __w_pdfjs_require__(146);\n\nvar _jpx_stream = __w_pdfjs_require__(148);\n\nvar MAX_LENGTH_TO_CACHE = 1000;\nvar MAX_ADLER32_LENGTH = 5552;\nfunction computeAdler32(bytes) {\n  var bytesLength = bytes.length;\n  var a = 1,\n      b = 0;\n  for (var i = 0; i < bytesLength; ++i) {\n    a += bytes[i] & 0xFF;\n    b += a;\n  }\n  return b % 65521 << 16 | a % 65521;\n}\nvar Parser = function ParserClosure() {\n  function Parser(lexer, allowStreams, xref, recoveryMode) {\n    this.lexer = lexer;\n    this.allowStreams = allowStreams;\n    this.xref = xref;\n    this.recoveryMode = recoveryMode || false;\n    this.imageCache = Object.create(null);\n    this.refill();\n  }\n  Parser.prototype = {\n    refill: function Parser_refill() {\n      this.buf1 = this.lexer.getObj();\n      this.buf2 = this.lexer.getObj();\n    },\n    shift: function Parser_shift() {\n      if ((0, _primitives.isCmd)(this.buf2, 'ID')) {\n        this.buf1 = this.buf2;\n        this.buf2 = null;\n      } else {\n        this.buf1 = this.buf2;\n        this.buf2 = this.lexer.getObj();\n      }\n    },\n    tryShift: function Parser_tryShift() {\n      try {\n        this.shift();\n        return true;\n      } catch (e) {\n        if (e instanceof _util.MissingDataException) {\n          throw e;\n        }\n        return false;\n      }\n    },\n    getObj: function Parser_getObj(cipherTransform) {\n      var buf1 = this.buf1;\n      this.shift();\n      if (buf1 instanceof _primitives.Cmd) {\n        switch (buf1.cmd) {\n          case 'BI':\n            return this.makeInlineImage(cipherTransform);\n          case '[':\n            var array = [];\n            while (!(0, _primitives.isCmd)(this.buf1, ']') && !(0, _primitives.isEOF)(this.buf1)) {\n              array.push(this.getObj(cipherTransform));\n            }\n            if ((0, _primitives.isEOF)(this.buf1)) {\n              if (!this.recoveryMode) {\n                throw new _util.FormatError('End of file inside array');\n              }\n              return array;\n            }\n            this.shift();\n            return array;\n          case '<<':\n            var dict = new _primitives.Dict(this.xref);\n            while (!(0, _primitives.isCmd)(this.buf1, '>>') && !(0, _primitives.isEOF)(this.buf1)) {\n              if (!(0, _primitives.isName)(this.buf1)) {\n                (0, _util.info)('Malformed dictionary: key must be a name object');\n                this.shift();\n                continue;\n              }\n              var key = this.buf1.name;\n              this.shift();\n              if ((0, _primitives.isEOF)(this.buf1)) {\n                break;\n              }\n              dict.set(key, this.getObj(cipherTransform));\n            }\n            if ((0, _primitives.isEOF)(this.buf1)) {\n              if (!this.recoveryMode) {\n                throw new _util.FormatError('End of file inside dictionary');\n              }\n              return dict;\n            }\n            if ((0, _primitives.isCmd)(this.buf2, 'stream')) {\n              return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;\n            }\n            this.shift();\n            return dict;\n          default:\n            return buf1;\n        }\n      }\n      if (Number.isInteger(buf1)) {\n        var num = buf1;\n        if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, 'R')) {\n          var ref = new _primitives.Ref(num, this.buf1);\n          this.shift();\n          this.shift();\n          return ref;\n        }\n        return num;\n      }\n      if ((0, _util.isString)(buf1)) {\n        var str = buf1;\n        if (cipherTransform) {\n          str = cipherTransform.decryptString(str);\n        }\n        return str;\n      }\n      return buf1;\n    },\n    findDefaultInlineStreamEnd: function findDefaultInlineStreamEnd(stream) {\n      var E = 0x45,\n          I = 0x49,\n          SPACE = 0x20,\n          LF = 0xA,\n          CR = 0xD;\n      var n = 10,\n          NUL = 0x0;\n      var startPos = stream.pos,\n          state = 0,\n          ch = void 0,\n          maybeEIPos = void 0;\n      while ((ch = stream.getByte()) !== -1) {\n        if (state === 0) {\n          state = ch === E ? 1 : 0;\n        } else if (state === 1) {\n          state = ch === I ? 2 : 0;\n        } else {\n          (0, _util.assert)(state === 2);\n          if (ch === SPACE || ch === LF || ch === CR) {\n            maybeEIPos = stream.pos;\n            var followingBytes = stream.peekBytes(n);\n            for (var i = 0, ii = followingBytes.length; i < ii; i++) {\n              ch = followingBytes[i];\n              if (ch === NUL && followingBytes[i + 1] !== NUL) {\n                continue;\n              }\n              if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7F)) {\n                state = 0;\n                break;\n              }\n            }\n            if (state === 2) {\n              break;\n            }\n          } else {\n            state = 0;\n          }\n        }\n      }\n      if (ch === -1) {\n        (0, _util.warn)('findDefaultInlineStreamEnd: ' + 'Reached the end of the stream without finding a valid EI marker');\n        if (maybeEIPos) {\n          (0, _util.warn)('... trying to recover by using the last \"EI\" occurrence.');\n          stream.skip(-(stream.pos - maybeEIPos));\n        }\n      }\n      return stream.pos - 4 - startPos;\n    },\n\n    findDCTDecodeInlineStreamEnd: function Parser_findDCTDecodeInlineStreamEnd(stream) {\n      var startPos = stream.pos,\n          foundEOI = false,\n          b,\n          markerLength,\n          length;\n      while ((b = stream.getByte()) !== -1) {\n        if (b !== 0xFF) {\n          continue;\n        }\n        switch (stream.getByte()) {\n          case 0x00:\n            break;\n          case 0xFF:\n            stream.skip(-1);\n            break;\n          case 0xD9:\n            foundEOI = true;\n            break;\n          case 0xC0:\n          case 0xC1:\n          case 0xC2:\n          case 0xC3:\n          case 0xC5:\n          case 0xC6:\n          case 0xC7:\n          case 0xC9:\n          case 0xCA:\n          case 0xCB:\n          case 0xCD:\n          case 0xCE:\n          case 0xCF:\n          case 0xC4:\n          case 0xCC:\n          case 0xDA:\n          case 0xDB:\n          case 0xDC:\n          case 0xDD:\n          case 0xDE:\n          case 0xDF:\n          case 0xE0:\n          case 0xE1:\n          case 0xE2:\n          case 0xE3:\n          case 0xE4:\n          case 0xE5:\n          case 0xE6:\n          case 0xE7:\n          case 0xE8:\n          case 0xE9:\n          case 0xEA:\n          case 0xEB:\n          case 0xEC:\n          case 0xED:\n          case 0xEE:\n          case 0xEF:\n          case 0xFE:\n            markerLength = stream.getUint16();\n            if (markerLength > 2) {\n              stream.skip(markerLength - 2);\n            } else {\n              stream.skip(-2);\n            }\n            break;\n        }\n        if (foundEOI) {\n          break;\n        }\n      }\n      length = stream.pos - startPos;\n      if (b === -1) {\n        (0, _util.warn)('Inline DCTDecode image stream: ' + 'EOI marker not found, searching for /EI/ instead.');\n        stream.skip(-length);\n        return this.findDefaultInlineStreamEnd(stream);\n      }\n      this.inlineStreamSkipEI(stream);\n      return length;\n    },\n    findASCII85DecodeInlineStreamEnd: function Parser_findASCII85DecodeInlineStreamEnd(stream) {\n      var TILDE = 0x7E,\n          GT = 0x3E;\n      var startPos = stream.pos,\n          ch,\n          length;\n      while ((ch = stream.getByte()) !== -1) {\n        if (ch === TILDE && stream.peekByte() === GT) {\n          stream.skip();\n          break;\n        }\n      }\n      length = stream.pos - startPos;\n      if (ch === -1) {\n        (0, _util.warn)('Inline ASCII85Decode image stream: ' + 'EOD marker not found, searching for /EI/ instead.');\n        stream.skip(-length);\n        return this.findDefaultInlineStreamEnd(stream);\n      }\n      this.inlineStreamSkipEI(stream);\n      return length;\n    },\n    findASCIIHexDecodeInlineStreamEnd: function Parser_findASCIIHexDecodeInlineStreamEnd(stream) {\n      var GT = 0x3E;\n      var startPos = stream.pos,\n          ch,\n          length;\n      while ((ch = stream.getByte()) !== -1) {\n        if (ch === GT) {\n          break;\n        }\n      }\n      length = stream.pos - startPos;\n      if (ch === -1) {\n        (0, _util.warn)('Inline ASCIIHexDecode image stream: ' + 'EOD marker not found, searching for /EI/ instead.');\n        stream.skip(-length);\n        return this.findDefaultInlineStreamEnd(stream);\n      }\n      this.inlineStreamSkipEI(stream);\n      return length;\n    },\n    inlineStreamSkipEI: function Parser_inlineStreamSkipEI(stream) {\n      var E = 0x45,\n          I = 0x49;\n      var state = 0,\n          ch;\n      while ((ch = stream.getByte()) !== -1) {\n        if (state === 0) {\n          state = ch === E ? 1 : 0;\n        } else if (state === 1) {\n          state = ch === I ? 2 : 0;\n        } else if (state === 2) {\n          break;\n        }\n      }\n    },\n    makeInlineImage: function Parser_makeInlineImage(cipherTransform) {\n      var lexer = this.lexer;\n      var stream = lexer.stream;\n      var dict = new _primitives.Dict(this.xref),\n          dictLength = void 0;\n      while (!(0, _primitives.isCmd)(this.buf1, 'ID') && !(0, _primitives.isEOF)(this.buf1)) {\n        if (!(0, _primitives.isName)(this.buf1)) {\n          throw new _util.FormatError('Dictionary key must be a name object');\n        }\n        var key = this.buf1.name;\n        this.shift();\n        if ((0, _primitives.isEOF)(this.buf1)) {\n          break;\n        }\n        dict.set(key, this.getObj(cipherTransform));\n      }\n      if (lexer.beginInlineImagePos !== -1) {\n        dictLength = stream.pos - lexer.beginInlineImagePos;\n      }\n      var filter = dict.get('Filter', 'F'),\n          filterName;\n      if ((0, _primitives.isName)(filter)) {\n        filterName = filter.name;\n      } else if (Array.isArray(filter)) {\n        var filterZero = this.xref.fetchIfRef(filter[0]);\n        if ((0, _primitives.isName)(filterZero)) {\n          filterName = filterZero.name;\n        }\n      }\n      var startPos = stream.pos,\n          length = void 0;\n      if (filterName === 'DCTDecode' || filterName === 'DCT') {\n        length = this.findDCTDecodeInlineStreamEnd(stream);\n      } else if (filterName === 'ASCII85Decode' || filterName === 'A85') {\n        length = this.findASCII85DecodeInlineStreamEnd(stream);\n      } else if (filterName === 'ASCIIHexDecode' || filterName === 'AHx') {\n        length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n      } else {\n        length = this.findDefaultInlineStreamEnd(stream);\n      }\n      var imageStream = stream.makeSubStream(startPos, length, dict);\n      var cacheKey = void 0;\n      if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n        var imageBytes = imageStream.getBytes();\n        imageStream.reset();\n        var initialStreamPos = stream.pos;\n        stream.pos = lexer.beginInlineImagePos;\n        var dictBytes = stream.getBytes(dictLength);\n        stream.pos = initialStreamPos;\n        cacheKey = computeAdler32(imageBytes) + '_' + computeAdler32(dictBytes);\n        var cacheEntry = this.imageCache[cacheKey];\n        if (cacheEntry !== undefined) {\n          this.buf2 = _primitives.Cmd.get('EI');\n          this.shift();\n          cacheEntry.reset();\n          return cacheEntry;\n        }\n      }\n      if (cipherTransform) {\n        imageStream = cipherTransform.createStream(imageStream, length);\n      }\n      imageStream = this.filter(imageStream, dict, length);\n      imageStream.dict = dict;\n      if (cacheKey !== undefined) {\n        imageStream.cacheKey = 'inline_' + length + '_' + cacheKey;\n        this.imageCache[cacheKey] = imageStream;\n      }\n      this.buf2 = _primitives.Cmd.get('EI');\n      this.shift();\n      return imageStream;\n    },\n    _findStreamLength: function _findStreamLength(startPos, signature) {\n      var stream = this.lexer.stream;\n\n      stream.pos = startPos;\n      var SCAN_BLOCK_LENGTH = 2048;\n      var signatureLength = signature.length;\n      while (stream.pos < stream.end) {\n        var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n        var scanLength = scanBytes.length - signatureLength;\n        if (scanLength <= 0) {\n          break;\n        }\n        var pos = 0;\n        while (pos < scanLength) {\n          var j = 0;\n          while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n            j++;\n          }\n          if (j >= signatureLength) {\n            stream.pos += pos;\n            return stream.pos - startPos;\n          }\n          pos++;\n        }\n        stream.pos += scanLength;\n      }\n      return -1;\n    },\n\n    makeStream: function Parser_makeStream(dict, cipherTransform) {\n      var lexer = this.lexer;\n      var stream = lexer.stream;\n      lexer.skipToNextLine();\n      var startPos = stream.pos - 1;\n      var length = dict.get('Length');\n      if (!Number.isInteger(length)) {\n        (0, _util.info)('Bad ' + length + ' attribute in stream');\n        length = 0;\n      }\n      stream.pos = startPos + length;\n      lexer.nextChar();\n      if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, 'endstream')) {\n        this.shift();\n      } else {\n        var ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]);\n        var actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n        if (actualLength < 0) {\n          var MAX_TRUNCATION = 1;\n          for (var i = 1; i <= MAX_TRUNCATION; i++) {\n            var end = ENDSTREAM_SIGNATURE.length - i;\n            var TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n            var maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE);\n            if (maybeLength >= 0) {\n              var lastByte = stream.peekBytes(end + 1)[end];\n              if (!(0, _util.isSpace)(lastByte)) {\n                break;\n              }\n              (0, _util.info)('Found \"' + (0, _util.bytesToString)(TRUNCATED_SIGNATURE) + '\" when ' + 'searching for endstream command.');\n              actualLength = maybeLength;\n              break;\n            }\n          }\n          if (actualLength < 0) {\n            throw new _util.FormatError('Missing endstream command.');\n          }\n        }\n        length = actualLength;\n        lexer.nextChar();\n        this.shift();\n        this.shift();\n      }\n      this.shift();\n      stream = stream.makeSubStream(startPos, length, dict);\n      if (cipherTransform) {\n        stream = cipherTransform.createStream(stream, length);\n      }\n      stream = this.filter(stream, dict, length);\n      stream.dict = dict;\n      return stream;\n    },\n    filter: function Parser_filter(stream, dict, length) {\n      var filter = dict.get('Filter', 'F');\n      var params = dict.get('DecodeParms', 'DP');\n      if ((0, _primitives.isName)(filter)) {\n        if (Array.isArray(params)) {\n          (0, _util.warn)('/DecodeParms should not contain an Array, ' + 'when /Filter contains a Name.');\n        }\n        return this.makeFilter(stream, filter.name, length, params);\n      }\n      var maybeLength = length;\n      if (Array.isArray(filter)) {\n        var filterArray = filter;\n        var paramsArray = params;\n        for (var i = 0, ii = filterArray.length; i < ii; ++i) {\n          filter = this.xref.fetchIfRef(filterArray[i]);\n          if (!(0, _primitives.isName)(filter)) {\n            throw new _util.FormatError('Bad filter name: ' + filter);\n          }\n          params = null;\n          if (Array.isArray(paramsArray) && i in paramsArray) {\n            params = this.xref.fetchIfRef(paramsArray[i]);\n          }\n          stream = this.makeFilter(stream, filter.name, maybeLength, params);\n          maybeLength = null;\n        }\n      }\n      return stream;\n    },\n    makeFilter: function Parser_makeFilter(stream, name, maybeLength, params) {\n      if (maybeLength === 0) {\n        (0, _util.warn)('Empty \"' + name + '\" stream.');\n        return new _stream.NullStream();\n      }\n      try {\n        var xrefStreamStats = this.xref.stats.streamTypes;\n        if (name === 'FlateDecode' || name === 'Fl') {\n          xrefStreamStats[_util.StreamType.FLATE] = true;\n          if (params) {\n            return new _stream.PredictorStream(new _stream.FlateStream(stream, maybeLength), maybeLength, params);\n          }\n          return new _stream.FlateStream(stream, maybeLength);\n        }\n        if (name === 'LZWDecode' || name === 'LZW') {\n          xrefStreamStats[_util.StreamType.LZW] = true;\n          var earlyChange = 1;\n          if (params) {\n            if (params.has('EarlyChange')) {\n              earlyChange = params.get('EarlyChange');\n            }\n            return new _stream.PredictorStream(new _stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params);\n          }\n          return new _stream.LZWStream(stream, maybeLength, earlyChange);\n        }\n        if (name === 'DCTDecode' || name === 'DCT') {\n          xrefStreamStats[_util.StreamType.DCT] = true;\n          return new _jpeg_stream.JpegStream(stream, maybeLength, stream.dict, params);\n        }\n        if (name === 'JPXDecode' || name === 'JPX') {\n          xrefStreamStats[_util.StreamType.JPX] = true;\n          return new _jpx_stream.JpxStream(stream, maybeLength, stream.dict, params);\n        }\n        if (name === 'ASCII85Decode' || name === 'A85') {\n          xrefStreamStats[_util.StreamType.A85] = true;\n          return new _stream.Ascii85Stream(stream, maybeLength);\n        }\n        if (name === 'ASCIIHexDecode' || name === 'AHx') {\n          xrefStreamStats[_util.StreamType.AHX] = true;\n          return new _stream.AsciiHexStream(stream, maybeLength);\n        }\n        if (name === 'CCITTFaxDecode' || name === 'CCF') {\n          xrefStreamStats[_util.StreamType.CCF] = true;\n          return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params);\n        }\n        if (name === 'RunLengthDecode' || name === 'RL') {\n          xrefStreamStats[_util.StreamType.RL] = true;\n          return new _stream.RunLengthStream(stream, maybeLength);\n        }\n        if (name === 'JBIG2Decode') {\n          xrefStreamStats[_util.StreamType.JBIG] = true;\n          return new _jbig2_stream.Jbig2Stream(stream, maybeLength, stream.dict, params);\n        }\n        (0, _util.warn)('filter \"' + name + '\" not supported yet');\n        return stream;\n      } catch (ex) {\n        if (ex instanceof _util.MissingDataException) {\n          throw ex;\n        }\n        (0, _util.warn)('Invalid stream: \\\"' + ex + '\\\"');\n        return new _stream.NullStream();\n      }\n    }\n  };\n  return Parser;\n}();\nvar Lexer = function LexerClosure() {\n  function Lexer(stream, knownCommands) {\n    this.stream = stream;\n    this.nextChar();\n    this.strBuf = [];\n    this.knownCommands = knownCommands;\n    this.beginInlineImagePos = -1;\n  }\n  var specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n  function toHexDigit(ch) {\n    if (ch >= 0x30 && ch <= 0x39) {\n      return ch & 0x0F;\n    }\n    if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n      return (ch & 0x0F) + 9;\n    }\n    return -1;\n  }\n  Lexer.prototype = {\n    nextChar: function Lexer_nextChar() {\n      return this.currentChar = this.stream.getByte();\n    },\n    peekChar: function Lexer_peekChar() {\n      return this.stream.peekByte();\n    },\n    getNumber: function Lexer_getNumber() {\n      var ch = this.currentChar;\n      var eNotation = false;\n      var divideBy = 0;\n      var sign = 0;\n      if (ch === 0x2D) {\n        sign = -1;\n        ch = this.nextChar();\n        if (ch === 0x2D) {\n          ch = this.nextChar();\n        }\n      } else if (ch === 0x2B) {\n        sign = 1;\n        ch = this.nextChar();\n      }\n      if (ch === 0x0A || ch === 0x0D) {\n        do {\n          ch = this.nextChar();\n        } while (ch === 0x0A || ch === 0x0D);\n      }\n      if (ch === 0x2E) {\n        divideBy = 10;\n        ch = this.nextChar();\n      }\n      if (ch < 0x30 || ch > 0x39) {\n        if (divideBy === 10 && sign === 0 && ((0, _util.isSpace)(ch) || ch === -1)) {\n          (0, _util.warn)('Lexer.getNumber - treating a single decimal point as zero.');\n          return 0;\n        }\n        throw new _util.FormatError('Invalid number: ' + String.fromCharCode(ch) + ' (charCode ' + ch + ')');\n      }\n      sign = sign || 1;\n      var baseValue = ch - 0x30;\n      var powerValue = 0;\n      var powerValueSign = 1;\n      while ((ch = this.nextChar()) >= 0) {\n        if (0x30 <= ch && ch <= 0x39) {\n          var currentDigit = ch - 0x30;\n          if (eNotation) {\n            powerValue = powerValue * 10 + currentDigit;\n          } else {\n            if (divideBy !== 0) {\n              divideBy *= 10;\n            }\n            baseValue = baseValue * 10 + currentDigit;\n          }\n        } else if (ch === 0x2E) {\n          if (divideBy === 0) {\n            divideBy = 1;\n          } else {\n            break;\n          }\n        } else if (ch === 0x2D) {\n          (0, _util.warn)('Badly formatted number');\n        } else if (ch === 0x45 || ch === 0x65) {\n          ch = this.peekChar();\n          if (ch === 0x2B || ch === 0x2D) {\n            powerValueSign = ch === 0x2D ? -1 : 1;\n            this.nextChar();\n          } else if (ch < 0x30 || ch > 0x39) {\n            break;\n          }\n          eNotation = true;\n        } else {\n          break;\n        }\n      }\n      if (divideBy !== 0) {\n        baseValue /= divideBy;\n      }\n      if (eNotation) {\n        baseValue *= Math.pow(10, powerValueSign * powerValue);\n      }\n      return sign * baseValue;\n    },\n    getString: function Lexer_getString() {\n      var numParen = 1;\n      var done = false;\n      var strBuf = this.strBuf;\n      strBuf.length = 0;\n      var ch = this.nextChar();\n      while (true) {\n        var charBuffered = false;\n        switch (ch | 0) {\n          case -1:\n            (0, _util.warn)('Unterminated string');\n            done = true;\n            break;\n          case 0x28:\n            ++numParen;\n            strBuf.push('(');\n            break;\n          case 0x29:\n            if (--numParen === 0) {\n              this.nextChar();\n              done = true;\n            } else {\n              strBuf.push(')');\n            }\n            break;\n          case 0x5C:\n            ch = this.nextChar();\n            switch (ch) {\n              case -1:\n                (0, _util.warn)('Unterminated string');\n                done = true;\n                break;\n              case 0x6E:\n                strBuf.push('\\n');\n                break;\n              case 0x72:\n                strBuf.push('\\r');\n                break;\n              case 0x74:\n                strBuf.push('\\t');\n                break;\n              case 0x62:\n                strBuf.push('\\b');\n                break;\n              case 0x66:\n                strBuf.push('\\f');\n                break;\n              case 0x5C:\n              case 0x28:\n              case 0x29:\n                strBuf.push(String.fromCharCode(ch));\n                break;\n              case 0x30:\n              case 0x31:\n              case 0x32:\n              case 0x33:\n              case 0x34:\n              case 0x35:\n              case 0x36:\n              case 0x37:\n                var x = ch & 0x0F;\n                ch = this.nextChar();\n                charBuffered = true;\n                if (ch >= 0x30 && ch <= 0x37) {\n                  x = (x << 3) + (ch & 0x0F);\n                  ch = this.nextChar();\n                  if (ch >= 0x30 && ch <= 0x37) {\n                    charBuffered = false;\n                    x = (x << 3) + (ch & 0x0F);\n                  }\n                }\n                strBuf.push(String.fromCharCode(x));\n                break;\n              case 0x0D:\n                if (this.peekChar() === 0x0A) {\n                  this.nextChar();\n                }\n                break;\n              case 0x0A:\n                break;\n              default:\n                strBuf.push(String.fromCharCode(ch));\n                break;\n            }\n            break;\n          default:\n            strBuf.push(String.fromCharCode(ch));\n            break;\n        }\n        if (done) {\n          break;\n        }\n        if (!charBuffered) {\n          ch = this.nextChar();\n        }\n      }\n      return strBuf.join('');\n    },\n    getName: function Lexer_getName() {\n      var ch, previousCh;\n      var strBuf = this.strBuf;\n      strBuf.length = 0;\n      while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n        if (ch === 0x23) {\n          ch = this.nextChar();\n          if (specialChars[ch]) {\n            (0, _util.warn)('Lexer_getName: ' + 'NUMBER SIGN (#) should be followed by a hexadecimal number.');\n            strBuf.push('#');\n            break;\n          }\n          var x = toHexDigit(ch);\n          if (x !== -1) {\n            previousCh = ch;\n            ch = this.nextChar();\n            var x2 = toHexDigit(ch);\n            if (x2 === -1) {\n              (0, _util.warn)('Lexer_getName: Illegal digit (' + String.fromCharCode(ch) + ') in hexadecimal number.');\n              strBuf.push('#', String.fromCharCode(previousCh));\n              if (specialChars[ch]) {\n                break;\n              }\n              strBuf.push(String.fromCharCode(ch));\n              continue;\n            }\n            strBuf.push(String.fromCharCode(x << 4 | x2));\n          } else {\n            strBuf.push('#', String.fromCharCode(ch));\n          }\n        } else {\n          strBuf.push(String.fromCharCode(ch));\n        }\n      }\n      if (strBuf.length > 127) {\n        (0, _util.warn)('name token is longer than allowed by the spec: ' + strBuf.length);\n      }\n      return _primitives.Name.get(strBuf.join(''));\n    },\n    getHexString: function Lexer_getHexString() {\n      var strBuf = this.strBuf;\n      strBuf.length = 0;\n      var ch = this.currentChar;\n      var isFirstHex = true;\n      var firstDigit;\n      var secondDigit;\n      while (true) {\n        if (ch < 0) {\n          (0, _util.warn)('Unterminated hex string');\n          break;\n        } else if (ch === 0x3E) {\n          this.nextChar();\n          break;\n        } else if (specialChars[ch] === 1) {\n          ch = this.nextChar();\n          continue;\n        } else {\n          if (isFirstHex) {\n            firstDigit = toHexDigit(ch);\n            if (firstDigit === -1) {\n              (0, _util.warn)('Ignoring invalid character \"' + ch + '\" in hex string');\n              ch = this.nextChar();\n              continue;\n            }\n          } else {\n            secondDigit = toHexDigit(ch);\n            if (secondDigit === -1) {\n              (0, _util.warn)('Ignoring invalid character \"' + ch + '\" in hex string');\n              ch = this.nextChar();\n              continue;\n            }\n            strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit));\n          }\n          isFirstHex = !isFirstHex;\n          ch = this.nextChar();\n        }\n      }\n      return strBuf.join('');\n    },\n    getObj: function Lexer_getObj() {\n      var comment = false;\n      var ch = this.currentChar;\n      while (true) {\n        if (ch < 0) {\n          return _primitives.EOF;\n        }\n        if (comment) {\n          if (ch === 0x0A || ch === 0x0D) {\n            comment = false;\n          }\n        } else if (ch === 0x25) {\n          comment = true;\n        } else if (specialChars[ch] !== 1) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      switch (ch | 0) {\n        case 0x30:\n        case 0x31:\n        case 0x32:\n        case 0x33:\n        case 0x34:\n        case 0x35:\n        case 0x36:\n        case 0x37:\n        case 0x38:\n        case 0x39:\n        case 0x2B:\n        case 0x2D:\n        case 0x2E:\n          return this.getNumber();\n        case 0x28:\n          return this.getString();\n        case 0x2F:\n          return this.getName();\n        case 0x5B:\n          this.nextChar();\n          return _primitives.Cmd.get('[');\n        case 0x5D:\n          this.nextChar();\n          return _primitives.Cmd.get(']');\n        case 0x3C:\n          ch = this.nextChar();\n          if (ch === 0x3C) {\n            this.nextChar();\n            return _primitives.Cmd.get('<<');\n          }\n          return this.getHexString();\n        case 0x3E:\n          ch = this.nextChar();\n          if (ch === 0x3E) {\n            this.nextChar();\n            return _primitives.Cmd.get('>>');\n          }\n          return _primitives.Cmd.get('>');\n        case 0x7B:\n          this.nextChar();\n          return _primitives.Cmd.get('{');\n        case 0x7D:\n          this.nextChar();\n          return _primitives.Cmd.get('}');\n        case 0x29:\n          this.nextChar();\n          throw new _util.FormatError('Illegal character: ' + ch);\n      }\n      var str = String.fromCharCode(ch);\n      var knownCommands = this.knownCommands;\n      var knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n      while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n        var possibleCommand = str + String.fromCharCode(ch);\n        if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n          break;\n        }\n        if (str.length === 128) {\n          throw new _util.FormatError('Command token too long: ' + str.length);\n        }\n        str = possibleCommand;\n        knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n      }\n      if (str === 'true') {\n        return true;\n      }\n      if (str === 'false') {\n        return false;\n      }\n      if (str === 'null') {\n        return null;\n      }\n      if (str === 'BI') {\n        this.beginInlineImagePos = this.stream.pos;\n      }\n      return _primitives.Cmd.get(str);\n    },\n    skipToNextLine: function Lexer_skipToNextLine() {\n      var ch = this.currentChar;\n      while (ch >= 0) {\n        if (ch === 0x0D) {\n          ch = this.nextChar();\n          if (ch === 0x0A) {\n            this.nextChar();\n          }\n          break;\n        } else if (ch === 0x0A) {\n          this.nextChar();\n          break;\n        }\n        ch = this.nextChar();\n      }\n    }\n  };\n  return Lexer;\n}();\nvar Linearization = {\n  create: function LinearizationCreate(stream) {\n    function getInt(name, allowZeroValue) {\n      var obj = linDict.get(name);\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n        return obj;\n      }\n      throw new Error('The \"' + name + '\" parameter in the linearization ' + 'dictionary is invalid.');\n    }\n    function getHints() {\n      var hints = linDict.get('H'),\n          hintsLength,\n          item;\n      if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {\n        for (var index = 0; index < hintsLength; index++) {\n          if (!(Number.isInteger(item = hints[index]) && item > 0)) {\n            throw new Error('Hint (' + index + ') in the linearization dictionary is invalid.');\n          }\n        }\n        return hints;\n      }\n      throw new Error('Hint array in the linearization dictionary is invalid.');\n    }\n    var parser = new Parser(new Lexer(stream), false, null);\n    var obj1 = parser.getObj();\n    var obj2 = parser.getObj();\n    var obj3 = parser.getObj();\n    var linDict = parser.getObj();\n    var obj, length;\n    if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, 'obj') && (0, _primitives.isDict)(linDict) && (0, _util.isNum)(obj = linDict.get('Linearized')) && obj > 0)) {\n      return null;\n    } else if ((length = getInt('L')) !== stream.length) {\n      throw new Error('The \"L\" parameter in the linearization dictionary ' + 'does not equal the stream length.');\n    }\n    return {\n      length: length,\n      hints: getHints(),\n      objectNumberFirst: getInt('O'),\n      endFirst: getInt('E'),\n      numPages: getInt('N'),\n      mainXRefEntriesOffset: getInt('T'),\n      pageFirst: linDict.has('P') ? getInt('P', true) : 0\n    };\n  }\n};\nexports.Lexer = Lexer;\nexports.Linearization = Linearization;\nexports.Parser = Parser;\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.FlateStream = exports.DecodeStream = exports.DecryptStream = exports.AsciiHexStream = exports.Ascii85Stream = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar Stream = function StreamClosure() {\n  function Stream(arrayBuffer, start, length, dict) {\n    this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer);\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = start + length || this.bytes.length;\n    this.dict = dict;\n  }\n  Stream.prototype = {\n    get length() {\n      return this.end - this.start;\n    },\n    get isEmpty() {\n      return this.length === 0;\n    },\n    getByte: function Stream_getByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.bytes[this.pos++];\n    },\n    getUint16: function Stream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function Stream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    getBytes: function getBytes(length) {\n      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var bytes = this.bytes;\n      var pos = this.pos;\n      var strEnd = this.end;\n      if (!length) {\n        var _subarray = bytes.subarray(pos, strEnd);\n        return forceClamped ? new Uint8ClampedArray(_subarray) : _subarray;\n      }\n      var end = pos + length;\n      if (end > strEnd) {\n        end = strEnd;\n      }\n      this.pos = end;\n      var subarray = bytes.subarray(pos, end);\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    },\n\n    peekByte: function Stream_peekByte() {\n      var peekedByte = this.getByte();\n      this.pos--;\n      return peekedByte;\n    },\n    peekBytes: function peekBytes(length) {\n      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n\n    skip: function Stream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function Stream_reset() {\n      this.pos = this.start;\n    },\n    moveStart: function Stream_moveStart() {\n      this.start = this.pos;\n    },\n    makeSubStream: function Stream_makeSubStream(start, length, dict) {\n      return new Stream(this.bytes.buffer, start, length, dict);\n    }\n  };\n  return Stream;\n}();\nvar StringStream = function StringStreamClosure() {\n  function StringStream(str) {\n    var bytes = (0, _util.stringToBytes)(str);\n    Stream.call(this, bytes);\n  }\n  StringStream.prototype = Stream.prototype;\n  return StringStream;\n}();\nvar DecodeStream = function DecodeStreamClosure() {\n  var emptyBuffer = new Uint8Array(0);\n  function DecodeStream(maybeMinBufferLength) {\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\n    this.pos = 0;\n    this.bufferLength = 0;\n    this.eof = false;\n    this.buffer = emptyBuffer;\n    this.minBufferLength = 512;\n    if (maybeMinBufferLength) {\n      while (this.minBufferLength < maybeMinBufferLength) {\n        this.minBufferLength *= 2;\n      }\n    }\n  }\n  DecodeStream.prototype = {\n    get isEmpty() {\n      while (!this.eof && this.bufferLength === 0) {\n        this.readBlock();\n      }\n      return this.bufferLength === 0;\n    },\n    ensureBuffer: function DecodeStream_ensureBuffer(requested) {\n      var buffer = this.buffer;\n      if (requested <= buffer.byteLength) {\n        return buffer;\n      }\n      var size = this.minBufferLength;\n      while (size < requested) {\n        size *= 2;\n      }\n      var buffer2 = new Uint8Array(size);\n      buffer2.set(buffer);\n      return this.buffer = buffer2;\n    },\n    getByte: function DecodeStream_getByte() {\n      var pos = this.pos;\n      while (this.bufferLength <= pos) {\n        if (this.eof) {\n          return -1;\n        }\n        this.readBlock();\n      }\n      return this.buffer[this.pos++];\n    },\n    getUint16: function DecodeStream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function DecodeStream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    getBytes: function getBytes(length) {\n      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var end,\n          pos = this.pos;\n      if (length) {\n        this.ensureBuffer(pos + length);\n        end = pos + length;\n        while (!this.eof && this.bufferLength < end) {\n          this.readBlock();\n        }\n        var bufEnd = this.bufferLength;\n        if (end > bufEnd) {\n          end = bufEnd;\n        }\n      } else {\n        while (!this.eof) {\n          this.readBlock();\n        }\n        end = this.bufferLength;\n      }\n      this.pos = end;\n      var subarray = this.buffer.subarray(pos, end);\n      return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : subarray;\n    },\n\n    peekByte: function DecodeStream_peekByte() {\n      var peekedByte = this.getByte();\n      this.pos--;\n      return peekedByte;\n    },\n    peekBytes: function peekBytes(length) {\n      var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n\n    makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {\n      var end = start + length;\n      while (this.bufferLength <= end && !this.eof) {\n        this.readBlock();\n      }\n      return new Stream(this.buffer, start, length, dict);\n    },\n    skip: function DecodeStream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function DecodeStream_reset() {\n      this.pos = 0;\n    },\n    getBaseStreams: function DecodeStream_getBaseStreams() {\n      if (this.str && this.str.getBaseStreams) {\n        return this.str.getBaseStreams();\n      }\n      return [];\n    }\n  };\n  return DecodeStream;\n}();\nvar StreamsSequenceStream = function StreamsSequenceStreamClosure() {\n  function StreamsSequenceStream(streams) {\n    this.streams = streams;\n    var maybeLength = 0;\n    for (var i = 0, ii = streams.length; i < ii; i++) {\n      var stream = streams[i];\n      if (stream instanceof DecodeStream) {\n        maybeLength += stream._rawMinBufferLength;\n      } else {\n        maybeLength += stream.length;\n      }\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n  StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);\n  StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() {\n    var streams = this.streams;\n    if (streams.length === 0) {\n      this.eof = true;\n      return;\n    }\n    var stream = streams.shift();\n    var chunk = stream.getBytes();\n    var bufferLength = this.bufferLength;\n    var newLength = bufferLength + chunk.length;\n    var buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  };\n  StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() {\n    var baseStreams = [];\n    for (var i = 0, ii = this.streams.length; i < ii; i++) {\n      var stream = this.streams[i];\n      if (stream.getBaseStreams) {\n        baseStreams.push.apply(baseStreams, _toConsumableArray(stream.getBaseStreams()));\n      }\n    }\n    return baseStreams;\n  };\n  return StreamsSequenceStream;\n}();\nvar FlateStream = function FlateStreamClosure() {\n  var codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n  var lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);\n  var distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);\n  var fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9];\n  var fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5];\n  function FlateStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n    var cmf = str.getByte();\n    var flg = str.getByte();\n    if (cmf === -1 || flg === -1) {\n      throw new _util.FormatError('Invalid header in flate stream: ' + cmf + ', ' + flg);\n    }\n    if ((cmf & 0x0f) !== 0x08) {\n      throw new _util.FormatError('Unknown compression method in flate stream: ' + cmf + ', ' + flg);\n    }\n    if (((cmf << 8) + flg) % 31 !== 0) {\n      throw new _util.FormatError('Bad FCHECK in flate stream: ' + cmf + ', ' + flg);\n    }\n    if (flg & 0x20) {\n      throw new _util.FormatError('FDICT bit set in flate stream: ' + cmf + ', ' + flg);\n    }\n    this.codeSize = 0;\n    this.codeBuf = 0;\n    DecodeStream.call(this, maybeLength);\n  }\n  FlateStream.prototype = Object.create(DecodeStream.prototype);\n  FlateStream.prototype.getBits = function FlateStream_getBits(bits) {\n    var str = this.str;\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n    var b;\n    while (codeSize < bits) {\n      if ((b = str.getByte()) === -1) {\n        throw new _util.FormatError('Bad encoding in flate stream');\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    b = codeBuf & (1 << bits) - 1;\n    this.codeBuf = codeBuf >> bits;\n    this.codeSize = codeSize -= bits;\n    return b;\n  };\n  FlateStream.prototype.getCode = function FlateStream_getCode(table) {\n    var str = this.str;\n    var codes = table[0];\n    var maxLen = table[1];\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n    var b;\n    while (codeSize < maxLen) {\n      if ((b = str.getByte()) === -1) {\n        break;\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    var code = codes[codeBuf & (1 << maxLen) - 1];\n    var codeLen = code >> 16;\n    var codeVal = code & 0xffff;\n    if (codeLen < 1 || codeSize < codeLen) {\n      throw new _util.FormatError('Bad encoding in flate stream');\n    }\n    this.codeBuf = codeBuf >> codeLen;\n    this.codeSize = codeSize - codeLen;\n    return codeVal;\n  };\n  FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(lengths) {\n    var n = lengths.length;\n    var maxLen = 0;\n    var i;\n    for (i = 0; i < n; ++i) {\n      if (lengths[i] > maxLen) {\n        maxLen = lengths[i];\n      }\n    }\n    var size = 1 << maxLen;\n    var codes = new Int32Array(size);\n    for (var len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {\n      for (var val = 0; val < n; ++val) {\n        if (lengths[val] === len) {\n          var code2 = 0;\n          var t = code;\n          for (i = 0; i < len; ++i) {\n            code2 = code2 << 1 | t & 1;\n            t >>= 1;\n          }\n          for (i = code2; i < size; i += skip) {\n            codes[i] = len << 16 | val;\n          }\n          ++code;\n        }\n      }\n    }\n    return [codes, maxLen];\n  };\n  FlateStream.prototype.readBlock = function FlateStream_readBlock() {\n    var buffer, len;\n    var str = this.str;\n    var hdr = this.getBits(3);\n    if (hdr & 1) {\n      this.eof = true;\n    }\n    hdr >>= 1;\n    if (hdr === 0) {\n      var b;\n      if ((b = str.getByte()) === -1) {\n        throw new _util.FormatError('Bad block header in flate stream');\n      }\n      var blockLen = b;\n      if ((b = str.getByte()) === -1) {\n        throw new _util.FormatError('Bad block header in flate stream');\n      }\n      blockLen |= b << 8;\n      if ((b = str.getByte()) === -1) {\n        throw new _util.FormatError('Bad block header in flate stream');\n      }\n      var check = b;\n      if ((b = str.getByte()) === -1) {\n        throw new _util.FormatError('Bad block header in flate stream');\n      }\n      check |= b << 8;\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n        throw new _util.FormatError('Bad uncompressed block length in flate stream');\n      }\n      this.codeBuf = 0;\n      this.codeSize = 0;\n      var bufferLength = this.bufferLength;\n      buffer = this.ensureBuffer(bufferLength + blockLen);\n      var end = bufferLength + blockLen;\n      this.bufferLength = end;\n      if (blockLen === 0) {\n        if (str.peekByte() === -1) {\n          this.eof = true;\n        }\n      } else {\n        for (var n = bufferLength; n < end; ++n) {\n          if ((b = str.getByte()) === -1) {\n            this.eof = true;\n            break;\n          }\n          buffer[n] = b;\n        }\n      }\n      return;\n    }\n    var litCodeTable;\n    var distCodeTable;\n    if (hdr === 1) {\n      litCodeTable = fixedLitCodeTab;\n      distCodeTable = fixedDistCodeTab;\n    } else if (hdr === 2) {\n      var numLitCodes = this.getBits(5) + 257;\n      var numDistCodes = this.getBits(5) + 1;\n      var numCodeLenCodes = this.getBits(4) + 4;\n      var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n      var i;\n      for (i = 0; i < numCodeLenCodes; ++i) {\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n      }\n      var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n      len = 0;\n      i = 0;\n      var codes = numLitCodes + numDistCodes;\n      var codeLengths = new Uint8Array(codes);\n      var bitsLength, bitsOffset, what;\n      while (i < codes) {\n        var code = this.getCode(codeLenCodeTab);\n        if (code === 16) {\n          bitsLength = 2;\n          bitsOffset = 3;\n          what = len;\n        } else if (code === 17) {\n          bitsLength = 3;\n          bitsOffset = 3;\n          what = len = 0;\n        } else if (code === 18) {\n          bitsLength = 7;\n          bitsOffset = 11;\n          what = len = 0;\n        } else {\n          codeLengths[i++] = len = code;\n          continue;\n        }\n        var repeatLength = this.getBits(bitsLength) + bitsOffset;\n        while (repeatLength-- > 0) {\n          codeLengths[i++] = what;\n        }\n      }\n      litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n      distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n    } else {\n      throw new _util.FormatError('Unknown block type in flate stream');\n    }\n    buffer = this.buffer;\n    var limit = buffer ? buffer.length : 0;\n    var pos = this.bufferLength;\n    while (true) {\n      var code1 = this.getCode(litCodeTable);\n      if (code1 < 256) {\n        if (pos + 1 >= limit) {\n          buffer = this.ensureBuffer(pos + 1);\n          limit = buffer.length;\n        }\n        buffer[pos++] = code1;\n        continue;\n      }\n      if (code1 === 256) {\n        this.bufferLength = pos;\n        return;\n      }\n      code1 -= 257;\n      code1 = lengthDecode[code1];\n      var code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      len = (code1 & 0xffff) + code2;\n      code1 = this.getCode(distCodeTable);\n      code1 = distDecode[code1];\n      code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      var dist = (code1 & 0xffff) + code2;\n      if (pos + len >= limit) {\n        buffer = this.ensureBuffer(pos + len);\n        limit = buffer.length;\n      }\n      for (var k = 0; k < len; ++k, ++pos) {\n        buffer[pos] = buffer[pos - dist];\n      }\n    }\n  };\n  return FlateStream;\n}();\nvar PredictorStream = function PredictorStreamClosure() {\n  function PredictorStream(str, maybeLength, params) {\n    if (!(0, _primitives.isDict)(params)) {\n      return str;\n    }\n    var predictor = this.predictor = params.get('Predictor') || 1;\n    if (predictor <= 1) {\n      return str;\n    }\n    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n      throw new _util.FormatError('Unsupported predictor: ' + predictor);\n    }\n    if (predictor === 2) {\n      this.readBlock = this.readBlockTiff;\n    } else {\n      this.readBlock = this.readBlockPng;\n    }\n    this.str = str;\n    this.dict = str.dict;\n    var colors = this.colors = params.get('Colors') || 1;\n    var bits = this.bits = params.get('BitsPerComponent') || 8;\n    var columns = this.columns = params.get('Columns') || 1;\n    this.pixBytes = colors * bits + 7 >> 3;\n    this.rowBytes = columns * colors * bits + 7 >> 3;\n    DecodeStream.call(this, maybeLength);\n    return this;\n  }\n  PredictorStream.prototype = Object.create(DecodeStream.prototype);\n  PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() {\n    var rowBytes = this.rowBytes;\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n    var bits = this.bits;\n    var colors = this.colors;\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n    var inbuf = 0,\n        outbuf = 0;\n    var inbits = 0,\n        outbits = 0;\n    var pos = bufferLength;\n    var i;\n    if (bits === 1 && colors === 1) {\n      for (i = 0; i < rowBytes; ++i) {\n        var c = rawBytes[i] ^ inbuf;\n        c ^= c >> 1;\n        c ^= c >> 2;\n        c ^= c >> 4;\n        inbuf = (c & 1) << 7;\n        buffer[pos++] = c;\n      }\n    } else if (bits === 8) {\n      for (i = 0; i < colors; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; ++i) {\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\n        pos++;\n      }\n    } else if (bits === 16) {\n      var bytesPerPixel = colors * 2;\n      for (i = 0; i < bytesPerPixel; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; i += 2) {\n        var sum = ((rawBytes[i] & 0xFF) << 8) + (rawBytes[i + 1] & 0xFF) + ((buffer[pos - bytesPerPixel] & 0xFF) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xFF);\n        buffer[pos++] = sum >> 8 & 0xFF;\n        buffer[pos++] = sum & 0xFF;\n      }\n    } else {\n      var compArray = new Uint8Array(colors + 1);\n      var bitMask = (1 << bits) - 1;\n      var j = 0,\n          k = bufferLength;\n      var columns = this.columns;\n      for (i = 0; i < columns; ++i) {\n        for (var kk = 0; kk < colors; ++kk) {\n          if (inbits < bits) {\n            inbuf = inbuf << 8 | rawBytes[j++] & 0xFF;\n            inbits += 8;\n          }\n          compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;\n          inbits -= bits;\n          outbuf = outbuf << bits | compArray[kk];\n          outbits += bits;\n          if (outbits >= 8) {\n            buffer[k++] = outbuf >> outbits - 8 & 0xFF;\n            outbits -= 8;\n          }\n        }\n      }\n      if (outbits > 0) {\n        buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);\n      }\n    }\n    this.bufferLength += rowBytes;\n  };\n  PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() {\n    var rowBytes = this.rowBytes;\n    var pixBytes = this.pixBytes;\n    var predictor = this.str.getByte();\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n    var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n    if (prevRow.length === 0) {\n      prevRow = new Uint8Array(rowBytes);\n    }\n    var i,\n        j = bufferLength,\n        up,\n        c;\n    switch (predictor) {\n      case 0:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        break;\n      case 1:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xFF;\n          j++;\n        }\n        break;\n      case 2:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = prevRow[i] + rawBytes[i] & 0xFF;\n        }\n        break;\n      case 3:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xFF;\n          j++;\n        }\n        break;\n      case 4:\n        for (i = 0; i < pixBytes; ++i) {\n          up = prevRow[i];\n          c = rawBytes[i];\n          buffer[j++] = up + c;\n        }\n        for (; i < rowBytes; ++i) {\n          up = prevRow[i];\n          var upLeft = prevRow[i - pixBytes];\n          var left = buffer[j - pixBytes];\n          var p = left + up - upLeft;\n          var pa = p - left;\n          if (pa < 0) {\n            pa = -pa;\n          }\n          var pb = p - up;\n          if (pb < 0) {\n            pb = -pb;\n          }\n          var pc = p - upLeft;\n          if (pc < 0) {\n            pc = -pc;\n          }\n          c = rawBytes[i];\n          if (pa <= pb && pa <= pc) {\n            buffer[j++] = left + c;\n          } else if (pb <= pc) {\n            buffer[j++] = up + c;\n          } else {\n            buffer[j++] = upLeft + c;\n          }\n        }\n        break;\n      default:\n        throw new _util.FormatError('Unsupported predictor: ' + predictor);\n    }\n    this.bufferLength += rowBytes;\n  };\n  return PredictorStream;\n}();\nvar DecryptStream = function DecryptStreamClosure() {\n  function DecryptStream(str, maybeLength, decrypt) {\n    this.str = str;\n    this.dict = str.dict;\n    this.decrypt = decrypt;\n    this.nextChunk = null;\n    this.initialized = false;\n    DecodeStream.call(this, maybeLength);\n  }\n  var chunkSize = 512;\n  DecryptStream.prototype = Object.create(DecodeStream.prototype);\n  DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {\n    var chunk;\n    if (this.initialized) {\n      chunk = this.nextChunk;\n    } else {\n      chunk = this.str.getBytes(chunkSize);\n      this.initialized = true;\n    }\n    if (!chunk || chunk.length === 0) {\n      this.eof = true;\n      return;\n    }\n    this.nextChunk = this.str.getBytes(chunkSize);\n    var hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n    var decrypt = this.decrypt;\n    chunk = decrypt(chunk, !hasMoreData);\n    var bufferLength = this.bufferLength;\n    var i,\n        n = chunk.length;\n    var buffer = this.ensureBuffer(bufferLength + n);\n    for (i = 0; i < n; i++) {\n      buffer[bufferLength++] = chunk[i];\n    }\n    this.bufferLength = bufferLength;\n  };\n  return DecryptStream;\n}();\nvar Ascii85Stream = function Ascii85StreamClosure() {\n  function Ascii85Stream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n    this.input = new Uint8Array(5);\n    if (maybeLength) {\n      maybeLength = 0.8 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n  Ascii85Stream.prototype = Object.create(DecodeStream.prototype);\n  Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {\n    var TILDA_CHAR = 0x7E;\n    var Z_LOWER_CHAR = 0x7A;\n    var EOF = -1;\n    var str = this.str;\n    var c = str.getByte();\n    while ((0, _util.isSpace)(c)) {\n      c = str.getByte();\n    }\n    if (c === EOF || c === TILDA_CHAR) {\n      this.eof = true;\n      return;\n    }\n    var bufferLength = this.bufferLength,\n        buffer;\n    var i;\n    if (c === Z_LOWER_CHAR) {\n      buffer = this.ensureBuffer(bufferLength + 4);\n      for (i = 0; i < 4; ++i) {\n        buffer[bufferLength + i] = 0;\n      }\n      this.bufferLength += 4;\n    } else {\n      var input = this.input;\n      input[0] = c;\n      for (i = 1; i < 5; ++i) {\n        c = str.getByte();\n        while ((0, _util.isSpace)(c)) {\n          c = str.getByte();\n        }\n        input[i] = c;\n        if (c === EOF || c === TILDA_CHAR) {\n          break;\n        }\n      }\n      buffer = this.ensureBuffer(bufferLength + i - 1);\n      this.bufferLength += i - 1;\n      if (i < 5) {\n        for (; i < 5; ++i) {\n          input[i] = 0x21 + 84;\n        }\n        this.eof = true;\n      }\n      var t = 0;\n      for (i = 0; i < 5; ++i) {\n        t = t * 85 + (input[i] - 0x21);\n      }\n      for (i = 3; i >= 0; --i) {\n        buffer[bufferLength + i] = t & 0xFF;\n        t >>= 8;\n      }\n    }\n  };\n  return Ascii85Stream;\n}();\nvar AsciiHexStream = function AsciiHexStreamClosure() {\n  function AsciiHexStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n    this.firstDigit = -1;\n    if (maybeLength) {\n      maybeLength = 0.5 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n  AsciiHexStream.prototype = Object.create(DecodeStream.prototype);\n  AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {\n    var UPSTREAM_BLOCK_SIZE = 8000;\n    var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n    if (!bytes.length) {\n      this.eof = true;\n      return;\n    }\n    var maxDecodeLength = bytes.length + 1 >> 1;\n    var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n    var bufferLength = this.bufferLength;\n    var firstDigit = this.firstDigit;\n    for (var i = 0, ii = bytes.length; i < ii; i++) {\n      var ch = bytes[i],\n          digit;\n      if (ch >= 0x30 && ch <= 0x39) {\n        digit = ch & 0x0F;\n      } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n        digit = (ch & 0x0F) + 9;\n      } else if (ch === 0x3E) {\n        this.eof = true;\n        break;\n      } else {\n        continue;\n      }\n      if (firstDigit < 0) {\n        firstDigit = digit;\n      } else {\n        buffer[bufferLength++] = firstDigit << 4 | digit;\n        firstDigit = -1;\n      }\n    }\n    if (firstDigit >= 0 && this.eof) {\n      buffer[bufferLength++] = firstDigit << 4;\n      firstDigit = -1;\n    }\n    this.firstDigit = firstDigit;\n    this.bufferLength = bufferLength;\n  };\n  return AsciiHexStream;\n}();\nvar RunLengthStream = function RunLengthStreamClosure() {\n  function RunLengthStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n    DecodeStream.call(this, maybeLength);\n  }\n  RunLengthStream.prototype = Object.create(DecodeStream.prototype);\n  RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {\n    var repeatHeader = this.str.getBytes(2);\n    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n      this.eof = true;\n      return;\n    }\n    var buffer;\n    var bufferLength = this.bufferLength;\n    var n = repeatHeader[0];\n    if (n < 128) {\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      buffer[bufferLength++] = repeatHeader[1];\n      if (n > 0) {\n        var source = this.str.getBytes(n);\n        buffer.set(source, bufferLength);\n        bufferLength += n;\n      }\n    } else {\n      n = 257 - n;\n      var b = repeatHeader[1];\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      for (var i = 0; i < n; i++) {\n        buffer[bufferLength++] = b;\n      }\n    }\n    this.bufferLength = bufferLength;\n  };\n  return RunLengthStream;\n}();\nvar LZWStream = function LZWStreamClosure() {\n  function LZWStream(str, maybeLength, earlyChange) {\n    this.str = str;\n    this.dict = str.dict;\n    this.cachedData = 0;\n    this.bitsCached = 0;\n    var maxLzwDictionarySize = 4096;\n    var lzwState = {\n      earlyChange: earlyChange,\n      codeLength: 9,\n      nextCode: 258,\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\n      currentSequenceLength: 0\n    };\n    for (var i = 0; i < 256; ++i) {\n      lzwState.dictionaryValues[i] = i;\n      lzwState.dictionaryLengths[i] = 1;\n    }\n    this.lzwState = lzwState;\n    DecodeStream.call(this, maybeLength);\n  }\n  LZWStream.prototype = Object.create(DecodeStream.prototype);\n  LZWStream.prototype.readBits = function LZWStream_readBits(n) {\n    var bitsCached = this.bitsCached;\n    var cachedData = this.cachedData;\n    while (bitsCached < n) {\n      var c = this.str.getByte();\n      if (c === -1) {\n        this.eof = true;\n        return null;\n      }\n      cachedData = cachedData << 8 | c;\n      bitsCached += 8;\n    }\n    this.bitsCached = bitsCached -= n;\n    this.cachedData = cachedData;\n    this.lastCode = null;\n    return cachedData >>> bitsCached & (1 << n) - 1;\n  };\n  LZWStream.prototype.readBlock = function LZWStream_readBlock() {\n    var blockSize = 512;\n    var estimatedDecodedSize = blockSize * 2,\n        decodedSizeDelta = blockSize;\n    var i, j, q;\n    var lzwState = this.lzwState;\n    if (!lzwState) {\n      return;\n    }\n    var earlyChange = lzwState.earlyChange;\n    var nextCode = lzwState.nextCode;\n    var dictionaryValues = lzwState.dictionaryValues;\n    var dictionaryLengths = lzwState.dictionaryLengths;\n    var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n    var codeLength = lzwState.codeLength;\n    var prevCode = lzwState.prevCode;\n    var currentSequence = lzwState.currentSequence;\n    var currentSequenceLength = lzwState.currentSequenceLength;\n    var decodedLength = 0;\n    var currentBufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n    for (i = 0; i < blockSize; i++) {\n      var code = this.readBits(codeLength);\n      var hasPrev = currentSequenceLength > 0;\n      if (code < 256) {\n        currentSequence[0] = code;\n        currentSequenceLength = 1;\n      } else if (code >= 258) {\n        if (code < nextCode) {\n          currentSequenceLength = dictionaryLengths[code];\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n            currentSequence[j] = dictionaryValues[q];\n            q = dictionaryPrevCodes[q];\n          }\n        } else {\n          currentSequence[currentSequenceLength++] = currentSequence[0];\n        }\n      } else if (code === 256) {\n        codeLength = 9;\n        nextCode = 258;\n        currentSequenceLength = 0;\n        continue;\n      } else {\n        this.eof = true;\n        delete this.lzwState;\n        break;\n      }\n      if (hasPrev) {\n        dictionaryPrevCodes[nextCode] = prevCode;\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n        dictionaryValues[nextCode] = currentSequence[0];\n        nextCode++;\n        codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;\n      }\n      prevCode = code;\n      decodedLength += currentSequenceLength;\n      if (estimatedDecodedSize < decodedLength) {\n        do {\n          estimatedDecodedSize += decodedSizeDelta;\n        } while (estimatedDecodedSize < decodedLength);\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n      }\n      for (j = 0; j < currentSequenceLength; j++) {\n        buffer[currentBufferLength++] = currentSequence[j];\n      }\n    }\n    lzwState.nextCode = nextCode;\n    lzwState.codeLength = codeLength;\n    lzwState.prevCode = prevCode;\n    lzwState.currentSequenceLength = currentSequenceLength;\n    this.bufferLength = currentBufferLength;\n  };\n  return LZWStream;\n}();\nvar NullStream = function NullStreamClosure() {\n  function NullStream() {\n    Stream.call(this, new Uint8Array(0));\n  }\n  NullStream.prototype = Stream.prototype;\n  return NullStream;\n}();\nexports.Ascii85Stream = Ascii85Stream;\nexports.AsciiHexStream = AsciiHexStream;\nexports.DecryptStream = DecryptStream;\nexports.DecodeStream = DecodeStream;\nexports.FlateStream = FlateStream;\nexports.NullStream = NullStream;\nexports.PredictorStream = PredictorStream;\nexports.RunLengthStream = RunLengthStream;\nexports.Stream = Stream;\nexports.StreamsSequenceStream = StreamsSequenceStream;\nexports.StringStream = StringStream;\nexports.LZWStream = LZWStream;\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CCITTFaxStream = undefined;\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _ccitt = __w_pdfjs_require__(142);\n\nvar _stream = __w_pdfjs_require__(140);\n\nvar CCITTFaxStream = function CCITTFaxStreamClosure() {\n  function CCITTFaxStream(str, maybeLength, params) {\n    this.str = str;\n    this.dict = str.dict;\n    if (!(0, _primitives.isDict)(params)) {\n      params = _primitives.Dict.empty;\n    }\n    var source = {\n      next: function next() {\n        return str.getByte();\n      }\n    };\n    this.ccittFaxDecoder = new _ccitt.CCITTFaxDecoder(source, {\n      K: params.get('K'),\n      EndOfLine: params.get('EndOfLine'),\n      EncodedByteAlign: params.get('EncodedByteAlign'),\n      Columns: params.get('Columns'),\n      Rows: params.get('Rows'),\n      EndOfBlock: params.get('EndOfBlock'),\n      BlackIs1: params.get('BlackIs1')\n    });\n    _stream.DecodeStream.call(this, maybeLength);\n  }\n  CCITTFaxStream.prototype = Object.create(_stream.DecodeStream.prototype);\n  CCITTFaxStream.prototype.readBlock = function () {\n    while (!this.eof) {\n      var c = this.ccittFaxDecoder.readNextChar();\n      if (c === -1) {\n        this.eof = true;\n        return;\n      }\n      this.ensureBuffer(this.bufferLength + 1);\n      this.buffer[this.bufferLength++] = c;\n    }\n  };\n  return CCITTFaxStream;\n}();\nexports.CCITTFaxStream = CCITTFaxStream;\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CCITTFaxDecoder = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar CCITTFaxDecoder = function CCITTFaxDecoder() {\n  var ccittEOL = -2;\n  var ccittEOF = -1;\n  var twoDimPass = 0;\n  var twoDimHoriz = 1;\n  var twoDimVert0 = 2;\n  var twoDimVertR1 = 3;\n  var twoDimVertL1 = 4;\n  var twoDimVertR2 = 5;\n  var twoDimVertL2 = 6;\n  var twoDimVertR3 = 7;\n  var twoDimVertL3 = 8;\n  var twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]];\n  var whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]];\n  var whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]];\n  var blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]];\n  var blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];\n  var blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];\n  function CCITTFaxDecoder(source) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    if (!source || typeof source.next !== 'function') {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n    this.source = source;\n    this.eof = false;\n    this.encoding = options['K'] || 0;\n    this.eoline = options['EndOfLine'] || false;\n    this.byteAlign = options['EncodedByteAlign'] || false;\n    this.columns = options['Columns'] || 1728;\n    this.rows = options['Rows'] || 0;\n    var eoblock = options['EndOfBlock'];\n    if (eoblock === null || eoblock === undefined) {\n      eoblock = true;\n    }\n    this.eoblock = eoblock;\n    this.black = options['BlackIs1'] || false;\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n    var code1 = void 0;\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n      this._eatBits(1);\n    }\n  }\n  CCITTFaxDecoder.prototype = {\n    readNextChar: function readNextChar() {\n      if (this.eof) {\n        return -1;\n      }\n      var refLine = this.refLine;\n      var codingLine = this.codingLine;\n      var columns = this.columns;\n      var refPos = void 0,\n          blackPixels = void 0,\n          bits = void 0,\n          i = void 0;\n      if (this.outputBits === 0) {\n        if (this.rowsDone) {\n          this.eof = true;\n        }\n        if (this.eof) {\n          return -1;\n        }\n        this.err = false;\n        var code1 = void 0,\n            code2 = void 0,\n            code3 = void 0;\n        if (this.nextLine2D) {\n          for (i = 0; codingLine[i] < columns; ++i) {\n            refLine[i] = codingLine[i];\n          }\n          refLine[i++] = columns;\n          refLine[i] = columns;\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          refPos = 0;\n          blackPixels = 0;\n          while (codingLine[this.codingPos] < columns) {\n            code1 = this._getTwoDimCode();\n            switch (code1) {\n              case twoDimPass:\n                this._addPixels(refLine[refPos + 1], blackPixels);\n                if (refLine[refPos + 1] < columns) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimHoriz:\n                code1 = code2 = 0;\n                if (blackPixels) {\n                  do {\n                    code1 += code3 = this._getBlackCode();\n                  } while (code3 >= 64);\n                  do {\n                    code2 += code3 = this._getWhiteCode();\n                  } while (code3 >= 64);\n                } else {\n                  do {\n                    code1 += code3 = this._getWhiteCode();\n                  } while (code3 >= 64);\n                  do {\n                    code2 += code3 = this._getBlackCode();\n                  } while (code3 >= 64);\n                }\n                this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n                if (codingLine[this.codingPos] < columns) {\n                  this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1);\n                }\n                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimVertR3:\n                this._addPixels(refLine[refPos] + 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR2:\n                this._addPixels(refLine[refPos] + 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR1:\n                this._addPixels(refLine[refPos] + 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVert0:\n                this._addPixels(refLine[refPos], blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL3:\n                this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL2:\n                this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL1:\n                this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case ccittEOF:\n                this._addPixels(columns, 0);\n                this.eof = true;\n                break;\n              default:\n                (0, _util.info)('bad 2d code');\n                this._addPixels(columns, 0);\n                this.err = true;\n            }\n          }\n        } else {\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          blackPixels = 0;\n          while (codingLine[this.codingPos] < columns) {\n            code1 = 0;\n            if (blackPixels) {\n              do {\n                code1 += code3 = this._getBlackCode();\n              } while (code3 >= 64);\n            } else {\n              do {\n                code1 += code3 = this._getWhiteCode();\n              } while (code3 >= 64);\n            }\n            this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n            blackPixels ^= 1;\n          }\n        }\n        var gotEOL = false;\n        if (this.byteAlign) {\n          this.inputBits &= ~7;\n        }\n        if (!this.eoblock && this.row === this.rows - 1) {\n          this.rowsDone = true;\n        } else {\n          code1 = this._lookBits(12);\n          if (this.eoline) {\n            while (code1 !== ccittEOF && code1 !== 1) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          } else {\n            while (code1 === 0) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          }\n          if (code1 === 1) {\n            this._eatBits(12);\n            gotEOL = true;\n          } else if (code1 === ccittEOF) {\n            this.eof = true;\n          }\n        }\n        if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n          this.nextLine2D = !this._lookBits(1);\n          this._eatBits(1);\n        }\n        if (this.eoblock && gotEOL && this.byteAlign) {\n          code1 = this._lookBits(12);\n          if (code1 === 1) {\n            this._eatBits(12);\n            if (this.encoding > 0) {\n              this._lookBits(1);\n              this._eatBits(1);\n            }\n            if (this.encoding >= 0) {\n              for (i = 0; i < 4; ++i) {\n                code1 = this._lookBits(12);\n                if (code1 !== 1) {\n                  (0, _util.info)('bad rtc code: ' + code1);\n                }\n                this._eatBits(12);\n                if (this.encoding > 0) {\n                  this._lookBits(1);\n                  this._eatBits(1);\n                }\n              }\n            }\n            this.eof = true;\n          }\n        } else if (this.err && this.eoline) {\n          while (true) {\n            code1 = this._lookBits(13);\n            if (code1 === ccittEOF) {\n              this.eof = true;\n              return -1;\n            }\n            if (code1 >> 1 === 1) {\n              break;\n            }\n            this._eatBits(1);\n          }\n          this._eatBits(12);\n          if (this.encoding > 0) {\n            this._eatBits(1);\n            this.nextLine2D = !(code1 & 1);\n          }\n        }\n        if (codingLine[0] > 0) {\n          this.outputBits = codingLine[this.codingPos = 0];\n        } else {\n          this.outputBits = codingLine[this.codingPos = 1];\n        }\n        this.row++;\n      }\n      var c = void 0;\n      if (this.outputBits >= 8) {\n        c = this.codingPos & 1 ? 0 : 0xFF;\n        this.outputBits -= 8;\n        if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n          this.codingPos++;\n          this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n        }\n      } else {\n        bits = 8;\n        c = 0;\n        do {\n          if (this.outputBits > bits) {\n            c <<= bits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xFF >> 8 - bits;\n            }\n            this.outputBits -= bits;\n            bits = 0;\n          } else {\n            c <<= this.outputBits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xFF >> 8 - this.outputBits;\n            }\n            bits -= this.outputBits;\n            this.outputBits = 0;\n            if (codingLine[this.codingPos] < columns) {\n              this.codingPos++;\n              this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n            } else if (bits > 0) {\n              c <<= bits;\n              bits = 0;\n            }\n          }\n        } while (bits);\n      }\n      if (this.black) {\n        c ^= 0xFF;\n      }\n      return c;\n    },\n    _addPixels: function _addPixels(a1, blackPixels) {\n      var codingLine = this.codingLine;\n      var codingPos = this.codingPos;\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          (0, _util.info)('row is wrong length');\n          this.err = true;\n          a1 = this.columns;\n        }\n        if (codingPos & 1 ^ blackPixels) {\n          ++codingPos;\n        }\n        codingLine[codingPos] = a1;\n      }\n      this.codingPos = codingPos;\n    },\n    _addPixelsNeg: function _addPixelsNeg(a1, blackPixels) {\n      var codingLine = this.codingLine;\n      var codingPos = this.codingPos;\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          (0, _util.info)('row is wrong length');\n          this.err = true;\n          a1 = this.columns;\n        }\n        if (codingPos & 1 ^ blackPixels) {\n          ++codingPos;\n        }\n        codingLine[codingPos] = a1;\n      } else if (a1 < codingLine[codingPos]) {\n        if (a1 < 0) {\n          (0, _util.info)('invalid code');\n          this.err = true;\n          a1 = 0;\n        }\n        while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n          --codingPos;\n        }\n        codingLine[codingPos] = a1;\n      }\n      this.codingPos = codingPos;\n    },\n    _findTableCode: function _findTableCode(start, end, table, limit) {\n      var limitValue = limit || 0;\n      for (var i = start; i <= end; ++i) {\n        var code = this._lookBits(i);\n        if (code === ccittEOF) {\n          return [true, 1, false];\n        }\n        if (i < end) {\n          code <<= end - i;\n        }\n        if (!limitValue || code >= limitValue) {\n          var p = table[code - limitValue];\n          if (p[0] === i) {\n            this._eatBits(i);\n            return [true, p[1], true];\n          }\n        }\n      }\n      return [false, 0, false];\n    },\n    _getTwoDimCode: function _getTwoDimCode() {\n      var code = 0;\n      var p = void 0;\n      if (this.eoblock) {\n        code = this._lookBits(7);\n        p = twoDimTable[code];\n        if (p && p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        var result = this._findTableCode(1, 7, twoDimTable);\n        if (result[0] && result[2]) {\n          return result[1];\n        }\n      }\n      (0, _util.info)('Bad two dim code');\n      return ccittEOF;\n    },\n    _getWhiteCode: function _getWhiteCode() {\n      var code = 0;\n      var p = void 0;\n      if (this.eoblock) {\n        code = this._lookBits(12);\n        if (code === ccittEOF) {\n          return 1;\n        }\n        if (code >> 5 === 0) {\n          p = whiteTable1[code];\n        } else {\n          p = whiteTable2[code >> 3];\n        }\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        var result = this._findTableCode(1, 9, whiteTable2);\n        if (result[0]) {\n          return result[1];\n        }\n        result = this._findTableCode(11, 12, whiteTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      (0, _util.info)('bad white code');\n      this._eatBits(1);\n      return 1;\n    },\n    _getBlackCode: function _getBlackCode() {\n      var code = void 0,\n          p = void 0;\n      if (this.eoblock) {\n        code = this._lookBits(13);\n        if (code === ccittEOF) {\n          return 1;\n        }\n        if (code >> 7 === 0) {\n          p = blackTable1[code];\n        } else if (code >> 9 === 0 && code >> 7 !== 0) {\n          p = blackTable2[(code >> 1) - 64];\n        } else {\n          p = blackTable3[code >> 7];\n        }\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        var result = this._findTableCode(2, 6, blackTable3);\n        if (result[0]) {\n          return result[1];\n        }\n        result = this._findTableCode(7, 12, blackTable2, 64);\n        if (result[0]) {\n          return result[1];\n        }\n        result = this._findTableCode(10, 13, blackTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      (0, _util.info)('bad black code');\n      this._eatBits(1);\n      return 1;\n    },\n    _lookBits: function _lookBits(n) {\n      var c = void 0;\n      while (this.inputBits < n) {\n        if ((c = this.source.next()) === -1) {\n          if (this.inputBits === 0) {\n            return ccittEOF;\n          }\n          return this.inputBuf << n - this.inputBits & 0xFFFF >> 16 - n;\n        }\n        this.inputBuf = this.inputBuf << 8 | c;\n        this.inputBits += 8;\n      }\n      return this.inputBuf >> this.inputBits - n & 0xFFFF >> 16 - n;\n    },\n    _eatBits: function _eatBits(n) {\n      if ((this.inputBits -= n) < 0) {\n        this.inputBits = 0;\n      }\n    }\n  };\n  return CCITTFaxDecoder;\n}();\nexports.CCITTFaxDecoder = CCITTFaxDecoder;\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Jbig2Stream = undefined;\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _stream = __w_pdfjs_require__(140);\n\nvar _jbig = __w_pdfjs_require__(144);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar Jbig2Stream = function Jbig2StreamClosure() {\n  function Jbig2Stream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n    _stream.DecodeStream.call(this, maybeLength);\n  }\n  Jbig2Stream.prototype = Object.create(_stream.DecodeStream.prototype);\n  Object.defineProperty(Jbig2Stream.prototype, 'bytes', {\n    get: function get() {\n      return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));\n    },\n\n    configurable: true\n  });\n  Jbig2Stream.prototype.ensureBuffer = function (requested) {};\n  Jbig2Stream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    var jbig2Image = new _jbig.Jbig2Image();\n    var chunks = [];\n    if ((0, _primitives.isDict)(this.params)) {\n      var globalsStream = this.params.get('JBIG2Globals');\n      if ((0, _primitives.isStream)(globalsStream)) {\n        var globals = globalsStream.getBytes();\n        chunks.push({\n          data: globals,\n          start: 0,\n          end: globals.length\n        });\n      }\n    }\n    chunks.push({\n      data: this.bytes,\n      start: 0,\n      end: this.bytes.length\n    });\n    var data = jbig2Image.parseChunks(chunks);\n    var dataLength = data.length;\n    for (var i = 0; i < dataLength; i++) {\n      data[i] ^= 0xFF;\n    }\n    this.buffer = data;\n    this.bufferLength = dataLength;\n    this.eof = true;\n  };\n  return Jbig2Stream;\n}();\nexports.Jbig2Stream = Jbig2Stream;\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Jbig2Image = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _arithmetic_decoder = __w_pdfjs_require__(145);\n\nvar _ccitt = __w_pdfjs_require__(142);\n\nvar Jbig2Error = function Jbig2ErrorClosure() {\n  function Jbig2Error(msg) {\n    this.message = 'JBIG2 error: ' + msg;\n  }\n  Jbig2Error.prototype = new Error();\n  Jbig2Error.prototype.name = 'Jbig2Error';\n  Jbig2Error.constructor = Jbig2Error;\n  return Jbig2Error;\n}();\nvar Jbig2Image = function Jbig2ImageClosure() {\n  function ContextCache() {}\n  ContextCache.prototype = {\n    getContexts: function getContexts(id) {\n      if (id in this) {\n        return this[id];\n      }\n      return this[id] = new Int8Array(1 << 16);\n    }\n  };\n  function DecodingContext(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n  DecodingContext.prototype = {\n    get decoder() {\n      var decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end);\n      return (0, _util.shadow)(this, 'decoder', decoder);\n    },\n    get contextCache() {\n      var cache = new ContextCache();\n      return (0, _util.shadow)(this, 'contextCache', cache);\n    }\n  };\n  function decodeInteger(contextCache, procedure, decoder) {\n    var contexts = contextCache.getContexts(procedure);\n    var prev = 1;\n    function readBits(length) {\n      var v = 0;\n      for (var i = 0; i < length; i++) {\n        var bit = decoder.readBit(contexts, prev);\n        prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256;\n        v = v << 1 | bit;\n      }\n      return v >>> 0;\n    }\n    var sign = readBits(1);\n    var value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2);\n    return sign === 0 ? value : value > 0 ? -value : null;\n  }\n  function decodeIAID(contextCache, decoder, codeLength) {\n    var contexts = contextCache.getContexts('IAID');\n    var prev = 1;\n    for (var i = 0; i < codeLength; i++) {\n      var bit = decoder.readBit(contexts, prev);\n      prev = prev << 1 | bit;\n    }\n    if (codeLength < 31) {\n      return prev & (1 << codeLength) - 1;\n    }\n    return prev & 0x7FFFFFFF;\n  }\n  var SegmentTypes = ['SymbolDictionary', null, null, null, 'IntermediateTextRegion', null, 'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null, null, null, null, null, null, 'PatternDictionary', null, null, null, 'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion', 'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null, null, null, null, null, null, 'IntermediateGenericRegion', null, 'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion', 'IntermediateGenericRefinementRegion', null, 'ImmediateGenericRefinementRegion', 'ImmediateLosslessGenericRefinementRegion', null, null, null, null, 'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles', 'Tables', null, null, null, null, null, null, null, null, 'Extension'];\n  var CodingTemplates = [[{\n    x: -1,\n    y: -2\n  }, {\n    x: 0,\n    y: -2\n  }, {\n    x: 1,\n    y: -2\n  }, {\n    x: -2,\n    y: -1\n  }, {\n    x: -1,\n    y: -1\n  }, {\n    x: 0,\n    y: -1\n  }, {\n    x: 1,\n    y: -1\n  }, {\n    x: 2,\n    y: -1\n  }, {\n    x: -4,\n    y: 0\n  }, {\n    x: -3,\n    y: 0\n  }, {\n    x: -2,\n    y: 0\n  }, {\n    x: -1,\n    y: 0\n  }], [{\n    x: -1,\n    y: -2\n  }, {\n    x: 0,\n    y: -2\n  }, {\n    x: 1,\n    y: -2\n  }, {\n    x: 2,\n    y: -2\n  }, {\n    x: -2,\n    y: -1\n  }, {\n    x: -1,\n    y: -1\n  }, {\n    x: 0,\n    y: -1\n  }, {\n    x: 1,\n    y: -1\n  }, {\n    x: 2,\n    y: -1\n  }, {\n    x: -3,\n    y: 0\n  }, {\n    x: -2,\n    y: 0\n  }, {\n    x: -1,\n    y: 0\n  }], [{\n    x: -1,\n    y: -2\n  }, {\n    x: 0,\n    y: -2\n  }, {\n    x: 1,\n    y: -2\n  }, {\n    x: -2,\n    y: -1\n  }, {\n    x: -1,\n    y: -1\n  }, {\n    x: 0,\n    y: -1\n  }, {\n    x: 1,\n    y: -1\n  }, {\n    x: -2,\n    y: 0\n  }, {\n    x: -1,\n    y: 0\n  }], [{\n    x: -3,\n    y: -1\n  }, {\n    x: -2,\n    y: -1\n  }, {\n    x: -1,\n    y: -1\n  }, {\n    x: 0,\n    y: -1\n  }, {\n    x: 1,\n    y: -1\n  }, {\n    x: -4,\n    y: 0\n  }, {\n    x: -3,\n    y: 0\n  }, {\n    x: -2,\n    y: 0\n  }, {\n    x: -1,\n    y: 0\n  }]];\n  var RefinementTemplates = [{\n    coding: [{\n      x: 0,\n      y: -1\n    }, {\n      x: 1,\n      y: -1\n    }, {\n      x: -1,\n      y: 0\n    }],\n    reference: [{\n      x: 0,\n      y: -1\n    }, {\n      x: 1,\n      y: -1\n    }, {\n      x: -1,\n      y: 0\n    }, {\n      x: 0,\n      y: 0\n    }, {\n      x: 1,\n      y: 0\n    }, {\n      x: -1,\n      y: 1\n    }, {\n      x: 0,\n      y: 1\n    }, {\n      x: 1,\n      y: 1\n    }]\n  }, {\n    coding: [{\n      x: -1,\n      y: -1\n    }, {\n      x: 0,\n      y: -1\n    }, {\n      x: 1,\n      y: -1\n    }, {\n      x: -1,\n      y: 0\n    }],\n    reference: [{\n      x: 0,\n      y: -1\n    }, {\n      x: -1,\n      y: 0\n    }, {\n      x: 0,\n      y: 0\n    }, {\n      x: 1,\n      y: 0\n    }, {\n      x: 0,\n      y: 1\n    }, {\n      x: 1,\n      y: 1\n    }]\n  }];\n  var ReusedContexts = [0x9B25, 0x0795, 0x00E5, 0x0195];\n  var RefinementReusedContexts = [0x0020, 0x0008];\n  function decodeBitmapTemplate0(width, height, decodingContext) {\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts('GB');\n    var contextLabel,\n        i,\n        j,\n        pixel,\n        row,\n        row1,\n        row2,\n        bitmap = [];\n    var OLD_PIXEL_MASK = 0x7BF7;\n    for (i = 0; i < height; i++) {\n      row = bitmap[i] = new Uint8Array(width);\n      row1 = i < 1 ? row : bitmap[i - 1];\n      row2 = i < 2 ? row : bitmap[i - 2];\n      contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4;\n      for (j = 0; j < width; j++) {\n        row[j] = pixel = decoder.readBit(contexts, contextLabel);\n        contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;\n      }\n    }\n    return bitmap;\n  }\n  function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) {\n    if (mmr) {\n      var input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n      return decodeMMRBitmap(input, width, height, false);\n    }\n    if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {\n      return decodeBitmapTemplate0(width, height, decodingContext);\n    }\n    var useskip = !!skip;\n    var template = CodingTemplates[templateIndex].concat(at);\n    template.sort(function (a, b) {\n      return a.y - b.y || a.x - b.x;\n    });\n    var templateLength = template.length;\n    var templateX = new Int8Array(templateLength);\n    var templateY = new Int8Array(templateLength);\n    var changingTemplateEntries = [];\n    var reuseMask = 0,\n        minX = 0,\n        maxX = 0,\n        minY = 0;\n    var c, k;\n    for (k = 0; k < templateLength; k++) {\n      templateX[k] = template[k].x;\n      templateY[k] = template[k].y;\n      minX = Math.min(minX, template[k].x);\n      maxX = Math.max(maxX, template[k].x);\n      minY = Math.min(minY, template[k].y);\n      if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) {\n        reuseMask |= 1 << templateLength - 1 - k;\n      } else {\n        changingTemplateEntries.push(k);\n      }\n    }\n    var changingEntriesLength = changingTemplateEntries.length;\n    var changingTemplateX = new Int8Array(changingEntriesLength);\n    var changingTemplateY = new Int8Array(changingEntriesLength);\n    var changingTemplateBit = new Uint16Array(changingEntriesLength);\n    for (c = 0; c < changingEntriesLength; c++) {\n      k = changingTemplateEntries[c];\n      changingTemplateX[c] = template[k].x;\n      changingTemplateY[c] = template[k].y;\n      changingTemplateBit[c] = 1 << templateLength - 1 - k;\n    }\n    var sbb_left = -minX;\n    var sbb_top = -minY;\n    var sbb_right = width - maxX;\n    var pseudoPixelContext = ReusedContexts[templateIndex];\n    var row = new Uint8Array(width);\n    var bitmap = [];\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts('GB');\n    var ltp = 0,\n        j,\n        i0,\n        j0,\n        contextLabel = 0,\n        bit,\n        shift;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          bitmap.push(row);\n          continue;\n        }\n      }\n      row = new Uint8Array(row);\n      bitmap.push(row);\n      for (j = 0; j < width; j++) {\n        if (useskip && skip[i][j]) {\n          row[j] = 0;\n          continue;\n        }\n        if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n          contextLabel = contextLabel << 1 & reuseMask;\n          for (k = 0; k < changingEntriesLength; k++) {\n            i0 = i + changingTemplateY[k];\n            j0 = j + changingTemplateX[k];\n            bit = bitmap[i0][j0];\n            if (bit) {\n              bit = changingTemplateBit[k];\n              contextLabel |= bit;\n            }\n          }\n        } else {\n          contextLabel = 0;\n          shift = templateLength - 1;\n          for (k = 0; k < templateLength; k++, shift--) {\n            j0 = j + templateX[k];\n            if (j0 >= 0 && j0 < width) {\n              i0 = i + templateY[k];\n              if (i0 >= 0) {\n                bit = bitmap[i0][j0];\n                if (bit) {\n                  contextLabel |= bit << shift;\n                }\n              }\n            }\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n    return bitmap;\n  }\n  function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) {\n    var codingTemplate = RefinementTemplates[templateIndex].coding;\n    if (templateIndex === 0) {\n      codingTemplate = codingTemplate.concat([at[0]]);\n    }\n    var codingTemplateLength = codingTemplate.length;\n    var codingTemplateX = new Int32Array(codingTemplateLength);\n    var codingTemplateY = new Int32Array(codingTemplateLength);\n    var k;\n    for (k = 0; k < codingTemplateLength; k++) {\n      codingTemplateX[k] = codingTemplate[k].x;\n      codingTemplateY[k] = codingTemplate[k].y;\n    }\n    var referenceTemplate = RefinementTemplates[templateIndex].reference;\n    if (templateIndex === 0) {\n      referenceTemplate = referenceTemplate.concat([at[1]]);\n    }\n    var referenceTemplateLength = referenceTemplate.length;\n    var referenceTemplateX = new Int32Array(referenceTemplateLength);\n    var referenceTemplateY = new Int32Array(referenceTemplateLength);\n    for (k = 0; k < referenceTemplateLength; k++) {\n      referenceTemplateX[k] = referenceTemplate[k].x;\n      referenceTemplateY[k] = referenceTemplate[k].y;\n    }\n    var referenceWidth = referenceBitmap[0].length;\n    var referenceHeight = referenceBitmap.length;\n    var pseudoPixelContext = RefinementReusedContexts[templateIndex];\n    var bitmap = [];\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts('GR');\n    var ltp = 0;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          throw new Jbig2Error('prediction is not supported');\n        }\n      }\n      var row = new Uint8Array(width);\n      bitmap.push(row);\n      for (var j = 0; j < width; j++) {\n        var i0, j0;\n        var contextLabel = 0;\n        for (k = 0; k < codingTemplateLength; k++) {\n          i0 = i + codingTemplateY[k];\n          j0 = j + codingTemplateX[k];\n          if (i0 < 0 || j0 < 0 || j0 >= width) {\n            contextLabel <<= 1;\n          } else {\n            contextLabel = contextLabel << 1 | bitmap[i0][j0];\n          }\n        }\n        for (k = 0; k < referenceTemplateLength; k++) {\n          i0 = i + referenceTemplateY[k] - offsetY;\n          j0 = j + referenceTemplateX[k] - offsetX;\n          if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n            contextLabel <<= 1;\n          } else {\n            contextLabel = contextLabel << 1 | referenceBitmap[i0][j0];\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n    return bitmap;\n  }\n  function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) {\n    if (huffman && refinement) {\n      throw new Jbig2Error('symbol refinement with Huffman is not supported');\n    }\n    var newSymbols = [];\n    var currentHeight = 0;\n    var symbolCodeLength = (0, _util.log2)(symbols.length + numberOfNewSymbols);\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n    var tableB1 = void 0,\n        symbolWidths = void 0;\n    if (huffman) {\n      tableB1 = getStandardTable(1);\n      symbolWidths = [];\n      symbolCodeLength = Math.max(symbolCodeLength, 1);\n    }\n    while (newSymbols.length < numberOfNewSymbols) {\n      var deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, 'IADH', decoder);\n      currentHeight += deltaHeight;\n      var currentWidth = 0,\n          totalWidth = 0;\n      var firstSymbol = huffman ? symbolWidths.length : 0;\n      while (true) {\n        var deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, 'IADW', decoder);\n        if (deltaWidth === null) {\n          break;\n        }\n        currentWidth += deltaWidth;\n        totalWidth += currentWidth;\n        var bitmap;\n        if (refinement) {\n          var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder);\n          if (numberOfInstances > 1) {\n            bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput);\n          } else {\n            var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n            var rdx = decodeInteger(contextCache, 'IARDX', decoder);\n            var rdy = decodeInteger(contextCache, 'IARDY', decoder);\n            var symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length];\n            bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext);\n          }\n          newSymbols.push(bitmap);\n        } else if (huffman) {\n          symbolWidths.push(currentWidth);\n        } else {\n          bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext);\n          newSymbols.push(bitmap);\n        }\n      }\n      if (huffman && !refinement) {\n        var bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n        huffmanInput.byteAlign();\n        var collectiveBitmap = void 0;\n        if (bitmapSize === 0) {\n          collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight);\n        } else {\n          var originalEnd = huffmanInput.end;\n          var bitmapEnd = huffmanInput.position + bitmapSize;\n          huffmanInput.end = bitmapEnd;\n          collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false);\n          huffmanInput.end = originalEnd;\n          huffmanInput.position = bitmapEnd;\n        }\n        var numberOfSymbolsDecoded = symbolWidths.length;\n        if (firstSymbol === numberOfSymbolsDecoded - 1) {\n          newSymbols.push(collectiveBitmap);\n        } else {\n          var _i = void 0,\n              y = void 0,\n              xMin = 0,\n              xMax = void 0,\n              bitmapWidth = void 0,\n              symbolBitmap = void 0;\n          for (_i = firstSymbol; _i < numberOfSymbolsDecoded; _i++) {\n            bitmapWidth = symbolWidths[_i];\n            xMax = xMin + bitmapWidth;\n            symbolBitmap = [];\n            for (y = 0; y < currentHeight; y++) {\n              symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n            }\n            newSymbols.push(symbolBitmap);\n            xMin = xMax;\n          }\n        }\n      }\n    }\n    var exportedSymbols = [];\n    var flags = [],\n        currentFlag = false;\n    var totalSymbolsLength = symbols.length + numberOfNewSymbols;\n    while (flags.length < totalSymbolsLength) {\n      var runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, 'IAEX', decoder);\n      while (runLength--) {\n        flags.push(currentFlag);\n      }\n      currentFlag = !currentFlag;\n    }\n    for (var i = 0, ii = symbols.length; i < ii; i++) {\n      if (flags[i]) {\n        exportedSymbols.push(symbols[i]);\n      }\n    }\n    for (var j = 0; j < numberOfNewSymbols; i++, j++) {\n      if (flags[i]) {\n        exportedSymbols.push(newSymbols[j]);\n      }\n    }\n    return exportedSymbols;\n  }\n  function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) {\n    if (huffman && refinement) {\n      throw new Jbig2Error('refinement with Huffman is not supported');\n    }\n    var bitmap = [];\n    var i, row;\n    for (i = 0; i < height; i++) {\n      row = new Uint8Array(width);\n      if (defaultPixelValue) {\n        for (var j = 0; j < width; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      bitmap.push(row);\n    }\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n    var stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, 'IADT', decoder);\n    var firstS = 0;\n    i = 0;\n    while (i < numberOfSymbolInstances) {\n      var deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, 'IADT', decoder);\n      stripT += deltaT;\n      var deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, 'IAFS', decoder);\n      firstS += deltaFirstS;\n      var currentS = firstS;\n      do {\n        var currentT = 0;\n        if (stripSize > 1) {\n          currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, 'IAIT', decoder);\n        }\n        var t = stripSize * stripT + currentT;\n        var symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength);\n        var applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, 'IARI', decoder));\n        var symbolBitmap = inputSymbols[symbolId];\n        var symbolWidth = symbolBitmap[0].length;\n        var symbolHeight = symbolBitmap.length;\n        if (applyRefinement) {\n          var rdw = decodeInteger(contextCache, 'IARDW', decoder);\n          var rdh = decodeInteger(contextCache, 'IARDH', decoder);\n          var rdx = decodeInteger(contextCache, 'IARDX', decoder);\n          var rdy = decodeInteger(contextCache, 'IARDY', decoder);\n          symbolWidth += rdw;\n          symbolHeight += rdh;\n          symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext);\n        }\n        var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n        var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n        var s2, t2, symbolRow;\n        if (transposed) {\n          for (s2 = 0; s2 < symbolHeight; s2++) {\n            row = bitmap[offsetS + s2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[s2];\n            var maxWidth = Math.min(width - offsetT, symbolWidth);\n            switch (combinationOperator) {\n              case 0:\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] |= symbolRow[t2];\n                }\n                break;\n              case 2:\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] ^= symbolRow[t2];\n                }\n                break;\n              default:\n                throw new Jbig2Error('operator ' + combinationOperator + ' is not supported');\n            }\n          }\n          currentS += symbolHeight - 1;\n        } else {\n          for (t2 = 0; t2 < symbolHeight; t2++) {\n            row = bitmap[offsetT + t2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[t2];\n            switch (combinationOperator) {\n              case 0:\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] |= symbolRow[s2];\n                }\n                break;\n              case 2:\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] ^= symbolRow[s2];\n                }\n                break;\n              default:\n                throw new Jbig2Error('operator ' + combinationOperator + ' is not supported');\n            }\n          }\n          currentS += symbolWidth - 1;\n        }\n        i++;\n        var deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, 'IADS', decoder);\n        if (deltaS === null) {\n          break;\n        }\n        currentS += deltaS + dsOffset;\n      } while (true);\n    }\n    return bitmap;\n  }\n  function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) {\n    var at = [];\n    if (!mmr) {\n      at.push({\n        x: -patternWidth,\n        y: 0\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1\n        });\n        at.push({\n          x: 2,\n          y: -2\n        });\n        at.push({\n          x: -2,\n          y: -2\n        });\n      }\n    }\n    var collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n    var collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext);\n    var patterns = [],\n        i = 0,\n        patternBitmap = void 0,\n        xMin = void 0,\n        xMax = void 0,\n        y = void 0;\n    while (i <= maxPatternIndex) {\n      patternBitmap = [];\n      xMin = patternWidth * i;\n      xMax = xMin + patternWidth;\n      for (y = 0; y < patternHeight; y++) {\n        patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n      }\n      patterns.push(patternBitmap);\n      i++;\n    }\n    return patterns;\n  }\n  function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) {\n    var skip = null;\n    if (enableSkip) {\n      throw new Jbig2Error('skip is not supported');\n    }\n    if (combinationOperator !== 0) {\n      throw new Jbig2Error('operator ' + combinationOperator + ' is not supported in halftone region');\n    }\n    var regionBitmap = [];\n    var i = void 0,\n        j = void 0,\n        row = void 0;\n    for (i = 0; i < regionHeight; i++) {\n      row = new Uint8Array(regionWidth);\n      if (defaultPixelValue) {\n        for (j = 0; j < regionWidth; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      regionBitmap.push(row);\n    }\n    var numberOfPatterns = patterns.length;\n    var pattern0 = patterns[0];\n    var patternWidth = pattern0[0].length,\n        patternHeight = pattern0.length;\n    var bitsPerValue = (0, _util.log2)(numberOfPatterns);\n    var at = [];\n    if (!mmr) {\n      at.push({\n        x: template <= 1 ? 3 : 2,\n        y: -1\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1\n        });\n        at.push({\n          x: 2,\n          y: -2\n        });\n        at.push({\n          x: -2,\n          y: -2\n        });\n      }\n    }\n    var grayScaleBitPlanes = [],\n        mmrInput = void 0,\n        bitmap = void 0;\n    if (mmr) {\n      mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n    }\n    for (i = bitsPerValue - 1; i >= 0; i--) {\n      if (mmr) {\n        bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n      } else {\n        bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext);\n      }\n      grayScaleBitPlanes[i] = bitmap;\n    }\n    var mg = void 0,\n        ng = void 0,\n        bit = void 0,\n        patternIndex = void 0,\n        patternBitmap = void 0,\n        x = void 0,\n        y = void 0,\n        patternRow = void 0,\n        regionRow = void 0;\n    for (mg = 0; mg < gridHeight; mg++) {\n      for (ng = 0; ng < gridWidth; ng++) {\n        bit = 0;\n        patternIndex = 0;\n        for (j = bitsPerValue - 1; j >= 0; j--) {\n          bit = grayScaleBitPlanes[j][mg][ng] ^ bit;\n          patternIndex |= bit << j;\n        }\n        patternBitmap = patterns[patternIndex];\n        x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8;\n        y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8;\n        if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {\n          for (i = 0; i < patternHeight; i++) {\n            regionRow = regionBitmap[y + i];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionRow[x + j] |= patternRow[j];\n            }\n          }\n        } else {\n          var regionX = void 0,\n              regionY = void 0;\n          for (i = 0; i < patternHeight; i++) {\n            regionY = y + i;\n            if (regionY < 0 || regionY >= regionHeight) {\n              continue;\n            }\n            regionRow = regionBitmap[regionY];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionX = x + j;\n              if (regionX >= 0 && regionX < regionWidth) {\n                regionRow[regionX] |= patternRow[j];\n              }\n            }\n          }\n        }\n      }\n    }\n    return regionBitmap;\n  }\n  function readSegmentHeader(data, start) {\n    var segmentHeader = {};\n    segmentHeader.number = (0, _util.readUint32)(data, start);\n    var flags = data[start + 4];\n    var segmentType = flags & 0x3F;\n    if (!SegmentTypes[segmentType]) {\n      throw new Jbig2Error('invalid segment type: ' + segmentType);\n    }\n    segmentHeader.type = segmentType;\n    segmentHeader.typeName = SegmentTypes[segmentType];\n    segmentHeader.deferredNonRetain = !!(flags & 0x80);\n    var pageAssociationFieldSize = !!(flags & 0x40);\n    var referredFlags = data[start + 5];\n    var referredToCount = referredFlags >> 5 & 7;\n    var retainBits = [referredFlags & 31];\n    var position = start + 6;\n    if (referredFlags === 7) {\n      referredToCount = (0, _util.readUint32)(data, position - 1) & 0x1FFFFFFF;\n      position += 3;\n      var bytes = referredToCount + 7 >> 3;\n      retainBits[0] = data[position++];\n      while (--bytes > 0) {\n        retainBits.push(data[position++]);\n      }\n    } else if (referredFlags === 5 || referredFlags === 6) {\n      throw new Jbig2Error('invalid referred-to flags');\n    }\n    segmentHeader.retainBits = retainBits;\n    var referredToSegmentNumberSize = segmentHeader.number <= 256 ? 1 : segmentHeader.number <= 65536 ? 2 : 4;\n    var referredTo = [];\n    var i, ii;\n    for (i = 0; i < referredToCount; i++) {\n      var number = referredToSegmentNumberSize === 1 ? data[position] : referredToSegmentNumberSize === 2 ? (0, _util.readUint16)(data, position) : (0, _util.readUint32)(data, position);\n      referredTo.push(number);\n      position += referredToSegmentNumberSize;\n    }\n    segmentHeader.referredTo = referredTo;\n    if (!pageAssociationFieldSize) {\n      segmentHeader.pageAssociation = data[position++];\n    } else {\n      segmentHeader.pageAssociation = (0, _util.readUint32)(data, position);\n      position += 4;\n    }\n    segmentHeader.length = (0, _util.readUint32)(data, position);\n    position += 4;\n    if (segmentHeader.length === 0xFFFFFFFF) {\n      if (segmentType === 38) {\n        var genericRegionInfo = readRegionSegmentInformation(data, position);\n        var genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength];\n        var genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n        var searchPatternLength = 6;\n        var searchPattern = new Uint8Array(searchPatternLength);\n        if (!genericRegionMmr) {\n          searchPattern[0] = 0xFF;\n          searchPattern[1] = 0xAC;\n        }\n        searchPattern[2] = genericRegionInfo.height >>> 24 & 0xFF;\n        searchPattern[3] = genericRegionInfo.height >> 16 & 0xFF;\n        searchPattern[4] = genericRegionInfo.height >> 8 & 0xFF;\n        searchPattern[5] = genericRegionInfo.height & 0xFF;\n        for (i = position, ii = data.length; i < ii; i++) {\n          var j = 0;\n          while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n            j++;\n          }\n          if (j === searchPatternLength) {\n            segmentHeader.length = i + searchPatternLength;\n            break;\n          }\n        }\n        if (segmentHeader.length === 0xFFFFFFFF) {\n          throw new Jbig2Error('segment end was not found');\n        }\n      } else {\n        throw new Jbig2Error('invalid unknown segment length');\n      }\n    }\n    segmentHeader.headerEnd = position;\n    return segmentHeader;\n  }\n  function readSegments(header, data, start, end) {\n    var segments = [];\n    var position = start;\n    while (position < end) {\n      var segmentHeader = readSegmentHeader(data, position);\n      position = segmentHeader.headerEnd;\n      var segment = {\n        header: segmentHeader,\n        data: data\n      };\n      if (!header.randomAccess) {\n        segment.start = position;\n        position += segmentHeader.length;\n        segment.end = position;\n      }\n      segments.push(segment);\n      if (segmentHeader.type === 51) {\n        break;\n      }\n    }\n    if (header.randomAccess) {\n      for (var i = 0, ii = segments.length; i < ii; i++) {\n        segments[i].start = position;\n        position += segments[i].header.length;\n        segments[i].end = position;\n      }\n    }\n    return segments;\n  }\n  function readRegionSegmentInformation(data, start) {\n    return {\n      width: (0, _util.readUint32)(data, start),\n      height: (0, _util.readUint32)(data, start + 4),\n      x: (0, _util.readUint32)(data, start + 8),\n      y: (0, _util.readUint32)(data, start + 12),\n      combinationOperator: data[start + 16] & 7\n    };\n  }\n  var RegionSegmentInformationFieldLength = 17;\n  function processSegment(segment, visitor) {\n    var header = segment.header;\n    var data = segment.data,\n        position = segment.start,\n        end = segment.end;\n    var args, at, i, atLength;\n    switch (header.type) {\n      case 0:\n        var dictionary = {};\n        var dictionaryFlags = (0, _util.readUint16)(data, position);\n        dictionary.huffman = !!(dictionaryFlags & 1);\n        dictionary.refinement = !!(dictionaryFlags & 2);\n        dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3;\n        dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3;\n        dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1;\n        dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1;\n        dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n        dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n        dictionary.template = dictionaryFlags >> 10 & 3;\n        dictionary.refinementTemplate = dictionaryFlags >> 12 & 1;\n        position += 2;\n        if (!dictionary.huffman) {\n          atLength = dictionary.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: (0, _util.readInt8)(data, position),\n              y: (0, _util.readInt8)(data, position + 1)\n            });\n            position += 2;\n          }\n          dictionary.at = at;\n        }\n        if (dictionary.refinement && !dictionary.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: (0, _util.readInt8)(data, position),\n              y: (0, _util.readInt8)(data, position + 1)\n            });\n            position += 2;\n          }\n          dictionary.refinementAt = at;\n        }\n        dictionary.numberOfExportedSymbols = (0, _util.readUint32)(data, position);\n        position += 4;\n        dictionary.numberOfNewSymbols = (0, _util.readUint32)(data, position);\n        position += 4;\n        args = [dictionary, header.number, header.referredTo, data, position, end];\n        break;\n      case 6:\n      case 7:\n        var textRegion = {};\n        textRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var textRegionSegmentFlags = (0, _util.readUint16)(data, position);\n        position += 2;\n        textRegion.huffman = !!(textRegionSegmentFlags & 1);\n        textRegion.refinement = !!(textRegionSegmentFlags & 2);\n        textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3;\n        textRegion.stripSize = 1 << textRegion.logStripSize;\n        textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3;\n        textRegion.transposed = !!(textRegionSegmentFlags & 64);\n        textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3;\n        textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1;\n        textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27;\n        textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1;\n        if (textRegion.huffman) {\n          var textRegionHuffmanFlags = (0, _util.readUint16)(data, position);\n          position += 2;\n          textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n          textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3;\n          textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3;\n          textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3;\n          textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3;\n          textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3;\n          textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3;\n          textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000);\n        }\n        if (textRegion.refinement && !textRegion.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: (0, _util.readInt8)(data, position),\n              y: (0, _util.readInt8)(data, position + 1)\n            });\n            position += 2;\n          }\n          textRegion.refinementAt = at;\n        }\n        textRegion.numberOfSymbolInstances = (0, _util.readUint32)(data, position);\n        position += 4;\n        args = [textRegion, header.referredTo, data, position, end];\n        break;\n      case 16:\n        var patternDictionary = {};\n        var patternDictionaryFlags = data[position++];\n        patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n        patternDictionary.template = patternDictionaryFlags >> 1 & 3;\n        patternDictionary.patternWidth = data[position++];\n        patternDictionary.patternHeight = data[position++];\n        patternDictionary.maxPatternIndex = (0, _util.readUint32)(data, position);\n        position += 4;\n        args = [patternDictionary, header.number, data, position, end];\n        break;\n      case 22:\n      case 23:\n        var halftoneRegion = {};\n        halftoneRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var halftoneRegionFlags = data[position++];\n        halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n        halftoneRegion.template = halftoneRegionFlags >> 1 & 3;\n        halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n        halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7;\n        halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1;\n        halftoneRegion.gridWidth = (0, _util.readUint32)(data, position);\n        position += 4;\n        halftoneRegion.gridHeight = (0, _util.readUint32)(data, position);\n        position += 4;\n        halftoneRegion.gridOffsetX = (0, _util.readUint32)(data, position) & 0xFFFFFFFF;\n        position += 4;\n        halftoneRegion.gridOffsetY = (0, _util.readUint32)(data, position) & 0xFFFFFFFF;\n        position += 4;\n        halftoneRegion.gridVectorX = (0, _util.readUint16)(data, position);\n        position += 2;\n        halftoneRegion.gridVectorY = (0, _util.readUint16)(data, position);\n        position += 2;\n        args = [halftoneRegion, header.referredTo, data, position, end];\n        break;\n      case 38:\n      case 39:\n        var genericRegion = {};\n        genericRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var genericRegionSegmentFlags = data[position++];\n        genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n        genericRegion.template = genericRegionSegmentFlags >> 1 & 3;\n        genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n        if (!genericRegion.mmr) {\n          atLength = genericRegion.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: (0, _util.readInt8)(data, position),\n              y: (0, _util.readInt8)(data, position + 1)\n            });\n            position += 2;\n          }\n          genericRegion.at = at;\n        }\n        args = [genericRegion, data, position, end];\n        break;\n      case 48:\n        var pageInfo = {\n          width: (0, _util.readUint32)(data, position),\n          height: (0, _util.readUint32)(data, position + 4),\n          resolutionX: (0, _util.readUint32)(data, position + 8),\n          resolutionY: (0, _util.readUint32)(data, position + 12)\n        };\n        if (pageInfo.height === 0xFFFFFFFF) {\n          delete pageInfo.height;\n        }\n        var pageSegmentFlags = data[position + 16];\n        (0, _util.readUint16)(data, position + 17);\n        pageInfo.lossless = !!(pageSegmentFlags & 1);\n        pageInfo.refinement = !!(pageSegmentFlags & 2);\n        pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1;\n        pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3;\n        pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n        pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n        args = [pageInfo];\n        break;\n      case 49:\n        break;\n      case 50:\n        break;\n      case 51:\n        break;\n      case 53:\n        args = [header.number, data, position, end];\n        break;\n      case 62:\n        break;\n      default:\n        throw new Jbig2Error('segment type ' + header.typeName + '(' + header.type + ')' + ' is not implemented');\n    }\n    var callbackName = 'on' + header.typeName;\n    if (callbackName in visitor) {\n      visitor[callbackName].apply(visitor, args);\n    }\n  }\n  function processSegments(segments, visitor) {\n    for (var i = 0, ii = segments.length; i < ii; i++) {\n      processSegment(segments[i], visitor);\n    }\n  }\n  function parseJbig2Chunks(chunks) {\n    var visitor = new SimpleSegmentVisitor();\n    for (var i = 0, ii = chunks.length; i < ii; i++) {\n      var chunk = chunks[i];\n      var segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n      processSegments(segments, visitor);\n    }\n    return visitor.buffer;\n  }\n  function parseJbig2(data) {\n    var position = 0,\n        end = data.length;\n    if (data[position] !== 0x97 || data[position + 1] !== 0x4A || data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || data[position + 4] !== 0x0D || data[position + 5] !== 0x0A || data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) {\n      throw new Jbig2Error('parseJbig2 - invalid header.');\n    }\n    var header = Object.create(null);\n    position += 8;\n    var flags = data[position++];\n    header.randomAccess = !(flags & 1);\n    if (!(flags & 2)) {\n      header.numberOfPages = (0, _util.readUint32)(data, position);\n      position += 4;\n    }\n    var segments = readSegments(header, data, position, end);\n    var visitor = new SimpleSegmentVisitor();\n    processSegments(segments, visitor);\n    var _visitor$currentPageI = visitor.currentPageInfo,\n        width = _visitor$currentPageI.width,\n        height = _visitor$currentPageI.height;\n\n    var bitPacked = visitor.buffer;\n    var imgData = new Uint8ClampedArray(width * height);\n    var q = 0,\n        k = 0;\n    for (var i = 0; i < height; i++) {\n      var mask = 0,\n          buffer = void 0;\n      for (var j = 0; j < width; j++) {\n        if (!mask) {\n          mask = 128;\n          buffer = bitPacked[k++];\n        }\n        imgData[q++] = buffer & mask ? 0 : 255;\n        mask >>= 1;\n      }\n    }\n    return {\n      imgData: imgData,\n      width: width,\n      height: height\n    };\n  }\n  function SimpleSegmentVisitor() {}\n  SimpleSegmentVisitor.prototype = {\n    onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {\n      this.currentPageInfo = info;\n      var rowSize = info.width + 7 >> 3;\n      var buffer = new Uint8ClampedArray(rowSize * info.height);\n      if (info.defaultPixelValue) {\n        for (var i = 0, ii = buffer.length; i < ii; i++) {\n          buffer[i] = 0xFF;\n        }\n      }\n      this.buffer = buffer;\n    },\n    drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {\n      var pageInfo = this.currentPageInfo;\n      var width = regionInfo.width,\n          height = regionInfo.height;\n      var rowSize = pageInfo.width + 7 >> 3;\n      var combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator;\n      var buffer = this.buffer;\n      var mask0 = 128 >> (regionInfo.x & 7);\n      var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n      var i, j, mask, offset;\n      switch (combinationOperator) {\n        case 0:\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] |= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        case 2:\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] ^= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        default:\n          throw new Jbig2Error('operator ' + combinationOperator + ' is not supported');\n      }\n    },\n    onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(region, data, start, end) {\n      var regionInfo = region.info;\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext);\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {\n      this.onImmediateGenericRegion.apply(this, arguments);\n    },\n    onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) {\n      var huffmanTables = void 0,\n          huffmanInput = void 0;\n      if (dictionary.huffman) {\n        huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables);\n        huffmanInput = new Reader(data, start, end);\n      }\n      var symbols = this.symbols;\n      if (!symbols) {\n        this.symbols = symbols = {};\n      }\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        var referredSymbols = symbols[referredSegments[i]];\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n      var decodingContext = new DecodingContext(data, start, end);\n      symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput);\n    },\n    onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(region, referredSegments, data, start, end) {\n      var regionInfo = region.info;\n      var huffmanTables = void 0,\n          huffmanInput = void 0;\n      var symbols = this.symbols;\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        var referredSymbols = symbols[referredSegments[i]];\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n      var symbolCodeLength = (0, _util.log2)(inputSymbols.length);\n      if (region.huffman) {\n        huffmanInput = new Reader(data, start, end);\n        huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput);\n      }\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput);\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {\n      this.onImmediateTextRegion.apply(this, arguments);\n    },\n    onPatternDictionary: function onPatternDictionary(dictionary, currentSegment, data, start, end) {\n      var patterns = this.patterns;\n      if (!patterns) {\n        this.patterns = patterns = {};\n      }\n      var decodingContext = new DecodingContext(data, start, end);\n      patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);\n    },\n    onImmediateHalftoneRegion: function onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n      var patterns = this.patterns[referredSegments[0]];\n      var regionInfo = region.info;\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext);\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessHalftoneRegion: function onImmediateLosslessHalftoneRegion() {\n      this.onImmediateHalftoneRegion.apply(this, arguments);\n    },\n    onTables: function onTables(currentSegment, data, start, end) {\n      var customTables = this.customTables;\n      if (!customTables) {\n        this.customTables = customTables = {};\n      }\n      customTables[currentSegment] = decodeTablesSegment(data, start, end);\n    }\n  };\n  function HuffmanLine(lineData) {\n    if (lineData.length === 2) {\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = lineData[4] === 'lower';\n    }\n  }\n  function HuffmanTreeNode(line) {\n    this.children = [];\n    if (line) {\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      this.isLeaf = false;\n    }\n  }\n  HuffmanTreeNode.prototype = {\n    buildTree: function buildTree(line, shift) {\n      var bit = line.prefixCode >> shift & 1;\n      if (shift <= 0) {\n        this.children[bit] = new HuffmanTreeNode(line);\n      } else {\n        var node = this.children[bit];\n        if (!node) {\n          this.children[bit] = node = new HuffmanTreeNode(null);\n        }\n        node.buildTree(line, shift - 1);\n      }\n    },\n    decodeNode: function decodeNode(reader) {\n      if (this.isLeaf) {\n        if (this.isOOB) {\n          return null;\n        }\n        var htOffset = reader.readBits(this.rangeLength);\n        return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n      }\n      var node = this.children[reader.readBit()];\n      if (!node) {\n        throw new Jbig2Error('invalid Huffman data');\n      }\n      return node.decodeNode(reader);\n    }\n  };\n  function HuffmanTable(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n    this.rootNode = new HuffmanTreeNode(null);\n    var i = void 0,\n        ii = lines.length,\n        line = void 0;\n    for (i = 0; i < ii; i++) {\n      line = lines[i];\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n  HuffmanTable.prototype = {\n    decode: function decode(reader) {\n      return this.rootNode.decodeNode(reader);\n    },\n    assignPrefixCodes: function assignPrefixCodes(lines) {\n      var linesLength = lines.length,\n          prefixLengthMax = 0,\n          i = void 0;\n      for (i = 0; i < linesLength; i++) {\n        prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n      }\n      var histogram = new Uint32Array(prefixLengthMax + 1);\n      for (i = 0; i < linesLength; i++) {\n        histogram[lines[i].prefixLength]++;\n      }\n      var currentLength = 1,\n          firstCode = 0,\n          currentCode = void 0,\n          currentTemp = void 0,\n          line = void 0;\n      histogram[0] = 0;\n      while (currentLength <= prefixLengthMax) {\n        firstCode = firstCode + histogram[currentLength - 1] << 1;\n        currentCode = firstCode;\n        currentTemp = 0;\n        while (currentTemp < linesLength) {\n          line = lines[currentTemp];\n          if (line.prefixLength === currentLength) {\n            line.prefixCode = currentCode;\n            currentCode++;\n          }\n          currentTemp++;\n        }\n        currentLength++;\n      }\n    }\n  };\n  function decodeTablesSegment(data, start, end) {\n    var flags = data[start];\n    var lowestValue = (0, _util.readUint32)(data, start + 1) & 0xFFFFFFFF;\n    var highestValue = (0, _util.readUint32)(data, start + 5) & 0xFFFFFFFF;\n    var reader = new Reader(data, start + 9, end);\n    var prefixSizeBits = (flags >> 1 & 7) + 1;\n    var rangeSizeBits = (flags >> 4 & 7) + 1;\n    var lines = [];\n    var prefixLength = void 0,\n        rangeLength = void 0,\n        currentRangeLow = lowestValue;\n    do {\n      prefixLength = reader.readBits(prefixSizeBits);\n      rangeLength = reader.readBits(rangeSizeBits);\n      lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0]));\n      currentRangeLow += 1 << rangeLength;\n    } while (currentRangeLow < highestValue);\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, 'lower']));\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n    if (flags & 1) {\n      prefixLength = reader.readBits(prefixSizeBits);\n      lines.push(new HuffmanLine([prefixLength, 0]));\n    }\n    return new HuffmanTable(lines, false);\n  }\n  var standardTablesCache = {};\n  function getStandardTable(number) {\n    var table = standardTablesCache[number];\n    if (table) {\n      return table;\n    }\n    var lines = void 0;\n    switch (number) {\n      case 1:\n        lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]];\n        break;\n      case 2:\n        lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xE], [11, 5, 6, 0x1E], [75, 6, 32, 0x3E], [6, 0x3F]];\n        break;\n      case 3:\n        lines = [[-256, 8, 8, 0xFE], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xE], [11, 5, 6, 0x1E], [-257, 8, 32, 0xFF, 'lower'], [75, 7, 32, 0x7E], [6, 0x3E]];\n        break;\n      case 4:\n        lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xE], [12, 5, 6, 0x1E], [76, 5, 32, 0x1F]];\n        break;\n      case 5:\n        lines = [[-255, 7, 8, 0x7E], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xE], [12, 5, 6, 0x1E], [-256, 7, 32, 0x7F, 'lower'], [76, 6, 32, 0x3E]];\n        break;\n      case 6:\n        lines = [[-2048, 5, 10, 0x1C], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xA], [-128, 5, 6, 0x1D], [-64, 5, 5, 0x1E], [-32, 4, 5, 0xB], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xC], [1024, 4, 10, 0xD], [-2049, 6, 32, 0x3E, 'lower'], [2048, 6, 32, 0x3F]];\n        break;\n      case 7:\n        lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1A], [-64, 5, 5, 0x1B], [-32, 4, 5, 0xA], [0, 4, 5, 0xB], [32, 5, 5, 0x1C], [64, 5, 6, 0x1D], [128, 4, 7, 0xC], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1E, 'lower'], [2048, 5, 32, 0x1F]];\n        break;\n      case 8:\n        lines = [[-15, 8, 3, 0xFC], [-7, 9, 1, 0x1FC], [-5, 8, 1, 0xFD], [-3, 9, 0, 0x1FD], [-2, 7, 0, 0x7C], [-1, 4, 0, 0xA], [0, 2, 1, 0x0], [2, 5, 0, 0x1A], [3, 6, 0, 0x3A], [4, 3, 4, 0x4], [20, 6, 1, 0x3B], [22, 4, 4, 0xB], [38, 4, 5, 0xC], [70, 5, 6, 0x1B], [134, 5, 7, 0x1C], [262, 6, 7, 0x3C], [390, 7, 8, 0x7D], [646, 6, 10, 0x3D], [-16, 9, 32, 0x1FE, 'lower'], [1670, 9, 32, 0x1FF], [2, 0x1]];\n        break;\n      case 9:\n        lines = [[-31, 8, 4, 0xFC], [-15, 9, 2, 0x1FC], [-11, 8, 2, 0xFD], [-7, 9, 1, 0x1FD], [-5, 7, 1, 0x7C], [-3, 4, 1, 0xA], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1A], [5, 6, 1, 0x3A], [7, 3, 5, 0x4], [39, 6, 2, 0x3B], [43, 4, 5, 0xB], [75, 4, 6, 0xC], [139, 5, 7, 0x1B], [267, 5, 8, 0x1C], [523, 6, 8, 0x3C], [779, 7, 9, 0x7D], [1291, 6, 11, 0x3D], [-32, 9, 32, 0x1FE, 'lower'], [3339, 9, 32, 0x1FF], [2, 0x0]];\n        break;\n      case 10:\n        lines = [[-21, 7, 4, 0x7A], [-5, 8, 0, 0xFC], [-4, 7, 0, 0x7B], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7C], [5, 8, 0, 0xFD], [6, 2, 6, 0x1], [70, 5, 5, 0x1A], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3A], [582, 6, 9, 0x3B], [1094, 6, 10, 0x3C], [2118, 7, 11, 0x7D], [-22, 8, 32, 0xFE, 'lower'], [4166, 8, 32, 0xFF], [2, 0x2]];\n        break;\n      case 11:\n        lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xC], [5, 4, 1, 0xD], [7, 5, 1, 0x1C], [9, 5, 2, 0x1D], [13, 6, 2, 0x3C], [17, 7, 2, 0x7A], [21, 7, 3, 0x7B], [29, 7, 4, 0x7C], [45, 7, 5, 0x7D], [77, 7, 6, 0x7E], [141, 7, 32, 0x7F]];\n        break;\n      case 12:\n        lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1C], [6, 5, 1, 0x1D], [8, 6, 1, 0x3C], [10, 7, 0, 0x7A], [11, 7, 1, 0x7B], [13, 7, 2, 0x7C], [17, 7, 3, 0x7D], [25, 7, 4, 0x7E], [41, 8, 5, 0xFE], [73, 8, 32, 0xFF]];\n        break;\n      case 13:\n        lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xC], [4, 5, 0, 0x1C], [5, 4, 1, 0xD], [7, 3, 3, 0x5], [15, 6, 1, 0x3A], [17, 6, 2, 0x3B], [21, 6, 3, 0x3C], [29, 6, 4, 0x3D], [45, 6, 5, 0x3E], [77, 7, 6, 0x7E], [141, 7, 32, 0x7F]];\n        break;\n      case 14:\n        lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]];\n        break;\n      case 15:\n        lines = [[-24, 7, 4, 0x7C], [-8, 6, 2, 0x3C], [-4, 5, 1, 0x1C], [-2, 4, 0, 0xC], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xD], [3, 5, 1, 0x1D], [5, 6, 2, 0x3D], [9, 7, 4, 0x7D], [-25, 7, 32, 0x7E, 'lower'], [25, 7, 32, 0x7F]];\n        break;\n      default:\n        throw new Jbig2Error('standard table B.' + number + ' does not exist');\n    }\n    var length = lines.length,\n        i = void 0;\n    for (i = 0; i < length; i++) {\n      lines[i] = new HuffmanLine(lines[i]);\n    }\n    table = new HuffmanTable(lines, true);\n    standardTablesCache[number] = table;\n    return table;\n  }\n  function Reader(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n  Reader.prototype = {\n    readBit: function readBit() {\n      if (this.shift < 0) {\n        if (this.position >= this.end) {\n          throw new Jbig2Error('end of data while reading bit');\n        }\n        this.currentByte = this.data[this.position++];\n        this.shift = 7;\n      }\n      var bit = this.currentByte >> this.shift & 1;\n      this.shift--;\n      return bit;\n    },\n    readBits: function readBits(numBits) {\n      var result = 0,\n          i = void 0;\n      for (i = numBits - 1; i >= 0; i--) {\n        result |= this.readBit() << i;\n      }\n      return result;\n    },\n    byteAlign: function byteAlign() {\n      this.shift = -1;\n    },\n    next: function next() {\n      if (this.position >= this.end) {\n        return -1;\n      }\n      return this.data[this.position++];\n    }\n  };\n  function getCustomHuffmanTable(index, referredTo, customTables) {\n    var currentIndex = 0,\n        i = void 0,\n        ii = referredTo.length,\n        table = void 0;\n    for (i = 0; i < ii; i++) {\n      table = customTables[referredTo[i]];\n      if (table) {\n        if (index === currentIndex) {\n          return table;\n        }\n        currentIndex++;\n      }\n    }\n    throw new Jbig2Error('can\\'t find custom Huffman table');\n  }\n  function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) {\n    var codes = [],\n        i = void 0,\n        codeLength = void 0;\n    for (i = 0; i <= 34; i++) {\n      codeLength = reader.readBits(4);\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n    }\n    var runCodesTable = new HuffmanTable(codes, false);\n    codes.length = 0;\n    for (i = 0; i < numberOfSymbols;) {\n      codeLength = runCodesTable.decode(reader);\n      if (codeLength >= 32) {\n        var repeatedLength = void 0,\n            numberOfRepeats = void 0,\n            j = void 0;\n        switch (codeLength) {\n          case 32:\n            if (i === 0) {\n              throw new Jbig2Error('no previous value in symbol ID table');\n            }\n            numberOfRepeats = reader.readBits(2) + 3;\n            repeatedLength = codes[i - 1].prefixLength;\n            break;\n          case 33:\n            numberOfRepeats = reader.readBits(3) + 3;\n            repeatedLength = 0;\n            break;\n          case 34:\n            numberOfRepeats = reader.readBits(7) + 11;\n            repeatedLength = 0;\n            break;\n          default:\n            throw new Jbig2Error('invalid code length in symbol ID table');\n        }\n        for (j = 0; j < numberOfRepeats; j++) {\n          codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n          i++;\n        }\n      } else {\n        codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n        i++;\n      }\n    }\n    reader.byteAlign();\n    var symbolIDTable = new HuffmanTable(codes, false);\n    var customIndex = 0,\n        tableFirstS = void 0,\n        tableDeltaS = void 0,\n        tableDeltaT = void 0;\n    switch (textRegion.huffmanFS) {\n      case 0:\n      case 1:\n        tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n        break;\n      case 3:\n        tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables);\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error('invalid Huffman FS selector');\n    }\n    switch (textRegion.huffmanDS) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n        break;\n      case 3:\n        tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables);\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error('invalid Huffman DS selector');\n    }\n    switch (textRegion.huffmanDT) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n        break;\n      case 3:\n        tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables);\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error('invalid Huffman DT selector');\n    }\n    if (textRegion.refinement) {\n      throw new Jbig2Error('refinement with Huffman is not supported');\n    }\n    return {\n      symbolIDTable: symbolIDTable,\n      tableFirstS: tableFirstS,\n      tableDeltaS: tableDeltaS,\n      tableDeltaT: tableDeltaT\n    };\n  }\n  function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) {\n    var customIndex = 0,\n        tableDeltaHeight = void 0,\n        tableDeltaWidth = void 0;\n    switch (dictionary.huffmanDHSelector) {\n      case 0:\n      case 1:\n        tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n        break;\n      case 3:\n        tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables);\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error('invalid Huffman DH selector');\n    }\n    switch (dictionary.huffmanDWSelector) {\n      case 0:\n      case 1:\n        tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n        break;\n      case 3:\n        tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables);\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error('invalid Huffman DW selector');\n    }\n    var tableBitmapSize = void 0,\n        tableAggregateInstances = void 0;\n    if (dictionary.bitmapSizeSelector) {\n      tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables);\n      customIndex++;\n    } else {\n      tableBitmapSize = getStandardTable(1);\n    }\n    if (dictionary.aggregationInstancesSelector) {\n      tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables);\n    } else {\n      tableAggregateInstances = getStandardTable(1);\n    }\n    return {\n      tableDeltaHeight: tableDeltaHeight,\n      tableDeltaWidth: tableDeltaWidth,\n      tableBitmapSize: tableBitmapSize,\n      tableAggregateInstances: tableAggregateInstances\n    };\n  }\n  function readUncompressedBitmap(reader, width, height) {\n    var bitmap = [],\n        x = void 0,\n        y = void 0,\n        row = void 0;\n    for (y = 0; y < height; y++) {\n      row = new Uint8Array(width);\n      bitmap.push(row);\n      for (x = 0; x < width; x++) {\n        row[x] = reader.readBit();\n      }\n      reader.byteAlign();\n    }\n    return bitmap;\n  }\n  function decodeMMRBitmap(input, width, height, endOfBlock) {\n    var params = {\n      K: -1,\n      Columns: width,\n      Rows: height,\n      BlackIs1: true,\n      EndOfBlock: endOfBlock\n    };\n    var decoder = new _ccitt.CCITTFaxDecoder(input, params);\n    var bitmap = [],\n        x = void 0,\n        y = void 0,\n        row = void 0,\n        currentByte = void 0,\n        shift = void 0,\n        eof = false;\n    for (y = 0; y < height; y++) {\n      row = new Uint8Array(width);\n      bitmap.push(row);\n      shift = -1;\n      for (x = 0; x < width; x++) {\n        if (shift < 0) {\n          currentByte = decoder.readNextChar();\n          if (currentByte === -1) {\n            currentByte = 0;\n            eof = true;\n          }\n          shift = 7;\n        }\n        row[x] = currentByte >> shift & 1;\n        shift--;\n      }\n    }\n    if (endOfBlock && !eof) {\n      var lookForEOFLimit = 5;\n      for (var i = 0; i < lookForEOFLimit; i++) {\n        if (decoder.readNextChar() === -1) {\n          break;\n        }\n      }\n    }\n    return bitmap;\n  }\n  function Jbig2Image() {}\n  Jbig2Image.prototype = {\n    parseChunks: function parseChunks(chunks) {\n      return parseJbig2Chunks(chunks);\n    },\n    parse: function parse(data) {\n      var _parseJbig = parseJbig2(data),\n          imgData = _parseJbig.imgData,\n          width = _parseJbig.width,\n          height = _parseJbig.height;\n\n      this.width = width;\n      this.height = height;\n      return imgData;\n    }\n  };\n  return Jbig2Image;\n}();\nexports.Jbig2Image = Jbig2Image;\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar ArithmeticDecoder = function ArithmeticDecoderClosure() {\n  var QeTable = [{\n    qe: 0x5601,\n    nmps: 1,\n    nlps: 1,\n    switchFlag: 1\n  }, {\n    qe: 0x3401,\n    nmps: 2,\n    nlps: 6,\n    switchFlag: 0\n  }, {\n    qe: 0x1801,\n    nmps: 3,\n    nlps: 9,\n    switchFlag: 0\n  }, {\n    qe: 0x0AC1,\n    nmps: 4,\n    nlps: 12,\n    switchFlag: 0\n  }, {\n    qe: 0x0521,\n    nmps: 5,\n    nlps: 29,\n    switchFlag: 0\n  }, {\n    qe: 0x0221,\n    nmps: 38,\n    nlps: 33,\n    switchFlag: 0\n  }, {\n    qe: 0x5601,\n    nmps: 7,\n    nlps: 6,\n    switchFlag: 1\n  }, {\n    qe: 0x5401,\n    nmps: 8,\n    nlps: 14,\n    switchFlag: 0\n  }, {\n    qe: 0x4801,\n    nmps: 9,\n    nlps: 14,\n    switchFlag: 0\n  }, {\n    qe: 0x3801,\n    nmps: 10,\n    nlps: 14,\n    switchFlag: 0\n  }, {\n    qe: 0x3001,\n    nmps: 11,\n    nlps: 17,\n    switchFlag: 0\n  }, {\n    qe: 0x2401,\n    nmps: 12,\n    nlps: 18,\n    switchFlag: 0\n  }, {\n    qe: 0x1C01,\n    nmps: 13,\n    nlps: 20,\n    switchFlag: 0\n  }, {\n    qe: 0x1601,\n    nmps: 29,\n    nlps: 21,\n    switchFlag: 0\n  }, {\n    qe: 0x5601,\n    nmps: 15,\n    nlps: 14,\n    switchFlag: 1\n  }, {\n    qe: 0x5401,\n    nmps: 16,\n    nlps: 14,\n    switchFlag: 0\n  }, {\n    qe: 0x5101,\n    nmps: 17,\n    nlps: 15,\n    switchFlag: 0\n  }, {\n    qe: 0x4801,\n    nmps: 18,\n    nlps: 16,\n    switchFlag: 0\n  }, {\n    qe: 0x3801,\n    nmps: 19,\n    nlps: 17,\n    switchFlag: 0\n  }, {\n    qe: 0x3401,\n    nmps: 20,\n    nlps: 18,\n    switchFlag: 0\n  }, {\n    qe: 0x3001,\n    nmps: 21,\n    nlps: 19,\n    switchFlag: 0\n  }, {\n    qe: 0x2801,\n    nmps: 22,\n    nlps: 19,\n    switchFlag: 0\n  }, {\n    qe: 0x2401,\n    nmps: 23,\n    nlps: 20,\n    switchFlag: 0\n  }, {\n    qe: 0x2201,\n    nmps: 24,\n    nlps: 21,\n    switchFlag: 0\n  }, {\n    qe: 0x1C01,\n    nmps: 25,\n    nlps: 22,\n    switchFlag: 0\n  }, {\n    qe: 0x1801,\n    nmps: 26,\n    nlps: 23,\n    switchFlag: 0\n  }, {\n    qe: 0x1601,\n    nmps: 27,\n    nlps: 24,\n    switchFlag: 0\n  }, {\n    qe: 0x1401,\n    nmps: 28,\n    nlps: 25,\n    switchFlag: 0\n  }, {\n    qe: 0x1201,\n    nmps: 29,\n    nlps: 26,\n    switchFlag: 0\n  }, {\n    qe: 0x1101,\n    nmps: 30,\n    nlps: 27,\n    switchFlag: 0\n  }, {\n    qe: 0x0AC1,\n    nmps: 31,\n    nlps: 28,\n    switchFlag: 0\n  }, {\n    qe: 0x09C1,\n    nmps: 32,\n    nlps: 29,\n    switchFlag: 0\n  }, {\n    qe: 0x08A1,\n    nmps: 33,\n    nlps: 30,\n    switchFlag: 0\n  }, {\n    qe: 0x0521,\n    nmps: 34,\n    nlps: 31,\n    switchFlag: 0\n  }, {\n    qe: 0x0441,\n    nmps: 35,\n    nlps: 32,\n    switchFlag: 0\n  }, {\n    qe: 0x02A1,\n    nmps: 36,\n    nlps: 33,\n    switchFlag: 0\n  }, {\n    qe: 0x0221,\n    nmps: 37,\n    nlps: 34,\n    switchFlag: 0\n  }, {\n    qe: 0x0141,\n    nmps: 38,\n    nlps: 35,\n    switchFlag: 0\n  }, {\n    qe: 0x0111,\n    nmps: 39,\n    nlps: 36,\n    switchFlag: 0\n  }, {\n    qe: 0x0085,\n    nmps: 40,\n    nlps: 37,\n    switchFlag: 0\n  }, {\n    qe: 0x0049,\n    nmps: 41,\n    nlps: 38,\n    switchFlag: 0\n  }, {\n    qe: 0x0025,\n    nmps: 42,\n    nlps: 39,\n    switchFlag: 0\n  }, {\n    qe: 0x0015,\n    nmps: 43,\n    nlps: 40,\n    switchFlag: 0\n  }, {\n    qe: 0x0009,\n    nmps: 44,\n    nlps: 41,\n    switchFlag: 0\n  }, {\n    qe: 0x0005,\n    nmps: 45,\n    nlps: 42,\n    switchFlag: 0\n  }, {\n    qe: 0x0001,\n    nmps: 45,\n    nlps: 43,\n    switchFlag: 0\n  }, {\n    qe: 0x5601,\n    nmps: 46,\n    nlps: 46,\n    switchFlag: 0\n  }];\n  function ArithmeticDecoder(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n    this.chigh = data[start];\n    this.clow = 0;\n    this.byteIn();\n    this.chigh = this.chigh << 7 & 0xFFFF | this.clow >> 9 & 0x7F;\n    this.clow = this.clow << 7 & 0xFFFF;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n  ArithmeticDecoder.prototype = {\n    byteIn: function ArithmeticDecoder_byteIn() {\n      var data = this.data;\n      var bp = this.bp;\n      if (data[bp] === 0xFF) {\n        var b1 = data[bp + 1];\n        if (b1 > 0x8F) {\n          this.clow += 0xFF00;\n          this.ct = 8;\n        } else {\n          bp++;\n          this.clow += data[bp] << 9;\n          this.ct = 7;\n          this.bp = bp;\n        }\n      } else {\n        bp++;\n        this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xFF00;\n        this.ct = 8;\n        this.bp = bp;\n      }\n      if (this.clow > 0xFFFF) {\n        this.chigh += this.clow >> 16;\n        this.clow &= 0xFFFF;\n      }\n    },\n    readBit: function ArithmeticDecoder_readBit(contexts, pos) {\n      var cx_index = contexts[pos] >> 1,\n          cx_mps = contexts[pos] & 1;\n      var qeTableIcx = QeTable[cx_index];\n      var qeIcx = qeTableIcx.qe;\n      var d;\n      var a = this.a - qeIcx;\n      if (this.chigh < qeIcx) {\n        if (a < qeIcx) {\n          a = qeIcx;\n          d = cx_mps;\n          cx_index = qeTableIcx.nmps;\n        } else {\n          a = qeIcx;\n          d = 1 ^ cx_mps;\n          if (qeTableIcx.switchFlag === 1) {\n            cx_mps = d;\n          }\n          cx_index = qeTableIcx.nlps;\n        }\n      } else {\n        this.chigh -= qeIcx;\n        if ((a & 0x8000) !== 0) {\n          this.a = a;\n          return cx_mps;\n        }\n        if (a < qeIcx) {\n          d = 1 ^ cx_mps;\n          if (qeTableIcx.switchFlag === 1) {\n            cx_mps = d;\n          }\n          cx_index = qeTableIcx.nlps;\n        } else {\n          d = cx_mps;\n          cx_index = qeTableIcx.nmps;\n        }\n      }\n      do {\n        if (this.ct === 0) {\n          this.byteIn();\n        }\n        a <<= 1;\n        this.chigh = this.chigh << 1 & 0xFFFF | this.clow >> 15 & 1;\n        this.clow = this.clow << 1 & 0xFFFF;\n        this.ct--;\n      } while ((a & 0x8000) === 0);\n      this.a = a;\n      contexts[pos] = cx_index << 1 | cx_mps;\n      return d;\n    }\n  };\n  return ArithmeticDecoder;\n}();\nexports.ArithmeticDecoder = ArithmeticDecoder;\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.JpegStream = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _stream = __w_pdfjs_require__(140);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _jpg = __w_pdfjs_require__(147);\n\nvar JpegStream = function JpegStreamClosure() {\n  function JpegStream(stream, maybeLength, dict, params) {\n    var ch = void 0;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === 0xFF) {\n        stream.skip(-1);\n        break;\n      }\n    }\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n    _stream.DecodeStream.call(this, maybeLength);\n  }\n  JpegStream.prototype = Object.create(_stream.DecodeStream.prototype);\n  Object.defineProperty(JpegStream.prototype, 'bytes', {\n    get: function JpegStream_bytes() {\n      return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true\n  });\n  JpegStream.prototype.ensureBuffer = function (requested) {};\n  JpegStream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    var jpegOptions = {\n      decodeTransform: undefined,\n      colorTransform: undefined\n    };\n    var decodeArr = this.dict.getArray('Decode', 'D');\n    if (this.forceRGB && Array.isArray(decodeArr)) {\n      var bitsPerComponent = this.dict.get('BitsPerComponent') || 8;\n      var decodeArrLength = decodeArr.length;\n      var transform = new Int32Array(decodeArrLength);\n      var transformNeeded = false;\n      var maxValue = (1 << bitsPerComponent) - 1;\n      for (var i = 0; i < decodeArrLength; i += 2) {\n        transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;\n        transform[i + 1] = decodeArr[i] * maxValue | 0;\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n          transformNeeded = true;\n        }\n      }\n      if (transformNeeded) {\n        jpegOptions.decodeTransform = transform;\n      }\n    }\n    if ((0, _primitives.isDict)(this.params)) {\n      var colorTransform = this.params.get('ColorTransform');\n      if (Number.isInteger(colorTransform)) {\n        jpegOptions.colorTransform = colorTransform;\n      }\n    }\n    var jpegImage = new _jpg.JpegImage(jpegOptions);\n    jpegImage.parse(this.bytes);\n    var data = jpegImage.getData({\n      width: this.drawWidth,\n      height: this.drawHeight,\n      forceRGB: this.forceRGB,\n      isSourcePDF: true\n    });\n    this.buffer = data;\n    this.bufferLength = data.length;\n    this.eof = true;\n  };\n  JpegStream.prototype.getIR = function () {\n    var forceDataSchema = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n    return (0, _util.createObjectURL)(this.bytes, 'image/jpeg', forceDataSchema);\n  };\n  return JpegStream;\n}();\nexports.JpegStream = JpegStream;\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.JpegImage = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _util = __w_pdfjs_require__(2);\n\nvar JpegError = function JpegErrorClosure() {\n  function JpegError(msg) {\n    this.message = 'JPEG error: ' + msg;\n  }\n  JpegError.prototype = new Error();\n  JpegError.prototype.name = 'JpegError';\n  JpegError.constructor = JpegError;\n  return JpegError;\n}();\nvar DNLMarkerError = function DNLMarkerErrorClosure() {\n  function DNLMarkerError(message, scanLines) {\n    this.message = message;\n    this.scanLines = scanLines;\n  }\n  DNLMarkerError.prototype = new Error();\n  DNLMarkerError.prototype.name = 'DNLMarkerError';\n  DNLMarkerError.constructor = DNLMarkerError;\n  return DNLMarkerError;\n}();\nvar EOIMarkerError = function EOIMarkerErrorClosure() {\n  function EOIMarkerError(message) {\n    this.message = message;\n  }\n  EOIMarkerError.prototype = new Error();\n  EOIMarkerError.prototype.name = 'EOIMarkerError';\n  EOIMarkerError.constructor = EOIMarkerError;\n  return EOIMarkerError;\n}();\nvar JpegImage = function JpegImageClosure() {\n  var dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);\n  var dctCos1 = 4017;\n  var dctSin1 = 799;\n  var dctCos3 = 3406;\n  var dctSin3 = 2276;\n  var dctCos6 = 1567;\n  var dctSin6 = 3784;\n  var dctSqrt2 = 5793;\n  var dctSqrt1d2 = 2896;\n  function JpegImage() {\n    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        _ref$decodeTransform = _ref.decodeTransform,\n        decodeTransform = _ref$decodeTransform === undefined ? null : _ref$decodeTransform,\n        _ref$colorTransform = _ref.colorTransform,\n        colorTransform = _ref$colorTransform === undefined ? -1 : _ref$colorTransform;\n\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n  function buildHuffmanTable(codeLengths, values) {\n    var k = 0,\n        code = [],\n        i,\n        j,\n        length = 16;\n    while (length > 0 && !codeLengths[length - 1]) {\n      length--;\n    }\n    code.push({\n      children: [],\n      index: 0\n    });\n    var p = code[0],\n        q;\n    for (i = 0; i < length; i++) {\n      for (j = 0; j < codeLengths[i]; j++) {\n        p = code.pop();\n        p.children[p.index] = values[k];\n        while (p.index > 0) {\n          p = code.pop();\n        }\n        p.index++;\n        code.push(p);\n        while (code.length <= i) {\n          code.push(q = {\n            children: [],\n            index: 0\n          });\n          p.children[p.index] = q.children;\n          p = q;\n        }\n        k++;\n      }\n      if (i + 1 < length) {\n        code.push(q = {\n          children: [],\n          index: 0\n        });\n        p.children[p.index] = q.children;\n        p = q;\n      }\n    }\n    return code[0].children;\n  }\n  function getBlockBufferOffset(component, row, col) {\n    return 64 * ((component.blocksPerLine + 1) * row + col);\n  }\n  function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) {\n    var parseDNLMarker = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n\n    var mcusPerLine = frame.mcusPerLine;\n    var progressive = frame.progressive;\n    var startOffset = offset,\n        bitsData = 0,\n        bitsCount = 0;\n    function readBit() {\n      if (bitsCount > 0) {\n        bitsCount--;\n        return bitsData >> bitsCount & 1;\n      }\n      bitsData = data[offset++];\n      if (bitsData === 0xFF) {\n        var nextByte = data[offset++];\n        if (nextByte) {\n          if (nextByte === 0xDC && parseDNLMarker) {\n            offset += 2;\n            var scanLines = data[offset++] << 8 | data[offset++];\n            if (scanLines > 0 && scanLines !== frame.scanLines) {\n              throw new DNLMarkerError('Found DNL marker (0xFFDC) while parsing scan data', scanLines);\n            }\n          } else if (nextByte === 0xD9) {\n            throw new EOIMarkerError('Found EOI marker (0xFFD9) while parsing scan data');\n          }\n          throw new JpegError('unexpected marker ' + (bitsData << 8 | nextByte).toString(16));\n        }\n      }\n      bitsCount = 7;\n      return bitsData >>> 7;\n    }\n    function decodeHuffman(tree) {\n      var node = tree;\n      while (true) {\n        node = node[readBit()];\n        if (typeof node === 'number') {\n          return node;\n        }\n        if ((typeof node === 'undefined' ? 'undefined' : _typeof(node)) !== 'object') {\n          throw new JpegError('invalid huffman sequence');\n        }\n      }\n    }\n    function receive(length) {\n      var n = 0;\n      while (length > 0) {\n        n = n << 1 | readBit();\n        length--;\n      }\n      return n;\n    }\n    function receiveAndExtend(length) {\n      if (length === 1) {\n        return readBit() === 1 ? 1 : -1;\n      }\n      var n = receive(length);\n      if (n >= 1 << length - 1) {\n        return n;\n      }\n      return n + (-1 << length) + 1;\n    }\n    function decodeBaseline(component, offset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t);\n      component.blockData[offset] = component.pred += diff;\n      var k = 1;\n      while (k < 64) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15,\n            r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[offset + z] = receiveAndExtend(s);\n        k++;\n      }\n    }\n    function decodeDCFirst(component, offset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n      component.blockData[offset] = component.pred += diff;\n    }\n    function decodeDCSuccessive(component, offset) {\n      component.blockData[offset] |= readBit() << successive;\n    }\n    var eobrun = 0;\n    function decodeACFirst(component, offset) {\n      if (eobrun > 0) {\n        eobrun--;\n        return;\n      }\n      var k = spectralStart,\n          e = spectralEnd;\n      while (k <= e) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15,\n            r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            eobrun = receive(r) + (1 << r) - 1;\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[offset + z] = receiveAndExtend(s) * (1 << successive);\n        k++;\n      }\n    }\n    var successiveACState = 0,\n        successiveACNextValue;\n    function decodeACSuccessive(component, offset) {\n      var k = spectralStart;\n      var e = spectralEnd;\n      var r = 0;\n      var s;\n      var rs;\n      while (k <= e) {\n        var offsetZ = offset + dctZigZag[k];\n        var sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n        switch (successiveACState) {\n          case 0:\n            rs = decodeHuffman(component.huffmanTableAC);\n            s = rs & 15;\n            r = rs >> 4;\n            if (s === 0) {\n              if (r < 15) {\n                eobrun = receive(r) + (1 << r);\n                successiveACState = 4;\n              } else {\n                r = 16;\n                successiveACState = 1;\n              }\n            } else {\n              if (s !== 1) {\n                throw new JpegError('invalid ACn encoding');\n              }\n              successiveACNextValue = receiveAndExtend(s);\n              successiveACState = r ? 2 : 3;\n            }\n            continue;\n          case 1:\n          case 2:\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              r--;\n              if (r === 0) {\n                successiveACState = successiveACState === 2 ? 3 : 0;\n              }\n            }\n            break;\n          case 3:\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              component.blockData[offsetZ] = successiveACNextValue << successive;\n              successiveACState = 0;\n            }\n            break;\n          case 4:\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            }\n            break;\n        }\n        k++;\n      }\n      if (successiveACState === 4) {\n        eobrun--;\n        if (eobrun === 0) {\n          successiveACState = 0;\n        }\n      }\n    }\n    function decodeMcu(component, decode, mcu, row, col) {\n      var mcuRow = mcu / mcusPerLine | 0;\n      var mcuCol = mcu % mcusPerLine;\n      var blockRow = mcuRow * component.v + row;\n      var blockCol = mcuCol * component.h + col;\n      var offset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, offset);\n    }\n    function decodeBlock(component, decode, mcu) {\n      var blockRow = mcu / component.blocksPerLine | 0;\n      var blockCol = mcu % component.blocksPerLine;\n      var offset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, offset);\n    }\n    var componentsLength = components.length;\n    var component, i, j, k, n;\n    var decodeFn;\n    if (progressive) {\n      if (spectralStart === 0) {\n        decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n      } else {\n        decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n      }\n    } else {\n      decodeFn = decodeBaseline;\n    }\n    var mcu = 0,\n        fileMarker;\n    var mcuExpected;\n    if (componentsLength === 1) {\n      mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n    } else {\n      mcuExpected = mcusPerLine * frame.mcusPerColumn;\n    }\n    var h, v;\n    while (mcu < mcuExpected) {\n      var mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n      for (i = 0; i < componentsLength; i++) {\n        components[i].pred = 0;\n      }\n      eobrun = 0;\n      if (componentsLength === 1) {\n        component = components[0];\n        for (n = 0; n < mcuToRead; n++) {\n          decodeBlock(component, decodeFn, mcu);\n          mcu++;\n        }\n      } else {\n        for (n = 0; n < mcuToRead; n++) {\n          for (i = 0; i < componentsLength; i++) {\n            component = components[i];\n            h = component.h;\n            v = component.v;\n            for (j = 0; j < v; j++) {\n              for (k = 0; k < h; k++) {\n                decodeMcu(component, decodeFn, mcu, j, k);\n              }\n            }\n          }\n          mcu++;\n        }\n      }\n      bitsCount = 0;\n      fileMarker = findNextFileMarker(data, offset);\n      if (fileMarker && fileMarker.invalid) {\n        (0, _util.warn)('decodeScan - unexpected MCU data, current marker is: ' + fileMarker.invalid);\n        offset = fileMarker.offset;\n      }\n      var marker = fileMarker && fileMarker.marker;\n      if (!marker || marker <= 0xFF00) {\n        throw new JpegError('marker was not found');\n      }\n      if (marker >= 0xFFD0 && marker <= 0xFFD7) {\n        offset += 2;\n      } else {\n        break;\n      }\n    }\n    fileMarker = findNextFileMarker(data, offset);\n    if (fileMarker && fileMarker.invalid) {\n      (0, _util.warn)('decodeScan - unexpected Scan data, current marker is: ' + fileMarker.invalid);\n      offset = fileMarker.offset;\n    }\n    return offset - startOffset;\n  }\n  function quantizeAndInverse(component, blockBufferOffset, p) {\n    var qt = component.quantizationTable,\n        blockData = component.blockData;\n    var v0, v1, v2, v3, v4, v5, v6, v7;\n    var p0, p1, p2, p3, p4, p5, p6, p7;\n    var t;\n    if (!qt) {\n      throw new JpegError('missing required Quantization Table.');\n    }\n    for (var row = 0; row < 64; row += 8) {\n      p0 = blockData[blockBufferOffset + row];\n      p1 = blockData[blockBufferOffset + row + 1];\n      p2 = blockData[blockBufferOffset + row + 2];\n      p3 = blockData[blockBufferOffset + row + 3];\n      p4 = blockData[blockBufferOffset + row + 4];\n      p5 = blockData[blockBufferOffset + row + 5];\n      p6 = blockData[blockBufferOffset + row + 6];\n      p7 = blockData[blockBufferOffset + row + 7];\n      p0 *= qt[row];\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = dctSqrt2 * p0 + 512 >> 10;\n        p[row] = t;\n        p[row + 1] = t;\n        p[row + 2] = t;\n        p[row + 3] = t;\n        p[row + 4] = t;\n        p[row + 5] = t;\n        p[row + 6] = t;\n        p[row + 7] = t;\n        continue;\n      }\n      p1 *= qt[row + 1];\n      p2 *= qt[row + 2];\n      p3 *= qt[row + 3];\n      p4 *= qt[row + 4];\n      p5 *= qt[row + 5];\n      p6 *= qt[row + 6];\n      p7 *= qt[row + 7];\n      v0 = dctSqrt2 * p0 + 128 >> 8;\n      v1 = dctSqrt2 * p4 + 128 >> 8;\n      v2 = p2;\n      v3 = p6;\n      v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;\n      v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;\n      v5 = p3 << 4;\n      v6 = p5 << 4;\n      v0 = v0 + v1 + 1 >> 1;\n      v1 = v0 - v1;\n      t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;\n      v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;\n      v3 = t;\n      v4 = v4 + v6 + 1 >> 1;\n      v6 = v4 - v6;\n      v7 = v7 + v5 + 1 >> 1;\n      v5 = v7 - v5;\n      v0 = v0 + v3 + 1 >> 1;\n      v3 = v0 - v3;\n      v1 = v1 + v2 + 1 >> 1;\n      v2 = v1 - v2;\n      t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n      v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n      v7 = t;\n      t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n      v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n      v6 = t;\n      p[row] = v0 + v7;\n      p[row + 7] = v0 - v7;\n      p[row + 1] = v1 + v6;\n      p[row + 6] = v1 - v6;\n      p[row + 2] = v2 + v5;\n      p[row + 5] = v2 - v5;\n      p[row + 3] = v3 + v4;\n      p[row + 4] = v3 - v4;\n    }\n    for (var col = 0; col < 8; ++col) {\n      p0 = p[col];\n      p1 = p[col + 8];\n      p2 = p[col + 16];\n      p3 = p[col + 24];\n      p4 = p[col + 32];\n      p5 = p[col + 40];\n      p6 = p[col + 48];\n      p7 = p[col + 56];\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = dctSqrt2 * p0 + 8192 >> 14;\n        t = t < -2040 ? 0 : t >= 2024 ? 255 : t + 2056 >> 4;\n        blockData[blockBufferOffset + col] = t;\n        blockData[blockBufferOffset + col + 8] = t;\n        blockData[blockBufferOffset + col + 16] = t;\n        blockData[blockBufferOffset + col + 24] = t;\n        blockData[blockBufferOffset + col + 32] = t;\n        blockData[blockBufferOffset + col + 40] = t;\n        blockData[blockBufferOffset + col + 48] = t;\n        blockData[blockBufferOffset + col + 56] = t;\n        continue;\n      }\n      v0 = dctSqrt2 * p0 + 2048 >> 12;\n      v1 = dctSqrt2 * p4 + 2048 >> 12;\n      v2 = p2;\n      v3 = p6;\n      v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;\n      v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;\n      v5 = p3;\n      v6 = p5;\n      v0 = (v0 + v1 + 1 >> 1) + 4112;\n      v1 = v0 - v1;\n      t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;\n      v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;\n      v3 = t;\n      v4 = v4 + v6 + 1 >> 1;\n      v6 = v4 - v6;\n      v7 = v7 + v5 + 1 >> 1;\n      v5 = v7 - v5;\n      v0 = v0 + v3 + 1 >> 1;\n      v3 = v0 - v3;\n      v1 = v1 + v2 + 1 >> 1;\n      v2 = v1 - v2;\n      t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n      v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n      v7 = t;\n      t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n      v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n      v6 = t;\n      p0 = v0 + v7;\n      p7 = v0 - v7;\n      p1 = v1 + v6;\n      p6 = v1 - v6;\n      p2 = v2 + v5;\n      p5 = v2 - v5;\n      p3 = v3 + v4;\n      p4 = v3 - v4;\n      p0 = p0 < 16 ? 0 : p0 >= 4080 ? 255 : p0 >> 4;\n      p1 = p1 < 16 ? 0 : p1 >= 4080 ? 255 : p1 >> 4;\n      p2 = p2 < 16 ? 0 : p2 >= 4080 ? 255 : p2 >> 4;\n      p3 = p3 < 16 ? 0 : p3 >= 4080 ? 255 : p3 >> 4;\n      p4 = p4 < 16 ? 0 : p4 >= 4080 ? 255 : p4 >> 4;\n      p5 = p5 < 16 ? 0 : p5 >= 4080 ? 255 : p5 >> 4;\n      p6 = p6 < 16 ? 0 : p6 >= 4080 ? 255 : p6 >> 4;\n      p7 = p7 < 16 ? 0 : p7 >= 4080 ? 255 : p7 >> 4;\n      blockData[blockBufferOffset + col] = p0;\n      blockData[blockBufferOffset + col + 8] = p1;\n      blockData[blockBufferOffset + col + 16] = p2;\n      blockData[blockBufferOffset + col + 24] = p3;\n      blockData[blockBufferOffset + col + 32] = p4;\n      blockData[blockBufferOffset + col + 40] = p5;\n      blockData[blockBufferOffset + col + 48] = p6;\n      blockData[blockBufferOffset + col + 56] = p7;\n    }\n  }\n  function buildComponentData(frame, component) {\n    var blocksPerLine = component.blocksPerLine;\n    var blocksPerColumn = component.blocksPerColumn;\n    var computationBuffer = new Int16Array(64);\n    for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n      for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n        var offset = getBlockBufferOffset(component, blockRow, blockCol);\n        quantizeAndInverse(component, offset, computationBuffer);\n      }\n    }\n    return component.blockData;\n  }\n  function findNextFileMarker(data, currentPos) {\n    var startPos = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentPos;\n\n    function peekUint16(pos) {\n      return data[pos] << 8 | data[pos + 1];\n    }\n    var maxPos = data.length - 1;\n    var newPos = startPos < currentPos ? startPos : currentPos;\n    if (currentPos >= maxPos) {\n      return null;\n    }\n    var currentMarker = peekUint16(currentPos);\n    if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) {\n      return {\n        invalid: null,\n        marker: currentMarker,\n        offset: currentPos\n      };\n    }\n    var newMarker = peekUint16(newPos);\n    while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) {\n      if (++newPos >= maxPos) {\n        return null;\n      }\n      newMarker = peekUint16(newPos);\n    }\n    return {\n      invalid: currentMarker.toString(16),\n      marker: newMarker,\n      offset: newPos\n    };\n  }\n  JpegImage.prototype = {\n    parse: function parse(data) {\n      var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          _ref2$dnlScanLines = _ref2.dnlScanLines,\n          dnlScanLines = _ref2$dnlScanLines === undefined ? null : _ref2$dnlScanLines;\n\n      function readUint16() {\n        var value = data[offset] << 8 | data[offset + 1];\n        offset += 2;\n        return value;\n      }\n      function readDataBlock() {\n        var length = readUint16();\n        var endOffset = offset + length - 2;\n        var fileMarker = findNextFileMarker(data, endOffset, offset);\n        if (fileMarker && fileMarker.invalid) {\n          (0, _util.warn)('readDataBlock - incorrect length, current marker is: ' + fileMarker.invalid);\n          endOffset = fileMarker.offset;\n        }\n        var array = data.subarray(offset, endOffset);\n        offset += array.length;\n        return array;\n      }\n      function prepareComponents(frame) {\n        var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n        var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n        for (var i = 0; i < frame.components.length; i++) {\n          component = frame.components[i];\n          var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);\n          var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);\n          var blocksPerLineForMcu = mcusPerLine * component.h;\n          var blocksPerColumnForMcu = mcusPerColumn * component.v;\n          var blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n          component.blockData = new Int16Array(blocksBufferSize);\n          component.blocksPerLine = blocksPerLine;\n          component.blocksPerColumn = blocksPerColumn;\n        }\n        frame.mcusPerLine = mcusPerLine;\n        frame.mcusPerColumn = mcusPerColumn;\n      }\n      var offset = 0;\n      var jfif = null;\n      var adobe = null;\n      var frame, resetInterval;\n      var numSOSMarkers = 0;\n      var quantizationTables = [];\n      var huffmanTablesAC = [],\n          huffmanTablesDC = [];\n      var fileMarker = readUint16();\n      if (fileMarker !== 0xFFD8) {\n        throw new JpegError('SOI not found');\n      }\n      fileMarker = readUint16();\n      markerLoop: while (fileMarker !== 0xFFD9) {\n        var i, j, l;\n        switch (fileMarker) {\n          case 0xFFE0:\n          case 0xFFE1:\n          case 0xFFE2:\n          case 0xFFE3:\n          case 0xFFE4:\n          case 0xFFE5:\n          case 0xFFE6:\n          case 0xFFE7:\n          case 0xFFE8:\n          case 0xFFE9:\n          case 0xFFEA:\n          case 0xFFEB:\n          case 0xFFEC:\n          case 0xFFED:\n          case 0xFFEE:\n          case 0xFFEF:\n          case 0xFFFE:\n            var appData = readDataBlock();\n            if (fileMarker === 0xFFE0) {\n              if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {\n                jfif = {\n                  version: {\n                    major: appData[5],\n                    minor: appData[6]\n                  },\n                  densityUnits: appData[7],\n                  xDensity: appData[8] << 8 | appData[9],\n                  yDensity: appData[10] << 8 | appData[11],\n                  thumbWidth: appData[12],\n                  thumbHeight: appData[13],\n                  thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])\n                };\n              }\n            }\n            if (fileMarker === 0xFFEE) {\n              if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F && appData[3] === 0x62 && appData[4] === 0x65) {\n                adobe = {\n                  version: appData[5] << 8 | appData[6],\n                  flags0: appData[7] << 8 | appData[8],\n                  flags1: appData[9] << 8 | appData[10],\n                  transformCode: appData[11]\n                };\n              }\n            }\n            break;\n          case 0xFFDB:\n            var quantizationTablesLength = readUint16();\n            var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n            var z;\n            while (offset < quantizationTablesEnd) {\n              var quantizationTableSpec = data[offset++];\n              var tableData = new Uint16Array(64);\n              if (quantizationTableSpec >> 4 === 0) {\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = data[offset++];\n                }\n              } else if (quantizationTableSpec >> 4 === 1) {\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = readUint16();\n                }\n              } else {\n                throw new JpegError('DQT - invalid table spec');\n              }\n              quantizationTables[quantizationTableSpec & 15] = tableData;\n            }\n            break;\n          case 0xFFC0:\n          case 0xFFC1:\n          case 0xFFC2:\n            if (frame) {\n              throw new JpegError('Only single frame JPEGs supported');\n            }\n            readUint16();\n            frame = {};\n            frame.extended = fileMarker === 0xFFC1;\n            frame.progressive = fileMarker === 0xFFC2;\n            frame.precision = data[offset++];\n            var sofScanLines = readUint16();\n            frame.scanLines = dnlScanLines || sofScanLines;\n            frame.samplesPerLine = readUint16();\n            frame.components = [];\n            frame.componentIds = {};\n            var componentsCount = data[offset++],\n                componentId;\n            var maxH = 0,\n                maxV = 0;\n            for (i = 0; i < componentsCount; i++) {\n              componentId = data[offset];\n              var h = data[offset + 1] >> 4;\n              var v = data[offset + 1] & 15;\n              if (maxH < h) {\n                maxH = h;\n              }\n              if (maxV < v) {\n                maxV = v;\n              }\n              var qId = data[offset + 2];\n              l = frame.components.push({\n                h: h,\n                v: v,\n                quantizationId: qId,\n                quantizationTable: null\n              });\n              frame.componentIds[componentId] = l - 1;\n              offset += 3;\n            }\n            frame.maxH = maxH;\n            frame.maxV = maxV;\n            prepareComponents(frame);\n            break;\n          case 0xFFC4:\n            var huffmanLength = readUint16();\n            for (i = 2; i < huffmanLength;) {\n              var huffmanTableSpec = data[offset++];\n              var codeLengths = new Uint8Array(16);\n              var codeLengthSum = 0;\n              for (j = 0; j < 16; j++, offset++) {\n                codeLengthSum += codeLengths[j] = data[offset];\n              }\n              var huffmanValues = new Uint8Array(codeLengthSum);\n              for (j = 0; j < codeLengthSum; j++, offset++) {\n                huffmanValues[j] = data[offset];\n              }\n              i += 17 + codeLengthSum;\n              (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);\n            }\n            break;\n          case 0xFFDD:\n            readUint16();\n            resetInterval = readUint16();\n            break;\n          case 0xFFDA:\n            var parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n            readUint16();\n            var selectorsCount = data[offset++];\n            var components = [],\n                component;\n            for (i = 0; i < selectorsCount; i++) {\n              var componentIndex = frame.componentIds[data[offset++]];\n              component = frame.components[componentIndex];\n              var tableSpec = data[offset++];\n              component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n              component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n              components.push(component);\n            }\n            var spectralStart = data[offset++];\n            var spectralEnd = data[offset++];\n            var successiveApproximation = data[offset++];\n            try {\n              var processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);\n              offset += processed;\n            } catch (ex) {\n              if (ex instanceof DNLMarkerError) {\n                (0, _util.warn)(ex.message + ' -- attempting to re-parse the JPEG image.');\n                return this.parse(data, { dnlScanLines: ex.scanLines });\n              } else if (ex instanceof EOIMarkerError) {\n                (0, _util.warn)(ex.message + ' -- ignoring the rest of the image data.');\n                break markerLoop;\n              }\n              throw ex;\n            }\n            break;\n          case 0xFFDC:\n            offset += 4;\n            break;\n          case 0xFFFF:\n            if (data[offset] !== 0xFF) {\n              offset--;\n            }\n            break;\n          default:\n            if (data[offset - 3] === 0xFF && data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {\n              offset -= 3;\n              break;\n            }\n            var nextFileMarker = findNextFileMarker(data, offset - 2);\n            if (nextFileMarker && nextFileMarker.invalid) {\n              (0, _util.warn)('JpegImage.parse - unexpected data, current marker is: ' + nextFileMarker.invalid);\n              offset = nextFileMarker.offset;\n              break;\n            }\n            throw new JpegError('unknown marker ' + fileMarker.toString(16));\n        }\n        fileMarker = readUint16();\n      }\n      this.width = frame.samplesPerLine;\n      this.height = frame.scanLines;\n      this.jfif = jfif;\n      this.adobe = adobe;\n      this.components = [];\n      for (i = 0; i < frame.components.length; i++) {\n        component = frame.components[i];\n        var quantizationTable = quantizationTables[component.quantizationId];\n        if (quantizationTable) {\n          component.quantizationTable = quantizationTable;\n        }\n        this.components.push({\n          output: buildComponentData(frame, component),\n          scaleX: component.h / frame.maxH,\n          scaleY: component.v / frame.maxV,\n          blocksPerLine: component.blocksPerLine,\n          blocksPerColumn: component.blocksPerColumn\n        });\n      }\n      this.numComponents = this.components.length;\n    },\n    _getLinearizedBlockData: function _getLinearizedBlockData(width, height) {\n      var isSourcePDF = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      var scaleX = this.width / width,\n          scaleY = this.height / height;\n      var component, componentScaleX, componentScaleY, blocksPerScanline;\n      var x, y, i, j, k;\n      var index;\n      var offset = 0;\n      var output;\n      var numComponents = this.components.length;\n      var dataLength = width * height * numComponents;\n      var data = new Uint8ClampedArray(dataLength);\n      var xScaleBlockOffset = new Uint32Array(width);\n      var mask3LSB = 0xfffffff8;\n      for (i = 0; i < numComponents; i++) {\n        component = this.components[i];\n        componentScaleX = component.scaleX * scaleX;\n        componentScaleY = component.scaleY * scaleY;\n        offset = i;\n        output = component.output;\n        blocksPerScanline = component.blocksPerLine + 1 << 3;\n        for (x = 0; x < width; x++) {\n          j = 0 | x * componentScaleX;\n          xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;\n        }\n        for (y = 0; y < height; y++) {\n          j = 0 | y * componentScaleY;\n          index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;\n          for (x = 0; x < width; x++) {\n            data[offset] = output[index + xScaleBlockOffset[x]];\n            offset += numComponents;\n          }\n        }\n      }\n      var transform = this._decodeTransform;\n      if (!isSourcePDF && numComponents === 4 && !transform) {\n        transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n      }\n      if (transform) {\n        for (i = 0; i < dataLength;) {\n          for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n            data[i] = (data[i] * transform[k] >> 8) + transform[k + 1];\n          }\n        }\n      }\n      return data;\n    },\n\n    get _isColorConversionNeeded() {\n      if (this.adobe) {\n        return !!this.adobe.transformCode;\n      }\n      if (this.numComponents === 3) {\n        if (this._colorTransform === 0) {\n          return false;\n        }\n        return true;\n      }\n      if (this._colorTransform === 1) {\n        return true;\n      }\n      return false;\n    },\n    _convertYccToRgb: function convertYccToRgb(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 3) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = Y - 179.456 + 1.402 * Cr;\n        data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n        data[i + 2] = Y - 226.816 + 1.772 * Cb;\n      }\n      return data;\n    },\n    _convertYcckToRgb: function convertYcckToRgb(data) {\n      var Y, Cb, Cr, k;\n      var offset = 0;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        k = data[i + 3];\n        data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);\n        data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);\n        data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);\n      }\n      return data.subarray(0, offset);\n    },\n    _convertYcckToCmyk: function convertYcckToCmyk(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = 434.456 - Y - 1.402 * Cr;\n        data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n        data[i + 2] = 481.816 - Y - 1.772 * Cb;\n      }\n      return data;\n    },\n    _convertCmykToRgb: function convertCmykToRgb(data) {\n      var c, m, y, k;\n      var offset = 0;\n      var scale = 1 / 255;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        c = data[i] * scale;\n        m = data[i + 1] * scale;\n        y = data[i + 2] * scale;\n        k = data[i + 3] * scale;\n        data[offset++] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k - 285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y - 17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) - k * (21.86122147463605 * k + 189.48180835922747);\n        data[offset++] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k - 79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) - k * (20.737325471181034 * k + 187.80453709719578);\n        data[offset++] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k - 14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k - 193.58209356861505) - k * (22.33816807309886 * k + 180.12613974708367);\n      }\n      return data.subarray(0, offset);\n    },\n    getData: function getData(_ref3) {\n      var width = _ref3.width,\n          height = _ref3.height,\n          _ref3$forceRGB = _ref3.forceRGB,\n          forceRGB = _ref3$forceRGB === undefined ? false : _ref3$forceRGB,\n          _ref3$isSourcePDF = _ref3.isSourcePDF,\n          isSourcePDF = _ref3$isSourcePDF === undefined ? false : _ref3$isSourcePDF;\n\n      if (this.numComponents > 4) {\n        throw new JpegError('Unsupported color mode');\n      }\n      var data = this._getLinearizedBlockData(width, height, isSourcePDF);\n      if (this.numComponents === 1 && forceRGB) {\n        var dataLength = data.length;\n        var rgbData = new Uint8ClampedArray(dataLength * 3);\n        var offset = 0;\n        for (var i = 0; i < dataLength; i++) {\n          var grayColor = data[i];\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n        }\n        return rgbData;\n      } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n        return this._convertYccToRgb(data);\n      } else if (this.numComponents === 4) {\n        if (this._isColorConversionNeeded) {\n          if (forceRGB) {\n            return this._convertYcckToRgb(data);\n          }\n          return this._convertYcckToCmyk(data);\n        } else if (forceRGB) {\n          return this._convertCmykToRgb(data);\n        }\n      }\n      return data;\n    }\n  };\n  return JpegImage;\n}();\nexports.JpegImage = JpegImage;\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.JpxStream = undefined;\n\nvar _stream = __w_pdfjs_require__(140);\n\nvar _jpx = __w_pdfjs_require__(149);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar JpxStream = function JpxStreamClosure() {\n  function JpxStream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n    _stream.DecodeStream.call(this, maybeLength);\n  }\n  JpxStream.prototype = Object.create(_stream.DecodeStream.prototype);\n  Object.defineProperty(JpxStream.prototype, 'bytes', {\n    get: function JpxStream_bytes() {\n      return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true\n  });\n  JpxStream.prototype.ensureBuffer = function (requested) {};\n  JpxStream.prototype.readBlock = function () {\n    if (this.eof) {\n      return;\n    }\n    var jpxImage = new _jpx.JpxImage();\n    jpxImage.parse(this.bytes);\n    var width = jpxImage.width;\n    var height = jpxImage.height;\n    var componentsCount = jpxImage.componentsCount;\n    var tileCount = jpxImage.tiles.length;\n    if (tileCount === 1) {\n      this.buffer = jpxImage.tiles[0].items;\n    } else {\n      var data = new Uint8ClampedArray(width * height * componentsCount);\n      for (var k = 0; k < tileCount; k++) {\n        var tileComponents = jpxImage.tiles[k];\n        var tileWidth = tileComponents.width;\n        var tileHeight = tileComponents.height;\n        var tileLeft = tileComponents.left;\n        var tileTop = tileComponents.top;\n        var src = tileComponents.items;\n        var srcPosition = 0;\n        var dataPosition = (width * tileTop + tileLeft) * componentsCount;\n        var imgRowSize = width * componentsCount;\n        var tileRowSize = tileWidth * componentsCount;\n        for (var j = 0; j < tileHeight; j++) {\n          var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n          data.set(rowBytes, dataPosition);\n          srcPosition += tileRowSize;\n          dataPosition += imgRowSize;\n        }\n      }\n      this.buffer = data;\n    }\n    this.bufferLength = this.buffer.length;\n    this.eof = true;\n  };\n  return JpxStream;\n}();\nexports.JpxStream = JpxStream;\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.JpxImage = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _arithmetic_decoder = __w_pdfjs_require__(145);\n\nvar JpxError = function JpxErrorClosure() {\n  function JpxError(msg) {\n    this.message = 'JPX error: ' + msg;\n  }\n  JpxError.prototype = new Error();\n  JpxError.prototype.name = 'JpxError';\n  JpxError.constructor = JpxError;\n  return JpxError;\n}();\nvar JpxImage = function JpxImageClosure() {\n  var SubbandsGainLog2 = {\n    'LL': 0,\n    'LH': 1,\n    'HL': 1,\n    'HH': 2\n  };\n  function JpxImage() {\n    this.failOnCorruptedImage = false;\n  }\n  JpxImage.prototype = {\n    parse: function JpxImage_parse(data) {\n      var head = (0, _util.readUint16)(data, 0);\n      if (head === 0xFF4F) {\n        this.parseCodestream(data, 0, data.length);\n        return;\n      }\n      var position = 0,\n          length = data.length;\n      while (position < length) {\n        var headerSize = 8;\n        var lbox = (0, _util.readUint32)(data, position);\n        var tbox = (0, _util.readUint32)(data, position + 4);\n        position += headerSize;\n        if (lbox === 1) {\n          lbox = (0, _util.readUint32)(data, position) * 4294967296 + (0, _util.readUint32)(data, position + 4);\n          position += 8;\n          headerSize += 8;\n        }\n        if (lbox === 0) {\n          lbox = length - position + headerSize;\n        }\n        if (lbox < headerSize) {\n          throw new JpxError('Invalid box field size');\n        }\n        var dataLength = lbox - headerSize;\n        var jumpDataLength = true;\n        switch (tbox) {\n          case 0x6A703268:\n            jumpDataLength = false;\n            break;\n          case 0x636F6C72:\n            var method = data[position];\n            if (method === 1) {\n              var colorspace = (0, _util.readUint32)(data, position + 3);\n              switch (colorspace) {\n                case 16:\n                case 17:\n                case 18:\n                  break;\n                default:\n                  (0, _util.warn)('Unknown colorspace ' + colorspace);\n                  break;\n              }\n            } else if (method === 2) {\n              (0, _util.info)('ICC profile not supported');\n            }\n            break;\n          case 0x6A703263:\n            this.parseCodestream(data, position, position + dataLength);\n            break;\n          case 0x6A502020:\n            if ((0, _util.readUint32)(data, position) !== 0x0d0a870a) {\n              (0, _util.warn)('Invalid JP2 signature');\n            }\n            break;\n          case 0x6A501A1A:\n          case 0x66747970:\n          case 0x72726571:\n          case 0x72657320:\n          case 0x69686472:\n            break;\n          default:\n            var headerType = String.fromCharCode(tbox >> 24 & 0xFF, tbox >> 16 & 0xFF, tbox >> 8 & 0xFF, tbox & 0xFF);\n            (0, _util.warn)('Unsupported header type ' + tbox + ' (' + headerType + ')');\n            break;\n        }\n        if (jumpDataLength) {\n          position += dataLength;\n        }\n      }\n    },\n    parseImageProperties: function JpxImage_parseImageProperties(stream) {\n      var newByte = stream.getByte();\n      while (newByte >= 0) {\n        var oldByte = newByte;\n        newByte = stream.getByte();\n        var code = oldByte << 8 | newByte;\n        if (code === 0xFF51) {\n          stream.skip(4);\n          var Xsiz = stream.getInt32() >>> 0;\n          var Ysiz = stream.getInt32() >>> 0;\n          var XOsiz = stream.getInt32() >>> 0;\n          var YOsiz = stream.getInt32() >>> 0;\n          stream.skip(16);\n          var Csiz = stream.getUint16();\n          this.width = Xsiz - XOsiz;\n          this.height = Ysiz - YOsiz;\n          this.componentsCount = Csiz;\n          this.bitsPerComponent = 8;\n          return;\n        }\n      }\n      throw new JpxError('No size marker found in JPX stream');\n    },\n    parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n      var context = {};\n      var doNotRecover = false;\n      try {\n        var position = start;\n        while (position + 1 < end) {\n          var code = (0, _util.readUint16)(data, position);\n          position += 2;\n          var length = 0,\n              j,\n              sqcd,\n              spqcds,\n              spqcdSize,\n              scalarExpounded,\n              tile;\n          switch (code) {\n            case 0xFF4F:\n              context.mainHeader = true;\n              break;\n            case 0xFFD9:\n              break;\n            case 0xFF51:\n              length = (0, _util.readUint16)(data, position);\n              var siz = {};\n              siz.Xsiz = (0, _util.readUint32)(data, position + 4);\n              siz.Ysiz = (0, _util.readUint32)(data, position + 8);\n              siz.XOsiz = (0, _util.readUint32)(data, position + 12);\n              siz.YOsiz = (0, _util.readUint32)(data, position + 16);\n              siz.XTsiz = (0, _util.readUint32)(data, position + 20);\n              siz.YTsiz = (0, _util.readUint32)(data, position + 24);\n              siz.XTOsiz = (0, _util.readUint32)(data, position + 28);\n              siz.YTOsiz = (0, _util.readUint32)(data, position + 32);\n              var componentsCount = (0, _util.readUint16)(data, position + 36);\n              siz.Csiz = componentsCount;\n              var components = [];\n              j = position + 38;\n              for (var i = 0; i < componentsCount; i++) {\n                var component = {\n                  precision: (data[j] & 0x7F) + 1,\n                  isSigned: !!(data[j] & 0x80),\n                  XRsiz: data[j + 1],\n                  YRsiz: data[j + 2]\n                };\n                j += 3;\n                calculateComponentDimensions(component, siz);\n                components.push(component);\n              }\n              context.SIZ = siz;\n              context.components = components;\n              calculateTileGrids(context, components);\n              context.QCC = [];\n              context.COC = [];\n              break;\n            case 0xFF5C:\n              length = (0, _util.readUint16)(data, position);\n              var qcd = {};\n              j = position + 2;\n              sqcd = data[j++];\n              switch (sqcd & 0x1F) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error('Invalid SQcd value ' + sqcd);\n              }\n              qcd.noQuantization = spqcdSize === 8;\n              qcd.scalarExpounded = scalarExpounded;\n              qcd.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                var spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcd.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCD = qcd;\n              } else {\n                context.currentTile.QCD = qcd;\n                context.currentTile.QCC = [];\n              }\n              break;\n            case 0xFF5D:\n              length = (0, _util.readUint16)(data, position);\n              var qcc = {};\n              j = position + 2;\n              var cqcc;\n              if (context.SIZ.Csiz < 257) {\n                cqcc = data[j++];\n              } else {\n                cqcc = (0, _util.readUint16)(data, j);\n                j += 2;\n              }\n              sqcd = data[j++];\n              switch (sqcd & 0x1F) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error('Invalid SQcd value ' + sqcd);\n              }\n              qcc.noQuantization = spqcdSize === 8;\n              qcc.scalarExpounded = scalarExpounded;\n              qcc.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcc.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCC[cqcc] = qcc;\n              } else {\n                context.currentTile.QCC[cqcc] = qcc;\n              }\n              break;\n            case 0xFF52:\n              length = (0, _util.readUint16)(data, position);\n              var cod = {};\n              j = position + 2;\n              var scod = data[j++];\n              cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n              cod.sopMarkerUsed = !!(scod & 2);\n              cod.ephMarkerUsed = !!(scod & 4);\n              cod.progressionOrder = data[j++];\n              cod.layersCount = (0, _util.readUint16)(data, j);\n              j += 2;\n              cod.multipleComponentTransform = data[j++];\n              cod.decompositionLevelsCount = data[j++];\n              cod.xcb = (data[j++] & 0xF) + 2;\n              cod.ycb = (data[j++] & 0xF) + 2;\n              var blockStyle = data[j++];\n              cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n              cod.resetContextProbabilities = !!(blockStyle & 2);\n              cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n              cod.verticallyStripe = !!(blockStyle & 8);\n              cod.predictableTermination = !!(blockStyle & 16);\n              cod.segmentationSymbolUsed = !!(blockStyle & 32);\n              cod.reversibleTransformation = data[j++];\n              if (cod.entropyCoderWithCustomPrecincts) {\n                var precinctsSizes = [];\n                while (j < length + position) {\n                  var precinctsSize = data[j++];\n                  precinctsSizes.push({\n                    PPx: precinctsSize & 0xF,\n                    PPy: precinctsSize >> 4\n                  });\n                }\n                cod.precinctsSizes = precinctsSizes;\n              }\n              var unsupported = [];\n              if (cod.selectiveArithmeticCodingBypass) {\n                unsupported.push('selectiveArithmeticCodingBypass');\n              }\n              if (cod.resetContextProbabilities) {\n                unsupported.push('resetContextProbabilities');\n              }\n              if (cod.terminationOnEachCodingPass) {\n                unsupported.push('terminationOnEachCodingPass');\n              }\n              if (cod.verticallyStripe) {\n                unsupported.push('verticallyStripe');\n              }\n              if (cod.predictableTermination) {\n                unsupported.push('predictableTermination');\n              }\n              if (unsupported.length > 0) {\n                doNotRecover = true;\n                throw new Error('Unsupported COD options (' + unsupported.join(', ') + ')');\n              }\n              if (context.mainHeader) {\n                context.COD = cod;\n              } else {\n                context.currentTile.COD = cod;\n                context.currentTile.COC = [];\n              }\n              break;\n            case 0xFF90:\n              length = (0, _util.readUint16)(data, position);\n              tile = {};\n              tile.index = (0, _util.readUint16)(data, position + 2);\n              tile.length = (0, _util.readUint32)(data, position + 4);\n              tile.dataEnd = tile.length + position - 2;\n              tile.partIndex = data[position + 8];\n              tile.partsCount = data[position + 9];\n              context.mainHeader = false;\n              if (tile.partIndex === 0) {\n                tile.COD = context.COD;\n                tile.COC = context.COC.slice(0);\n                tile.QCD = context.QCD;\n                tile.QCC = context.QCC.slice(0);\n              }\n              context.currentTile = tile;\n              break;\n            case 0xFF93:\n              tile = context.currentTile;\n              if (tile.partIndex === 0) {\n                initializeTile(context, tile.index);\n                buildPackets(context);\n              }\n              length = tile.dataEnd - position;\n              parseTilePackets(context, data, position, length);\n              break;\n            case 0xFF55:\n            case 0xFF57:\n            case 0xFF58:\n            case 0xFF64:\n              length = (0, _util.readUint16)(data, position);\n              break;\n            case 0xFF53:\n              throw new Error('Codestream code 0xFF53 (COC) is ' + 'not implemented');\n            default:\n              throw new Error('Unknown codestream code: ' + code.toString(16));\n          }\n          position += length;\n        }\n      } catch (e) {\n        if (doNotRecover || this.failOnCorruptedImage) {\n          throw new JpxError(e.message);\n        } else {\n          (0, _util.warn)('JPX: Trying to recover from: ' + e.message);\n        }\n      }\n      this.tiles = transformComponents(context);\n      this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n      this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n      this.componentsCount = context.SIZ.Csiz;\n    }\n  };\n  function calculateComponentDimensions(component, siz) {\n    component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n    component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n    component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n    component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n    component.width = component.x1 - component.x0;\n    component.height = component.y1 - component.y0;\n  }\n  function calculateTileGrids(context, components) {\n    var siz = context.SIZ;\n    var tile,\n        tiles = [];\n    var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n    var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n    for (var q = 0; q < numYtiles; q++) {\n      for (var p = 0; p < numXtiles; p++) {\n        tile = {};\n        tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n        tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n        tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n        tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n        tile.width = tile.tx1 - tile.tx0;\n        tile.height = tile.ty1 - tile.ty0;\n        tile.components = [];\n        tiles.push(tile);\n      }\n    }\n    context.tiles = tiles;\n    var componentsCount = siz.Csiz;\n    for (var i = 0, ii = componentsCount; i < ii; i++) {\n      var component = components[i];\n      for (var j = 0, jj = tiles.length; j < jj; j++) {\n        var tileComponent = {};\n        tile = tiles[j];\n        tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n        tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n        tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n        tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n        tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n        tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n        tile.components[i] = tileComponent;\n      }\n    }\n  }\n  function getBlocksDimensions(context, component, r) {\n    var codOrCoc = component.codingStyleParameters;\n    var result = {};\n    if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n      result.PPx = 15;\n      result.PPy = 15;\n    } else {\n      result.PPx = codOrCoc.precinctsSizes[r].PPx;\n      result.PPy = codOrCoc.precinctsSizes[r].PPy;\n    }\n    result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx);\n    result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy);\n    return result;\n  }\n  function buildPrecincts(context, resolution, dimensions) {\n    var precinctWidth = 1 << dimensions.PPx;\n    var precinctHeight = 1 << dimensions.PPy;\n    var isZeroRes = resolution.resLevel === 0;\n    var precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1);\n    var precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1);\n    var numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0;\n    var numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0;\n    var numprecincts = numprecinctswide * numprecinctshigh;\n    resolution.precinctParameters = {\n      precinctWidth: precinctWidth,\n      precinctHeight: precinctHeight,\n      numprecinctswide: numprecinctswide,\n      numprecinctshigh: numprecinctshigh,\n      numprecincts: numprecincts,\n      precinctWidthInSubband: precinctWidthInSubband,\n      precinctHeightInSubband: precinctHeightInSubband\n    };\n  }\n  function buildCodeblocks(context, subband, dimensions) {\n    var xcb_ = dimensions.xcb_;\n    var ycb_ = dimensions.ycb_;\n    var codeblockWidth = 1 << xcb_;\n    var codeblockHeight = 1 << ycb_;\n    var cbx0 = subband.tbx0 >> xcb_;\n    var cby0 = subband.tby0 >> ycb_;\n    var cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_;\n    var cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_;\n    var precinctParameters = subband.resolution.precinctParameters;\n    var codeblocks = [];\n    var precincts = [];\n    var i, j, codeblock, precinctNumber;\n    for (j = cby0; j < cby1; j++) {\n      for (i = cbx0; i < cbx1; i++) {\n        codeblock = {\n          cbx: i,\n          cby: j,\n          tbx0: codeblockWidth * i,\n          tby0: codeblockHeight * j,\n          tbx1: codeblockWidth * (i + 1),\n          tby1: codeblockHeight * (j + 1)\n        };\n        codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n        codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n        codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n        codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n        var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband);\n        var pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband);\n        precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n        codeblock.precinctNumber = precinctNumber;\n        codeblock.subbandType = subband.type;\n        codeblock.Lblock = 3;\n        if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) {\n          continue;\n        }\n        codeblocks.push(codeblock);\n        var precinct = precincts[precinctNumber];\n        if (precinct !== undefined) {\n          if (i < precinct.cbxMin) {\n            precinct.cbxMin = i;\n          } else if (i > precinct.cbxMax) {\n            precinct.cbxMax = i;\n          }\n          if (j < precinct.cbyMin) {\n            precinct.cbxMin = j;\n          } else if (j > precinct.cbyMax) {\n            precinct.cbyMax = j;\n          }\n        } else {\n          precincts[precinctNumber] = precinct = {\n            cbxMin: i,\n            cbyMin: j,\n            cbxMax: i,\n            cbyMax: j\n          };\n        }\n        codeblock.precinct = precinct;\n      }\n    }\n    subband.codeblockParameters = {\n      codeblockWidth: xcb_,\n      codeblockHeight: ycb_,\n      numcodeblockwide: cbx1 - cbx0 + 1,\n      numcodeblockhigh: cby1 - cby0 + 1\n    };\n    subband.codeblocks = codeblocks;\n    subband.precincts = precincts;\n  }\n  function createPacket(resolution, precinctNumber, layerNumber) {\n    var precinctCodeblocks = [];\n    var subbands = resolution.subbands;\n    for (var i = 0, ii = subbands.length; i < ii; i++) {\n      var subband = subbands[i];\n      var codeblocks = subband.codeblocks;\n      for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n        var codeblock = codeblocks[j];\n        if (codeblock.precinctNumber !== precinctNumber) {\n          continue;\n        }\n        precinctCodeblocks.push(codeblock);\n      }\n    }\n    return {\n      layerNumber: layerNumber,\n      codeblocks: precinctCodeblocks\n    };\n  }\n  function LayerResolutionComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);\n    }\n    var l = 0,\n        r = 0,\n        i = 0,\n        k = 0;\n    this.nextPacket = function JpxImage_nextPacket() {\n      for (; l < layersCount; l++) {\n        for (; r <= maxDecompositionLevelsCount; r++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts;) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        r = 0;\n      }\n      throw new JpxError('Out of packets');\n    };\n  }\n  function ResolutionLayerComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);\n    }\n    var r = 0,\n        l = 0,\n        i = 0,\n        k = 0;\n    this.nextPacket = function JpxImage_nextPacket() {\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; l < layersCount; l++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts;) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        l = 0;\n      }\n      throw new JpxError('Out of packets');\n    };\n  }\n  function ResolutionPositionComponentLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var l, r, c, p;\n    var maxDecompositionLevelsCount = 0;\n    for (c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount);\n    }\n    var maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1);\n    for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n      var maxNumPrecincts = 0;\n      for (c = 0; c < componentsCount; ++c) {\n        var resolutions = tile.components[c].resolutions;\n        if (r < resolutions.length) {\n          maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts);\n        }\n      }\n      maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n    }\n    l = 0;\n    r = 0;\n    c = 0;\n    p = 0;\n    this.nextPacket = function JpxImage_nextPacket() {\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; p < maxNumPrecinctsInLevel[r]; p++) {\n          for (; c < componentsCount; c++) {\n            var component = tile.components[c];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            if (p >= numprecincts) {\n              continue;\n            }\n            for (; l < layersCount;) {\n              var packet = createPacket(resolution, p, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          c = 0;\n        }\n        p = 0;\n      }\n      throw new JpxError('Out of packets');\n    };\n  }\n  function PositionComponentResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var precinctsIterationSizes = precinctsSizes;\n    var l = 0,\n        r = 0,\n        c = 0,\n        px = 0,\n        py = 0;\n    this.nextPacket = function JpxImage_nextPacket() {\n      for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n        for (; px < precinctsIterationSizes.maxNumWide; px++) {\n          for (; c < componentsCount; c++) {\n            var component = tile.components[c];\n            var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale = precinctsSizes.components[c].resolutions[r];\n              var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount;) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          c = 0;\n        }\n        px = 0;\n      }\n      throw new JpxError('Out of packets');\n    };\n  }\n  function ComponentPositionResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var l = 0,\n        r = 0,\n        c = 0,\n        px = 0,\n        py = 0;\n    this.nextPacket = function JpxImage_nextPacket() {\n      for (; c < componentsCount; ++c) {\n        var component = tile.components[c];\n        var precinctsIterationSizes = precinctsSizes.components[c];\n        var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n        for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n          for (; px < precinctsIterationSizes.maxNumWide; px++) {\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n              var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount;) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          px = 0;\n        }\n        py = 0;\n      }\n      throw new JpxError('Out of packets');\n    };\n  }\n  function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {\n    var posX = pxIndex * precinctIterationSizes.minWidth;\n    var posY = pyIndex * precinctIterationSizes.minHeight;\n    if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) {\n      return null;\n    }\n    var startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide;\n    return posX / sizeInImageScale.height + startPrecinctRowIndex;\n  }\n  function getPrecinctSizesInImageScale(tile) {\n    var componentsCount = tile.components.length;\n    var minWidth = Number.MAX_VALUE;\n    var minHeight = Number.MAX_VALUE;\n    var maxNumWide = 0;\n    var maxNumHigh = 0;\n    var sizePerComponent = new Array(componentsCount);\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n      var sizePerResolution = new Array(decompositionLevelsCount + 1);\n      var minWidthCurrentComponent = Number.MAX_VALUE;\n      var minHeightCurrentComponent = Number.MAX_VALUE;\n      var maxNumWideCurrentComponent = 0;\n      var maxNumHighCurrentComponent = 0;\n      var scale = 1;\n      for (var r = decompositionLevelsCount; r >= 0; --r) {\n        var resolution = component.resolutions[r];\n        var widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth;\n        var heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight;\n        minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution);\n        minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution);\n        maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide);\n        maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh);\n        sizePerResolution[r] = {\n          width: widthCurrentResolution,\n          height: heightCurrentResolution\n        };\n        scale <<= 1;\n      }\n      minWidth = Math.min(minWidth, minWidthCurrentComponent);\n      minHeight = Math.min(minHeight, minHeightCurrentComponent);\n      maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n      maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n      sizePerComponent[c] = {\n        resolutions: sizePerResolution,\n        minWidth: minWidthCurrentComponent,\n        minHeight: minHeightCurrentComponent,\n        maxNumWide: maxNumWideCurrentComponent,\n        maxNumHigh: maxNumHighCurrentComponent\n      };\n    }\n    return {\n      components: sizePerComponent,\n      minWidth: minWidth,\n      minHeight: minHeight,\n      maxNumWide: maxNumWide,\n      maxNumHigh: maxNumHigh\n    };\n  }\n  function buildPackets(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var componentsCount = siz.Csiz;\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n      var resolutions = [];\n      var subbands = [];\n      for (var r = 0; r <= decompositionLevelsCount; r++) {\n        var blocksDimensions = getBlocksDimensions(context, component, r);\n        var resolution = {};\n        var scale = 1 << decompositionLevelsCount - r;\n        resolution.trx0 = Math.ceil(component.tcx0 / scale);\n        resolution.try0 = Math.ceil(component.tcy0 / scale);\n        resolution.trx1 = Math.ceil(component.tcx1 / scale);\n        resolution.try1 = Math.ceil(component.tcy1 / scale);\n        resolution.resLevel = r;\n        buildPrecincts(context, resolution, blocksDimensions);\n        resolutions.push(resolution);\n        var subband;\n        if (r === 0) {\n          subband = {};\n          subband.type = 'LL';\n          subband.tbx0 = Math.ceil(component.tcx0 / scale);\n          subband.tby0 = Math.ceil(component.tcy0 / scale);\n          subband.tbx1 = Math.ceil(component.tcx1 / scale);\n          subband.tby1 = Math.ceil(component.tcy1 / scale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolution.subbands = [subband];\n        } else {\n          var bscale = 1 << decompositionLevelsCount - r + 1;\n          var resolutionSubbands = [];\n          subband = {};\n          subband.type = 'HL';\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n          subband = {};\n          subband.type = 'LH';\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n          subband = {};\n          subband.type = 'HH';\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n          resolution.subbands = resolutionSubbands;\n        }\n      }\n      component.resolutions = resolutions;\n      component.subbands = subbands;\n    }\n    var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n    switch (progressionOrder) {\n      case 0:\n        tile.packetsIterator = new LayerResolutionComponentPositionIterator(context);\n        break;\n      case 1:\n        tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context);\n        break;\n      case 2:\n        tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context);\n        break;\n      case 3:\n        tile.packetsIterator = new PositionComponentResolutionLayerIterator(context);\n        break;\n      case 4:\n        tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context);\n        break;\n      default:\n        throw new JpxError('Unsupported progression order ' + progressionOrder);\n    }\n  }\n  function parseTilePackets(context, data, offset, dataLength) {\n    var position = 0;\n    var buffer,\n        bufferSize = 0,\n        skipNextBit = false;\n    function readBits(count) {\n      while (bufferSize < count) {\n        var b = data[offset + position];\n        position++;\n        if (skipNextBit) {\n          buffer = buffer << 7 | b;\n          bufferSize += 7;\n          skipNextBit = false;\n        } else {\n          buffer = buffer << 8 | b;\n          bufferSize += 8;\n        }\n        if (b === 0xFF) {\n          skipNextBit = true;\n        }\n      }\n      bufferSize -= count;\n      return buffer >>> bufferSize & (1 << count) - 1;\n    }\n    function skipMarkerIfEqual(value) {\n      if (data[offset + position - 1] === 0xFF && data[offset + position] === value) {\n        skipBytes(1);\n        return true;\n      } else if (data[offset + position] === 0xFF && data[offset + position + 1] === value) {\n        skipBytes(2);\n        return true;\n      }\n      return false;\n    }\n    function skipBytes(count) {\n      position += count;\n    }\n    function alignToByte() {\n      bufferSize = 0;\n      if (skipNextBit) {\n        position++;\n        skipNextBit = false;\n      }\n    }\n    function readCodingpasses() {\n      if (readBits(1) === 0) {\n        return 1;\n      }\n      if (readBits(1) === 0) {\n        return 2;\n      }\n      var value = readBits(2);\n      if (value < 3) {\n        return value + 3;\n      }\n      value = readBits(5);\n      if (value < 31) {\n        return value + 6;\n      }\n      value = readBits(7);\n      return value + 37;\n    }\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var sopMarkerUsed = context.COD.sopMarkerUsed;\n    var ephMarkerUsed = context.COD.ephMarkerUsed;\n    var packetsIterator = tile.packetsIterator;\n    while (position < dataLength) {\n      alignToByte();\n      if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n        skipBytes(4);\n      }\n      var packet = packetsIterator.nextPacket();\n      if (!readBits(1)) {\n        continue;\n      }\n      var layerNumber = packet.layerNumber;\n      var queue = [],\n          codeblock;\n      for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n        codeblock = packet.codeblocks[i];\n        var precinct = codeblock.precinct;\n        var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n        var codeblockRow = codeblock.cby - precinct.cbyMin;\n        var codeblockIncluded = false;\n        var firstTimeInclusion = false;\n        var valueReady;\n        if (codeblock['included'] !== undefined) {\n          codeblockIncluded = !!readBits(1);\n        } else {\n          precinct = codeblock.precinct;\n          var inclusionTree, zeroBitPlanesTree;\n          if (precinct['inclusionTree'] !== undefined) {\n            inclusionTree = precinct.inclusionTree;\n          } else {\n            var width = precinct.cbxMax - precinct.cbxMin + 1;\n            var height = precinct.cbyMax - precinct.cbyMin + 1;\n            inclusionTree = new InclusionTree(width, height, layerNumber);\n            zeroBitPlanesTree = new TagTree(width, height);\n            precinct.inclusionTree = inclusionTree;\n            precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n          }\n          if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n            while (true) {\n              if (readBits(1)) {\n                valueReady = !inclusionTree.nextLevel();\n                if (valueReady) {\n                  codeblock.included = true;\n                  codeblockIncluded = firstTimeInclusion = true;\n                  break;\n                }\n              } else {\n                inclusionTree.incrementValue(layerNumber);\n                break;\n              }\n            }\n          }\n        }\n        if (!codeblockIncluded) {\n          continue;\n        }\n        if (firstTimeInclusion) {\n          zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n          zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n          while (true) {\n            if (readBits(1)) {\n              valueReady = !zeroBitPlanesTree.nextLevel();\n              if (valueReady) {\n                break;\n              }\n            } else {\n              zeroBitPlanesTree.incrementValue();\n            }\n          }\n          codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n        }\n        var codingpasses = readCodingpasses();\n        while (readBits(1)) {\n          codeblock.Lblock++;\n        }\n        var codingpassesLog2 = (0, _util.log2)(codingpasses);\n        var bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;\n        var codedDataLength = readBits(bits);\n        queue.push({\n          codeblock: codeblock,\n          codingpasses: codingpasses,\n          dataLength: codedDataLength\n        });\n      }\n      alignToByte();\n      if (ephMarkerUsed) {\n        skipMarkerIfEqual(0x92);\n      }\n      while (queue.length > 0) {\n        var packetItem = queue.shift();\n        codeblock = packetItem.codeblock;\n        if (codeblock['data'] === undefined) {\n          codeblock.data = [];\n        }\n        codeblock.data.push({\n          data: data,\n          start: offset + position,\n          end: offset + position + packetItem.dataLength,\n          codingpasses: packetItem.codingpasses\n        });\n        position += packetItem.dataLength;\n      }\n    }\n    return position;\n  }\n  function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed) {\n    var x0 = subband.tbx0;\n    var y0 = subband.tby0;\n    var width = subband.tbx1 - subband.tbx0;\n    var codeblocks = subband.codeblocks;\n    var right = subband.type.charAt(0) === 'H' ? 1 : 0;\n    var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0;\n    for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n      var codeblock = codeblocks[i];\n      var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n      var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n      if (blockWidth === 0 || blockHeight === 0) {\n        continue;\n      }\n      if (codeblock['data'] === undefined) {\n        continue;\n      }\n      var bitModel, currentCodingpassType;\n      bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb);\n      currentCodingpassType = 2;\n      var data = codeblock.data,\n          totalLength = 0,\n          codingpasses = 0;\n      var j, jj, dataItem;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        totalLength += dataItem.end - dataItem.start;\n        codingpasses += dataItem.codingpasses;\n      }\n      var encodedData = new Uint8Array(totalLength);\n      var position = 0;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n        encodedData.set(chunk, position);\n        position += chunk.length;\n      }\n      var decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength);\n      bitModel.setDecoder(decoder);\n      for (j = 0; j < codingpasses; j++) {\n        switch (currentCodingpassType) {\n          case 0:\n            bitModel.runSignificancePropagationPass();\n            break;\n          case 1:\n            bitModel.runMagnitudeRefinementPass();\n            break;\n          case 2:\n            bitModel.runCleanupPass();\n            if (segmentationSymbolUsed) {\n              bitModel.checkSegmentationSymbol();\n            }\n            break;\n        }\n        currentCodingpassType = (currentCodingpassType + 1) % 3;\n      }\n      var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n      var sign = bitModel.coefficentsSign;\n      var magnitude = bitModel.coefficentsMagnitude;\n      var bitsDecoded = bitModel.bitsDecoded;\n      var magnitudeCorrection = reversible ? 0 : 0.5;\n      var k, n, nb;\n      position = 0;\n      var interleave = subband.type !== 'LL';\n      for (j = 0; j < blockHeight; j++) {\n        var row = offset / width | 0;\n        var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n        for (k = 0; k < blockWidth; k++) {\n          n = magnitude[position];\n          if (n !== 0) {\n            n = (n + magnitudeCorrection) * delta;\n            if (sign[position] !== 0) {\n              n = -n;\n            }\n            nb = bitsDecoded[position];\n            var pos = interleave ? levelOffset + (offset << 1) : offset;\n            if (reversible && nb >= mb) {\n              coefficients[pos] = n;\n            } else {\n              coefficients[pos] = n * (1 << mb - nb);\n            }\n          }\n          offset++;\n          position++;\n        }\n        offset += width - blockWidth;\n      }\n    }\n  }\n  function transformTile(context, tile, c) {\n    var component = tile.components[c];\n    var codingStyleParameters = component.codingStyleParameters;\n    var quantizationParameters = component.quantizationParameters;\n    var decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount;\n    var spqcds = quantizationParameters.SPqcds;\n    var scalarExpounded = quantizationParameters.scalarExpounded;\n    var guardBits = quantizationParameters.guardBits;\n    var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n    var precision = context.components[c].precision;\n    var reversible = codingStyleParameters.reversibleTransformation;\n    var transform = reversible ? new ReversibleTransform() : new IrreversibleTransform();\n    var subbandCoefficients = [];\n    var b = 0;\n    for (var i = 0; i <= decompositionLevelsCount; i++) {\n      var resolution = component.resolutions[i];\n      var width = resolution.trx1 - resolution.trx0;\n      var height = resolution.try1 - resolution.try0;\n      var coefficients = new Float32Array(width * height);\n      for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n        var mu, epsilon;\n        if (!scalarExpounded) {\n          mu = spqcds[0].mu;\n          epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n        } else {\n          mu = spqcds[b].mu;\n          epsilon = spqcds[b].epsilon;\n          b++;\n        }\n        var subband = resolution.subbands[j];\n        var gainLog2 = SubbandsGainLog2[subband.type];\n        var delta = reversible ? 1 : Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048);\n        var mb = guardBits + epsilon - 1;\n        copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed);\n      }\n      subbandCoefficients.push({\n        width: width,\n        height: height,\n        items: coefficients\n      });\n    }\n    var result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0);\n    return {\n      left: component.tcx0,\n      top: component.tcy0,\n      width: result.width,\n      height: result.height,\n      items: result.items\n    };\n  }\n  function transformComponents(context) {\n    var siz = context.SIZ;\n    var components = context.components;\n    var componentsCount = siz.Csiz;\n    var resultImages = [];\n    for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n      var tile = context.tiles[i];\n      var transformedTiles = [];\n      var c;\n      for (c = 0; c < componentsCount; c++) {\n        transformedTiles[c] = transformTile(context, tile, c);\n      }\n      var tile0 = transformedTiles[0];\n      var out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n      var result = {\n        left: tile0.left,\n        top: tile0.top,\n        width: tile0.width,\n        height: tile0.height,\n        items: out\n      };\n      var shift, offset;\n      var pos = 0,\n          j,\n          jj,\n          y0,\n          y1,\n          y2;\n      if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n        var fourComponents = componentsCount === 4;\n        var y0items = transformedTiles[0].items;\n        var y1items = transformedTiles[1].items;\n        var y2items = transformedTiles[2].items;\n        var y3items = fourComponents ? transformedTiles[3].items : null;\n        shift = components[0].precision - 8;\n        offset = (128 << shift) + 0.5;\n        var component0 = tile.components[0];\n        var alpha01 = componentsCount - 3;\n        jj = y0items.length;\n        if (!component0.codingStyleParameters.reversibleTransformation) {\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            out[pos++] = y0 + 1.402 * y2 >> shift;\n            out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift;\n            out[pos++] = y0 + 1.772 * y1 >> shift;\n          }\n        } else {\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            var g = y0 - (y2 + y1 >> 2);\n            out[pos++] = g + y2 >> shift;\n            out[pos++] = g >> shift;\n            out[pos++] = g + y1 >> shift;\n          }\n        }\n        if (fourComponents) {\n          for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n            out[pos] = y3items[j] + offset >> shift;\n          }\n        }\n      } else {\n        for (c = 0; c < componentsCount; c++) {\n          var items = transformedTiles[c].items;\n          shift = components[c].precision - 8;\n          offset = (128 << shift) + 0.5;\n          for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n            out[pos] = items[j] + offset >> shift;\n            pos += componentsCount;\n          }\n        }\n      }\n      resultImages.push(result);\n    }\n    return resultImages;\n  }\n  function initializeTile(context, tileIndex) {\n    var siz = context.SIZ;\n    var componentsCount = siz.Csiz;\n    var tile = context.tiles[tileIndex];\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD;\n      component.quantizationParameters = qcdOrQcc;\n      var codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD;\n      component.codingStyleParameters = codOrCoc;\n    }\n    tile.codingStyleDefaultParameters = context.currentTile.COD;\n  }\n  var TagTree = function TagTreeClosure() {\n    function TagTree(width, height) {\n      var levelsLength = (0, _util.log2)(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var level = {\n          width: width,\n          height: height,\n          items: []\n        };\n        this.levels.push(level);\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    TagTree.prototype = {\n      reset: function TagTree_reset(i, j) {\n        var currentLevel = 0,\n            value = 0,\n            level;\n        while (currentLevel < this.levels.length) {\n          level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          if (level.items[index] !== undefined) {\n            value = level.items[index];\n            break;\n          }\n          level.index = index;\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        currentLevel--;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        this.currentLevel = currentLevel;\n        delete this.value;\n      },\n      incrementValue: function TagTree_incrementValue() {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index]++;\n      },\n      nextLevel: function TagTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        currentLevel--;\n        if (currentLevel < 0) {\n          this.value = value;\n          return false;\n        }\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      }\n    };\n    return TagTree;\n  }();\n  var InclusionTree = function InclusionTreeClosure() {\n    function InclusionTree(width, height, defaultValue) {\n      var levelsLength = (0, _util.log2)(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var items = new Uint8Array(width * height);\n        for (var j = 0, jj = items.length; j < jj; j++) {\n          items[j] = defaultValue;\n        }\n        var level = {\n          width: width,\n          height: height,\n          items: items\n        };\n        this.levels.push(level);\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    InclusionTree.prototype = {\n      reset: function InclusionTree_reset(i, j, stopValue) {\n        var currentLevel = 0;\n        while (currentLevel < this.levels.length) {\n          var level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          level.index = index;\n          var value = level.items[index];\n          if (value === 0xFF) {\n            break;\n          }\n          if (value > stopValue) {\n            this.currentLevel = currentLevel;\n            this.propagateValues();\n            return false;\n          }\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        this.currentLevel = currentLevel - 1;\n        return true;\n      },\n      incrementValue: function InclusionTree_incrementValue(stopValue) {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index] = stopValue + 1;\n        this.propagateValues();\n      },\n      propagateValues: function InclusionTree_propagateValues() {\n        var levelIndex = this.currentLevel;\n        var level = this.levels[levelIndex];\n        var currentValue = level.items[level.index];\n        while (--levelIndex >= 0) {\n          level = this.levels[levelIndex];\n          level.items[level.index] = currentValue;\n        }\n      },\n      nextLevel: function InclusionTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        level.items[level.index] = 0xFF;\n        currentLevel--;\n        if (currentLevel < 0) {\n          return false;\n        }\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      }\n    };\n    return InclusionTree;\n  }();\n  var BitModel = function BitModelClosure() {\n    var UNIFORM_CONTEXT = 17;\n    var RUNLENGTH_CONTEXT = 18;\n    var LLAndLHContextsLabel = new Uint8Array([0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8]);\n    var HLContextLabel = new Uint8Array([0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8]);\n    var HHContextLabel = new Uint8Array([0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8]);\n    function BitModel(width, height, subband, zeroBitPlanes, mb) {\n      this.width = width;\n      this.height = height;\n      this.contextLabelTable = subband === 'HH' ? HHContextLabel : subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel;\n      var coefficientCount = width * height;\n      this.neighborsSignificance = new Uint8Array(coefficientCount);\n      this.coefficentsSign = new Uint8Array(coefficientCount);\n      this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) : mb > 6 ? new Uint16Array(coefficientCount) : new Uint8Array(coefficientCount);\n      this.processingFlags = new Uint8Array(coefficientCount);\n      var bitsDecoded = new Uint8Array(coefficientCount);\n      if (zeroBitPlanes !== 0) {\n        for (var i = 0; i < coefficientCount; i++) {\n          bitsDecoded[i] = zeroBitPlanes;\n        }\n      }\n      this.bitsDecoded = bitsDecoded;\n      this.reset();\n    }\n    BitModel.prototype = {\n      setDecoder: function BitModel_setDecoder(decoder) {\n        this.decoder = decoder;\n      },\n      reset: function BitModel_reset() {\n        this.contexts = new Int8Array(19);\n        this.contexts[0] = 4 << 1 | 0;\n        this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0;\n        this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0;\n      },\n      setNeighborsSignificance: function BitModel_setNeighborsSignificance(row, column, index) {\n        var neighborsSignificance = this.neighborsSignificance;\n        var width = this.width,\n            height = this.height;\n        var left = column > 0;\n        var right = column + 1 < width;\n        var i;\n        if (row > 0) {\n          i = index - width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n        if (row + 1 < height) {\n          i = index + width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n        if (left) {\n          neighborsSignificance[index - 1] += 0x01;\n        }\n        if (right) {\n          neighborsSignificance[index + 1] += 0x01;\n        }\n        neighborsSignificance[index] |= 0x80;\n      },\n      runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n            height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var neighborsSignificance = this.neighborsSignificance;\n        var processingFlags = this.processingFlags;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processedInverseMask = ~1;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        for (var i0 = 0; i0 < height; i0 += 4) {\n          for (var j = 0; j < width; j++) {\n            var index = i0 * width + j;\n            for (var i1 = 0; i1 < 4; i1++, index += width) {\n              var i = i0 + i1;\n              if (i >= height) {\n                break;\n              }\n              processingFlags[index] &= processedInverseMask;\n              if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n                continue;\n              }\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision) {\n                var sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n        var width = this.width,\n            height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contribution, sign0, sign1, significance1;\n        var contextLabel, decoded;\n        significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n        if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n          sign1 = coefficentsSign[index + 1];\n          if (significance1) {\n            sign0 = coefficentsSign[index - 1];\n            contribution = 1 - sign1 - sign0;\n          } else {\n            contribution = 1 - sign1 - sign1;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - 1];\n          contribution = 1 - sign0 - sign0;\n        } else {\n          contribution = 0;\n        }\n        var horizontalContribution = 3 * contribution;\n        significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n        if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n          sign1 = coefficentsSign[index + width];\n          if (significance1) {\n            sign0 = coefficentsSign[index - width];\n            contribution = 1 - sign1 - sign0 + horizontalContribution;\n          } else {\n            contribution = 1 - sign1 - sign1 + horizontalContribution;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - width];\n          contribution = 1 - sign0 - sign0 + horizontalContribution;\n        } else {\n          contribution = horizontalContribution;\n        }\n        if (contribution >= 0) {\n          contextLabel = 9 + contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel);\n        } else {\n          contextLabel = 9 - contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n        }\n        return decoded;\n      },\n      runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n            height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var neighborsSignificance = this.neighborsSignificance;\n        var contexts = this.contexts;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var length = width * height;\n        var width4 = width * 4;\n        for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n          indexNext = Math.min(length, index0 + width4);\n          for (var j = 0; j < width; j++) {\n            for (var index = index0 + j; index < indexNext; index += width) {\n              if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {\n                continue;\n              }\n              var contextLabel = 16;\n              if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n                processingFlags[index] ^= firstMagnitudeBitMask;\n                var significance = neighborsSignificance[index] & 127;\n                contextLabel = significance === 0 ? 15 : 14;\n              }\n              var bit = decoder.readBit(contexts, contextLabel);\n              coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit;\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      runCleanupPass: function BitModel_runCleanupPass() {\n        var decoder = this.decoder;\n        var width = this.width,\n            height = this.height;\n        var neighborsSignificance = this.neighborsSignificance;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var oneRowDown = width;\n        var twoRowsDown = width * 2;\n        var threeRowsDown = width * 3;\n        var iNext;\n        for (var i0 = 0; i0 < height; i0 = iNext) {\n          iNext = Math.min(i0 + 4, height);\n          var indexBase = i0 * width;\n          var checkAllEmpty = i0 + 3 < height;\n          for (var j = 0; j < width; j++) {\n            var index0 = indexBase + j;\n            var allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0;\n            var i1 = 0,\n                index = index0;\n            var i = i0,\n                sign;\n            if (allEmpty) {\n              var hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT);\n              if (!hasSignificantCoefficent) {\n                bitsDecoded[index0]++;\n                bitsDecoded[index0 + oneRowDown]++;\n                bitsDecoded[index0 + twoRowsDown]++;\n                bitsDecoded[index0 + threeRowsDown]++;\n                continue;\n              }\n              i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);\n              if (i1 !== 0) {\n                i = i0 + i1;\n                index += i1 * width;\n              }\n              sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n              index = index0;\n              for (var i2 = i0; i2 <= i; i2++, index += width) {\n                bitsDecoded[index]++;\n              }\n              i1++;\n            }\n            for (i = i0 + i1; i < iNext; i++, index += width) {\n              if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {\n                continue;\n              }\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision === 1) {\n                sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n            }\n          }\n        }\n      },\n      checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n        var decoder = this.decoder;\n        var contexts = this.contexts;\n        var symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);\n        if (symbol !== 0xA) {\n          throw new JpxError('Invalid segmentation symbol');\n        }\n      }\n    };\n    return BitModel;\n  }();\n  var Transform = function TransformClosure() {\n    function Transform() {}\n    Transform.prototype.calculate = function transformCalculate(subbands, u0, v0) {\n      var ll = subbands[0];\n      for (var i = 1, ii = subbands.length; i < ii; i++) {\n        ll = this.iterate(ll, subbands[i], u0, v0);\n      }\n      return ll;\n    };\n    Transform.prototype.extend = function extend(buffer, offset, size) {\n      var i1 = offset - 1,\n          j1 = offset + 1;\n      var i2 = offset + size - 2,\n          j2 = offset + size;\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1] = buffer[j1];\n      buffer[j2] = buffer[i2];\n    };\n    Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh, u0, v0) {\n      var llWidth = ll.width,\n          llHeight = ll.height,\n          llItems = ll.items;\n      var width = hl_lh_hh.width;\n      var height = hl_lh_hh.height;\n      var items = hl_lh_hh.items;\n      var i, j, k, l, u, v;\n      for (k = 0, i = 0; i < llHeight; i++) {\n        l = i * 2 * width;\n        for (j = 0; j < llWidth; j++, k++, l += 2) {\n          items[l] = llItems[k];\n        }\n      }\n      llItems = ll.items = null;\n      var bufferPadding = 4;\n      var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n      if (width === 1) {\n        if ((u0 & 1) !== 0) {\n          for (v = 0, k = 0; v < height; v++, k += width) {\n            items[k] *= 0.5;\n          }\n        }\n      } else {\n        for (v = 0, k = 0; v < height; v++, k += width) {\n          rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n          this.extend(rowBuffer, bufferPadding, width);\n          this.filter(rowBuffer, bufferPadding, width);\n          items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n        }\n      }\n      var numBuffers = 16;\n      var colBuffers = [];\n      for (i = 0; i < numBuffers; i++) {\n        colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n      }\n      var b,\n          currentBuffer = 0;\n      ll = bufferPadding + height;\n      if (height === 1) {\n        if ((v0 & 1) !== 0) {\n          for (u = 0; u < width; u++) {\n            items[u] *= 0.5;\n          }\n        }\n      } else {\n        for (u = 0; u < width; u++) {\n          if (currentBuffer === 0) {\n            numBuffers = Math.min(width - u, numBuffers);\n            for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                colBuffers[b][l] = items[k + b];\n              }\n            }\n            currentBuffer = numBuffers;\n          }\n          currentBuffer--;\n          var buffer = colBuffers[currentBuffer];\n          this.extend(buffer, bufferPadding, height);\n          this.filter(buffer, bufferPadding, height);\n          if (currentBuffer === 0) {\n            k = u - numBuffers + 1;\n            for (l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                items[k + b] = colBuffers[b][l];\n              }\n            }\n          }\n        }\n      }\n      return {\n        width: width,\n        height: height,\n        items: items\n      };\n    };\n    return Transform;\n  }();\n  var IrreversibleTransform = function IrreversibleTransformClosure() {\n    function IrreversibleTransform() {\n      Transform.call(this);\n    }\n    IrreversibleTransform.prototype = Object.create(Transform.prototype);\n    IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(x, offset, length) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n, current, next;\n      var alpha = -1.586134342059924;\n      var beta = -0.052980118572961;\n      var gamma = 0.882911075530934;\n      var delta = 0.443506852043971;\n      var K = 1.230174104914001;\n      var K_ = 1 / K;\n      j = offset - 3;\n      for (n = len + 4; n--; j += 2) {\n        x[j] *= K_;\n      }\n      j = offset - 2;\n      current = delta * x[j - 1];\n      for (n = len + 3; n--; j += 2) {\n        next = delta * x[j + 1];\n        x[j] = K * x[j] - current - next;\n        if (n--) {\n          j += 2;\n          current = delta * x[j + 1];\n          x[j] = K * x[j] - current - next;\n        } else {\n          break;\n        }\n      }\n      j = offset - 1;\n      current = gamma * x[j - 1];\n      for (n = len + 2; n--; j += 2) {\n        next = gamma * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = gamma * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n      j = offset;\n      current = beta * x[j - 1];\n      for (n = len + 1; n--; j += 2) {\n        next = beta * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = beta * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n      if (len !== 0) {\n        j = offset + 1;\n        current = alpha * x[j - 1];\n        for (n = len; n--; j += 2) {\n          next = alpha * x[j + 1];\n          x[j] -= current + next;\n          if (n--) {\n            j += 2;\n            current = alpha * x[j + 1];\n            x[j] -= current + next;\n          } else {\n            break;\n          }\n        }\n      }\n    };\n    return IrreversibleTransform;\n  }();\n  var ReversibleTransform = function ReversibleTransformClosure() {\n    function ReversibleTransform() {\n      Transform.call(this);\n    }\n    ReversibleTransform.prototype = Object.create(Transform.prototype);\n    ReversibleTransform.prototype.filter = function reversibleTransformFilter(x, offset, length) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n;\n      for (j = offset, n = len + 1; n--; j += 2) {\n        x[j] -= x[j - 1] + x[j + 1] + 2 >> 2;\n      }\n      for (j = offset + 1, n = len; n--; j += 2) {\n        x[j] += x[j - 1] + x[j + 1] >> 1;\n      }\n    };\n    return ReversibleTransform;\n  }();\n  return JpxImage;\n}();\nexports.JpxImage = JpxImage;\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _stream = __w_pdfjs_require__(140);\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ARCFourCipher = function ARCFourCipherClosure() {\n  function ARCFourCipher(key) {\n    this.a = 0;\n    this.b = 0;\n    var s = new Uint8Array(256);\n    var i,\n        j = 0,\n        tmp,\n        keyLength = key.length;\n    for (i = 0; i < 256; ++i) {\n      s[i] = i;\n    }\n    for (i = 0; i < 256; ++i) {\n      tmp = s[i];\n      j = j + tmp + key[i % keyLength] & 0xFF;\n      s[i] = s[j];\n      s[j] = tmp;\n    }\n    this.s = s;\n  }\n  ARCFourCipher.prototype = {\n    encryptBlock: function ARCFourCipher_encryptBlock(data) {\n      var i,\n          n = data.length,\n          tmp,\n          tmp2;\n      var a = this.a,\n          b = this.b,\n          s = this.s;\n      var output = new Uint8Array(n);\n      for (i = 0; i < n; ++i) {\n        a = a + 1 & 0xFF;\n        tmp = s[a];\n        b = b + tmp & 0xFF;\n        tmp2 = s[b];\n        s[a] = tmp2;\n        s[b] = tmp;\n        output[i] = data[i] ^ s[tmp + tmp2 & 0xFF];\n      }\n      this.a = a;\n      this.b = b;\n      return output;\n    }\n  };\n  ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;\n  return ARCFourCipher;\n}();\nvar calculateMD5 = function calculateMD5Closure() {\n  var r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n  var k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);\n  function hash(data, offset, length) {\n    var h0 = 1732584193,\n        h1 = -271733879,\n        h2 = -1732584194,\n        h3 = 271733878;\n    var paddedLength = length + 72 & ~63;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = length << 3 & 0xFF;\n    padded[i++] = length >> 5 & 0xFF;\n    padded[i++] = length >> 13 & 0xFF;\n    padded[i++] = length >> 21 & 0xFF;\n    padded[i++] = length >>> 29 & 0xFF;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    var w = new Int32Array(16);\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j, i += 4) {\n        w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24;\n      }\n      var a = h0,\n          b = h1,\n          c = h2,\n          d = h3,\n          f,\n          g;\n      for (j = 0; j < 64; ++j) {\n        if (j < 16) {\n          f = b & c | ~b & d;\n          g = j;\n        } else if (j < 32) {\n          f = d & b | ~d & c;\n          g = 5 * j + 1 & 15;\n        } else if (j < 48) {\n          f = b ^ c ^ d;\n          g = 3 * j + 5 & 15;\n        } else {\n          f = c ^ (b | ~d);\n          g = 7 * j & 15;\n        }\n        var tmp = d,\n            rotateArg = a + f + k[j] + w[g] | 0,\n            rotate = r[j];\n        d = c;\n        c = b;\n        b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0;\n        a = tmp;\n      }\n      h0 = h0 + a | 0;\n      h1 = h1 + b | 0;\n      h2 = h2 + c | 0;\n      h3 = h3 + d | 0;\n    }\n    return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);\n  }\n  return hash;\n}();\nvar Word64 = function Word64Closure() {\n  function Word64(highInteger, lowInteger) {\n    this.high = highInteger | 0;\n    this.low = lowInteger | 0;\n  }\n  Word64.prototype = {\n    and: function Word64_and(word) {\n      this.high &= word.high;\n      this.low &= word.low;\n    },\n    xor: function Word64_xor(word) {\n      this.high ^= word.high;\n      this.low ^= word.low;\n    },\n    or: function Word64_or(word) {\n      this.high |= word.high;\n      this.low |= word.low;\n    },\n    shiftRight: function Word64_shiftRight(places) {\n      if (places >= 32) {\n        this.low = this.high >>> places - 32 | 0;\n        this.high = 0;\n      } else {\n        this.low = this.low >>> places | this.high << 32 - places;\n        this.high = this.high >>> places | 0;\n      }\n    },\n    shiftLeft: function Word64_shiftLeft(places) {\n      if (places >= 32) {\n        this.high = this.low << places - 32;\n        this.low = 0;\n      } else {\n        this.high = this.high << places | this.low >>> 32 - places;\n        this.low = this.low << places;\n      }\n    },\n    rotateRight: function Word64_rotateRight(places) {\n      var low, high;\n      if (places & 32) {\n        high = this.low;\n        low = this.high;\n      } else {\n        low = this.low;\n        high = this.high;\n      }\n      places &= 31;\n      this.low = low >>> places | high << 32 - places;\n      this.high = high >>> places | low << 32 - places;\n    },\n    not: function Word64_not() {\n      this.high = ~this.high;\n      this.low = ~this.low;\n    },\n    add: function Word64_add(word) {\n      var lowAdd = (this.low >>> 0) + (word.low >>> 0);\n      var highAdd = (this.high >>> 0) + (word.high >>> 0);\n      if (lowAdd > 0xFFFFFFFF) {\n        highAdd += 1;\n      }\n      this.low = lowAdd | 0;\n      this.high = highAdd | 0;\n    },\n    copyTo: function Word64_copyTo(bytes, offset) {\n      bytes[offset] = this.high >>> 24 & 0xFF;\n      bytes[offset + 1] = this.high >> 16 & 0xFF;\n      bytes[offset + 2] = this.high >> 8 & 0xFF;\n      bytes[offset + 3] = this.high & 0xFF;\n      bytes[offset + 4] = this.low >>> 24 & 0xFF;\n      bytes[offset + 5] = this.low >> 16 & 0xFF;\n      bytes[offset + 6] = this.low >> 8 & 0xFF;\n      bytes[offset + 7] = this.low & 0xFF;\n    },\n    assign: function Word64_assign(word) {\n      this.high = word.high;\n      this.low = word.low;\n    }\n  };\n  return Word64;\n}();\nvar calculateSHA256 = function calculateSHA256Closure() {\n  function rotr(x, n) {\n    return x >>> n | x << 32 - n;\n  }\n  function ch(x, y, z) {\n    return x & y ^ ~x & z;\n  }\n  function maj(x, y, z) {\n    return x & y ^ x & z ^ y & z;\n  }\n  function sigma(x) {\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n  }\n  function sigmaPrime(x) {\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n  }\n  function littleSigma(x) {\n    return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n  }\n  function littleSigmaPrime(x) {\n    return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n  }\n  var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n  function hash(data, offset, length) {\n    var h0 = 0x6a09e667,\n        h1 = 0xbb67ae85,\n        h2 = 0x3c6ef372,\n        h3 = 0xa54ff53a,\n        h4 = 0x510e527f,\n        h5 = 0x9b05688c,\n        h6 = 0x1f83d9ab,\n        h7 = 0x5be0cd19;\n    var paddedLength = Math.ceil((length + 9) / 64) * 64;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = length >>> 29 & 0xFF;\n    padded[i++] = length >> 21 & 0xFF;\n    padded[i++] = length >> 13 & 0xFF;\n    padded[i++] = length >> 5 & 0xFF;\n    padded[i++] = length << 3 & 0xFF;\n    var w = new Uint32Array(64);\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j) {\n        w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n        i += 4;\n      }\n      for (j = 16; j < 64; ++j) {\n        w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0;\n      }\n      var a = h0,\n          b = h1,\n          c = h2,\n          d = h3,\n          e = h4,\n          f = h5,\n          g = h6,\n          h = h7,\n          t1,\n          t2;\n      for (j = 0; j < 64; ++j) {\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n        t2 = sigma(a) + maj(a, b, c);\n        h = g;\n        g = f;\n        f = e;\n        e = d + t1 | 0;\n        d = c;\n        c = b;\n        b = a;\n        a = t1 + t2 | 0;\n      }\n      h0 = h0 + a | 0;\n      h1 = h1 + b | 0;\n      h2 = h2 + c | 0;\n      h3 = h3 + d | 0;\n      h4 = h4 + e | 0;\n      h5 = h5 + f | 0;\n      h6 = h6 + g | 0;\n      h7 = h7 + h | 0;\n    }\n    return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);\n  }\n  return hash;\n}();\nvar calculateSHA512 = function calculateSHA512Closure() {\n  function ch(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.not();\n    tmp.and(z);\n    result.xor(tmp);\n  }\n  function maj(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.and(z);\n    result.xor(tmp);\n    tmp.assign(y);\n    tmp.and(z);\n    result.xor(tmp);\n  }\n  function sigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(28);\n    tmp.assign(x);\n    tmp.rotateRight(34);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(39);\n    result.xor(tmp);\n  }\n  function sigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(14);\n    tmp.assign(x);\n    tmp.rotateRight(18);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(41);\n    result.xor(tmp);\n  }\n  function littleSigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(1);\n    tmp.assign(x);\n    tmp.rotateRight(8);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(7);\n    result.xor(tmp);\n  }\n  function littleSigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(19);\n    tmp.assign(x);\n    tmp.rotateRight(61);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(6);\n    result.xor(tmp);\n  }\n  var k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n  function hash(data, offset, length, mode384) {\n    mode384 = !!mode384;\n    var h0, h1, h2, h3, h4, h5, h6, h7;\n    if (!mode384) {\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n      h4 = new Word64(0x510e527f, 0xade682d1);\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\n    } else {\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n      h1 = new Word64(0x629a292a, 0x367cd507);\n      h2 = new Word64(0x9159015a, 0x3070dd17);\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\n      h4 = new Word64(0x67332667, 0xffc00b31);\n      h5 = new Word64(0x8eb44a87, 0x68581511);\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n    }\n    var paddedLength = Math.ceil((length + 17) / 128) * 128;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 16;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = length >>> 29 & 0xFF;\n    padded[i++] = length >> 21 & 0xFF;\n    padded[i++] = length >> 13 & 0xFF;\n    padded[i++] = length >> 5 & 0xFF;\n    padded[i++] = length << 3 & 0xFF;\n    var w = new Array(80);\n    for (i = 0; i < 80; i++) {\n      w[i] = new Word64(0, 0);\n    }\n    var a = new Word64(0, 0),\n        b = new Word64(0, 0),\n        c = new Word64(0, 0);\n    var d = new Word64(0, 0),\n        e = new Word64(0, 0),\n        f = new Word64(0, 0);\n    var g = new Word64(0, 0),\n        h = new Word64(0, 0);\n    var t1 = new Word64(0, 0),\n        t2 = new Word64(0, 0);\n    var tmp1 = new Word64(0, 0),\n        tmp2 = new Word64(0, 0),\n        tmp3;\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j) {\n        w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n        w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7];\n        i += 8;\n      }\n      for (j = 16; j < 80; ++j) {\n        tmp3 = w[j];\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n        tmp3.add(w[j - 7]);\n        littleSigma(tmp1, w[j - 15], tmp2);\n        tmp3.add(tmp1);\n        tmp3.add(w[j - 16]);\n      }\n      a.assign(h0);\n      b.assign(h1);\n      c.assign(h2);\n      d.assign(h3);\n      e.assign(h4);\n      f.assign(h5);\n      g.assign(h6);\n      h.assign(h7);\n      for (j = 0; j < 80; ++j) {\n        t1.assign(h);\n        sigmaPrime(tmp1, e, tmp2);\n        t1.add(tmp1);\n        ch(tmp1, e, f, g, tmp2);\n        t1.add(tmp1);\n        t1.add(k[j]);\n        t1.add(w[j]);\n        sigma(t2, a, tmp2);\n        maj(tmp1, a, b, c, tmp2);\n        t2.add(tmp1);\n        tmp3 = h;\n        h = g;\n        g = f;\n        f = e;\n        d.add(t1);\n        e = d;\n        d = c;\n        c = b;\n        b = a;\n        tmp3.assign(t1);\n        tmp3.add(t2);\n        a = tmp3;\n      }\n      h0.add(a);\n      h1.add(b);\n      h2.add(c);\n      h3.add(d);\n      h4.add(e);\n      h5.add(f);\n      h6.add(g);\n      h7.add(h);\n    }\n    var result;\n    if (!mode384) {\n      result = new Uint8Array(64);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n      h6.copyTo(result, 48);\n      h7.copyTo(result, 56);\n    } else {\n      result = new Uint8Array(48);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n    }\n    return result;\n  }\n  return hash;\n}();\nvar calculateSHA384 = function calculateSHA384Closure() {\n  function hash(data, offset, length) {\n    return calculateSHA512(data, offset, length, true);\n  }\n  return hash;\n}();\nvar NullCipher = function NullCipherClosure() {\n  function NullCipher() {}\n  NullCipher.prototype = {\n    decryptBlock: function NullCipher_decryptBlock(data) {\n      return data;\n    }\n  };\n  return NullCipher;\n}();\n\nvar AESBaseCipher = function () {\n  function AESBaseCipher() {\n    _classCallCheck(this, AESBaseCipher);\n\n    if (this.constructor === AESBaseCipher) {\n      (0, _util.unreachable)('Cannot initialize AESBaseCipher.');\n    }\n    this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);\n    this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);\n    this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n    this._mixCol = new Uint8Array(256);\n    for (var i = 0; i < 256; i++) {\n      if (i < 128) {\n        this._mixCol[i] = i << 1;\n      } else {\n        this._mixCol[i] = i << 1 ^ 0x1b;\n      }\n    }\n    this.buffer = new Uint8Array(16);\n    this.bufferPosition = 0;\n  }\n\n  _createClass(AESBaseCipher, [{\n    key: '_expandKey',\n    value: function _expandKey(cipherKey) {\n      (0, _util.unreachable)('Cannot call `_expandKey` on the base class');\n    }\n  }, {\n    key: '_decrypt',\n    value: function _decrypt(input, key) {\n      var t = void 0,\n          u = void 0,\n          v = void 0;\n      var state = new Uint8Array(16);\n      state.set(input);\n      for (var j = 0, k = this._keySize; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n      for (var i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n        t = state[13];\n        state[13] = state[9];\n        state[9] = state[5];\n        state[5] = state[1];\n        state[1] = t;\n        t = state[14];\n        u = state[10];\n        state[14] = state[6];\n        state[10] = state[2];\n        state[6] = t;\n        state[2] = u;\n        t = state[15];\n        u = state[11];\n        v = state[7];\n        state[15] = state[3];\n        state[11] = t;\n        state[7] = u;\n        state[3] = v;\n        for (var _j = 0; _j < 16; ++_j) {\n          state[_j] = this._inv_s[state[_j]];\n        }\n        for (var _j2 = 0, _k = i * 16; _j2 < 16; ++_j2, ++_k) {\n          state[_j2] ^= key[_k];\n        }\n        for (var _j3 = 0; _j3 < 16; _j3 += 4) {\n          var s0 = this._mix[state[_j3]];\n          var s1 = this._mix[state[_j3 + 1]];\n          var s2 = this._mix[state[_j3 + 2]];\n          var s3 = this._mix[state[_j3 + 3]];\n          t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8;\n          state[_j3] = t >>> 24 & 0xFF;\n          state[_j3 + 1] = t >> 16 & 0xFF;\n          state[_j3 + 2] = t >> 8 & 0xFF;\n          state[_j3 + 3] = t & 0xFF;\n        }\n      }\n      t = state[13];\n      state[13] = state[9];\n      state[9] = state[5];\n      state[5] = state[1];\n      state[1] = t;\n      t = state[14];\n      u = state[10];\n      state[14] = state[6];\n      state[10] = state[2];\n      state[6] = t;\n      state[2] = u;\n      t = state[15];\n      u = state[11];\n      v = state[7];\n      state[15] = state[3];\n      state[11] = t;\n      state[7] = u;\n      state[3] = v;\n      for (var _j4 = 0; _j4 < 16; ++_j4) {\n        state[_j4] = this._inv_s[state[_j4]];\n        state[_j4] ^= key[_j4];\n      }\n      return state;\n    }\n  }, {\n    key: '_encrypt',\n    value: function _encrypt(input, key) {\n      var s = this._s;\n      var t = void 0,\n          u = void 0,\n          v = void 0;\n      var state = new Uint8Array(16);\n      state.set(input);\n      for (var j = 0; j < 16; ++j) {\n        state[j] ^= key[j];\n      }\n      for (var i = 1; i < this._cyclesOfRepetition; i++) {\n        for (var _j5 = 0; _j5 < 16; ++_j5) {\n          state[_j5] = s[state[_j5]];\n        }\n        v = state[1];\n        state[1] = state[5];\n        state[5] = state[9];\n        state[9] = state[13];\n        state[13] = v;\n        v = state[2];\n        u = state[6];\n        state[2] = state[10];\n        state[6] = state[14];\n        state[10] = v;\n        state[14] = u;\n        v = state[3];\n        u = state[7];\n        t = state[11];\n        state[3] = state[15];\n        state[7] = v;\n        state[11] = u;\n        state[15] = t;\n        for (var _j6 = 0; _j6 < 16; _j6 += 4) {\n          var s0 = state[_j6 + 0];\n          var s1 = state[_j6 + 1];\n          var s2 = state[_j6 + 2];\n          var s3 = state[_j6 + 3];\n          t = s0 ^ s1 ^ s2 ^ s3;\n          state[_j6 + 0] ^= t ^ this._mixCol[s0 ^ s1];\n          state[_j6 + 1] ^= t ^ this._mixCol[s1 ^ s2];\n          state[_j6 + 2] ^= t ^ this._mixCol[s2 ^ s3];\n          state[_j6 + 3] ^= t ^ this._mixCol[s3 ^ s0];\n        }\n        for (var _j7 = 0, k = i * 16; _j7 < 16; ++_j7, ++k) {\n          state[_j7] ^= key[k];\n        }\n      }\n      for (var _j8 = 0; _j8 < 16; ++_j8) {\n        state[_j8] = s[state[_j8]];\n      }\n      v = state[1];\n      state[1] = state[5];\n      state[5] = state[9];\n      state[9] = state[13];\n      state[13] = v;\n      v = state[2];\n      u = state[6];\n      state[2] = state[10];\n      state[6] = state[14];\n      state[10] = v;\n      state[14] = u;\n      v = state[3];\n      u = state[7];\n      t = state[11];\n      state[3] = state[15];\n      state[7] = v;\n      state[11] = u;\n      state[15] = t;\n      for (var _j9 = 0, _k2 = this._keySize; _j9 < 16; ++_j9, ++_k2) {\n        state[_j9] ^= key[_k2];\n      }\n      return state;\n    }\n  }, {\n    key: '_decryptBlock2',\n    value: function _decryptBlock2(data, finalize) {\n      var sourceLength = data.length;\n      var buffer = this.buffer,\n          bufferLength = this.bufferPosition;\n      var result = [],\n          iv = this.iv;\n      for (var i = 0; i < sourceLength; ++i) {\n        buffer[bufferLength] = data[i];\n        ++bufferLength;\n        if (bufferLength < 16) {\n          continue;\n        }\n        var plain = this._decrypt(buffer, this._key);\n        for (var j = 0; j < 16; ++j) {\n          plain[j] ^= iv[j];\n        }\n        iv = buffer;\n        result.push(plain);\n        buffer = new Uint8Array(16);\n        bufferLength = 0;\n      }\n      this.buffer = buffer;\n      this.bufferLength = bufferLength;\n      this.iv = iv;\n      if (result.length === 0) {\n        return new Uint8Array(0);\n      }\n      var outputLength = 16 * result.length;\n      if (finalize) {\n        var lastBlock = result[result.length - 1];\n        var psLen = lastBlock[15];\n        if (psLen <= 16) {\n          for (var _i = 15, ii = 16 - psLen; _i >= ii; --_i) {\n            if (lastBlock[_i] !== psLen) {\n              psLen = 0;\n              break;\n            }\n          }\n          outputLength -= psLen;\n          result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n        }\n      }\n      var output = new Uint8Array(outputLength);\n      for (var _i2 = 0, _j10 = 0, _ii = result.length; _i2 < _ii; ++_i2, _j10 += 16) {\n        output.set(result[_i2], _j10);\n      }\n      return output;\n    }\n  }, {\n    key: 'decryptBlock',\n    value: function decryptBlock(data, finalize) {\n      var iv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n      var sourceLength = data.length;\n      var buffer = this.buffer,\n          bufferLength = this.bufferPosition;\n      if (iv) {\n        this.iv = iv;\n      } else {\n        for (var i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {\n          buffer[bufferLength] = data[i];\n        }\n        if (bufferLength < 16) {\n          this.bufferLength = bufferLength;\n          return new Uint8Array(0);\n        }\n        this.iv = buffer;\n        data = data.subarray(16);\n      }\n      this.buffer = new Uint8Array(16);\n      this.bufferLength = 0;\n      this.decryptBlock = this._decryptBlock2;\n      return this.decryptBlock(data, finalize);\n    }\n  }, {\n    key: 'encrypt',\n    value: function encrypt(data, iv) {\n      var sourceLength = data.length;\n      var buffer = this.buffer,\n          bufferLength = this.bufferPosition;\n      var result = [];\n      if (!iv) {\n        iv = new Uint8Array(16);\n      }\n      for (var i = 0; i < sourceLength; ++i) {\n        buffer[bufferLength] = data[i];\n        ++bufferLength;\n        if (bufferLength < 16) {\n          continue;\n        }\n        for (var j = 0; j < 16; ++j) {\n          buffer[j] ^= iv[j];\n        }\n        var cipher = this._encrypt(buffer, this._key);\n        iv = cipher;\n        result.push(cipher);\n        buffer = new Uint8Array(16);\n        bufferLength = 0;\n      }\n      this.buffer = buffer;\n      this.bufferLength = bufferLength;\n      this.iv = iv;\n      if (result.length === 0) {\n        return new Uint8Array(0);\n      }\n      var outputLength = 16 * result.length;\n      var output = new Uint8Array(outputLength);\n      for (var _i3 = 0, _j11 = 0, ii = result.length; _i3 < ii; ++_i3, _j11 += 16) {\n        output.set(result[_i3], _j11);\n      }\n      return output;\n    }\n  }]);\n\n  return AESBaseCipher;\n}();\n\nvar AES128Cipher = function (_AESBaseCipher) {\n  _inherits(AES128Cipher, _AESBaseCipher);\n\n  function AES128Cipher(key) {\n    _classCallCheck(this, AES128Cipher);\n\n    var _this = _possibleConstructorReturn(this, (AES128Cipher.__proto__ || Object.getPrototypeOf(AES128Cipher)).call(this));\n\n    _this._cyclesOfRepetition = 10;\n    _this._keySize = 160;\n    _this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);\n    _this._key = _this._expandKey(key);\n    return _this;\n  }\n\n  _createClass(AES128Cipher, [{\n    key: '_expandKey',\n    value: function _expandKey(cipherKey) {\n      var b = 176;\n      var s = this._s;\n      var rcon = this._rcon;\n      var result = new Uint8Array(b);\n      result.set(cipherKey);\n      for (var j = 16, i = 1; j < b; ++i) {\n        var t1 = result[j - 3];\n        var t2 = result[j - 2];\n        var t3 = result[j - 1];\n        var t4 = result[j - 4];\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n        t1 = t1 ^ rcon[i];\n        for (var n = 0; n < 4; ++n) {\n          result[j] = t1 ^= result[j - 16];\n          j++;\n          result[j] = t2 ^= result[j - 16];\n          j++;\n          result[j] = t3 ^= result[j - 16];\n          j++;\n          result[j] = t4 ^= result[j - 16];\n          j++;\n        }\n      }\n      return result;\n    }\n  }]);\n\n  return AES128Cipher;\n}(AESBaseCipher);\n\nvar AES256Cipher = function (_AESBaseCipher2) {\n  _inherits(AES256Cipher, _AESBaseCipher2);\n\n  function AES256Cipher(key) {\n    _classCallCheck(this, AES256Cipher);\n\n    var _this2 = _possibleConstructorReturn(this, (AES256Cipher.__proto__ || Object.getPrototypeOf(AES256Cipher)).call(this));\n\n    _this2._cyclesOfRepetition = 14;\n    _this2._keySize = 224;\n    _this2._key = _this2._expandKey(key);\n    return _this2;\n  }\n\n  _createClass(AES256Cipher, [{\n    key: '_expandKey',\n    value: function _expandKey(cipherKey) {\n      var b = 240;\n      var s = this._s;\n      var result = new Uint8Array(b);\n      result.set(cipherKey);\n      var r = 1;\n      var t1 = void 0,\n          t2 = void 0,\n          t3 = void 0,\n          t4 = void 0;\n      for (var j = 32, i = 1; j < b; ++i) {\n        if (j % 32 === 16) {\n          t1 = s[t1];\n          t2 = s[t2];\n          t3 = s[t3];\n          t4 = s[t4];\n        } else if (j % 32 === 0) {\n          t1 = result[j - 3];\n          t2 = result[j - 2];\n          t3 = result[j - 1];\n          t4 = result[j - 4];\n          t1 = s[t1];\n          t2 = s[t2];\n          t3 = s[t3];\n          t4 = s[t4];\n          t1 = t1 ^ r;\n          if ((r <<= 1) >= 256) {\n            r = (r ^ 0x1b) & 0xFF;\n          }\n        }\n        for (var n = 0; n < 4; ++n) {\n          result[j] = t1 ^= result[j - 32];\n          j++;\n          result[j] = t2 ^= result[j - 32];\n          j++;\n          result[j] = t3 ^= result[j - 32];\n          j++;\n          result[j] = t4 ^= result[j - 32];\n          j++;\n        }\n      }\n      return result;\n    }\n  }]);\n\n  return AES256Cipher;\n}(AESBaseCipher);\n\nvar PDF17 = function PDF17Closure() {\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n  function PDF17() {}\n  PDF17.prototype = {\n    checkOwnerPassword: function PDF17_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF17_checkUserPassword(password, userValidationSalt, userPassword) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    },\n    getUserKey: function PDF17_getUserKey(password, userKeySalt, userEncryption) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    }\n  };\n  return PDF17;\n}();\nvar PDF20 = function PDF20Closure() {\n  function concatArrays(array1, array2) {\n    var t = new Uint8Array(array1.length + array2.length);\n    t.set(array1, 0);\n    t.set(array2, array1.length);\n    return t;\n  }\n  function calculatePDF20Hash(password, input, userBytes) {\n    var k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n    var e = [0];\n    var i = 0;\n    while (i < 64 || e[e.length - 1] > i - 32) {\n      var arrayLength = password.length + k.length + userBytes.length;\n      var k1 = new Uint8Array(arrayLength * 64);\n      var array = concatArrays(password, k);\n      array = concatArrays(array, userBytes);\n      for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {\n        k1.set(array, pos);\n      }\n      var cipher = new AES128Cipher(k.subarray(0, 16));\n      e = cipher.encrypt(k1, k.subarray(16, 32));\n      var remainder = 0;\n      for (var z = 0; z < 16; z++) {\n        remainder *= 256 % 3;\n        remainder %= 3;\n        remainder += (e[z] >>> 0) % 3;\n        remainder %= 3;\n      }\n      if (remainder === 0) {\n        k = calculateSHA256(e, 0, e.length);\n      } else if (remainder === 1) {\n        k = calculateSHA384(e, 0, e.length);\n      } else if (remainder === 2) {\n        k = calculateSHA512(e, 0, e.length);\n      }\n      i++;\n    }\n    return k.subarray(0, 32);\n  }\n  function PDF20() {}\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n  PDF20.prototype = {\n    hash: function PDF20_hash(password, concatBytes, userBytes) {\n      return calculatePDF20Hash(password, concatBytes, userBytes);\n    },\n    checkOwnerPassword: function PDF20_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculatePDF20Hash(password, hashData, userBytes);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF20_checkUserPassword(password, userValidationSalt, userPassword) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculatePDF20Hash(password, hashData, []);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculatePDF20Hash(password, hashData, userBytes);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    },\n    getUserKey: function PDF20_getUserKey(password, userKeySalt, userEncryption) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      var key = calculatePDF20Hash(password, hashData, []);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    }\n  };\n  return PDF20;\n}();\nvar CipherTransform = function CipherTransformClosure() {\n  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {\n    this.StringCipherConstructor = stringCipherConstructor;\n    this.StreamCipherConstructor = streamCipherConstructor;\n  }\n  CipherTransform.prototype = {\n    createStream: function CipherTransform_createStream(stream, length) {\n      var cipher = new this.StreamCipherConstructor();\n      return new _stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {\n        return cipher.decryptBlock(data, finalize);\n      });\n    },\n    decryptString: function CipherTransform_decryptString(s) {\n      var cipher = new this.StringCipherConstructor();\n      var data = (0, _util.stringToBytes)(s);\n      data = cipher.decryptBlock(data, true);\n      return (0, _util.bytesToString)(data);\n    }\n  };\n  return CipherTransform;\n}();\nvar CipherTransformFactory = function CipherTransformFactoryClosure() {\n  var defaultPasswordBytes = new Uint8Array([0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08, 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);\n  function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {\n    if (password) {\n      var passwordLength = Math.min(127, password.length);\n      password = password.subarray(0, passwordLength);\n    } else {\n      password = [];\n    }\n    var pdfAlgorithm;\n    if (revision === 6) {\n      pdfAlgorithm = new PDF20();\n    } else {\n      pdfAlgorithm = new PDF17();\n    }\n    if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n    } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {\n      return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n    }\n    return null;\n  }\n  function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {\n    var hashDataSize = 40 + ownerPassword.length + fileId.length;\n    var hashData = new Uint8Array(hashDataSize),\n        i = 0,\n        j,\n        n;\n    if (password) {\n      n = Math.min(32, password.length);\n      for (; i < n; ++i) {\n        hashData[i] = password[i];\n      }\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    for (j = 0, n = ownerPassword.length; j < n; ++j) {\n      hashData[i++] = ownerPassword[j];\n    }\n    hashData[i++] = flags & 0xFF;\n    hashData[i++] = flags >> 8 & 0xFF;\n    hashData[i++] = flags >> 16 & 0xFF;\n    hashData[i++] = flags >>> 24 & 0xFF;\n    for (j = 0, n = fileId.length; j < n; ++j) {\n      hashData[i++] = fileId[j];\n    }\n    if (revision >= 4 && !encryptMetadata) {\n      hashData[i++] = 0xFF;\n      hashData[i++] = 0xFF;\n      hashData[i++] = 0xFF;\n      hashData[i++] = 0xFF;\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\n      }\n    }\n    var encryptionKey = hash.subarray(0, keyLengthInBytes);\n    var cipher, checkData;\n    if (revision >= 3) {\n      for (i = 0; i < 32; ++i) {\n        hashData[i] = defaultPasswordBytes[i];\n      }\n      for (j = 0, n = fileId.length; j < n; ++j) {\n        hashData[i++] = fileId[j];\n      }\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n      n = encryptionKey.length;\n      var derivedKey = new Uint8Array(n),\n          k;\n      for (j = 1; j <= 19; ++j) {\n        for (k = 0; k < n; ++k) {\n          derivedKey[k] = encryptionKey[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        checkData = cipher.encryptBlock(checkData);\n      }\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    } else {\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(defaultPasswordBytes);\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    }\n    return encryptionKey;\n  }\n  function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n    var hashData = new Uint8Array(32),\n        i = 0,\n        j,\n        n;\n    n = Math.min(32, password.length);\n    for (; i < n; ++i) {\n      hashData[i] = password[i];\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, hash.length);\n      }\n    }\n    var cipher, userPassword;\n    if (revision >= 3) {\n      userPassword = ownerPassword;\n      var derivedKey = new Uint8Array(keyLengthInBytes),\n          k;\n      for (j = 19; j >= 0; j--) {\n        for (k = 0; k < keyLengthInBytes; ++k) {\n          derivedKey[k] = hash[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        userPassword = cipher.encryptBlock(userPassword);\n      }\n    } else {\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n      userPassword = cipher.encryptBlock(ownerPassword);\n    }\n    return userPassword;\n  }\n  var identityName = _primitives.Name.get('Identity');\n  function CipherTransformFactory(dict, fileId, password) {\n    var filter = dict.get('Filter');\n    if (!(0, _primitives.isName)(filter, 'Standard')) {\n      throw new _util.FormatError('unknown encryption method');\n    }\n    this.dict = dict;\n    var algorithm = dict.get('V');\n    if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {\n      throw new _util.FormatError('unsupported encryption algorithm');\n    }\n    this.algorithm = algorithm;\n    var keyLength = dict.get('Length');\n    if (!keyLength) {\n      if (algorithm <= 3) {\n        keyLength = 40;\n      } else {\n        var cfDict = dict.get('CF');\n        var streamCryptoName = dict.get('StmF');\n        if ((0, _primitives.isDict)(cfDict) && (0, _primitives.isName)(streamCryptoName)) {\n          cfDict.suppressEncryption = true;\n          var handlerDict = cfDict.get(streamCryptoName.name);\n          keyLength = handlerDict && handlerDict.get('Length') || 128;\n          if (keyLength < 40) {\n            keyLength <<= 3;\n          }\n        }\n      }\n    }\n    if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n      throw new _util.FormatError('invalid key length');\n    }\n    var ownerPassword = (0, _util.stringToBytes)(dict.get('O')).subarray(0, 32);\n    var userPassword = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 32);\n    var flags = dict.get('P');\n    var revision = dict.get('R');\n    var encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get('EncryptMetadata') !== false;\n    this.encryptMetadata = encryptMetadata;\n    var fileIdBytes = (0, _util.stringToBytes)(fileId);\n    var passwordBytes;\n    if (password) {\n      if (revision === 6) {\n        try {\n          password = (0, _util.utf8StringToString)(password);\n        } catch (ex) {\n          (0, _util.warn)('CipherTransformFactory: ' + 'Unable to convert UTF8 encoded password.');\n        }\n      }\n      passwordBytes = (0, _util.stringToBytes)(password);\n    }\n    var encryptionKey;\n    if (algorithm !== 5) {\n      encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n    } else {\n      var ownerValidationSalt = (0, _util.stringToBytes)(dict.get('O')).subarray(32, 40);\n      var ownerKeySalt = (0, _util.stringToBytes)(dict.get('O')).subarray(40, 48);\n      var uBytes = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 48);\n      var userValidationSalt = (0, _util.stringToBytes)(dict.get('U')).subarray(32, 40);\n      var userKeySalt = (0, _util.stringToBytes)(dict.get('U')).subarray(40, 48);\n      var ownerEncryption = (0, _util.stringToBytes)(dict.get('OE'));\n      var userEncryption = (0, _util.stringToBytes)(dict.get('UE'));\n      var perms = (0, _util.stringToBytes)(dict.get('Perms'));\n      encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);\n    }\n    if (!encryptionKey && !password) {\n      throw new _util.PasswordException('No password given', _util.PasswordResponses.NEED_PASSWORD);\n    } else if (!encryptionKey && password) {\n      var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n      encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n    }\n    if (!encryptionKey) {\n      throw new _util.PasswordException('Incorrect Password', _util.PasswordResponses.INCORRECT_PASSWORD);\n    }\n    this.encryptionKey = encryptionKey;\n    if (algorithm >= 4) {\n      var cf = dict.get('CF');\n      if ((0, _primitives.isDict)(cf)) {\n        cf.suppressEncryption = true;\n      }\n      this.cf = cf;\n      this.stmf = dict.get('StmF') || identityName;\n      this.strf = dict.get('StrF') || identityName;\n      this.eff = dict.get('EFF') || this.stmf;\n    }\n  }\n  function buildObjectKey(num, gen, encryptionKey, isAes) {\n    var key = new Uint8Array(encryptionKey.length + 9),\n        i,\n        n;\n    for (i = 0, n = encryptionKey.length; i < n; ++i) {\n      key[i] = encryptionKey[i];\n    }\n    key[i++] = num & 0xFF;\n    key[i++] = num >> 8 & 0xFF;\n    key[i++] = num >> 16 & 0xFF;\n    key[i++] = gen & 0xFF;\n    key[i++] = gen >> 8 & 0xFF;\n    if (isAes) {\n      key[i++] = 0x73;\n      key[i++] = 0x41;\n      key[i++] = 0x6C;\n      key[i++] = 0x54;\n    }\n    var hash = calculateMD5(key, 0, i);\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n  }\n  function buildCipherConstructor(cf, name, num, gen, key) {\n    if (!(0, _primitives.isName)(name)) {\n      throw new _util.FormatError('Invalid crypt filter name.');\n    }\n    var cryptFilter = cf.get(name.name);\n    var cfm;\n    if (cryptFilter !== null && cryptFilter !== undefined) {\n      cfm = cryptFilter.get('CFM');\n    }\n    if (!cfm || cfm.name === 'None') {\n      return function cipherTransformFactoryBuildCipherConstructorNone() {\n        return new NullCipher();\n      };\n    }\n    if (cfm.name === 'V2') {\n      return function cipherTransformFactoryBuildCipherConstructorV2() {\n        return new ARCFourCipher(buildObjectKey(num, gen, key, false));\n      };\n    }\n    if (cfm.name === 'AESV2') {\n      return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n        return new AES128Cipher(buildObjectKey(num, gen, key, true));\n      };\n    }\n    if (cfm.name === 'AESV3') {\n      return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n        return new AES256Cipher(key);\n      };\n    }\n    throw new _util.FormatError('Unknown crypto method');\n  }\n  CipherTransformFactory.prototype = {\n    createCipherTransform: function CipherTransformFactory_createCipherTransform(num, gen) {\n      if (this.algorithm === 4 || this.algorithm === 5) {\n        return new CipherTransform(buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey));\n      }\n      var key = buildObjectKey(num, gen, this.encryptionKey, false);\n      var cipherConstructor = function buildCipherCipherConstructor() {\n        return new ARCFourCipher(key);\n      };\n      return new CipherTransform(cipherConstructor, cipherConstructor);\n    }\n  };\n  return CipherTransformFactory;\n}();\nexports.AES128Cipher = AES128Cipher;\nexports.AES256Cipher = AES256Cipher;\nexports.ARCFourCipher = ARCFourCipher;\nexports.CipherTransformFactory = CipherTransformFactory;\nexports.PDF17 = PDF17;\nexports.PDF20 = PDF20;\nexports.calculateMD5 = calculateMD5;\nexports.calculateSHA256 = calculateSHA256;\nexports.calculateSHA384 = calculateSHA384;\nexports.calculateSHA512 = calculateSHA512;\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ColorSpace = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  var COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  var xRatio = w1 / w2;\n  var yRatio = h1 / h2;\n  var newIndex = 0,\n      oldIndex = void 0;\n  var xScaled = new Uint16Array(w2);\n  var w1Scanline = w1 * COMPONENTS;\n  for (var i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n  for (var _i = 0; _i < h2; _i++) {\n    var py = Math.floor(_i * yRatio) * w1Scanline;\n    for (var j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\n\nvar ColorSpace = function () {\n  function ColorSpace(name, numComps) {\n    _classCallCheck(this, ColorSpace);\n\n    if (this.constructor === ColorSpace) {\n      (0, _util.unreachable)('Cannot initialize ColorSpace.');\n    }\n    this.name = name;\n    this.numComps = numComps;\n  }\n\n  _createClass(ColorSpace, [{\n    key: 'getRgb',\n    value: function getRgb(src, srcOffset) {\n      var rgb = new Uint8ClampedArray(3);\n      this.getRgbItem(src, srcOffset, rgb, 0);\n      return rgb;\n    }\n  }, {\n    key: 'getRgbItem',\n    value: function getRgbItem(src, srcOffset, dest, destOffset) {\n      (0, _util.unreachable)('Should not call ColorSpace.getRgbItem');\n    }\n  }, {\n    key: 'getRgbBuffer',\n    value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      (0, _util.unreachable)('Should not call ColorSpace.getRgbBuffer');\n    }\n  }, {\n    key: 'getOutputLength',\n    value: function getOutputLength(inputLength, alpha01) {\n      (0, _util.unreachable)('Should not call ColorSpace.getOutputLength');\n    }\n  }, {\n    key: 'isPassthrough',\n    value: function isPassthrough(bits) {\n      return false;\n    }\n  }, {\n    key: 'fillRgb',\n    value: function fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n      var count = originalWidth * originalHeight;\n      var rgbBuf = null;\n      var numComponentColors = 1 << bpc;\n      var needsResizing = originalHeight !== height || originalWidth !== width;\n      if (this.isPassthrough(bpc)) {\n        rgbBuf = comps;\n      } else if (this.numComps === 1 && count > numComponentColors && this.name !== 'DeviceGray' && this.name !== 'DeviceRGB') {\n        var allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);\n        for (var i = 0; i < numComponentColors; i++) {\n          allColors[i] = i;\n        }\n        var colorMap = new Uint8ClampedArray(numComponentColors * 3);\n        this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);\n        if (!needsResizing) {\n          var destPos = 0;\n          for (var _i2 = 0; _i2 < count; ++_i2) {\n            var key = comps[_i2] * 3;\n            dest[destPos++] = colorMap[key];\n            dest[destPos++] = colorMap[key + 1];\n            dest[destPos++] = colorMap[key + 2];\n            destPos += alpha01;\n          }\n        } else {\n          rgbBuf = new Uint8Array(count * 3);\n          var rgbPos = 0;\n          for (var _i3 = 0; _i3 < count; ++_i3) {\n            var _key = comps[_i3] * 3;\n            rgbBuf[rgbPos++] = colorMap[_key];\n            rgbBuf[rgbPos++] = colorMap[_key + 1];\n            rgbBuf[rgbPos++] = colorMap[_key + 2];\n          }\n        }\n      } else {\n        if (!needsResizing) {\n          this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n        } else {\n          rgbBuf = new Uint8ClampedArray(count * 3);\n          this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);\n        }\n      }\n      if (rgbBuf) {\n        if (needsResizing) {\n          resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);\n        } else {\n          var _destPos = 0,\n              _rgbPos = 0;\n          for (var _i4 = 0, ii = width * actualHeight; _i4 < ii; _i4++) {\n            dest[_destPos++] = rgbBuf[_rgbPos++];\n            dest[_destPos++] = rgbBuf[_rgbPos++];\n            dest[_destPos++] = rgbBuf[_rgbPos++];\n            _destPos += alpha01;\n          }\n        }\n      }\n    }\n  }, {\n    key: 'usesZeroToOneRange',\n    get: function get() {\n      return (0, _util.shadow)(this, 'usesZeroToOneRange', true);\n    }\n  }], [{\n    key: 'parse',\n    value: function parse(cs, xref, res, pdfFunctionFactory) {\n      var IR = this.parseToIR(cs, xref, res, pdfFunctionFactory);\n      return this.fromIR(IR);\n    }\n  }, {\n    key: 'fromIR',\n    value: function fromIR(IR) {\n      var name = Array.isArray(IR) ? IR[0] : IR;\n      var whitePoint = void 0,\n          blackPoint = void 0,\n          gamma = void 0;\n      switch (name) {\n        case 'DeviceGrayCS':\n          return this.singletons.gray;\n        case 'DeviceRgbCS':\n          return this.singletons.rgb;\n        case 'DeviceCmykCS':\n          return this.singletons.cmyk;\n        case 'CalGrayCS':\n          whitePoint = IR[1];\n          blackPoint = IR[2];\n          gamma = IR[3];\n          return new CalGrayCS(whitePoint, blackPoint, gamma);\n        case 'CalRGBCS':\n          whitePoint = IR[1];\n          blackPoint = IR[2];\n          gamma = IR[3];\n          var matrix = IR[4];\n          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n        case 'PatternCS':\n          var basePatternCS = IR[1];\n          if (basePatternCS) {\n            basePatternCS = this.fromIR(basePatternCS);\n          }\n          return new PatternCS(basePatternCS);\n        case 'IndexedCS':\n          var baseIndexedCS = IR[1];\n          var hiVal = IR[2];\n          var lookup = IR[3];\n          return new IndexedCS(this.fromIR(baseIndexedCS), hiVal, lookup);\n        case 'AlternateCS':\n          var numComps = IR[1];\n          var alt = IR[2];\n          var tintFn = IR[3];\n          return new AlternateCS(numComps, this.fromIR(alt), tintFn);\n        case 'LabCS':\n          whitePoint = IR[1];\n          blackPoint = IR[2];\n          var range = IR[3];\n          return new LabCS(whitePoint, blackPoint, range);\n        default:\n          throw new _util.FormatError('Unknown colorspace name: ' + name);\n      }\n    }\n  }, {\n    key: 'parseToIR',\n    value: function parseToIR(cs, xref) {\n      var res = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n      var pdfFunctionFactory = arguments[3];\n\n      cs = xref.fetchIfRef(cs);\n      if ((0, _primitives.isName)(cs)) {\n        switch (cs.name) {\n          case 'DeviceGray':\n          case 'G':\n            return 'DeviceGrayCS';\n          case 'DeviceRGB':\n          case 'RGB':\n            return 'DeviceRgbCS';\n          case 'DeviceCMYK':\n          case 'CMYK':\n            return 'DeviceCmykCS';\n          case 'Pattern':\n            return ['PatternCS', null];\n          default:\n            if ((0, _primitives.isDict)(res)) {\n              var colorSpaces = res.get('ColorSpace');\n              if ((0, _primitives.isDict)(colorSpaces)) {\n                var resCS = colorSpaces.get(cs.name);\n                if (resCS) {\n                  if ((0, _primitives.isName)(resCS)) {\n                    return this.parseToIR(resCS, xref, res, pdfFunctionFactory);\n                  }\n                  cs = resCS;\n                  break;\n                }\n              }\n            }\n            throw new _util.FormatError('unrecognized colorspace ' + cs.name);\n        }\n      }\n      if (Array.isArray(cs)) {\n        var mode = xref.fetchIfRef(cs[0]).name;\n        var numComps = void 0,\n            params = void 0,\n            alt = void 0,\n            whitePoint = void 0,\n            blackPoint = void 0,\n            gamma = void 0;\n        switch (mode) {\n          case 'DeviceGray':\n          case 'G':\n            return 'DeviceGrayCS';\n          case 'DeviceRGB':\n          case 'RGB':\n            return 'DeviceRgbCS';\n          case 'DeviceCMYK':\n          case 'CMYK':\n            return 'DeviceCmykCS';\n          case 'CalGray':\n            params = xref.fetchIfRef(cs[1]);\n            whitePoint = params.getArray('WhitePoint');\n            blackPoint = params.getArray('BlackPoint');\n            gamma = params.get('Gamma');\n            return ['CalGrayCS', whitePoint, blackPoint, gamma];\n          case 'CalRGB':\n            params = xref.fetchIfRef(cs[1]);\n            whitePoint = params.getArray('WhitePoint');\n            blackPoint = params.getArray('BlackPoint');\n            gamma = params.getArray('Gamma');\n            var matrix = params.getArray('Matrix');\n            return ['CalRGBCS', whitePoint, blackPoint, gamma, matrix];\n          case 'ICCBased':\n            var stream = xref.fetchIfRef(cs[1]);\n            var dict = stream.dict;\n            numComps = dict.get('N');\n            alt = dict.get('Alternate');\n            if (alt) {\n              var altIR = this.parseToIR(alt, xref, res, pdfFunctionFactory);\n              var altCS = this.fromIR(altIR, pdfFunctionFactory);\n              if (altCS.numComps === numComps) {\n                return altIR;\n              }\n              (0, _util.warn)('ICCBased color space: Ignoring incorrect /Alternate entry.');\n            }\n            if (numComps === 1) {\n              return 'DeviceGrayCS';\n            } else if (numComps === 3) {\n              return 'DeviceRgbCS';\n            } else if (numComps === 4) {\n              return 'DeviceCmykCS';\n            }\n            break;\n          case 'Pattern':\n            var basePatternCS = cs[1] || null;\n            if (basePatternCS) {\n              basePatternCS = this.parseToIR(basePatternCS, xref, res, pdfFunctionFactory);\n            }\n            return ['PatternCS', basePatternCS];\n          case 'Indexed':\n          case 'I':\n            var baseIndexedCS = this.parseToIR(cs[1], xref, res, pdfFunctionFactory);\n            var hiVal = xref.fetchIfRef(cs[2]) + 1;\n            var lookup = xref.fetchIfRef(cs[3]);\n            if ((0, _primitives.isStream)(lookup)) {\n              lookup = lookup.getBytes();\n            }\n            return ['IndexedCS', baseIndexedCS, hiVal, lookup];\n          case 'Separation':\n          case 'DeviceN':\n            var name = xref.fetchIfRef(cs[1]);\n            numComps = Array.isArray(name) ? name.length : 1;\n            alt = this.parseToIR(cs[2], xref, res, pdfFunctionFactory);\n            var tintFn = pdfFunctionFactory.create(xref.fetchIfRef(cs[3]));\n            return ['AlternateCS', numComps, alt, tintFn];\n          case 'Lab':\n            params = xref.fetchIfRef(cs[1]);\n            whitePoint = params.getArray('WhitePoint');\n            blackPoint = params.getArray('BlackPoint');\n            var range = params.getArray('Range');\n            return ['LabCS', whitePoint, blackPoint, range];\n          default:\n            throw new _util.FormatError('unimplemented color space object \"' + mode + '\"');\n        }\n      }\n      throw new _util.FormatError('unrecognized color space object: \"' + cs + '\"');\n    }\n  }, {\n    key: 'isDefaultDecode',\n    value: function isDefaultDecode(decode, n) {\n      if (!Array.isArray(decode)) {\n        return true;\n      }\n      if (n * 2 !== decode.length) {\n        (0, _util.warn)('The decode map is not the correct length');\n        return true;\n      }\n      for (var i = 0, ii = decode.length; i < ii; i += 2) {\n        if (decode[i] !== 0 || decode[i + 1] !== 1) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }, {\n    key: 'singletons',\n    get: function get() {\n      return (0, _util.shadow)(this, 'singletons', {\n        get gray() {\n          return (0, _util.shadow)(this, 'gray', new DeviceGrayCS());\n        },\n        get rgb() {\n          return (0, _util.shadow)(this, 'rgb', new DeviceRgbCS());\n        },\n        get cmyk() {\n          return (0, _util.shadow)(this, 'cmyk', new DeviceCmykCS());\n        }\n      });\n    }\n  }]);\n\n  return ColorSpace;\n}();\n\nvar AlternateCS = function (_ColorSpace) {\n  _inherits(AlternateCS, _ColorSpace);\n\n  function AlternateCS(numComps, base, tintFn) {\n    _classCallCheck(this, AlternateCS);\n\n    var _this = _possibleConstructorReturn(this, (AlternateCS.__proto__ || Object.getPrototypeOf(AlternateCS)).call(this, 'Alternate', numComps));\n\n    _this.base = base;\n    _this.tintFn = tintFn;\n    _this.tmpBuf = new Float32Array(base.numComps);\n    return _this;\n  }\n\n  _createClass(AlternateCS, [{\n    key: 'getRgbItem',\n    value: function getRgbItem(src, srcOffset, dest, destOffset) {\n      var tmpBuf = this.tmpBuf;\n      this.tintFn(src, srcOffset, tmpBuf, 0);\n      this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n    }\n  }, {\n    key: 'getRgbBuffer',\n    value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      var tintFn = this.tintFn;\n      var base = this.base;\n      var scale = 1 / ((1 << bits) - 1);\n      var baseNumComps = base.numComps;\n      var usesZeroToOneRange = base.usesZeroToOneRange;\n      var isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n      var pos = isPassthrough ? destOffset : 0;\n      var baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);\n      var numComps = this.numComps;\n      var scaled = new Float32Array(numComps);\n      var tinted = new Float32Array(baseNumComps);\n      var i = void 0,\n          j = void 0;\n      for (i = 0; i < count; i++) {\n        for (j = 0; j < numComps; j++) {\n          scaled[j] = src[srcOffset++] * scale;\n        }\n        tintFn(scaled, 0, tinted, 0);\n        if (usesZeroToOneRange) {\n          for (j = 0; j < baseNumComps; j++) {\n            baseBuf[pos++] = tinted[j] * 255;\n          }\n        } else {\n          base.getRgbItem(tinted, 0, baseBuf, pos);\n          pos += baseNumComps;\n        }\n      }\n      if (!isPassthrough) {\n        base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n      }\n    }\n  }, {\n    key: 'getOutputLength',\n    value: function getOutputLength(inputLength, alpha01) {\n      return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01);\n    }\n  }, {\n    key: 'isDefaultDecode',\n    value: function isDefaultDecode(decodeMap) {\n      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n    }\n  }]);\n\n  return AlternateCS;\n}(ColorSpace);\n\nvar PatternCS = function (_ColorSpace2) {\n  _inherits(PatternCS, _ColorSpace2);\n\n  function PatternCS(baseCS) {\n    _classCallCheck(this, PatternCS);\n\n    var _this2 = _possibleConstructorReturn(this, (PatternCS.__proto__ || Object.getPrototypeOf(PatternCS)).call(this, 'Pattern', null));\n\n    _this2.base = baseCS;\n    return _this2;\n  }\n\n  return PatternCS;\n}(ColorSpace);\n\nvar IndexedCS = function (_ColorSpace3) {\n  _inherits(IndexedCS, _ColorSpace3);\n\n  function IndexedCS(base, highVal, lookup) {\n    _classCallCheck(this, IndexedCS);\n\n    var _this3 = _possibleConstructorReturn(this, (IndexedCS.__proto__ || Object.getPrototypeOf(IndexedCS)).call(this, 'Indexed', 1));\n\n    _this3.base = base;\n    _this3.highVal = highVal;\n    var baseNumComps = base.numComps;\n    var length = baseNumComps * highVal;\n    if ((0, _primitives.isStream)(lookup)) {\n      _this3.lookup = new Uint8Array(length);\n      var bytes = lookup.getBytes(length);\n      _this3.lookup.set(bytes);\n    } else if ((0, _util.isString)(lookup)) {\n      _this3.lookup = new Uint8Array(length);\n      for (var i = 0; i < length; ++i) {\n        _this3.lookup[i] = lookup.charCodeAt(i);\n      }\n    } else if (lookup instanceof Uint8Array) {\n      _this3.lookup = lookup;\n    } else {\n      throw new _util.FormatError('Unrecognized lookup table: ' + lookup);\n    }\n    return _this3;\n  }\n\n  _createClass(IndexedCS, [{\n    key: 'getRgbItem',\n    value: function getRgbItem(src, srcOffset, dest, destOffset) {\n      var numComps = this.base.numComps;\n      var start = src[srcOffset] * numComps;\n      this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n    }\n  }, {\n    key: 'getRgbBuffer',\n    value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      var base = this.base;\n      var numComps = base.numComps;\n      var outputDelta = base.getOutputLength(numComps, alpha01);\n      var lookup = this.lookup;\n      for (var i = 0; i < count; ++i) {\n        var lookupPos = src[srcOffset++] * numComps;\n        base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n        destOffset += outputDelta;\n      }\n    }\n  }, {\n    key: 'getOutputLength',\n    value: function getOutputLength(inputLength, alpha01) {\n      return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n    }\n  }, {\n    key: 'isDefaultDecode',\n    value: function isDefaultDecode(decodeMap) {\n      return true;\n    }\n  }]);\n\n  return IndexedCS;\n}(ColorSpace);\n\nvar DeviceGrayCS = function (_ColorSpace4) {\n  _inherits(DeviceGrayCS, _ColorSpace4);\n\n  function DeviceGrayCS() {\n    _classCallCheck(this, DeviceGrayCS);\n\n    return _possibleConstructorReturn(this, (DeviceGrayCS.__proto__ || Object.getPrototypeOf(DeviceGrayCS)).call(this, 'DeviceGray', 1));\n  }\n\n  _createClass(DeviceGrayCS, [{\n    key: 'getRgbItem',\n    value: function getRgbItem(src, srcOffset, dest, destOffset) {\n      var c = src[srcOffset] * 255;\n      dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n    }\n  }, {\n    key: 'getRgbBuffer',\n    value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      var scale = 255 / ((1 << bits) - 1);\n      var j = srcOffset,\n          q = destOffset;\n      for (var i = 0; i < count; ++i) {\n        var c = scale * src[j++];\n        dest[q++] = c;\n        dest[q++] = c;\n        dest[q++] = c;\n        q += alpha01;\n      }\n    }\n  }, {\n    key: 'getOutputLength',\n    value: function getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01);\n    }\n  }, {\n    key: 'isDefaultDecode',\n    value: function isDefaultDecode(decodeMap) {\n      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n    }\n  }]);\n\n  return DeviceGrayCS;\n}(ColorSpace);\n\nvar DeviceRgbCS = function (_ColorSpace5) {\n  _inherits(DeviceRgbCS, _ColorSpace5);\n\n  function DeviceRgbCS() {\n    _classCallCheck(this, DeviceRgbCS);\n\n    return _possibleConstructorReturn(this, (DeviceRgbCS.__proto__ || Object.getPrototypeOf(DeviceRgbCS)).call(this, 'DeviceRGB', 3));\n  }\n\n  _createClass(DeviceRgbCS, [{\n    key: 'getRgbItem',\n    value: function getRgbItem(src, srcOffset, dest, destOffset) {\n      dest[destOffset] = src[srcOffset] * 255;\n      dest[destOffset + 1] = src[srcOffset + 1] * 255;\n      dest[destOffset + 2] = src[srcOffset + 2] * 255;\n    }\n  }, {\n    key: 'getRgbBuffer',\n    value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (bits === 8 && alpha01 === 0) {\n        dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n        return;\n      }\n      var scale = 255 / ((1 << bits) - 1);\n      var j = srcOffset,\n          q = destOffset;\n      for (var i = 0; i < count; ++i) {\n        dest[q++] = scale * src[j++];\n        dest[q++] = scale * src[j++];\n        dest[q++] = scale * src[j++];\n        q += alpha01;\n      }\n    }\n  }, {\n    key: 'getOutputLength',\n    value: function getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01) / 3 | 0;\n    }\n  }, {\n    key: 'isPassthrough',\n    value: function isPassthrough(bits) {\n      return bits === 8;\n    }\n  }, {\n    key: 'isDefaultDecode',\n    value: function isDefaultDecode(decodeMap) {\n      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n    }\n  }]);\n\n  return DeviceRgbCS;\n}(ColorSpace);\n\nvar DeviceCmykCS = function DeviceCmykCSClosure() {\n  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n    var c = src[srcOffset] * srcScale;\n    var m = src[srcOffset + 1] * srcScale;\n    var y = src[srcOffset + 2] * srcScale;\n    var k = src[srcOffset + 3] * srcScale;\n    dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n    dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n    dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n\n  var DeviceCmykCS = function (_ColorSpace6) {\n    _inherits(DeviceCmykCS, _ColorSpace6);\n\n    function DeviceCmykCS() {\n      _classCallCheck(this, DeviceCmykCS);\n\n      return _possibleConstructorReturn(this, (DeviceCmykCS.__proto__ || Object.getPrototypeOf(DeviceCmykCS)).call(this, 'DeviceCMYK', 4));\n    }\n\n    _createClass(DeviceCmykCS, [{\n      key: 'getRgbItem',\n      value: function getRgbItem(src, srcOffset, dest, destOffset) {\n        convertToRgb(src, srcOffset, 1, dest, destOffset);\n      }\n    }, {\n      key: 'getRgbBuffer',\n      value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n        var scale = 1 / ((1 << bits) - 1);\n        for (var i = 0; i < count; i++) {\n          convertToRgb(src, srcOffset, scale, dest, destOffset);\n          srcOffset += 4;\n          destOffset += 3 + alpha01;\n        }\n      }\n    }, {\n      key: 'getOutputLength',\n      value: function getOutputLength(inputLength, alpha01) {\n        return inputLength / 4 * (3 + alpha01) | 0;\n      }\n    }, {\n      key: 'isDefaultDecode',\n      value: function isDefaultDecode(decodeMap) {\n        return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n      }\n    }]);\n\n    return DeviceCmykCS;\n  }(ColorSpace);\n\n  return DeviceCmykCS;\n}();\nvar CalGrayCS = function CalGrayCSClosure() {\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    var A = src[srcOffset] * scale;\n    var AG = Math.pow(A, cs.G);\n    var L = cs.YW * AG;\n    var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n\n  var CalGrayCS = function (_ColorSpace7) {\n    _inherits(CalGrayCS, _ColorSpace7);\n\n    function CalGrayCS(whitePoint, blackPoint, gamma) {\n      _classCallCheck(this, CalGrayCS);\n\n      var _this7 = _possibleConstructorReturn(this, (CalGrayCS.__proto__ || Object.getPrototypeOf(CalGrayCS)).call(this, 'CalGray', 1));\n\n      if (!whitePoint) {\n        throw new _util.FormatError('WhitePoint missing - required for color space CalGray');\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      gamma = gamma || 1;\n      _this7.XW = whitePoint[0];\n      _this7.YW = whitePoint[1];\n      _this7.ZW = whitePoint[2];\n      _this7.XB = blackPoint[0];\n      _this7.YB = blackPoint[1];\n      _this7.ZB = blackPoint[2];\n      _this7.G = gamma;\n      if (_this7.XW < 0 || _this7.ZW < 0 || _this7.YW !== 1) {\n        throw new _util.FormatError('Invalid WhitePoint components for ' + _this7.name + ', no fallback available');\n      }\n      if (_this7.XB < 0 || _this7.YB < 0 || _this7.ZB < 0) {\n        (0, _util.info)('Invalid BlackPoint for ' + _this7.name + ', falling back to default.');\n        _this7.XB = _this7.YB = _this7.ZB = 0;\n      }\n      if (_this7.XB !== 0 || _this7.YB !== 0 || _this7.ZB !== 0) {\n        (0, _util.warn)(_this7.name + ', BlackPoint: XB: ' + _this7.XB + ', YB: ' + _this7.YB + ', ' + ('ZB: ' + _this7.ZB + ', only default values are supported.'));\n      }\n      if (_this7.G < 1) {\n        (0, _util.info)('Invalid Gamma: ' + _this7.G + ' for ' + _this7.name + ', ' + 'falling back to default.');\n        _this7.G = 1;\n      }\n      return _this7;\n    }\n\n    _createClass(CalGrayCS, [{\n      key: 'getRgbItem',\n      value: function getRgbItem(src, srcOffset, dest, destOffset) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n      }\n    }, {\n      key: 'getRgbBuffer',\n      value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n        var scale = 1 / ((1 << bits) - 1);\n        for (var i = 0; i < count; ++i) {\n          convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n          srcOffset += 1;\n          destOffset += 3 + alpha01;\n        }\n      }\n    }, {\n      key: 'getOutputLength',\n      value: function getOutputLength(inputLength, alpha01) {\n        return inputLength * (3 + alpha01);\n      }\n    }, {\n      key: 'isDefaultDecode',\n      value: function isDefaultDecode(decodeMap) {\n        return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n      }\n    }]);\n\n    return CalGrayCS;\n  }(ColorSpace);\n\n  return CalGrayCS;\n}();\nvar CalRGBCS = function CalRGBCSClosure() {\n  var BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);\n  var BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);\n  var SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);\n  var FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n  var tempNormalizeMatrix = new Float32Array(3);\n  var tempConvertMatrix1 = new Float32Array(3);\n  var tempConvertMatrix2 = new Float32Array(3);\n  var DECODE_L_CONSTANT = Math.pow((8 + 16) / 116, 3) / 8.0;\n  function matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n  function convertToFlat(sourceWhitePoint, LMS, result) {\n    result[0] = LMS[0] * 1 / sourceWhitePoint[0];\n    result[1] = LMS[1] * 1 / sourceWhitePoint[1];\n    result[2] = LMS[2] * 1 / sourceWhitePoint[2];\n  }\n  function convertToD65(sourceWhitePoint, LMS, result) {\n    var D65X = 0.95047;\n    var D65Y = 1;\n    var D65Z = 1.08883;\n    result[0] = LMS[0] * D65X / sourceWhitePoint[0];\n    result[1] = LMS[1] * D65Y / sourceWhitePoint[1];\n    result[2] = LMS[2] * D65Z / sourceWhitePoint[2];\n  }\n  function sRGBTransferFunction(color) {\n    if (color <= 0.0031308) {\n      return adjustToRange(0, 1, 12.92 * color);\n    }\n    return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055);\n  }\n  function adjustToRange(min, max, value) {\n    return Math.max(min, Math.min(max, value));\n  }\n  function decodeL(L) {\n    if (L < 0) {\n      return -decodeL(-L);\n    }\n    if (L > 8.0) {\n      return Math.pow((L + 16) / 116, 3);\n    }\n    return L * DECODE_L_CONSTANT;\n  }\n  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n    var zeroDecodeL = decodeL(0);\n    var X_DST = zeroDecodeL;\n    var X_SRC = decodeL(sourceBlackPoint[0]);\n    var Y_DST = zeroDecodeL;\n    var Y_SRC = decodeL(sourceBlackPoint[1]);\n    var Z_DST = zeroDecodeL;\n    var Z_SRC = decodeL(sourceBlackPoint[2]);\n    var X_Scale = (1 - X_DST) / (1 - X_SRC);\n    var X_Offset = 1 - X_Scale;\n    var Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    var Y_Offset = 1 - Y_Scale;\n    var Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    var Z_Offset = 1 - Z_Scale;\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n    var LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n    var LMS_Flat = tempNormalizeMatrix;\n    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n  }\n  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    var LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n    var LMS_D65 = tempNormalizeMatrix;\n    convertToD65(sourceWhitePoint, LMS, LMS_D65);\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n  }\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    var A = adjustToRange(0, 1, src[srcOffset] * scale);\n    var B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n    var C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n    var AGR = Math.pow(A, cs.GR);\n    var BGG = Math.pow(B, cs.GG);\n    var CGB = Math.pow(C, cs.GB);\n    var X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n    var Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n    var Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n    var XYZ = tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    var XYZ_Flat = tempConvertMatrix2;\n    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n    var XYZ_Black = tempConvertMatrix1;\n    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n    var XYZ_D65 = tempConvertMatrix2;\n    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n    var SRGB = tempConvertMatrix1;\n    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n  }\n\n  var CalRGBCS = function (_ColorSpace8) {\n    _inherits(CalRGBCS, _ColorSpace8);\n\n    function CalRGBCS(whitePoint, blackPoint, gamma, matrix) {\n      _classCallCheck(this, CalRGBCS);\n\n      var _this8 = _possibleConstructorReturn(this, (CalRGBCS.__proto__ || Object.getPrototypeOf(CalRGBCS)).call(this, 'CalRGB', 3));\n\n      if (!whitePoint) {\n        throw new _util.FormatError('WhitePoint missing - required for color space CalRGB');\n      }\n      blackPoint = blackPoint || new Float32Array(3);\n      gamma = gamma || new Float32Array([1, 1, 1]);\n      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n      var XW = whitePoint[0];\n      var YW = whitePoint[1];\n      var ZW = whitePoint[2];\n      _this8.whitePoint = whitePoint;\n      var XB = blackPoint[0];\n      var YB = blackPoint[1];\n      var ZB = blackPoint[2];\n      _this8.blackPoint = blackPoint;\n      _this8.GR = gamma[0];\n      _this8.GG = gamma[1];\n      _this8.GB = gamma[2];\n      _this8.MXA = matrix[0];\n      _this8.MYA = matrix[1];\n      _this8.MZA = matrix[2];\n      _this8.MXB = matrix[3];\n      _this8.MYB = matrix[4];\n      _this8.MZB = matrix[5];\n      _this8.MXC = matrix[6];\n      _this8.MYC = matrix[7];\n      _this8.MZC = matrix[8];\n      if (XW < 0 || ZW < 0 || YW !== 1) {\n        throw new _util.FormatError('Invalid WhitePoint components for ' + _this8.name + ', no fallback available');\n      }\n      if (XB < 0 || YB < 0 || ZB < 0) {\n        (0, _util.info)('Invalid BlackPoint for ' + _this8.name + ' [' + XB + ', ' + YB + ', ' + ZB + '], ' + 'falling back to default.');\n        _this8.blackPoint = new Float32Array(3);\n      }\n      if (_this8.GR < 0 || _this8.GG < 0 || _this8.GB < 0) {\n        (0, _util.info)('Invalid Gamma [' + _this8.GR + ', ' + _this8.GG + ', ' + _this8.GB + '] for ' + (_this8.name + ', falling back to default.'));\n        _this8.GR = _this8.GG = _this8.GB = 1;\n      }\n      return _this8;\n    }\n\n    _createClass(CalRGBCS, [{\n      key: 'getRgbItem',\n      value: function getRgbItem(src, srcOffset, dest, destOffset) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n      }\n    }, {\n      key: 'getRgbBuffer',\n      value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n        var scale = 1 / ((1 << bits) - 1);\n        for (var i = 0; i < count; ++i) {\n          convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n          srcOffset += 3;\n          destOffset += 3 + alpha01;\n        }\n      }\n    }, {\n      key: 'getOutputLength',\n      value: function getOutputLength(inputLength, alpha01) {\n        return inputLength * (3 + alpha01) / 3 | 0;\n      }\n    }, {\n      key: 'isDefaultDecode',\n      value: function isDefaultDecode(decodeMap) {\n        return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n      }\n    }]);\n\n    return CalRGBCS;\n  }(ColorSpace);\n\n  return CalRGBCS;\n}();\nvar LabCS = function LabCSClosure() {\n  function fn_g(x) {\n    var result = void 0;\n    if (x >= 6 / 29) {\n      result = x * x * x;\n    } else {\n      result = 108 / 841 * (x - 4 / 29);\n    }\n    return result;\n  }\n  function decode(value, high1, low2, high2) {\n    return low2 + value * (high2 - low2) / high1;\n  }\n  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n    var Ls = src[srcOffset];\n    var as = src[srcOffset + 1];\n    var bs = src[srcOffset + 2];\n    if (maxVal !== false) {\n      Ls = decode(Ls, maxVal, 0, 100);\n      as = decode(as, maxVal, cs.amin, cs.amax);\n      bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n    }\n    as = as > cs.amax ? cs.amax : as < cs.amin ? cs.amin : as;\n    bs = bs > cs.bmax ? cs.bmax : bs < cs.bmin ? cs.bmin : bs;\n    var M = (Ls + 16) / 116;\n    var L = M + as / 500;\n    var N = M - bs / 200;\n    var X = cs.XW * fn_g(L);\n    var Y = cs.YW * fn_g(M);\n    var Z = cs.ZW * fn_g(N);\n    var r = void 0,\n        g = void 0,\n        b = void 0;\n    if (cs.ZW < 1) {\n      r = X * 3.1339 + Y * -1.6170 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.9160 + Z * 0.0333;\n      b = X * 0.0720 + Y * -0.2290 + Z * 1.4057;\n    } else {\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.2040 + Z * 1.0570;\n    }\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n\n  var LabCS = function (_ColorSpace9) {\n    _inherits(LabCS, _ColorSpace9);\n\n    function LabCS(whitePoint, blackPoint, range) {\n      _classCallCheck(this, LabCS);\n\n      var _this9 = _possibleConstructorReturn(this, (LabCS.__proto__ || Object.getPrototypeOf(LabCS)).call(this, 'Lab', 3));\n\n      if (!whitePoint) {\n        throw new _util.FormatError('WhitePoint missing - required for color space Lab');\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      range = range || [-100, 100, -100, 100];\n      _this9.XW = whitePoint[0];\n      _this9.YW = whitePoint[1];\n      _this9.ZW = whitePoint[2];\n      _this9.amin = range[0];\n      _this9.amax = range[1];\n      _this9.bmin = range[2];\n      _this9.bmax = range[3];\n      _this9.XB = blackPoint[0];\n      _this9.YB = blackPoint[1];\n      _this9.ZB = blackPoint[2];\n      if (_this9.XW < 0 || _this9.ZW < 0 || _this9.YW !== 1) {\n        throw new _util.FormatError('Invalid WhitePoint components, no fallback available');\n      }\n      if (_this9.XB < 0 || _this9.YB < 0 || _this9.ZB < 0) {\n        (0, _util.info)('Invalid BlackPoint, falling back to default');\n        _this9.XB = _this9.YB = _this9.ZB = 0;\n      }\n      if (_this9.amin > _this9.amax || _this9.bmin > _this9.bmax) {\n        (0, _util.info)('Invalid Range, falling back to defaults');\n        _this9.amin = -100;\n        _this9.amax = 100;\n        _this9.bmin = -100;\n        _this9.bmax = 100;\n      }\n      return _this9;\n    }\n\n    _createClass(LabCS, [{\n      key: 'getRgbItem',\n      value: function getRgbItem(src, srcOffset, dest, destOffset) {\n        convertToRgb(this, src, srcOffset, false, dest, destOffset);\n      }\n    }, {\n      key: 'getRgbBuffer',\n      value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n        var maxVal = (1 << bits) - 1;\n        for (var i = 0; i < count; i++) {\n          convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n          srcOffset += 3;\n          destOffset += 3 + alpha01;\n        }\n      }\n    }, {\n      key: 'getOutputLength',\n      value: function getOutputLength(inputLength, alpha01) {\n        return inputLength * (3 + alpha01) / 3 | 0;\n      }\n    }, {\n      key: 'isDefaultDecode',\n      value: function isDefaultDecode(decodeMap) {\n        return true;\n      }\n    }, {\n      key: 'usesZeroToOneRange',\n      get: function get() {\n        return (0, _util.shadow)(this, 'usesZeroToOneRange', false);\n      }\n    }]);\n\n    return LabCS;\n  }(ColorSpace);\n\n  return LabCS;\n}();\nexports.ColorSpace = ColorSpace;\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _obj = __w_pdfjs_require__(137);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _colorspace = __w_pdfjs_require__(151);\n\nvar _operator_list = __w_pdfjs_require__(153);\n\nvar _stream = __w_pdfjs_require__(140);\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AnnotationFactory = function () {\n  function AnnotationFactory() {\n    _classCallCheck(this, AnnotationFactory);\n  }\n\n  _createClass(AnnotationFactory, null, [{\n    key: 'create',\n    value: function create(xref, ref, pdfManager, idFactory) {\n      return pdfManager.ensure(this, '_create', [xref, ref, pdfManager, idFactory]);\n    }\n  }, {\n    key: '_create',\n    value: function _create(xref, ref, pdfManager, idFactory) {\n      var dict = xref.fetchIfRef(ref);\n      if (!(0, _primitives.isDict)(dict)) {\n        return;\n      }\n      var id = (0, _primitives.isRef)(ref) ? ref.toString() : 'annot_' + idFactory.createObjId();\n      var subtype = dict.get('Subtype');\n      subtype = (0, _primitives.isName)(subtype) ? subtype.name : null;\n      var parameters = {\n        xref: xref,\n        dict: dict,\n        ref: (0, _primitives.isRef)(ref) ? ref : null,\n        subtype: subtype,\n        id: id,\n        pdfManager: pdfManager\n      };\n      switch (subtype) {\n        case 'Link':\n          return new LinkAnnotation(parameters);\n        case 'Text':\n          return new TextAnnotation(parameters);\n        case 'Widget':\n          var fieldType = (0, _util.getInheritableProperty)({\n            dict: dict,\n            key: 'FT'\n          });\n          fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;\n          switch (fieldType) {\n            case 'Tx':\n              return new TextWidgetAnnotation(parameters);\n            case 'Btn':\n              return new ButtonWidgetAnnotation(parameters);\n            case 'Ch':\n              return new ChoiceWidgetAnnotation(parameters);\n          }\n          (0, _util.warn)('Unimplemented widget field type \"' + fieldType + '\", ' + 'falling back to base field type.');\n          return new WidgetAnnotation(parameters);\n        case 'Popup':\n          return new PopupAnnotation(parameters);\n        case 'Line':\n          return new LineAnnotation(parameters);\n        case 'Square':\n          return new SquareAnnotation(parameters);\n        case 'Circle':\n          return new CircleAnnotation(parameters);\n        case 'PolyLine':\n          return new PolylineAnnotation(parameters);\n        case 'Polygon':\n          return new PolygonAnnotation(parameters);\n        case 'Ink':\n          return new InkAnnotation(parameters);\n        case 'Highlight':\n          return new HighlightAnnotation(parameters);\n        case 'Underline':\n          return new UnderlineAnnotation(parameters);\n        case 'Squiggly':\n          return new SquigglyAnnotation(parameters);\n        case 'StrikeOut':\n          return new StrikeOutAnnotation(parameters);\n        case 'Stamp':\n          return new StampAnnotation(parameters);\n        case 'FileAttachment':\n          return new FileAttachmentAnnotation(parameters);\n        default:\n          if (!subtype) {\n            (0, _util.warn)('Annotation is missing the required /Subtype.');\n          } else {\n            (0, _util.warn)('Unimplemented annotation type \"' + subtype + '\", ' + 'falling back to base annotation.');\n          }\n          return new Annotation(parameters);\n      }\n    }\n  }]);\n\n  return AnnotationFactory;\n}();\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n  var bounds = _util.Util.getAxialAlignedBoundingBox(bbox, matrix);\n  var minX = bounds[0];\n  var minY = bounds[1];\n  var maxX = bounds[2];\n  var maxY = bounds[3];\n  if (minX === maxX || minY === maxY) {\n    return [1, 0, 0, 1, rect[0], rect[1]];\n  }\n  var xRatio = (rect[2] - rect[0]) / (maxX - minX);\n  var yRatio = (rect[3] - rect[1]) / (maxY - minY);\n  return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];\n}\n\nvar Annotation = function () {\n  function Annotation(params) {\n    _classCallCheck(this, Annotation);\n\n    var dict = params.dict;\n    this.setFlags(dict.get('F'));\n    this.setRectangle(dict.getArray('Rect'));\n    this.setColor(dict.getArray('C'));\n    this.setBorderStyle(dict);\n    this.setAppearance(dict);\n    this.data = {\n      annotationFlags: this.flags,\n      borderStyle: this.borderStyle,\n      color: this.color,\n      hasAppearance: !!this.appearance,\n      id: params.id,\n      rect: this.rectangle,\n      subtype: params.subtype\n    };\n  }\n\n  _createClass(Annotation, [{\n    key: '_hasFlag',\n    value: function _hasFlag(flags, flag) {\n      return !!(flags & flag);\n    }\n  }, {\n    key: '_isViewable',\n    value: function _isViewable(flags) {\n      return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW);\n    }\n  }, {\n    key: '_isPrintable',\n    value: function _isPrintable(flags) {\n      return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN);\n    }\n  }, {\n    key: 'setFlags',\n    value: function setFlags(flags) {\n      this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n    }\n  }, {\n    key: 'hasFlag',\n    value: function hasFlag(flag) {\n      return this._hasFlag(this.flags, flag);\n    }\n  }, {\n    key: 'setRectangle',\n    value: function setRectangle(rectangle) {\n      if (Array.isArray(rectangle) && rectangle.length === 4) {\n        this.rectangle = _util.Util.normalizeRect(rectangle);\n      } else {\n        this.rectangle = [0, 0, 0, 0];\n      }\n    }\n  }, {\n    key: 'setColor',\n    value: function setColor(color) {\n      var rgbColor = new Uint8ClampedArray(3);\n      if (!Array.isArray(color)) {\n        this.color = rgbColor;\n        return;\n      }\n      switch (color.length) {\n        case 0:\n          this.color = null;\n          break;\n        case 1:\n          _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n          this.color = rgbColor;\n          break;\n        case 3:\n          _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n          this.color = rgbColor;\n          break;\n        case 4:\n          _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n          this.color = rgbColor;\n          break;\n        default:\n          this.color = rgbColor;\n          break;\n      }\n    }\n  }, {\n    key: 'setBorderStyle',\n    value: function setBorderStyle(borderStyle) {\n      this.borderStyle = new AnnotationBorderStyle();\n      if (!(0, _primitives.isDict)(borderStyle)) {\n        return;\n      }\n      if (borderStyle.has('BS')) {\n        var dict = borderStyle.get('BS');\n        var dictType = dict.get('Type');\n        if (!dictType || (0, _primitives.isName)(dictType, 'Border')) {\n          this.borderStyle.setWidth(dict.get('W'));\n          this.borderStyle.setStyle(dict.get('S'));\n          this.borderStyle.setDashArray(dict.getArray('D'));\n        }\n      } else if (borderStyle.has('Border')) {\n        var array = borderStyle.getArray('Border');\n        if (Array.isArray(array) && array.length >= 3) {\n          this.borderStyle.setHorizontalCornerRadius(array[0]);\n          this.borderStyle.setVerticalCornerRadius(array[1]);\n          this.borderStyle.setWidth(array[2]);\n          if (array.length === 4) {\n            this.borderStyle.setDashArray(array[3]);\n          }\n        }\n      } else {\n        this.borderStyle.setWidth(0);\n      }\n    }\n  }, {\n    key: 'setAppearance',\n    value: function setAppearance(dict) {\n      this.appearance = null;\n      var appearanceStates = dict.get('AP');\n      if (!(0, _primitives.isDict)(appearanceStates)) {\n        return;\n      }\n      var normalAppearanceState = appearanceStates.get('N');\n      if ((0, _primitives.isStream)(normalAppearanceState)) {\n        this.appearance = normalAppearanceState;\n        return;\n      }\n      if (!(0, _primitives.isDict)(normalAppearanceState)) {\n        return;\n      }\n      var as = dict.get('AS');\n      if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) {\n        return;\n      }\n      this.appearance = normalAppearanceState.get(as.name);\n    }\n  }, {\n    key: '_preparePopup',\n    value: function _preparePopup(dict) {\n      if (!dict.has('C')) {\n        this.data.color = null;\n      }\n      this.data.hasPopup = dict.has('Popup');\n      this.data.title = (0, _util.stringToPDFString)(dict.get('T') || '');\n      this.data.contents = (0, _util.stringToPDFString)(dict.get('Contents') || '');\n    }\n  }, {\n    key: 'loadResources',\n    value: function loadResources(keys) {\n      return this.appearance.dict.getAsync('Resources').then(function (resources) {\n        if (!resources) {\n          return;\n        }\n        var objectLoader = new _obj.ObjectLoader(resources, keys, resources.xref);\n        return objectLoader.load().then(function () {\n          return resources;\n        });\n      });\n    }\n  }, {\n    key: 'getOperatorList',\n    value: function getOperatorList(evaluator, task, renderForms) {\n      var _this = this;\n\n      if (!this.appearance) {\n        return Promise.resolve(new _operator_list.OperatorList());\n      }\n      var data = this.data;\n      var appearanceDict = this.appearance.dict;\n      var resourcesPromise = this.loadResources(['ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font']);\n      var bbox = appearanceDict.getArray('BBox') || [0, 0, 1, 1];\n      var matrix = appearanceDict.getArray('Matrix') || [1, 0, 0, 1, 0, 0];\n      var transform = getTransformMatrix(data.rect, bbox, matrix);\n      return resourcesPromise.then(function (resources) {\n        var opList = new _operator_list.OperatorList();\n        opList.addOp(_util.OPS.beginAnnotation, [data.rect, transform, matrix]);\n        return evaluator.getOperatorList({\n          stream: _this.appearance,\n          task: task,\n          resources: resources,\n          operatorList: opList\n        }).then(function () {\n          opList.addOp(_util.OPS.endAnnotation, []);\n          _this.appearance.reset();\n          return opList;\n        });\n      });\n    }\n  }, {\n    key: 'viewable',\n    get: function get() {\n      if (this.flags === 0) {\n        return true;\n      }\n      return this._isViewable(this.flags);\n    }\n  }, {\n    key: 'printable',\n    get: function get() {\n      if (this.flags === 0) {\n        return false;\n      }\n      return this._isPrintable(this.flags);\n    }\n  }]);\n\n  return Annotation;\n}();\n\nvar AnnotationBorderStyle = function () {\n  function AnnotationBorderStyle() {\n    _classCallCheck(this, AnnotationBorderStyle);\n\n    this.width = 1;\n    this.style = _util.AnnotationBorderStyleType.SOLID;\n    this.dashArray = [3];\n    this.horizontalCornerRadius = 0;\n    this.verticalCornerRadius = 0;\n  }\n\n  _createClass(AnnotationBorderStyle, [{\n    key: 'setWidth',\n    value: function setWidth(width) {\n      if (Number.isInteger(width)) {\n        this.width = width;\n      }\n    }\n  }, {\n    key: 'setStyle',\n    value: function setStyle(style) {\n      if (!style) {\n        return;\n      }\n      switch (style.name) {\n        case 'S':\n          this.style = _util.AnnotationBorderStyleType.SOLID;\n          break;\n        case 'D':\n          this.style = _util.AnnotationBorderStyleType.DASHED;\n          break;\n        case 'B':\n          this.style = _util.AnnotationBorderStyleType.BEVELED;\n          break;\n        case 'I':\n          this.style = _util.AnnotationBorderStyleType.INSET;\n          break;\n        case 'U':\n          this.style = _util.AnnotationBorderStyleType.UNDERLINE;\n          break;\n        default:\n          break;\n      }\n    }\n  }, {\n    key: 'setDashArray',\n    value: function setDashArray(dashArray) {\n      if (Array.isArray(dashArray) && dashArray.length > 0) {\n        var isValid = true;\n        var allZeros = true;\n        for (var i = 0, len = dashArray.length; i < len; i++) {\n          var element = dashArray[i];\n          var validNumber = +element >= 0;\n          if (!validNumber) {\n            isValid = false;\n            break;\n          } else if (element > 0) {\n            allZeros = false;\n          }\n        }\n        if (isValid && !allZeros) {\n          this.dashArray = dashArray;\n        } else {\n          this.width = 0;\n        }\n      } else if (dashArray) {\n        this.width = 0;\n      }\n    }\n  }, {\n    key: 'setHorizontalCornerRadius',\n    value: function setHorizontalCornerRadius(radius) {\n      if (Number.isInteger(radius)) {\n        this.horizontalCornerRadius = radius;\n      }\n    }\n  }, {\n    key: 'setVerticalCornerRadius',\n    value: function setVerticalCornerRadius(radius) {\n      if (Number.isInteger(radius)) {\n        this.verticalCornerRadius = radius;\n      }\n    }\n  }]);\n\n  return AnnotationBorderStyle;\n}();\n\nvar WidgetAnnotation = function (_Annotation) {\n  _inherits(WidgetAnnotation, _Annotation);\n\n  function WidgetAnnotation(params) {\n    _classCallCheck(this, WidgetAnnotation);\n\n    var _this2 = _possibleConstructorReturn(this, (WidgetAnnotation.__proto__ || Object.getPrototypeOf(WidgetAnnotation)).call(this, params));\n\n    var dict = params.dict;\n    var data = _this2.data;\n    data.annotationType = _util.AnnotationType.WIDGET;\n    data.fieldName = _this2._constructFieldName(dict);\n    data.fieldValue = (0, _util.getInheritableProperty)({\n      dict: dict,\n      key: 'V',\n      getArray: true\n    });\n    data.alternativeText = (0, _util.stringToPDFString)(dict.get('TU') || '');\n    data.defaultAppearance = (0, _util.getInheritableProperty)({\n      dict: dict,\n      key: 'DA'\n    }) || '';\n    var fieldType = (0, _util.getInheritableProperty)({\n      dict: dict,\n      key: 'FT'\n    });\n    data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;\n    _this2.fieldResources = (0, _util.getInheritableProperty)({\n      dict: dict,\n      key: 'DR'\n    }) || _primitives.Dict.empty;\n    data.fieldFlags = (0, _util.getInheritableProperty)({\n      dict: dict,\n      key: 'Ff'\n    });\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n      data.fieldFlags = 0;\n    }\n    data.readOnly = _this2.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);\n    if (data.fieldType === 'Sig') {\n      _this2.setFlags(_util.AnnotationFlag.HIDDEN);\n    }\n    return _this2;\n  }\n\n  _createClass(WidgetAnnotation, [{\n    key: '_constructFieldName',\n    value: function _constructFieldName(dict) {\n      if (!dict.has('T') && !dict.has('Parent')) {\n        (0, _util.warn)('Unknown field name, falling back to empty field name.');\n        return '';\n      }\n      if (!dict.has('Parent')) {\n        return (0, _util.stringToPDFString)(dict.get('T'));\n      }\n      var fieldName = [];\n      if (dict.has('T')) {\n        fieldName.unshift((0, _util.stringToPDFString)(dict.get('T')));\n      }\n      var loopDict = dict;\n      while (loopDict.has('Parent')) {\n        loopDict = loopDict.get('Parent');\n        if (!(0, _primitives.isDict)(loopDict)) {\n          break;\n        }\n        if (loopDict.has('T')) {\n          fieldName.unshift((0, _util.stringToPDFString)(loopDict.get('T')));\n        }\n      }\n      return fieldName.join('.');\n    }\n  }, {\n    key: 'hasFieldFlag',\n    value: function hasFieldFlag(flag) {\n      return !!(this.data.fieldFlags & flag);\n    }\n  }, {\n    key: 'getOperatorList',\n    value: function getOperatorList(evaluator, task, renderForms) {\n      if (renderForms) {\n        return Promise.resolve(new _operator_list.OperatorList());\n      }\n      return _get(WidgetAnnotation.prototype.__proto__ || Object.getPrototypeOf(WidgetAnnotation.prototype), 'getOperatorList', this).call(this, evaluator, task, renderForms);\n    }\n  }]);\n\n  return WidgetAnnotation;\n}(Annotation);\n\nvar TextWidgetAnnotation = function (_WidgetAnnotation) {\n  _inherits(TextWidgetAnnotation, _WidgetAnnotation);\n\n  function TextWidgetAnnotation(params) {\n    _classCallCheck(this, TextWidgetAnnotation);\n\n    var _this3 = _possibleConstructorReturn(this, (TextWidgetAnnotation.__proto__ || Object.getPrototypeOf(TextWidgetAnnotation)).call(this, params));\n\n    var dict = params.dict;\n    _this3.data.fieldValue = (0, _util.stringToPDFString)(_this3.data.fieldValue || '');\n    var alignment = (0, _util.getInheritableProperty)({\n      dict: dict,\n      key: 'Q'\n    });\n    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n      alignment = null;\n    }\n    _this3.data.textAlignment = alignment;\n    var maximumLength = (0, _util.getInheritableProperty)({\n      dict: dict,\n      key: 'MaxLen'\n    });\n    if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n      maximumLength = null;\n    }\n    _this3.data.maxLen = maximumLength;\n    _this3.data.multiLine = _this3.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE);\n    _this3.data.comb = _this3.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !_this3.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !_this3.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !_this3.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && _this3.data.maxLen !== null;\n    return _this3;\n  }\n\n  _createClass(TextWidgetAnnotation, [{\n    key: 'getOperatorList',\n    value: function getOperatorList(evaluator, task, renderForms) {\n      if (renderForms || this.appearance) {\n        return _get(TextWidgetAnnotation.prototype.__proto__ || Object.getPrototypeOf(TextWidgetAnnotation.prototype), 'getOperatorList', this).call(this, evaluator, task, renderForms);\n      }\n      var operatorList = new _operator_list.OperatorList();\n      if (!this.data.defaultAppearance) {\n        return Promise.resolve(operatorList);\n      }\n      var stream = new _stream.Stream((0, _util.stringToBytes)(this.data.defaultAppearance));\n      return evaluator.getOperatorList({\n        stream: stream,\n        task: task,\n        resources: this.fieldResources,\n        operatorList: operatorList\n      }).then(function () {\n        return operatorList;\n      });\n    }\n  }]);\n\n  return TextWidgetAnnotation;\n}(WidgetAnnotation);\n\nvar ButtonWidgetAnnotation = function (_WidgetAnnotation2) {\n  _inherits(ButtonWidgetAnnotation, _WidgetAnnotation2);\n\n  function ButtonWidgetAnnotation(params) {\n    _classCallCheck(this, ButtonWidgetAnnotation);\n\n    var _this4 = _possibleConstructorReturn(this, (ButtonWidgetAnnotation.__proto__ || Object.getPrototypeOf(ButtonWidgetAnnotation)).call(this, params));\n\n    _this4.data.checkBox = !_this4.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n    _this4.data.radioButton = _this4.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n    _this4.data.pushButton = _this4.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n    if (_this4.data.checkBox) {\n      _this4._processCheckBox(params);\n    } else if (_this4.data.radioButton) {\n      _this4._processRadioButton(params);\n    } else if (_this4.data.pushButton) {\n      _this4._processPushButton(params);\n    } else {\n      (0, _util.warn)('Invalid field flags for button widget annotation');\n    }\n    return _this4;\n  }\n\n  _createClass(ButtonWidgetAnnotation, [{\n    key: '_processCheckBox',\n    value: function _processCheckBox(params) {\n      if ((0, _primitives.isName)(this.data.fieldValue)) {\n        this.data.fieldValue = this.data.fieldValue.name;\n      }\n      var customAppearance = params.dict.get('AP');\n      if (!(0, _primitives.isDict)(customAppearance)) {\n        return;\n      }\n      var exportValueOptionsDict = customAppearance.get('D');\n      if (!(0, _primitives.isDict)(exportValueOptionsDict)) {\n        return;\n      }\n      var exportValues = exportValueOptionsDict.getKeys();\n      var hasCorrectOptionCount = exportValues.length === 2;\n      if (!hasCorrectOptionCount) {\n        return;\n      }\n      this.data.exportValue = exportValues[0] === 'Off' ? exportValues[1] : exportValues[0];\n    }\n  }, {\n    key: '_processRadioButton',\n    value: function _processRadioButton(params) {\n      this.data.fieldValue = this.data.buttonValue = null;\n      var fieldParent = params.dict.get('Parent');\n      if ((0, _primitives.isDict)(fieldParent) && fieldParent.has('V')) {\n        var fieldParentValue = fieldParent.get('V');\n        if ((0, _primitives.isName)(fieldParentValue)) {\n          this.data.fieldValue = fieldParentValue.name;\n        }\n      }\n      var appearanceStates = params.dict.get('AP');\n      if (!(0, _primitives.isDict)(appearanceStates)) {\n        return;\n      }\n      var normalAppearanceState = appearanceStates.get('N');\n      if (!(0, _primitives.isDict)(normalAppearanceState)) {\n        return;\n      }\n      var keys = normalAppearanceState.getKeys();\n      for (var i = 0, ii = keys.length; i < ii; i++) {\n        if (keys[i] !== 'Off') {\n          this.data.buttonValue = keys[i];\n          break;\n        }\n      }\n    }\n  }, {\n    key: '_processPushButton',\n    value: function _processPushButton(params) {\n      if (!params.dict.has('A')) {\n        (0, _util.warn)('Push buttons without action dictionaries are not supported');\n        return;\n      }\n      _obj.Catalog.parseDestDictionary({\n        destDict: params.dict,\n        resultObj: this.data,\n        docBaseUrl: params.pdfManager.docBaseUrl\n      });\n    }\n  }]);\n\n  return ButtonWidgetAnnotation;\n}(WidgetAnnotation);\n\nvar ChoiceWidgetAnnotation = function (_WidgetAnnotation3) {\n  _inherits(ChoiceWidgetAnnotation, _WidgetAnnotation3);\n\n  function ChoiceWidgetAnnotation(params) {\n    _classCallCheck(this, ChoiceWidgetAnnotation);\n\n    var _this5 = _possibleConstructorReturn(this, (ChoiceWidgetAnnotation.__proto__ || Object.getPrototypeOf(ChoiceWidgetAnnotation)).call(this, params));\n\n    _this5.data.options = [];\n    var options = (0, _util.getInheritableProperty)({\n      dict: params.dict,\n      key: 'Opt'\n    });\n    if (Array.isArray(options)) {\n      var xref = params.xref;\n      for (var i = 0, ii = options.length; i < ii; i++) {\n        var option = xref.fetchIfRef(options[i]);\n        var isOptionArray = Array.isArray(option);\n        _this5.data.options[i] = {\n          exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option,\n          displayValue: (0, _util.stringToPDFString)(isOptionArray ? xref.fetchIfRef(option[1]) : option)\n        };\n      }\n    }\n    if (!Array.isArray(_this5.data.fieldValue)) {\n      _this5.data.fieldValue = [_this5.data.fieldValue];\n    }\n    _this5.data.combo = _this5.hasFieldFlag(_util.AnnotationFieldFlag.COMBO);\n    _this5.data.multiSelect = _this5.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT);\n    return _this5;\n  }\n\n  return ChoiceWidgetAnnotation;\n}(WidgetAnnotation);\n\nvar TextAnnotation = function (_Annotation2) {\n  _inherits(TextAnnotation, _Annotation2);\n\n  function TextAnnotation(parameters) {\n    _classCallCheck(this, TextAnnotation);\n\n    var DEFAULT_ICON_SIZE = 22;\n\n    var _this6 = _possibleConstructorReturn(this, (TextAnnotation.__proto__ || Object.getPrototypeOf(TextAnnotation)).call(this, parameters));\n\n    _this6.data.annotationType = _util.AnnotationType.TEXT;\n    if (_this6.data.hasAppearance) {\n      _this6.data.name = 'NoIcon';\n    } else {\n      _this6.data.rect[1] = _this6.data.rect[3] - DEFAULT_ICON_SIZE;\n      _this6.data.rect[2] = _this6.data.rect[0] + DEFAULT_ICON_SIZE;\n      _this6.data.name = parameters.dict.has('Name') ? parameters.dict.get('Name').name : 'Note';\n    }\n    _this6._preparePopup(parameters.dict);\n    return _this6;\n  }\n\n  return TextAnnotation;\n}(Annotation);\n\nvar LinkAnnotation = function (_Annotation3) {\n  _inherits(LinkAnnotation, _Annotation3);\n\n  function LinkAnnotation(params) {\n    _classCallCheck(this, LinkAnnotation);\n\n    var _this7 = _possibleConstructorReturn(this, (LinkAnnotation.__proto__ || Object.getPrototypeOf(LinkAnnotation)).call(this, params));\n\n    _this7.data.annotationType = _util.AnnotationType.LINK;\n    _obj.Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: _this7.data,\n      docBaseUrl: params.pdfManager.docBaseUrl\n    });\n    return _this7;\n  }\n\n  return LinkAnnotation;\n}(Annotation);\n\nvar PopupAnnotation = function (_Annotation4) {\n  _inherits(PopupAnnotation, _Annotation4);\n\n  function PopupAnnotation(parameters) {\n    _classCallCheck(this, PopupAnnotation);\n\n    var _this8 = _possibleConstructorReturn(this, (PopupAnnotation.__proto__ || Object.getPrototypeOf(PopupAnnotation)).call(this, parameters));\n\n    _this8.data.annotationType = _util.AnnotationType.POPUP;\n    var dict = parameters.dict;\n    var parentItem = dict.get('Parent');\n    if (!parentItem) {\n      (0, _util.warn)('Popup annotation has a missing or invalid parent annotation.');\n      return _possibleConstructorReturn(_this8);\n    }\n    var parentSubtype = parentItem.get('Subtype');\n    _this8.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;\n    _this8.data.parentId = dict.getRaw('Parent').toString();\n    _this8.data.title = (0, _util.stringToPDFString)(parentItem.get('T') || '');\n    _this8.data.contents = (0, _util.stringToPDFString)(parentItem.get('Contents') || '');\n    if (!parentItem.has('C')) {\n      _this8.data.color = null;\n    } else {\n      _this8.setColor(parentItem.getArray('C'));\n      _this8.data.color = _this8.color;\n    }\n    if (!_this8.viewable) {\n      var parentFlags = parentItem.get('F');\n      if (_this8._isViewable(parentFlags)) {\n        _this8.setFlags(parentFlags);\n      }\n    }\n    return _this8;\n  }\n\n  return PopupAnnotation;\n}(Annotation);\n\nvar LineAnnotation = function (_Annotation5) {\n  _inherits(LineAnnotation, _Annotation5);\n\n  function LineAnnotation(parameters) {\n    _classCallCheck(this, LineAnnotation);\n\n    var _this9 = _possibleConstructorReturn(this, (LineAnnotation.__proto__ || Object.getPrototypeOf(LineAnnotation)).call(this, parameters));\n\n    _this9.data.annotationType = _util.AnnotationType.LINE;\n    var dict = parameters.dict;\n    _this9.data.lineCoordinates = _util.Util.normalizeRect(dict.getArray('L'));\n    _this9._preparePopup(dict);\n    return _this9;\n  }\n\n  return LineAnnotation;\n}(Annotation);\n\nvar SquareAnnotation = function (_Annotation6) {\n  _inherits(SquareAnnotation, _Annotation6);\n\n  function SquareAnnotation(parameters) {\n    _classCallCheck(this, SquareAnnotation);\n\n    var _this10 = _possibleConstructorReturn(this, (SquareAnnotation.__proto__ || Object.getPrototypeOf(SquareAnnotation)).call(this, parameters));\n\n    _this10.data.annotationType = _util.AnnotationType.SQUARE;\n    _this10._preparePopup(parameters.dict);\n    return _this10;\n  }\n\n  return SquareAnnotation;\n}(Annotation);\n\nvar CircleAnnotation = function (_Annotation7) {\n  _inherits(CircleAnnotation, _Annotation7);\n\n  function CircleAnnotation(parameters) {\n    _classCallCheck(this, CircleAnnotation);\n\n    var _this11 = _possibleConstructorReturn(this, (CircleAnnotation.__proto__ || Object.getPrototypeOf(CircleAnnotation)).call(this, parameters));\n\n    _this11.data.annotationType = _util.AnnotationType.CIRCLE;\n    _this11._preparePopup(parameters.dict);\n    return _this11;\n  }\n\n  return CircleAnnotation;\n}(Annotation);\n\nvar PolylineAnnotation = function (_Annotation8) {\n  _inherits(PolylineAnnotation, _Annotation8);\n\n  function PolylineAnnotation(parameters) {\n    _classCallCheck(this, PolylineAnnotation);\n\n    var _this12 = _possibleConstructorReturn(this, (PolylineAnnotation.__proto__ || Object.getPrototypeOf(PolylineAnnotation)).call(this, parameters));\n\n    _this12.data.annotationType = _util.AnnotationType.POLYLINE;\n    var dict = parameters.dict;\n    var rawVertices = dict.getArray('Vertices');\n    _this12.data.vertices = [];\n    for (var i = 0, ii = rawVertices.length; i < ii; i += 2) {\n      _this12.data.vertices.push({\n        x: rawVertices[i],\n        y: rawVertices[i + 1]\n      });\n    }\n    _this12._preparePopup(dict);\n    return _this12;\n  }\n\n  return PolylineAnnotation;\n}(Annotation);\n\nvar PolygonAnnotation = function (_PolylineAnnotation) {\n  _inherits(PolygonAnnotation, _PolylineAnnotation);\n\n  function PolygonAnnotation(parameters) {\n    _classCallCheck(this, PolygonAnnotation);\n\n    var _this13 = _possibleConstructorReturn(this, (PolygonAnnotation.__proto__ || Object.getPrototypeOf(PolygonAnnotation)).call(this, parameters));\n\n    _this13.data.annotationType = _util.AnnotationType.POLYGON;\n    return _this13;\n  }\n\n  return PolygonAnnotation;\n}(PolylineAnnotation);\n\nvar InkAnnotation = function (_Annotation9) {\n  _inherits(InkAnnotation, _Annotation9);\n\n  function InkAnnotation(parameters) {\n    _classCallCheck(this, InkAnnotation);\n\n    var _this14 = _possibleConstructorReturn(this, (InkAnnotation.__proto__ || Object.getPrototypeOf(InkAnnotation)).call(this, parameters));\n\n    _this14.data.annotationType = _util.AnnotationType.INK;\n    var dict = parameters.dict;\n    var xref = parameters.xref;\n    var originalInkLists = dict.getArray('InkList');\n    _this14.data.inkLists = [];\n    for (var i = 0, ii = originalInkLists.length; i < ii; ++i) {\n      _this14.data.inkLists.push([]);\n      for (var j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {\n        _this14.data.inkLists[i].push({\n          x: xref.fetchIfRef(originalInkLists[i][j]),\n          y: xref.fetchIfRef(originalInkLists[i][j + 1])\n        });\n      }\n    }\n    _this14._preparePopup(dict);\n    return _this14;\n  }\n\n  return InkAnnotation;\n}(Annotation);\n\nvar HighlightAnnotation = function (_Annotation10) {\n  _inherits(HighlightAnnotation, _Annotation10);\n\n  function HighlightAnnotation(parameters) {\n    _classCallCheck(this, HighlightAnnotation);\n\n    var _this15 = _possibleConstructorReturn(this, (HighlightAnnotation.__proto__ || Object.getPrototypeOf(HighlightAnnotation)).call(this, parameters));\n\n    _this15.data.annotationType = _util.AnnotationType.HIGHLIGHT;\n    _this15._preparePopup(parameters.dict);\n    return _this15;\n  }\n\n  return HighlightAnnotation;\n}(Annotation);\n\nvar UnderlineAnnotation = function (_Annotation11) {\n  _inherits(UnderlineAnnotation, _Annotation11);\n\n  function UnderlineAnnotation(parameters) {\n    _classCallCheck(this, UnderlineAnnotation);\n\n    var _this16 = _possibleConstructorReturn(this, (UnderlineAnnotation.__proto__ || Object.getPrototypeOf(UnderlineAnnotation)).call(this, parameters));\n\n    _this16.data.annotationType = _util.AnnotationType.UNDERLINE;\n    _this16._preparePopup(parameters.dict);\n    return _this16;\n  }\n\n  return UnderlineAnnotation;\n}(Annotation);\n\nvar SquigglyAnnotation = function (_Annotation12) {\n  _inherits(SquigglyAnnotation, _Annotation12);\n\n  function SquigglyAnnotation(parameters) {\n    _classCallCheck(this, SquigglyAnnotation);\n\n    var _this17 = _possibleConstructorReturn(this, (SquigglyAnnotation.__proto__ || Object.getPrototypeOf(SquigglyAnnotation)).call(this, parameters));\n\n    _this17.data.annotationType = _util.AnnotationType.SQUIGGLY;\n    _this17._preparePopup(parameters.dict);\n    return _this17;\n  }\n\n  return SquigglyAnnotation;\n}(Annotation);\n\nvar StrikeOutAnnotation = function (_Annotation13) {\n  _inherits(StrikeOutAnnotation, _Annotation13);\n\n  function StrikeOutAnnotation(parameters) {\n    _classCallCheck(this, StrikeOutAnnotation);\n\n    var _this18 = _possibleConstructorReturn(this, (StrikeOutAnnotation.__proto__ || Object.getPrototypeOf(StrikeOutAnnotation)).call(this, parameters));\n\n    _this18.data.annotationType = _util.AnnotationType.STRIKEOUT;\n    _this18._preparePopup(parameters.dict);\n    return _this18;\n  }\n\n  return StrikeOutAnnotation;\n}(Annotation);\n\nvar StampAnnotation = function (_Annotation14) {\n  _inherits(StampAnnotation, _Annotation14);\n\n  function StampAnnotation(parameters) {\n    _classCallCheck(this, StampAnnotation);\n\n    var _this19 = _possibleConstructorReturn(this, (StampAnnotation.__proto__ || Object.getPrototypeOf(StampAnnotation)).call(this, parameters));\n\n    _this19.data.annotationType = _util.AnnotationType.STAMP;\n    _this19._preparePopup(parameters.dict);\n    return _this19;\n  }\n\n  return StampAnnotation;\n}(Annotation);\n\nvar FileAttachmentAnnotation = function (_Annotation15) {\n  _inherits(FileAttachmentAnnotation, _Annotation15);\n\n  function FileAttachmentAnnotation(parameters) {\n    _classCallCheck(this, FileAttachmentAnnotation);\n\n    var _this20 = _possibleConstructorReturn(this, (FileAttachmentAnnotation.__proto__ || Object.getPrototypeOf(FileAttachmentAnnotation)).call(this, parameters));\n\n    var file = new _obj.FileSpec(parameters.dict.get('FS'), parameters.xref);\n    _this20.data.annotationType = _util.AnnotationType.FILEATTACHMENT;\n    _this20.data.file = file.serializable;\n    _this20._preparePopup(parameters.dict);\n    return _this20;\n  }\n\n  return FileAttachmentAnnotation;\n}(Annotation);\n\nexports.Annotation = Annotation;\nexports.AnnotationBorderStyle = AnnotationBorderStyle;\nexports.AnnotationFactory = AnnotationFactory;\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.OperatorList = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar QueueOptimizer = function QueueOptimizerClosure() {\n  function addState(parentState, pattern, checkFn, iterateFn, processFn) {\n    var state = parentState;\n    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {\n      var item = pattern[i];\n      state = state[item] || (state[item] = []);\n    }\n    state[pattern[pattern.length - 1]] = {\n      checkFn: checkFn,\n      iterateFn: iterateFn,\n      processFn: processFn\n    };\n  }\n  function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\n    var iFirstPIMXO = iFirstSave + 2;\n    for (var i = 0; i < count; i++) {\n      var arg = argsArray[iFirstPIMXO + 4 * i];\n      var imageMask = arg.length === 1 && arg[0];\n      if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) {\n        fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask;\n        continue;\n      }\n      break;\n    }\n    return count - i;\n  }\n  var InitialState = [];\n  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) {\n    var fnArray = context.fnArray;\n    var iFirstSave = context.iCurr - 3;\n    var pos = (i - iFirstSave) % 4;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === _util.OPS.save;\n      case 1:\n        return fnArray[i] === _util.OPS.transform;\n      case 2:\n        return fnArray[i] === _util.OPS.paintInlineImageXObject;\n      case 3:\n        return fnArray[i] === _util.OPS.restore;\n    }\n  }, function foundInlineImageGroup(context, i) {\n    var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n    var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n    var MAX_WIDTH = 1000;\n    var IMAGE_PADDING = 1;\n    var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n    var curr = context.iCurr;\n    var iFirstSave = curr - 3;\n    var iFirstTransform = curr - 2;\n    var iFirstPIIXO = curr - 1;\n    var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n    if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n      return i - (i - iFirstSave) % 4;\n    }\n    var maxX = 0;\n    var map = [],\n        maxLineHeight = 0;\n    var currentX = IMAGE_PADDING,\n        currentY = IMAGE_PADDING;\n    var q;\n    for (q = 0; q < count; q++) {\n      var transform = argsArray[iFirstTransform + (q << 2)];\n      var img = argsArray[iFirstPIIXO + (q << 2)][0];\n      if (currentX + img.width > MAX_WIDTH) {\n        maxX = Math.max(maxX, currentX);\n        currentY += maxLineHeight + 2 * IMAGE_PADDING;\n        currentX = 0;\n        maxLineHeight = 0;\n      }\n      map.push({\n        transform: transform,\n        x: currentX,\n        y: currentY,\n        w: img.width,\n        h: img.height\n      });\n      currentX += img.width + 2 * IMAGE_PADDING;\n      maxLineHeight = Math.max(maxLineHeight, img.height);\n    }\n    var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n    var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n    var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n    var imgRowSize = imgWidth << 2;\n    for (q = 0; q < count; q++) {\n      var data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n      var rowSize = map[q].w << 2;\n      var dataOffset = 0;\n      var offset = map[q].x + map[q].y * imgWidth << 2;\n      imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n      for (var k = 0, kk = map[q].h; k < kk; k++) {\n        imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n        dataOffset += rowSize;\n        offset += imgRowSize;\n      }\n      imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n      while (offset >= 0) {\n        data[offset - 4] = data[offset];\n        data[offset - 3] = data[offset + 1];\n        data[offset - 2] = data[offset + 2];\n        data[offset - 1] = data[offset + 3];\n        data[offset + rowSize] = data[offset + rowSize - 4];\n        data[offset + rowSize + 1] = data[offset + rowSize - 3];\n        data[offset + rowSize + 2] = data[offset + rowSize - 2];\n        data[offset + rowSize + 3] = data[offset + rowSize - 1];\n        offset -= imgRowSize;\n      }\n    }\n    fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup);\n    argsArray.splice(iFirstSave, count * 4, [{\n      width: imgWidth,\n      height: imgHeight,\n      kind: _util.ImageKind.RGBA_32BPP,\n      data: imgData\n    }, map]);\n    return iFirstSave + 1;\n  });\n  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) {\n    var fnArray = context.fnArray;\n    var iFirstSave = context.iCurr - 3;\n    var pos = (i - iFirstSave) % 4;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === _util.OPS.save;\n      case 1:\n        return fnArray[i] === _util.OPS.transform;\n      case 2:\n        return fnArray[i] === _util.OPS.paintImageMaskXObject;\n      case 3:\n        return fnArray[i] === _util.OPS.restore;\n    }\n  }, function foundImageMaskGroup(context, i) {\n    var MIN_IMAGES_IN_MASKS_BLOCK = 10;\n    var MAX_IMAGES_IN_MASKS_BLOCK = 100;\n    var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n    var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n    var curr = context.iCurr;\n    var iFirstSave = curr - 3;\n    var iFirstTransform = curr - 2;\n    var iFirstPIMXO = curr - 1;\n    var count = Math.floor((i - iFirstSave) / 4);\n    count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);\n    if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n      return i - (i - iFirstSave) % 4;\n    }\n    var q;\n    var isSameImage = false;\n    var iTransform, transformArgs;\n    var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n    if (argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0) {\n      isSameImage = true;\n      var firstTransformArg0 = argsArray[iFirstTransform][0];\n      var firstTransformArg3 = argsArray[iFirstTransform][3];\n      iTransform = iFirstTransform + 4;\n      var iPIMXO = iFirstPIMXO + 4;\n      for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n        transformArgs = argsArray[iTransform];\n        if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== 0 || transformArgs[2] !== 0 || transformArgs[3] !== firstTransformArg3) {\n          if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n            isSameImage = false;\n          } else {\n            count = q;\n          }\n          break;\n        }\n      }\n    }\n    if (isSameImage) {\n      count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n      var positions = new Float32Array(count * 2);\n      iTransform = iFirstTransform;\n      for (q = 0; q < count; q++, iTransform += 4) {\n        transformArgs = argsArray[iTransform];\n        positions[q << 1] = transformArgs[4];\n        positions[(q << 1) + 1] = transformArgs[5];\n      }\n      fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);\n      argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]);\n    } else {\n      count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n      var images = [];\n      for (q = 0; q < count; q++) {\n        transformArgs = argsArray[iFirstTransform + (q << 2)];\n        var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n        images.push({\n          data: maskParams.data,\n          width: maskParams.width,\n          height: maskParams.height,\n          transform: transformArgs\n        });\n      }\n      fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup);\n      argsArray.splice(iFirstSave, count * 4, [images]);\n    }\n    return iFirstSave + 1;\n  });\n  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) {\n    var argsArray = context.argsArray;\n    var iFirstTransform = context.iCurr - 2;\n    return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;\n  }, function (context, i) {\n    var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n    var iFirstSave = context.iCurr - 3;\n    var pos = (i - iFirstSave) % 4;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === _util.OPS.save;\n      case 1:\n        if (fnArray[i] !== _util.OPS.transform) {\n          return false;\n        }\n        var iFirstTransform = context.iCurr - 2;\n        var firstTransformArg0 = argsArray[iFirstTransform][0];\n        var firstTransformArg3 = argsArray[iFirstTransform][3];\n        if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {\n          return false;\n        }\n        return true;\n      case 2:\n        if (fnArray[i] !== _util.OPS.paintImageXObject) {\n          return false;\n        }\n        var iFirstPIXO = context.iCurr - 1;\n        var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n        if (argsArray[i][0] !== firstPIXOArg0) {\n          return false;\n        }\n        return true;\n      case 3:\n        return fnArray[i] === _util.OPS.restore;\n    }\n  }, function (context, i) {\n    var MIN_IMAGES_IN_BLOCK = 3;\n    var MAX_IMAGES_IN_BLOCK = 1000;\n    var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n    var curr = context.iCurr;\n    var iFirstSave = curr - 3;\n    var iFirstTransform = curr - 2;\n    var iFirstPIXO = curr - 1;\n    var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n    var firstTransformArg0 = argsArray[iFirstTransform][0];\n    var firstTransformArg3 = argsArray[iFirstTransform][3];\n    var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);\n    if (count < MIN_IMAGES_IN_BLOCK) {\n      return i - (i - iFirstSave) % 4;\n    }\n    var positions = new Float32Array(count * 2);\n    var iTransform = iFirstTransform;\n    for (var q = 0; q < count; q++, iTransform += 4) {\n      var transformArgs = argsArray[iTransform];\n      positions[q << 1] = transformArgs[4];\n      positions[(q << 1) + 1] = transformArgs[5];\n    }\n    var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];\n    fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat);\n    argsArray.splice(iFirstSave, count * 4, args);\n    return iFirstSave + 1;\n  });\n  addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function (context, i) {\n    var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n    var iFirstSave = context.iCurr - 4;\n    var pos = (i - iFirstSave) % 5;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === _util.OPS.beginText;\n      case 1:\n        return fnArray[i] === _util.OPS.setFont;\n      case 2:\n        return fnArray[i] === _util.OPS.setTextMatrix;\n      case 3:\n        if (fnArray[i] !== _util.OPS.showText) {\n          return false;\n        }\n        var iFirstSetFont = context.iCurr - 3;\n        var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n        var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n        if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {\n          return false;\n        }\n        return true;\n      case 4:\n        return fnArray[i] === _util.OPS.endText;\n    }\n  }, function (context, i) {\n    var MIN_CHARS_IN_BLOCK = 3;\n    var MAX_CHARS_IN_BLOCK = 1000;\n    var fnArray = context.fnArray,\n        argsArray = context.argsArray;\n    var curr = context.iCurr;\n    var iFirstBeginText = curr - 4;\n    var iFirstSetFont = curr - 3;\n    var iFirstSetTextMatrix = curr - 2;\n    var iFirstShowText = curr - 1;\n    var iFirstEndText = curr;\n    var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n    var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n    var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);\n    if (count < MIN_CHARS_IN_BLOCK) {\n      return i - (i - iFirstBeginText) % 5;\n    }\n    var iFirst = iFirstBeginText;\n    if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n      count++;\n      iFirst -= 5;\n    }\n    var iEndText = iFirst + 4;\n    for (var q = 1; q < count; q++) {\n      fnArray.splice(iEndText, 3);\n      argsArray.splice(iEndText, 3);\n      iEndText += 2;\n    }\n    return iEndText + 1;\n  });\n  function QueueOptimizer(queue) {\n    this.queue = queue;\n    this.state = null;\n    this.context = {\n      iCurr: 0,\n      fnArray: queue.fnArray,\n      argsArray: queue.argsArray\n    };\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n  QueueOptimizer.prototype = {\n    _optimize: function _optimize() {\n      var fnArray = this.queue.fnArray;\n      var i = this.lastProcessed,\n          ii = fnArray.length;\n      var state = this.state;\n      var match = this.match;\n      if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n        this.lastProcessed = ii;\n        return;\n      }\n      var context = this.context;\n      while (i < ii) {\n        if (match) {\n          var iterate = (0, match.iterateFn)(context, i);\n          if (iterate) {\n            i++;\n            continue;\n          }\n          i = (0, match.processFn)(context, i + 1);\n          ii = fnArray.length;\n          match = null;\n          state = null;\n          if (i >= ii) {\n            break;\n          }\n        }\n        state = (state || InitialState)[fnArray[i]];\n        if (!state || Array.isArray(state)) {\n          i++;\n          continue;\n        }\n        context.iCurr = i;\n        i++;\n        if (state.checkFn && !(0, state.checkFn)(context)) {\n          state = null;\n          continue;\n        }\n        match = state;\n        state = null;\n      }\n      this.state = state;\n      this.match = match;\n      this.lastProcessed = i;\n    },\n    push: function push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n      this._optimize();\n    },\n    flush: function flush() {\n      while (this.match) {\n        var length = this.queue.fnArray.length;\n        this.lastProcessed = (0, this.match.processFn)(this.context, length);\n        this.match = null;\n        this.state = null;\n        this._optimize();\n      }\n    },\n    reset: function reset() {\n      this.state = null;\n      this.match = null;\n      this.lastProcessed = 0;\n    }\n  };\n  return QueueOptimizer;\n}();\nvar NullOptimizer = function NullOptimizerClosure() {\n  function NullOptimizer(queue) {\n    this.queue = queue;\n  }\n  NullOptimizer.prototype = {\n    push: function push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n    },\n    flush: function flush() {}\n  };\n  return NullOptimizer;\n}();\nvar OperatorList = function OperatorListClosure() {\n  var CHUNK_SIZE = 1000;\n  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;\n  function getTransfers(queue) {\n    var transfers = [];\n    var fnArray = queue.fnArray,\n        argsArray = queue.argsArray;\n    for (var i = 0, ii = queue.length; i < ii; i++) {\n      switch (fnArray[i]) {\n        case _util.OPS.paintInlineImageXObject:\n        case _util.OPS.paintInlineImageXObjectGroup:\n        case _util.OPS.paintImageMaskXObject:\n          var arg = argsArray[i][0];\n          ;\n          if (!arg.cached) {\n            transfers.push(arg.data.buffer);\n          }\n          break;\n      }\n    }\n    return transfers;\n  }\n  function OperatorList(intent, messageHandler, pageIndex) {\n    this.messageHandler = messageHandler;\n    this.fnArray = [];\n    this.argsArray = [];\n    if (messageHandler && this.intent !== 'oplist') {\n      this.optimizer = new QueueOptimizer(this);\n    } else {\n      this.optimizer = new NullOptimizer(this);\n    }\n    this.dependencies = Object.create(null);\n    this._totalLength = 0;\n    this.pageIndex = pageIndex;\n    this.intent = intent;\n    this.weight = 0;\n  }\n  OperatorList.prototype = {\n    get length() {\n      return this.argsArray.length;\n    },\n    get totalLength() {\n      return this._totalLength + this.length;\n    },\n    addOp: function addOp(fn, args) {\n      this.optimizer.push(fn, args);\n      this.weight++;\n      if (this.messageHandler) {\n        if (this.weight >= CHUNK_SIZE) {\n          this.flush();\n        } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) {\n          this.flush();\n        }\n      }\n    },\n    addDependency: function addDependency(dependency) {\n      if (dependency in this.dependencies) {\n        return;\n      }\n      this.dependencies[dependency] = true;\n      this.addOp(_util.OPS.dependency, [dependency]);\n    },\n    addDependencies: function addDependencies(dependencies) {\n      for (var key in dependencies) {\n        this.addDependency(key);\n      }\n    },\n    addOpList: function addOpList(opList) {\n      Object.assign(this.dependencies, opList.dependencies);\n      for (var i = 0, ii = opList.length; i < ii; i++) {\n        this.addOp(opList.fnArray[i], opList.argsArray[i]);\n      }\n    },\n    getIR: function getIR() {\n      return {\n        fnArray: this.fnArray,\n        argsArray: this.argsArray,\n        length: this.length\n      };\n    },\n    flush: function flush(lastChunk) {\n      this.optimizer.flush();\n      var transfers = getTransfers(this);\n      var length = this.length;\n      this._totalLength += length;\n      this.messageHandler.send('RenderPageChunk', {\n        operatorList: {\n          fnArray: this.fnArray,\n          argsArray: this.argsArray,\n          lastChunk: lastChunk,\n          length: length\n        },\n        pageIndex: this.pageIndex,\n        intent: this.intent\n      }, transfers);\n      this.dependencies = Object.create(null);\n      this.fnArray.length = 0;\n      this.argsArray.length = 0;\n      this.weight = 0;\n      this.optimizer.reset();\n    }\n  };\n  return OperatorList;\n}();\nexports.OperatorList = OperatorList;\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PartialEvaluator = undefined;\n\nvar _regenerator = __w_pdfjs_require__(131);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _cmap = __w_pdfjs_require__(155);\n\nvar _stream = __w_pdfjs_require__(140);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _fonts = __w_pdfjs_require__(156);\n\nvar _encodings = __w_pdfjs_require__(159);\n\nvar _unicode = __w_pdfjs_require__(162);\n\nvar _standard_fonts = __w_pdfjs_require__(161);\n\nvar _pattern = __w_pdfjs_require__(165);\n\nvar _parser = __w_pdfjs_require__(139);\n\nvar _bidi = __w_pdfjs_require__(166);\n\nvar _colorspace = __w_pdfjs_require__(151);\n\nvar _glyphlist = __w_pdfjs_require__(160);\n\nvar _metrics = __w_pdfjs_require__(167);\n\nvar _function = __w_pdfjs_require__(168);\n\nvar _jpeg_stream = __w_pdfjs_require__(146);\n\nvar _murmurhash = __w_pdfjs_require__(170);\n\nvar _operator_list = __w_pdfjs_require__(153);\n\nvar _image = __w_pdfjs_require__(171);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nvar PartialEvaluator = function PartialEvaluatorClosure() {\n  var DefaultPartialEvaluatorOptions = {\n    forceDataSchema: false,\n    maxImageSize: -1,\n    disableFontFace: false,\n    nativeImageDecoderSupport: _util.NativeImageDecoding.DECODE,\n    ignoreErrors: false,\n    isEvalSupported: true\n  };\n  function NativeImageDecoder(_ref) {\n    var xref = _ref.xref,\n        resources = _ref.resources,\n        handler = _ref.handler,\n        _ref$forceDataSchema = _ref.forceDataSchema,\n        forceDataSchema = _ref$forceDataSchema === undefined ? false : _ref$forceDataSchema,\n        pdfFunctionFactory = _ref.pdfFunctionFactory;\n\n    this.xref = xref;\n    this.resources = resources;\n    this.handler = handler;\n    this.forceDataSchema = forceDataSchema;\n    this.pdfFunctionFactory = pdfFunctionFactory;\n  }\n  NativeImageDecoder.prototype = {\n    canDecode: function canDecode(image) {\n      return image instanceof _jpeg_stream.JpegStream && NativeImageDecoder.isDecodable(image, this.xref, this.resources, this.pdfFunctionFactory);\n    },\n    decode: function decode(image) {\n      var dict = image.dict;\n      var colorSpace = dict.get('ColorSpace', 'CS');\n      colorSpace = _colorspace.ColorSpace.parse(colorSpace, this.xref, this.resources, this.pdfFunctionFactory);\n      return this.handler.sendWithPromise('JpegDecode', [image.getIR(this.forceDataSchema), colorSpace.numComps]).then(function (_ref2) {\n        var data = _ref2.data,\n            width = _ref2.width,\n            height = _ref2.height;\n\n        return new _stream.Stream(data, 0, data.length, image.dict);\n      });\n    }\n  };\n  NativeImageDecoder.isSupported = function (image, xref, res, pdfFunctionFactory) {\n    var dict = image.dict;\n    if (dict.has('DecodeParms') || dict.has('DP')) {\n      return false;\n    }\n    var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory);\n    return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') && cs.isDefaultDecode(dict.getArray('Decode', 'D'));\n  };\n  NativeImageDecoder.isDecodable = function (image, xref, res, pdfFunctionFactory) {\n    var dict = image.dict;\n    if (dict.has('DecodeParms') || dict.has('DP')) {\n      return false;\n    }\n    var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory);\n    return (cs.numComps === 1 || cs.numComps === 3) && cs.isDefaultDecode(dict.getArray('Decode', 'D'));\n  };\n  function PartialEvaluator(_ref3) {\n    var _this = this;\n\n    var pdfManager = _ref3.pdfManager,\n        xref = _ref3.xref,\n        handler = _ref3.handler,\n        pageIndex = _ref3.pageIndex,\n        idFactory = _ref3.idFactory,\n        fontCache = _ref3.fontCache,\n        builtInCMapCache = _ref3.builtInCMapCache,\n        _ref3$options = _ref3.options,\n        options = _ref3$options === undefined ? null : _ref3$options,\n        pdfFunctionFactory = _ref3.pdfFunctionFactory;\n\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n    this.handler = handler;\n    this.pageIndex = pageIndex;\n    this.idFactory = idFactory;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.options = options || DefaultPartialEvaluatorOptions;\n    this.pdfFunctionFactory = pdfFunctionFactory;\n    this.fetchBuiltInCMap = function () {\n      var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(name) {\n        var data;\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!_this.builtInCMapCache.has(name)) {\n                  _context.next = 2;\n                  break;\n                }\n\n                return _context.abrupt('return', _this.builtInCMapCache.get(name));\n\n              case 2:\n                _context.next = 4;\n                return _this.handler.sendWithPromise('FetchBuiltInCMap', { name: name });\n\n              case 4:\n                data = _context.sent;\n\n                if (data.compressionType !== _util.CMapCompressionType.NONE) {\n                  _this.builtInCMapCache.set(name, data);\n                }\n                return _context.abrupt('return', data);\n\n              case 7:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, _this);\n      }));\n\n      return function (_x) {\n        return _ref4.apply(this, arguments);\n      };\n    }();\n  }\n  var TIME_SLOT_DURATION_MS = 20;\n  var CHECK_TIME_EVERY = 100;\n  function TimeSlotManager() {\n    this.reset();\n  }\n  TimeSlotManager.prototype = {\n    check: function TimeSlotManager_check() {\n      if (++this.checked < CHECK_TIME_EVERY) {\n        return false;\n      }\n      this.checked = 0;\n      return this.endTime <= Date.now();\n    },\n    reset: function TimeSlotManager_reset() {\n      this.endTime = Date.now() + TIME_SLOT_DURATION_MS;\n      this.checked = 0;\n    }\n  };\n  function normalizeBlendMode(value) {\n    if (!(0, _primitives.isName)(value)) {\n      return 'source-over';\n    }\n    switch (value.name) {\n      case 'Normal':\n      case 'Compatible':\n        return 'source-over';\n      case 'Multiply':\n        return 'multiply';\n      case 'Screen':\n        return 'screen';\n      case 'Overlay':\n        return 'overlay';\n      case 'Darken':\n        return 'darken';\n      case 'Lighten':\n        return 'lighten';\n      case 'ColorDodge':\n        return 'color-dodge';\n      case 'ColorBurn':\n        return 'color-burn';\n      case 'HardLight':\n        return 'hard-light';\n      case 'SoftLight':\n        return 'soft-light';\n      case 'Difference':\n        return 'difference';\n      case 'Exclusion':\n        return 'exclusion';\n      case 'Hue':\n        return 'hue';\n      case 'Saturation':\n        return 'saturation';\n      case 'Color':\n        return 'color';\n      case 'Luminosity':\n        return 'luminosity';\n    }\n    (0, _util.warn)('Unsupported blend mode: ' + value.name);\n    return 'source-over';\n  }\n  var deferred = Promise.resolve();\n  var TILING_PATTERN = 1,\n      SHADING_PATTERN = 2;\n  PartialEvaluator.prototype = {\n    clone: function clone() {\n      var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DefaultPartialEvaluatorOptions;\n\n      var newEvaluator = Object.create(this);\n      newEvaluator.options = newOptions;\n      return newEvaluator;\n    },\n\n    hasBlendModes: function PartialEvaluator_hasBlendModes(resources) {\n      if (!(0, _primitives.isDict)(resources)) {\n        return false;\n      }\n      var processed = Object.create(null);\n      if (resources.objId) {\n        processed[resources.objId] = true;\n      }\n      var nodes = [resources],\n          xref = this.xref;\n      while (nodes.length) {\n        var key, i, ii;\n        var node = nodes.shift();\n        var graphicStates = node.get('ExtGState');\n        if ((0, _primitives.isDict)(graphicStates)) {\n          var graphicStatesKeys = graphicStates.getKeys();\n          for (i = 0, ii = graphicStatesKeys.length; i < ii; i++) {\n            key = graphicStatesKeys[i];\n            var graphicState = graphicStates.get(key);\n            var bm = graphicState.get('BM');\n            if ((0, _primitives.isName)(bm) && bm.name !== 'Normal') {\n              return true;\n            }\n          }\n        }\n        var xObjects = node.get('XObject');\n        if (!(0, _primitives.isDict)(xObjects)) {\n          continue;\n        }\n        var xObjectsKeys = xObjects.getKeys();\n        for (i = 0, ii = xObjectsKeys.length; i < ii; i++) {\n          key = xObjectsKeys[i];\n          var xObject = xObjects.getRaw(key);\n          if ((0, _primitives.isRef)(xObject)) {\n            if (processed[xObject.toString()]) {\n              continue;\n            }\n            xObject = xref.fetch(xObject);\n          }\n          if (!(0, _primitives.isStream)(xObject)) {\n            continue;\n          }\n          if (xObject.dict.objId) {\n            if (processed[xObject.dict.objId]) {\n              continue;\n            }\n            processed[xObject.dict.objId] = true;\n          }\n          var xResources = xObject.dict.get('Resources');\n          if ((0, _primitives.isDict)(xResources) && (!xResources.objId || !processed[xResources.objId])) {\n            nodes.push(xResources);\n            if (xResources.objId) {\n              processed[xResources.objId] = true;\n            }\n          }\n        }\n      }\n      return false;\n    },\n    buildFormXObject: function PartialEvaluator_buildFormXObject(resources, xobj, smask, operatorList, task, initialState) {\n      var dict = xobj.dict;\n      var matrix = dict.getArray('Matrix');\n      var bbox = dict.getArray('BBox');\n      var group = dict.get('Group');\n      if (group) {\n        var groupOptions = {\n          matrix: matrix,\n          bbox: bbox,\n          smask: smask,\n          isolated: false,\n          knockout: false\n        };\n        var groupSubtype = group.get('S');\n        var colorSpace = null;\n        if ((0, _primitives.isName)(groupSubtype, 'Transparency')) {\n          groupOptions.isolated = group.get('I') || false;\n          groupOptions.knockout = group.get('K') || false;\n          if (group.has('CS')) {\n            colorSpace = _colorspace.ColorSpace.parse(group.get('CS'), this.xref, resources, this.pdfFunctionFactory);\n          }\n        }\n        if (smask && smask.backdrop) {\n          colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;\n          smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n        }\n        operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);\n      }\n      operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);\n      return this.getOperatorList({\n        stream: xobj,\n        task: task,\n        resources: dict.get('Resources') || resources,\n        operatorList: operatorList,\n        initialState: initialState\n      }).then(function () {\n        operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);\n        if (group) {\n          operatorList.addOp(_util.OPS.endGroup, [groupOptions]);\n        }\n      });\n    },\n    buildPaintImageXObject: function buildPaintImageXObject(_ref5) {\n      var _this2 = this;\n\n      var resources = _ref5.resources,\n          image = _ref5.image,\n          _ref5$isInline = _ref5.isInline,\n          isInline = _ref5$isInline === undefined ? false : _ref5$isInline,\n          operatorList = _ref5.operatorList,\n          cacheKey = _ref5.cacheKey,\n          imageCache = _ref5.imageCache,\n          _ref5$forceDisableNat = _ref5.forceDisableNativeImageDecoder,\n          forceDisableNativeImageDecoder = _ref5$forceDisableNat === undefined ? false : _ref5$forceDisableNat;\n\n      var dict = image.dict;\n      var w = dict.get('Width', 'W');\n      var h = dict.get('Height', 'H');\n      if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) {\n        (0, _util.warn)('Image dimensions are missing, or not numbers.');\n        return Promise.resolve();\n      }\n      var maxImageSize = this.options.maxImageSize;\n      if (maxImageSize !== -1 && w * h > maxImageSize) {\n        (0, _util.warn)('Image exceeded maximum allowed size and was removed.');\n        return Promise.resolve();\n      }\n      var imageMask = dict.get('ImageMask', 'IM') || false;\n      var imgData, args;\n      if (imageMask) {\n        var width = dict.get('Width', 'W');\n        var height = dict.get('Height', 'H');\n        var bitStrideLength = width + 7 >> 3;\n        var imgArray = image.getBytes(bitStrideLength * height, true);\n        var decode = dict.getArray('Decode', 'D');\n        imgData = _image.PDFImage.createMask({\n          imgArray: imgArray,\n          width: width,\n          height: height,\n          imageIsFromDecodeStream: image instanceof _stream.DecodeStream,\n          inverseDecode: !!decode && decode[0] > 0\n        });\n        imgData.cached = true;\n        args = [imgData];\n        operatorList.addOp(_util.OPS.paintImageMaskXObject, args);\n        if (cacheKey) {\n          imageCache[cacheKey] = {\n            fn: _util.OPS.paintImageMaskXObject,\n            args: args\n          };\n        }\n        return Promise.resolve();\n      }\n      var softMask = dict.get('SMask', 'SM') || false;\n      var mask = dict.get('Mask') || false;\n      var SMALL_IMAGE_DIMENSIONS = 200;\n      if (isInline && !softMask && !mask && !(image instanceof _jpeg_stream.JpegStream) && w + h < SMALL_IMAGE_DIMENSIONS) {\n        var imageObj = new _image.PDFImage({\n          xref: this.xref,\n          res: resources,\n          image: image,\n          isInline: isInline,\n          pdfFunctionFactory: this.pdfFunctionFactory\n        });\n        imgData = imageObj.createImageData(true);\n        operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);\n        return Promise.resolve();\n      }\n      var nativeImageDecoderSupport = forceDisableNativeImageDecoder ? _util.NativeImageDecoding.NONE : this.options.nativeImageDecoderSupport;\n      var objId = 'img_' + this.idFactory.createObjId();\n      if (nativeImageDecoderSupport !== _util.NativeImageDecoding.NONE && !softMask && !mask && image instanceof _jpeg_stream.JpegStream && NativeImageDecoder.isSupported(image, this.xref, resources, this.pdfFunctionFactory)) {\n        return this.handler.sendWithPromise('obj', [objId, this.pageIndex, 'JpegStream', image.getIR(this.options.forceDataSchema)]).then(function () {\n          operatorList.addDependency(objId);\n          args = [objId, w, h];\n          operatorList.addOp(_util.OPS.paintJpegXObject, args);\n          if (cacheKey) {\n            imageCache[cacheKey] = {\n              fn: _util.OPS.paintJpegXObject,\n              args: args\n            };\n          }\n        }, function (reason) {\n          (0, _util.warn)('Native JPEG decoding failed -- trying to recover: ' + (reason && reason.message));\n          return _this2.buildPaintImageXObject({\n            resources: resources,\n            image: image,\n            isInline: isInline,\n            operatorList: operatorList,\n            cacheKey: cacheKey,\n            imageCache: imageCache,\n            forceDisableNativeImageDecoder: true\n          });\n        });\n      }\n      var nativeImageDecoder = null;\n      if (nativeImageDecoderSupport === _util.NativeImageDecoding.DECODE && (image instanceof _jpeg_stream.JpegStream || mask instanceof _jpeg_stream.JpegStream || softMask instanceof _jpeg_stream.JpegStream)) {\n        nativeImageDecoder = new NativeImageDecoder({\n          xref: this.xref,\n          resources: resources,\n          handler: this.handler,\n          forceDataSchema: this.options.forceDataSchema,\n          pdfFunctionFactory: this.pdfFunctionFactory\n        });\n      }\n      operatorList.addDependency(objId);\n      args = [objId, w, h];\n      _image.PDFImage.buildImage({\n        handler: this.handler,\n        xref: this.xref,\n        res: resources,\n        image: image,\n        isInline: isInline,\n        nativeDecoder: nativeImageDecoder,\n        pdfFunctionFactory: this.pdfFunctionFactory\n      }).then(function (imageObj) {\n        var imgData = imageObj.createImageData(false);\n        _this2.handler.send('obj', [objId, _this2.pageIndex, 'Image', imgData], [imgData.data.buffer]);\n      }).catch(function (reason) {\n        (0, _util.warn)('Unable to decode image: ' + reason);\n        _this2.handler.send('obj', [objId, _this2.pageIndex, 'Image', null]);\n      });\n      operatorList.addOp(_util.OPS.paintImageXObject, args);\n      if (cacheKey) {\n        imageCache[cacheKey] = {\n          fn: _util.OPS.paintImageXObject,\n          args: args\n        };\n      }\n      return Promise.resolve();\n    },\n\n    handleSMask: function PartialEvaluator_handleSmask(smask, resources, operatorList, task, stateManager) {\n      var smaskContent = smask.get('G');\n      var smaskOptions = {\n        subtype: smask.get('S').name,\n        backdrop: smask.get('BC')\n      };\n      var transferObj = smask.get('TR');\n      if ((0, _function.isPDFFunction)(transferObj)) {\n        var transferFn = this.pdfFunctionFactory.create(transferObj);\n        var transferMap = new Uint8Array(256);\n        var tmp = new Float32Array(1);\n        for (var i = 0; i < 256; i++) {\n          tmp[0] = i / 255;\n          transferFn(tmp, 0, tmp, 0);\n          transferMap[i] = tmp[0] * 255 | 0;\n        }\n        smaskOptions.transferMap = transferMap;\n      }\n      return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone());\n    },\n    handleTilingType: function handleTilingType(fn, args, resources, pattern, patternDict, operatorList, task) {\n      var _this3 = this;\n\n      var tilingOpList = new _operator_list.OperatorList();\n      var resourcesArray = [patternDict.get('Resources'), resources];\n      var patternResources = _primitives.Dict.merge(this.xref, resourcesArray);\n      return this.getOperatorList({\n        stream: pattern,\n        task: task,\n        resources: patternResources,\n        operatorList: tilingOpList\n      }).then(function () {\n        return (0, _pattern.getTilingPatternIR)({\n          fnArray: tilingOpList.fnArray,\n          argsArray: tilingOpList.argsArray\n        }, patternDict, args);\n      }).then(function (tilingPatternIR) {\n        operatorList.addDependencies(tilingOpList.dependencies);\n        operatorList.addOp(fn, tilingPatternIR);\n      }, function (reason) {\n        if (_this3.options.ignoreErrors) {\n          _this3.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown });\n          (0, _util.warn)('handleTilingType - ignoring pattern: \"' + reason + '\".');\n          return;\n        }\n        throw reason;\n      });\n    },\n\n    handleSetFont: function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) {\n      var _this4 = this;\n\n      var fontName;\n      if (fontArgs) {\n        fontArgs = fontArgs.slice();\n        fontName = fontArgs[0].name;\n      }\n      return this.loadFont(fontName, fontRef, resources).then(function (translated) {\n        if (!translated.font.isType3Font) {\n          return translated;\n        }\n        return translated.loadType3Data(_this4, resources, operatorList, task).then(function () {\n          return translated;\n        }).catch(function (reason) {\n          _this4.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.font });\n          return new TranslatedFont('g_font_error', new _fonts.ErrorFont('Type3 font load error: ' + reason), translated.font);\n        });\n      }).then(function (translated) {\n        state.font = translated.font;\n        translated.send(_this4.handler);\n        return translated.loadedName;\n      });\n    },\n    handleText: function PartialEvaluator_handleText(chars, state) {\n      var _this5 = this;\n\n      var font = state.font;\n      var glyphs = font.charsToGlyphs(chars);\n      var isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n      if (font.data && (isAddToPathSet || this.options.disableFontFace || state.fillColorSpace.name === 'Pattern')) {\n        var buildPath = function buildPath(fontChar) {\n          if (!font.renderer.hasBuiltPath(fontChar)) {\n            var path = font.renderer.getPathJs(fontChar);\n            _this5.handler.send('commonobj', [font.loadedName + '_path_' + fontChar, 'FontPath', path]);\n          }\n        };\n        for (var i = 0, ii = glyphs.length; i < ii; i++) {\n          var glyph = glyphs[i];\n          buildPath(glyph.fontChar);\n          var accent = glyph.accent;\n          if (accent && accent.fontChar) {\n            buildPath(accent.fontChar);\n          }\n        }\n      }\n      return glyphs;\n    },\n    setGState: function PartialEvaluator_setGState(resources, gState, operatorList, task, stateManager) {\n      var _this6 = this;\n\n      var gStateObj = [];\n      var gStateKeys = gState.getKeys();\n      var promise = Promise.resolve();\n\n      var _loop = function _loop() {\n        var key = gStateKeys[i];\n        var value = gState.get(key);\n        switch (key) {\n          case 'Type':\n            break;\n          case 'LW':\n          case 'LC':\n          case 'LJ':\n          case 'ML':\n          case 'D':\n          case 'RI':\n          case 'FL':\n          case 'CA':\n          case 'ca':\n            gStateObj.push([key, value]);\n            break;\n          case 'Font':\n            promise = promise.then(function () {\n              return _this6.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) {\n                operatorList.addDependency(loadedName);\n                gStateObj.push([key, [loadedName, value[1]]]);\n              });\n            });\n            break;\n          case 'BM':\n            gStateObj.push([key, normalizeBlendMode(value)]);\n            break;\n          case 'SMask':\n            if ((0, _primitives.isName)(value, 'None')) {\n              gStateObj.push([key, false]);\n              break;\n            }\n            if ((0, _primitives.isDict)(value)) {\n              promise = promise.then(function () {\n                return _this6.handleSMask(value, resources, operatorList, task, stateManager);\n              });\n              gStateObj.push([key, true]);\n            } else {\n              (0, _util.warn)('Unsupported SMask type');\n            }\n            break;\n          case 'OP':\n          case 'op':\n          case 'OPM':\n          case 'BG':\n          case 'BG2':\n          case 'UCR':\n          case 'UCR2':\n          case 'TR':\n          case 'TR2':\n          case 'HT':\n          case 'SM':\n          case 'SA':\n          case 'AIS':\n          case 'TK':\n            (0, _util.info)('graphic state operator ' + key);\n            break;\n          default:\n            (0, _util.info)('Unknown graphic state operator ' + key);\n            break;\n        }\n      };\n\n      for (var i = 0, ii = gStateKeys.length; i < ii; i++) {\n        _loop();\n      }\n      return promise.then(function () {\n        if (gStateObj.length > 0) {\n          operatorList.addOp(_util.OPS.setGState, [gStateObj]);\n        }\n      });\n    },\n    loadFont: function PartialEvaluator_loadFont(fontName, font, resources) {\n      var _this7 = this;\n\n      function errorFont() {\n        return Promise.resolve(new TranslatedFont('g_font_error', new _fonts.ErrorFont('Font ' + fontName + ' is not available'), font));\n      }\n      var fontRef,\n          xref = this.xref;\n      if (font) {\n        if (!(0, _primitives.isRef)(font)) {\n          throw new Error('The \"font\" object should be a reference.');\n        }\n        fontRef = font;\n      } else {\n        var fontRes = resources.get('Font');\n        if (fontRes) {\n          fontRef = fontRes.getRaw(fontName);\n        } else {\n          (0, _util.warn)('fontRes not available');\n          return errorFont();\n        }\n      }\n      if (!fontRef) {\n        (0, _util.warn)('fontRef not available');\n        return errorFont();\n      }\n      if (this.fontCache.has(fontRef)) {\n        return this.fontCache.get(fontRef);\n      }\n      font = xref.fetchIfRef(fontRef);\n      if (!(0, _primitives.isDict)(font)) {\n        return errorFont();\n      }\n      if (font.translated) {\n        return font.translated;\n      }\n      var fontCapability = (0, _util.createPromiseCapability)();\n      var preEvaluatedFont = this.preEvaluateFont(font);\n      var descriptor = preEvaluatedFont.descriptor;\n      var fontRefIsRef = (0, _primitives.isRef)(fontRef),\n          fontID;\n      if (fontRefIsRef) {\n        fontID = fontRef.toString();\n      }\n      if ((0, _primitives.isDict)(descriptor)) {\n        if (!descriptor.fontAliases) {\n          descriptor.fontAliases = Object.create(null);\n        }\n        var fontAliases = descriptor.fontAliases;\n        var hash = preEvaluatedFont.hash;\n        if (fontAliases[hash]) {\n          var aliasFontRef = fontAliases[hash].aliasRef;\n          if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n            this.fontCache.putAlias(fontRef, aliasFontRef);\n            return this.fontCache.get(fontRef);\n          }\n        } else {\n          fontAliases[hash] = { fontID: _fonts.Font.getFontID() };\n        }\n        if (fontRefIsRef) {\n          fontAliases[hash].aliasRef = fontRef;\n        }\n        fontID = fontAliases[hash].fontID;\n      }\n      if (fontRefIsRef) {\n        this.fontCache.put(fontRef, fontCapability.promise);\n      } else {\n        if (!fontID) {\n          fontID = this.idFactory.createObjId();\n        }\n        this.fontCache.put('id_' + fontID, fontCapability.promise);\n      }\n      (0, _util.assert)(fontID, 'The \"fontID\" must be defined.');\n      font.loadedName = 'g_' + this.pdfManager.docId + '_f' + fontID;\n      font.translated = fontCapability.promise;\n      var translatedPromise;\n      try {\n        translatedPromise = this.translateFont(preEvaluatedFont);\n      } catch (e) {\n        translatedPromise = Promise.reject(e);\n      }\n      translatedPromise.then(function (translatedFont) {\n        if (translatedFont.fontType !== undefined) {\n          var xrefFontStats = xref.stats.fontTypes;\n          xrefFontStats[translatedFont.fontType] = true;\n        }\n        fontCapability.resolve(new TranslatedFont(font.loadedName, translatedFont, font));\n      }).catch(function (reason) {\n        _this7.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.font });\n        try {\n          var descriptor = preEvaluatedFont.descriptor;\n          var fontFile3 = descriptor && descriptor.get('FontFile3');\n          var subtype = fontFile3 && fontFile3.get('Subtype');\n          var fontType = (0, _fonts.getFontType)(preEvaluatedFont.type, subtype && subtype.name);\n          var xrefFontStats = xref.stats.fontTypes;\n          xrefFontStats[fontType] = true;\n        } catch (ex) {}\n        fontCapability.resolve(new TranslatedFont(font.loadedName, new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason), font));\n      });\n      return fontCapability.promise;\n    },\n    buildPath: function PartialEvaluator_buildPath(operatorList, fn, args) {\n      var lastIndex = operatorList.length - 1;\n      if (!args) {\n        args = [];\n      }\n      if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {\n        operatorList.addOp(_util.OPS.constructPath, [[fn], args]);\n      } else {\n        var opArgs = operatorList.argsArray[lastIndex];\n        opArgs[0].push(fn);\n        Array.prototype.push.apply(opArgs[1], args);\n      }\n    },\n    handleColorN: function PartialEvaluator_handleColorN(operatorList, fn, args, cs, patterns, resources, task) {\n      var patternName = args[args.length - 1];\n      var pattern;\n      if ((0, _primitives.isName)(patternName) && (pattern = patterns.get(patternName.name))) {\n        var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;\n        var typeNum = dict.get('PatternType');\n        if (typeNum === TILING_PATTERN) {\n          var color = cs.base ? cs.base.getRgb(args, 0) : null;\n          return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task);\n        } else if (typeNum === SHADING_PATTERN) {\n          var shading = dict.get('Shading');\n          var matrix = dict.getArray('Matrix');\n          pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, this.pdfFunctionFactory);\n          operatorList.addOp(fn, pattern.getIR());\n          return Promise.resolve();\n        }\n        return Promise.reject(new Error('Unknown PatternType: ' + typeNum));\n      }\n      operatorList.addOp(fn, args);\n      return Promise.resolve();\n    },\n    getOperatorList: function getOperatorList(_ref6) {\n      var _this8 = this;\n\n      var stream = _ref6.stream,\n          task = _ref6.task,\n          resources = _ref6.resources,\n          operatorList = _ref6.operatorList,\n          _ref6$initialState = _ref6.initialState,\n          initialState = _ref6$initialState === undefined ? null : _ref6$initialState;\n\n      resources = resources || _primitives.Dict.empty;\n      initialState = initialState || new EvalState();\n      if (!operatorList) {\n        throw new Error('getOperatorList: missing \"operatorList\" parameter');\n      }\n      var self = this;\n      var xref = this.xref;\n      var imageCache = Object.create(null);\n      var xobjs = resources.get('XObject') || _primitives.Dict.empty;\n      var patterns = resources.get('Pattern') || _primitives.Dict.empty;\n      var stateManager = new StateManager(initialState);\n      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n      var timeSlotManager = new TimeSlotManager();\n      function closePendingRestoreOPS(argument) {\n        for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n          operatorList.addOp(_util.OPS.restore, []);\n        }\n      }\n      return new Promise(function promiseBody(resolve, reject) {\n        var next = function next(promise) {\n          promise.then(function () {\n            try {\n              promiseBody(resolve, reject);\n            } catch (ex) {\n              reject(ex);\n            }\n          }, reject);\n        };\n        task.ensureNotTerminated();\n        timeSlotManager.reset();\n        var stop,\n            operation = {},\n            i,\n            ii,\n            cs;\n        while (!(stop = timeSlotManager.check())) {\n          operation.args = null;\n          if (!preprocessor.read(operation)) {\n            break;\n          }\n          var args = operation.args;\n          var fn = operation.fn;\n          switch (fn | 0) {\n            case _util.OPS.paintXObject:\n              var name = args[0].name;\n              if (name && imageCache[name] !== undefined) {\n                operatorList.addOp(imageCache[name].fn, imageCache[name].args);\n                args = null;\n                continue;\n              }\n              next(new Promise(function (resolveXObject, rejectXObject) {\n                if (!name) {\n                  throw new _util.FormatError('XObject must be referred to by name.');\n                }\n                var xobj = xobjs.get(name);\n                if (!xobj) {\n                  operatorList.addOp(fn, args);\n                  resolveXObject();\n                  return;\n                }\n                if (!(0, _primitives.isStream)(xobj)) {\n                  throw new _util.FormatError('XObject should be a stream');\n                }\n                var type = xobj.dict.get('Subtype');\n                if (!(0, _primitives.isName)(type)) {\n                  throw new _util.FormatError('XObject should have a Name subtype');\n                }\n                if (type.name === 'Form') {\n                  stateManager.save();\n                  self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone()).then(function () {\n                    stateManager.restore();\n                    resolveXObject();\n                  }, rejectXObject);\n                  return;\n                } else if (type.name === 'Image') {\n                  self.buildPaintImageXObject({\n                    resources: resources,\n                    image: xobj,\n                    operatorList: operatorList,\n                    cacheKey: name,\n                    imageCache: imageCache\n                  }).then(resolveXObject, rejectXObject);\n                  return;\n                } else if (type.name === 'PS') {\n                  (0, _util.info)('Ignored XObject subtype PS');\n                } else {\n                  throw new _util.FormatError('Unhandled XObject subtype ' + type.name);\n                }\n                resolveXObject();\n              }).catch(function (reason) {\n                if (self.options.ignoreErrors) {\n                  self.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown });\n                  (0, _util.warn)('getOperatorList - ignoring XObject: \"' + reason + '\".');\n                  return;\n                }\n                throw reason;\n              }));\n              return;\n            case _util.OPS.setFont:\n              var fontSize = args[1];\n              next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state).then(function (loadedName) {\n                operatorList.addDependency(loadedName);\n                operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);\n              }));\n              return;\n            case _util.OPS.endInlineImage:\n              var cacheKey = args[0].cacheKey;\n              if (cacheKey) {\n                var cacheEntry = imageCache[cacheKey];\n                if (cacheEntry !== undefined) {\n                  operatorList.addOp(cacheEntry.fn, cacheEntry.args);\n                  args = null;\n                  continue;\n                }\n              }\n              next(self.buildPaintImageXObject({\n                resources: resources,\n                image: args[0],\n                isInline: true,\n                operatorList: operatorList,\n                cacheKey: cacheKey,\n                imageCache: imageCache\n              }));\n              return;\n            case _util.OPS.showText:\n              args[0] = self.handleText(args[0], stateManager.state);\n              break;\n            case _util.OPS.showSpacedText:\n              var arr = args[0];\n              var combinedGlyphs = [];\n              var arrLength = arr.length;\n              var state = stateManager.state;\n              for (i = 0; i < arrLength; ++i) {\n                var arrItem = arr[i];\n                if ((0, _util.isString)(arrItem)) {\n                  Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));\n                } else if ((0, _util.isNum)(arrItem)) {\n                  combinedGlyphs.push(arrItem);\n                }\n              }\n              args[0] = combinedGlyphs;\n              fn = _util.OPS.showText;\n              break;\n            case _util.OPS.nextLineShowText:\n              operatorList.addOp(_util.OPS.nextLine);\n              args[0] = self.handleText(args[0], stateManager.state);\n              fn = _util.OPS.showText;\n              break;\n            case _util.OPS.nextLineSetSpacingShowText:\n              operatorList.addOp(_util.OPS.nextLine);\n              operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]);\n              operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]);\n              args[0] = self.handleText(args[0], stateManager.state);\n              fn = _util.OPS.showText;\n              break;\n            case _util.OPS.setTextRenderingMode:\n              stateManager.state.textRenderingMode = args[0];\n              break;\n            case _util.OPS.setFillColorSpace:\n              stateManager.state.fillColorSpace = _colorspace.ColorSpace.parse(args[0], xref, resources, self.pdfFunctionFactory);\n              continue;\n            case _util.OPS.setStrokeColorSpace:\n              stateManager.state.strokeColorSpace = _colorspace.ColorSpace.parse(args[0], xref, resources, self.pdfFunctionFactory);\n              continue;\n            case _util.OPS.setFillColor:\n              cs = stateManager.state.fillColorSpace;\n              args = cs.getRgb(args, 0);\n              fn = _util.OPS.setFillRGBColor;\n              break;\n            case _util.OPS.setStrokeColor:\n              cs = stateManager.state.strokeColorSpace;\n              args = cs.getRgb(args, 0);\n              fn = _util.OPS.setStrokeRGBColor;\n              break;\n            case _util.OPS.setFillGray:\n              stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;\n              args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);\n              fn = _util.OPS.setFillRGBColor;\n              break;\n            case _util.OPS.setStrokeGray:\n              stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;\n              args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);\n              fn = _util.OPS.setStrokeRGBColor;\n              break;\n            case _util.OPS.setFillCMYKColor:\n              stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;\n              args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);\n              fn = _util.OPS.setFillRGBColor;\n              break;\n            case _util.OPS.setStrokeCMYKColor:\n              stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;\n              args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);\n              fn = _util.OPS.setStrokeRGBColor;\n              break;\n            case _util.OPS.setFillRGBColor:\n              stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;\n              args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);\n              break;\n            case _util.OPS.setStrokeRGBColor:\n              stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;\n              args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);\n              break;\n            case _util.OPS.setFillColorN:\n              cs = stateManager.state.fillColorSpace;\n              if (cs.name === 'Pattern') {\n                next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task));\n                return;\n              }\n              args = cs.getRgb(args, 0);\n              fn = _util.OPS.setFillRGBColor;\n              break;\n            case _util.OPS.setStrokeColorN:\n              cs = stateManager.state.strokeColorSpace;\n              if (cs.name === 'Pattern') {\n                next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task));\n                return;\n              }\n              args = cs.getRgb(args, 0);\n              fn = _util.OPS.setStrokeRGBColor;\n              break;\n            case _util.OPS.shadingFill:\n              var shadingRes = resources.get('Shading');\n              if (!shadingRes) {\n                throw new _util.FormatError('No shading resource found');\n              }\n              var shading = shadingRes.get(args[0].name);\n              if (!shading) {\n                throw new _util.FormatError('No shading object found');\n              }\n              var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, self.pdfFunctionFactory);\n              var patternIR = shadingFill.getIR();\n              args = [patternIR];\n              fn = _util.OPS.shadingFill;\n              break;\n            case _util.OPS.setGState:\n              var dictName = args[0];\n              var extGState = resources.get('ExtGState');\n              if (!(0, _primitives.isDict)(extGState) || !extGState.has(dictName.name)) {\n                break;\n              }\n              var gState = extGState.get(dictName.name);\n              next(self.setGState(resources, gState, operatorList, task, stateManager));\n              return;\n            case _util.OPS.moveTo:\n            case _util.OPS.lineTo:\n            case _util.OPS.curveTo:\n            case _util.OPS.curveTo2:\n            case _util.OPS.curveTo3:\n            case _util.OPS.closePath:\n              self.buildPath(operatorList, fn, args);\n              continue;\n            case _util.OPS.rectangle:\n              self.buildPath(operatorList, fn, args);\n              continue;\n            case _util.OPS.markPoint:\n            case _util.OPS.markPointProps:\n            case _util.OPS.beginMarkedContent:\n            case _util.OPS.beginMarkedContentProps:\n            case _util.OPS.endMarkedContent:\n            case _util.OPS.beginCompat:\n            case _util.OPS.endCompat:\n              continue;\n            default:\n              if (args !== null) {\n                for (i = 0, ii = args.length; i < ii; i++) {\n                  if (args[i] instanceof _primitives.Dict) {\n                    break;\n                  }\n                }\n                if (i < ii) {\n                  (0, _util.warn)('getOperatorList - ignoring operator: ' + fn);\n                  continue;\n                }\n              }\n          }\n          operatorList.addOp(fn, args);\n        }\n        if (stop) {\n          next(deferred);\n          return;\n        }\n        closePendingRestoreOPS();\n        resolve();\n      }).catch(function (reason) {\n        if (_this8.options.ignoreErrors) {\n          _this8.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown });\n          (0, _util.warn)('getOperatorList - ignoring errors during \"' + task.name + '\" ' + ('task: \"' + reason + '\".'));\n          closePendingRestoreOPS();\n          return;\n        }\n        throw reason;\n      });\n    },\n    getTextContent: function getTextContent(_ref7) {\n      var _this9 = this;\n\n      var stream = _ref7.stream,\n          task = _ref7.task,\n          resources = _ref7.resources,\n          _ref7$stateManager = _ref7.stateManager,\n          stateManager = _ref7$stateManager === undefined ? null : _ref7$stateManager,\n          _ref7$normalizeWhites = _ref7.normalizeWhitespace,\n          normalizeWhitespace = _ref7$normalizeWhites === undefined ? false : _ref7$normalizeWhites,\n          _ref7$combineTextItem = _ref7.combineTextItems,\n          combineTextItems = _ref7$combineTextItem === undefined ? false : _ref7$combineTextItem,\n          sink = _ref7.sink,\n          _ref7$seenStyles = _ref7.seenStyles,\n          seenStyles = _ref7$seenStyles === undefined ? Object.create(null) : _ref7$seenStyles;\n\n      resources = resources || _primitives.Dict.empty;\n      stateManager = stateManager || new StateManager(new TextState());\n      var WhitespaceRegexp = /\\s/g;\n      var textContent = {\n        items: [],\n        styles: Object.create(null)\n      };\n      var textContentItem = {\n        initialized: false,\n        str: [],\n        width: 0,\n        height: 0,\n        vertical: false,\n        lastAdvanceWidth: 0,\n        lastAdvanceHeight: 0,\n        textAdvanceScale: 0,\n        spaceWidth: 0,\n        fakeSpaceMin: Infinity,\n        fakeMultiSpaceMin: Infinity,\n        fakeMultiSpaceMax: -0,\n        textRunBreakAllowed: false,\n        transform: null,\n        fontName: null\n      };\n      var SPACE_FACTOR = 0.3;\n      var MULTI_SPACE_FACTOR = 1.5;\n      var MULTI_SPACE_FACTOR_MAX = 4;\n      var self = this;\n      var xref = this.xref;\n      var xobjs = null;\n      var skipEmptyXObjs = Object.create(null);\n      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n      var textState;\n      function ensureTextContentItem() {\n        if (textContentItem.initialized) {\n          return textContentItem;\n        }\n        var font = textState.font;\n        if (!(font.loadedName in seenStyles)) {\n          seenStyles[font.loadedName] = true;\n          textContent.styles[font.loadedName] = {\n            fontFamily: font.fallbackName,\n            ascent: font.ascent,\n            descent: font.descent,\n            vertical: font.vertical\n          };\n        }\n        textContentItem.fontName = font.loadedName;\n        var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];\n        if (font.isType3Font && textState.fontMatrix !== _util.FONT_IDENTITY_MATRIX && textState.fontSize === 1) {\n          var glyphHeight = font.bbox[3] - font.bbox[1];\n          if (glyphHeight > 0) {\n            glyphHeight = glyphHeight * textState.fontMatrix[3];\n            tsm[3] *= glyphHeight;\n          }\n        }\n        var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));\n        textContentItem.transform = trm;\n        if (!font.vertical) {\n          textContentItem.width = 0;\n          textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);\n          textContentItem.vertical = false;\n        } else {\n          textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);\n          textContentItem.height = 0;\n          textContentItem.vertical = true;\n        }\n        var a = textState.textLineMatrix[0];\n        var b = textState.textLineMatrix[1];\n        var scaleLineX = Math.sqrt(a * a + b * b);\n        a = textState.ctm[0];\n        b = textState.ctm[1];\n        var scaleCtmX = Math.sqrt(a * a + b * b);\n        textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n        textContentItem.lastAdvanceWidth = 0;\n        textContentItem.lastAdvanceHeight = 0;\n        var spaceWidth = font.spaceWidth / 1000 * textState.fontSize;\n        if (spaceWidth) {\n          textContentItem.spaceWidth = spaceWidth;\n          textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;\n          textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;\n          textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX;\n          textContentItem.textRunBreakAllowed = !font.isMonospace;\n        } else {\n          textContentItem.spaceWidth = 0;\n          textContentItem.fakeSpaceMin = Infinity;\n          textContentItem.fakeMultiSpaceMin = Infinity;\n          textContentItem.fakeMultiSpaceMax = 0;\n          textContentItem.textRunBreakAllowed = false;\n        }\n        textContentItem.initialized = true;\n        return textContentItem;\n      }\n      function replaceWhitespace(str) {\n        var i = 0,\n            ii = str.length,\n            code;\n        while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7F) {\n          i++;\n        }\n        return i < ii ? str.replace(WhitespaceRegexp, ' ') : str;\n      }\n      function runBidiTransform(textChunk) {\n        var str = textChunk.str.join('');\n        var bidiResult = (0, _bidi.bidi)(str, -1, textChunk.vertical);\n        return {\n          str: normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str,\n          dir: bidiResult.dir,\n          width: textChunk.width,\n          height: textChunk.height,\n          transform: textChunk.transform,\n          fontName: textChunk.fontName\n        };\n      }\n      function handleSetFont(fontName, fontRef) {\n        return self.loadFont(fontName, fontRef, resources).then(function (translated) {\n          textState.font = translated.font;\n          textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n        });\n      }\n      function buildTextContentItem(chars) {\n        var font = textState.font;\n        var textChunk = ensureTextContentItem();\n        var width = 0;\n        var height = 0;\n        var glyphs = font.charsToGlyphs(chars);\n        for (var i = 0; i < glyphs.length; i++) {\n          var glyph = glyphs[i];\n          var glyphWidth = null;\n          if (font.vertical && glyph.vmetric) {\n            glyphWidth = glyph.vmetric[0];\n          } else {\n            glyphWidth = glyph.width;\n          }\n          var glyphUnicode = glyph.unicode;\n          var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();\n          if (NormalizedUnicodes[glyphUnicode] !== undefined) {\n            glyphUnicode = NormalizedUnicodes[glyphUnicode];\n          }\n          glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);\n          var charSpacing = textState.charSpacing;\n          if (glyph.isSpace) {\n            var wordSpacing = textState.wordSpacing;\n            charSpacing += wordSpacing;\n            if (wordSpacing > 0) {\n              addFakeSpaces(wordSpacing, textChunk.str);\n            }\n          }\n          var tx = 0;\n          var ty = 0;\n          if (!font.vertical) {\n            var w0 = glyphWidth * textState.fontMatrix[0];\n            tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;\n            width += tx;\n          } else {\n            var w1 = glyphWidth * textState.fontMatrix[0];\n            ty = w1 * textState.fontSize + charSpacing;\n            height += ty;\n          }\n          textState.translateTextMatrix(tx, ty);\n          textChunk.str.push(glyphUnicode);\n        }\n        if (!font.vertical) {\n          textChunk.lastAdvanceWidth = width;\n          textChunk.width += width;\n        } else {\n          textChunk.lastAdvanceHeight = height;\n          textChunk.height += Math.abs(height);\n        }\n        return textChunk;\n      }\n      function addFakeSpaces(width, strBuf) {\n        if (width < textContentItem.fakeSpaceMin) {\n          return;\n        }\n        if (width < textContentItem.fakeMultiSpaceMin) {\n          strBuf.push(' ');\n          return;\n        }\n        var fakeSpaces = Math.round(width / textContentItem.spaceWidth);\n        while (fakeSpaces-- > 0) {\n          strBuf.push(' ');\n        }\n      }\n      function flushTextContentItem() {\n        if (!textContentItem.initialized) {\n          return;\n        }\n        textContentItem.width *= textContentItem.textAdvanceScale;\n        textContentItem.height *= textContentItem.textAdvanceScale;\n        textContent.items.push(runBidiTransform(textContentItem));\n        textContentItem.initialized = false;\n        textContentItem.str.length = 0;\n      }\n      function enqueueChunk() {\n        var length = textContent.items.length;\n        if (length > 0) {\n          sink.enqueue(textContent, length);\n          textContent.items = [];\n          textContent.styles = Object.create(null);\n        }\n      }\n      var timeSlotManager = new TimeSlotManager();\n      return new Promise(function promiseBody(resolve, reject) {\n        var next = function next(promise) {\n          enqueueChunk();\n          Promise.all([promise, sink.ready]).then(function () {\n            try {\n              promiseBody(resolve, reject);\n            } catch (ex) {\n              reject(ex);\n            }\n          }, reject);\n        };\n        task.ensureNotTerminated();\n        timeSlotManager.reset();\n        var stop,\n            operation = {},\n            args = [];\n        while (!(stop = timeSlotManager.check())) {\n          args.length = 0;\n          operation.args = args;\n          if (!preprocessor.read(operation)) {\n            break;\n          }\n          textState = stateManager.state;\n          var fn = operation.fn;\n          args = operation.args;\n          var advance, diff;\n          switch (fn | 0) {\n            case _util.OPS.setFont:\n              var fontNameArg = args[0].name,\n                  fontSizeArg = args[1];\n              if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {\n                break;\n              }\n              flushTextContentItem();\n              textState.fontName = fontNameArg;\n              textState.fontSize = fontSizeArg;\n              next(handleSetFont(fontNameArg, null));\n              return;\n            case _util.OPS.setTextRise:\n              flushTextContentItem();\n              textState.textRise = args[0];\n              break;\n            case _util.OPS.setHScale:\n              flushTextContentItem();\n              textState.textHScale = args[0] / 100;\n              break;\n            case _util.OPS.setLeading:\n              flushTextContentItem();\n              textState.leading = args[0];\n              break;\n            case _util.OPS.moveText:\n              var isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 0;\n              advance = args[0] - args[1];\n              if (combineTextItems && isSameTextLine && textContentItem.initialized && advance > 0 && advance <= textContentItem.fakeMultiSpaceMax) {\n                textState.translateTextLineMatrix(args[0], args[1]);\n                textContentItem.width += args[0] - textContentItem.lastAdvanceWidth;\n                textContentItem.height += args[1] - textContentItem.lastAdvanceHeight;\n                diff = args[0] - textContentItem.lastAdvanceWidth - (args[1] - textContentItem.lastAdvanceHeight);\n                addFakeSpaces(diff, textContentItem.str);\n                break;\n              }\n              flushTextContentItem();\n              textState.translateTextLineMatrix(args[0], args[1]);\n              textState.textMatrix = textState.textLineMatrix.slice();\n              break;\n            case _util.OPS.setLeadingMoveText:\n              flushTextContentItem();\n              textState.leading = -args[1];\n              textState.translateTextLineMatrix(args[0], args[1]);\n              textState.textMatrix = textState.textLineMatrix.slice();\n              break;\n            case _util.OPS.nextLine:\n              flushTextContentItem();\n              textState.carriageReturn();\n              break;\n            case _util.OPS.setTextMatrix:\n              advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], args[5]);\n              if (combineTextItems && advance !== null && textContentItem.initialized && advance.value > 0 && advance.value <= textContentItem.fakeMultiSpaceMax) {\n                textState.translateTextLineMatrix(advance.width, advance.height);\n                textContentItem.width += advance.width - textContentItem.lastAdvanceWidth;\n                textContentItem.height += advance.height - textContentItem.lastAdvanceHeight;\n                diff = advance.width - textContentItem.lastAdvanceWidth - (advance.height - textContentItem.lastAdvanceHeight);\n                addFakeSpaces(diff, textContentItem.str);\n                break;\n              }\n              flushTextContentItem();\n              textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n              textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n              break;\n            case _util.OPS.setCharSpacing:\n              textState.charSpacing = args[0];\n              break;\n            case _util.OPS.setWordSpacing:\n              textState.wordSpacing = args[0];\n              break;\n            case _util.OPS.beginText:\n              flushTextContentItem();\n              textState.textMatrix = _util.IDENTITY_MATRIX.slice();\n              textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();\n              break;\n            case _util.OPS.showSpacedText:\n              var items = args[0];\n              var offset;\n              for (var j = 0, jj = items.length; j < jj; j++) {\n                if (typeof items[j] === 'string') {\n                  buildTextContentItem(items[j]);\n                } else if ((0, _util.isNum)(items[j])) {\n                  ensureTextContentItem();\n                  advance = items[j] * textState.fontSize / 1000;\n                  var breakTextRun = false;\n                  if (textState.font.vertical) {\n                    offset = advance;\n                    textState.translateTextMatrix(0, offset);\n                    breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax;\n                    if (!breakTextRun) {\n                      textContentItem.height += offset;\n                    }\n                  } else {\n                    advance = -advance;\n                    offset = advance * textState.textHScale;\n                    textState.translateTextMatrix(offset, 0);\n                    breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax;\n                    if (!breakTextRun) {\n                      textContentItem.width += offset;\n                    }\n                  }\n                  if (breakTextRun) {\n                    flushTextContentItem();\n                  } else if (advance > 0) {\n                    addFakeSpaces(advance, textContentItem.str);\n                  }\n                }\n              }\n              break;\n            case _util.OPS.showText:\n              buildTextContentItem(args[0]);\n              break;\n            case _util.OPS.nextLineShowText:\n              flushTextContentItem();\n              textState.carriageReturn();\n              buildTextContentItem(args[0]);\n              break;\n            case _util.OPS.nextLineSetSpacingShowText:\n              flushTextContentItem();\n              textState.wordSpacing = args[0];\n              textState.charSpacing = args[1];\n              textState.carriageReturn();\n              buildTextContentItem(args[2]);\n              break;\n            case _util.OPS.paintXObject:\n              flushTextContentItem();\n              if (!xobjs) {\n                xobjs = resources.get('XObject') || _primitives.Dict.empty;\n              }\n              var name = args[0].name;\n              if (name && skipEmptyXObjs[name] !== undefined) {\n                break;\n              }\n              next(new Promise(function (resolveXObject, rejectXObject) {\n                if (!name) {\n                  throw new _util.FormatError('XObject must be referred to by name.');\n                }\n                var xobj = xobjs.get(name);\n                if (!xobj) {\n                  resolveXObject();\n                  return;\n                }\n                if (!(0, _primitives.isStream)(xobj)) {\n                  throw new _util.FormatError('XObject should be a stream');\n                }\n                var type = xobj.dict.get('Subtype');\n                if (!(0, _primitives.isName)(type)) {\n                  throw new _util.FormatError('XObject should have a Name subtype');\n                }\n                if (type.name !== 'Form') {\n                  skipEmptyXObjs[name] = true;\n                  resolveXObject();\n                  return;\n                }\n                var currentState = stateManager.state.clone();\n                var xObjStateManager = new StateManager(currentState);\n                var matrix = xobj.dict.getArray('Matrix');\n                if (Array.isArray(matrix) && matrix.length === 6) {\n                  xObjStateManager.transform(matrix);\n                }\n                enqueueChunk();\n                var sinkWrapper = {\n                  enqueueInvoked: false,\n                  enqueue: function enqueue(chunk, size) {\n                    this.enqueueInvoked = true;\n                    sink.enqueue(chunk, size);\n                  },\n\n                  get desiredSize() {\n                    return sink.desiredSize;\n                  },\n                  get ready() {\n                    return sink.ready;\n                  }\n                };\n                self.getTextContent({\n                  stream: xobj,\n                  task: task,\n                  resources: xobj.dict.get('Resources') || resources,\n                  stateManager: xObjStateManager,\n                  normalizeWhitespace: normalizeWhitespace,\n                  combineTextItems: combineTextItems,\n                  sink: sinkWrapper,\n                  seenStyles: seenStyles\n                }).then(function () {\n                  if (!sinkWrapper.enqueueInvoked) {\n                    skipEmptyXObjs[name] = true;\n                  }\n                  resolveXObject();\n                }, rejectXObject);\n              }).catch(function (reason) {\n                if (reason instanceof _util.AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  (0, _util.warn)('getTextContent - ignoring XObject: \"' + reason + '\".');\n                  return;\n                }\n                throw reason;\n              }));\n              return;\n            case _util.OPS.setGState:\n              flushTextContentItem();\n              var dictName = args[0];\n              var extGState = resources.get('ExtGState');\n              if (!(0, _primitives.isDict)(extGState) || !(0, _primitives.isName)(dictName)) {\n                break;\n              }\n              var gState = extGState.get(dictName.name);\n              if (!(0, _primitives.isDict)(gState)) {\n                break;\n              }\n              var gStateFont = gState.get('Font');\n              if (gStateFont) {\n                textState.fontName = null;\n                textState.fontSize = gStateFont[1];\n                next(handleSetFont(null, gStateFont[0]));\n                return;\n              }\n              break;\n          }\n          if (textContent.items.length >= sink.desiredSize) {\n            stop = true;\n            break;\n          }\n        }\n        if (stop) {\n          next(deferred);\n          return;\n        }\n        flushTextContentItem();\n        enqueueChunk();\n        resolve();\n      }).catch(function (reason) {\n        if (reason instanceof _util.AbortException) {\n          return;\n        }\n        if (_this9.options.ignoreErrors) {\n          (0, _util.warn)('getTextContent - ignoring errors during \"' + task.name + '\" ' + ('task: \"' + reason + '\".'));\n          flushTextContentItem();\n          enqueueChunk();\n          return;\n        }\n        throw reason;\n      });\n    },\n\n    extractDataStructures: function PartialEvaluator_extractDataStructures(dict, baseDict, properties) {\n      var _this10 = this;\n\n      var xref = this.xref;\n      var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode');\n      var toUnicodePromise = toUnicode ? this.readToUnicode(toUnicode) : Promise.resolve(undefined);\n      if (properties.composite) {\n        var cidSystemInfo = dict.get('CIDSystemInfo');\n        if ((0, _primitives.isDict)(cidSystemInfo)) {\n          properties.cidSystemInfo = {\n            registry: (0, _util.stringToPDFString)(cidSystemInfo.get('Registry')),\n            ordering: (0, _util.stringToPDFString)(cidSystemInfo.get('Ordering')),\n            supplement: cidSystemInfo.get('Supplement')\n          };\n        }\n        var cidToGidMap = dict.get('CIDToGIDMap');\n        if ((0, _primitives.isStream)(cidToGidMap)) {\n          properties.cidToGidMap = this.readCidToGidMap(cidToGidMap);\n        }\n      }\n      var differences = [];\n      var baseEncodingName = null;\n      var encoding;\n      if (dict.has('Encoding')) {\n        encoding = dict.get('Encoding');\n        if ((0, _primitives.isDict)(encoding)) {\n          baseEncodingName = encoding.get('BaseEncoding');\n          baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;\n          if (encoding.has('Differences')) {\n            var diffEncoding = encoding.get('Differences');\n            var index = 0;\n            for (var j = 0, jj = diffEncoding.length; j < jj; j++) {\n              var data = xref.fetchIfRef(diffEncoding[j]);\n              if ((0, _util.isNum)(data)) {\n                index = data;\n              } else if ((0, _primitives.isName)(data)) {\n                differences[index++] = data.name;\n              } else {\n                throw new _util.FormatError('Invalid entry in \\'Differences\\' array: ' + data);\n              }\n            }\n          }\n        } else if ((0, _primitives.isName)(encoding)) {\n          baseEncodingName = encoding.name;\n        } else {\n          throw new _util.FormatError('Encoding is not a Name nor a Dict');\n        }\n        if (baseEncodingName !== 'MacRomanEncoding' && baseEncodingName !== 'MacExpertEncoding' && baseEncodingName !== 'WinAnsiEncoding') {\n          baseEncodingName = null;\n        }\n      }\n      if (baseEncodingName) {\n        properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName).slice();\n      } else {\n        var isSymbolicFont = !!(properties.flags & _fonts.FontFlags.Symbolic);\n        var isNonsymbolicFont = !!(properties.flags & _fonts.FontFlags.Nonsymbolic);\n        encoding = _encodings.StandardEncoding;\n        if (properties.type === 'TrueType' && !isNonsymbolicFont) {\n          encoding = _encodings.WinAnsiEncoding;\n        }\n        if (isSymbolicFont) {\n          encoding = _encodings.MacRomanEncoding;\n          if (!properties.file) {\n            if (/Symbol/i.test(properties.name)) {\n              encoding = _encodings.SymbolSetEncoding;\n            } else if (/Dingbats/i.test(properties.name)) {\n              encoding = _encodings.ZapfDingbatsEncoding;\n            }\n          }\n        }\n        properties.defaultEncoding = encoding;\n      }\n      properties.differences = differences;\n      properties.baseEncodingName = baseEncodingName;\n      properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n      properties.dict = dict;\n      return toUnicodePromise.then(function (toUnicode) {\n        properties.toUnicode = toUnicode;\n        return _this10.buildToUnicode(properties);\n      }).then(function (toUnicode) {\n        properties.toUnicode = toUnicode;\n        return properties;\n      });\n    },\n    _buildSimpleFontToUnicode: function _buildSimpleFontToUnicode(properties) {\n      (0, _util.assert)(!properties.composite, 'Must be a simple font.');\n      var toUnicode = [],\n          charcode = void 0,\n          glyphName = void 0;\n      var encoding = properties.defaultEncoding.slice();\n      var baseEncodingName = properties.baseEncodingName;\n      var differences = properties.differences;\n      for (charcode in differences) {\n        glyphName = differences[charcode];\n        if (glyphName === '.notdef') {\n          continue;\n        }\n        encoding[charcode] = glyphName;\n      }\n      var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n      for (charcode in encoding) {\n        glyphName = encoding[charcode];\n        if (glyphName === '') {\n          continue;\n        } else if (glyphsUnicodeMap[glyphName] === undefined) {\n          var code = 0;\n          switch (glyphName[0]) {\n            case 'G':\n              if (glyphName.length === 3) {\n                code = parseInt(glyphName.substring(1), 16);\n              }\n              break;\n            case 'g':\n              if (glyphName.length === 5) {\n                code = parseInt(glyphName.substring(1), 16);\n              }\n              break;\n            case 'C':\n            case 'c':\n              if (glyphName.length >= 3) {\n                code = +glyphName.substring(1);\n              }\n              break;\n            default:\n              var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n              if (unicode !== -1) {\n                code = unicode;\n              }\n          }\n          if (code) {\n            if (baseEncodingName && code === +charcode) {\n              var baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);\n              if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n                toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n                continue;\n              }\n            }\n            toUnicode[charcode] = String.fromCharCode(code);\n          }\n          continue;\n        }\n        toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n      }\n      return new _fonts.ToUnicodeMap(toUnicode);\n    },\n    buildToUnicode: function buildToUnicode(properties) {\n      properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;\n      if (properties.hasIncludedToUnicodeMap) {\n        if (!properties.composite && properties.hasEncoding) {\n          properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties);\n        }\n        return Promise.resolve(properties.toUnicode);\n      }\n      if (!properties.composite) {\n        return Promise.resolve(this._buildSimpleFontToUnicode(properties));\n      }\n      if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === 'Adobe' && (properties.cidSystemInfo.ordering === 'GB1' || properties.cidSystemInfo.ordering === 'CNS1' || properties.cidSystemInfo.ordering === 'Japan1' || properties.cidSystemInfo.ordering === 'Korea1'))) {\n        var registry = properties.cidSystemInfo.registry;\n        var ordering = properties.cidSystemInfo.ordering;\n        var ucs2CMapName = _primitives.Name.get(registry + '-' + ordering + '-UCS2');\n        return _cmap.CMapFactory.create({\n          encoding: ucs2CMapName,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null\n        }).then(function (ucs2CMap) {\n          var cMap = properties.cMap;\n          var toUnicode = [];\n          cMap.forEach(function (charcode, cid) {\n            if (cid > 0xffff) {\n              throw new _util.FormatError('Max size of CID is 65,535');\n            }\n            var ucs2 = ucs2CMap.lookup(cid);\n            if (ucs2) {\n              toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));\n            }\n          });\n          return new _fonts.ToUnicodeMap(toUnicode);\n        });\n      }\n      return Promise.resolve(new _fonts.IdentityToUnicodeMap(properties.firstChar, properties.lastChar));\n    },\n\n    readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) {\n      var cmapObj = toUnicode;\n      if ((0, _primitives.isName)(cmapObj)) {\n        return _cmap.CMapFactory.create({\n          encoding: cmapObj,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null\n        }).then(function (cmap) {\n          if (cmap instanceof _cmap.IdentityCMap) {\n            return new _fonts.IdentityToUnicodeMap(0, 0xFFFF);\n          }\n          return new _fonts.ToUnicodeMap(cmap.getMap());\n        });\n      } else if ((0, _primitives.isStream)(cmapObj)) {\n        return _cmap.CMapFactory.create({\n          encoding: cmapObj,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null\n        }).then(function (cmap) {\n          if (cmap instanceof _cmap.IdentityCMap) {\n            return new _fonts.IdentityToUnicodeMap(0, 0xFFFF);\n          }\n          var map = new Array(cmap.length);\n          cmap.forEach(function (charCode, token) {\n            var str = [];\n            for (var k = 0; k < token.length; k += 2) {\n              var w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n              if ((w1 & 0xF800) !== 0xD800) {\n                str.push(w1);\n                continue;\n              }\n              k += 2;\n              var w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n              str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n            }\n            map[charCode] = String.fromCharCode.apply(String, str);\n          });\n          return new _fonts.ToUnicodeMap(map);\n        });\n      }\n      return Promise.resolve(null);\n    },\n    readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) {\n      var glyphsData = cidToGidStream.getBytes();\n      var result = [];\n      for (var j = 0, jj = glyphsData.length; j < jj; j++) {\n        var glyphID = glyphsData[j++] << 8 | glyphsData[j];\n        if (glyphID === 0) {\n          continue;\n        }\n        var code = j >> 1;\n        result[code] = glyphID;\n      }\n      return result;\n    },\n    extractWidths: function PartialEvaluator_extractWidths(dict, descriptor, properties) {\n      var xref = this.xref;\n      var glyphsWidths = [];\n      var defaultWidth = 0;\n      var glyphsVMetrics = [];\n      var defaultVMetrics;\n      var i, ii, j, jj, start, code, widths;\n      if (properties.composite) {\n        defaultWidth = dict.has('DW') ? dict.get('DW') : 1000;\n        widths = dict.get('W');\n        if (widths) {\n          for (i = 0, ii = widths.length; i < ii; i++) {\n            start = xref.fetchIfRef(widths[i++]);\n            code = xref.fetchIfRef(widths[i]);\n            if (Array.isArray(code)) {\n              for (j = 0, jj = code.length; j < jj; j++) {\n                glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n              }\n            } else {\n              var width = xref.fetchIfRef(widths[++i]);\n              for (j = start; j <= code; j++) {\n                glyphsWidths[j] = width;\n              }\n            }\n          }\n        }\n        if (properties.vertical) {\n          var vmetrics = dict.getArray('DW2') || [880, -1000];\n          defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n          vmetrics = dict.get('W2');\n          if (vmetrics) {\n            for (i = 0, ii = vmetrics.length; i < ii; i++) {\n              start = xref.fetchIfRef(vmetrics[i++]);\n              code = xref.fetchIfRef(vmetrics[i]);\n              if (Array.isArray(code)) {\n                for (j = 0, jj = code.length; j < jj; j++) {\n                  glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])];\n                }\n              } else {\n                var vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])];\n                for (j = start; j <= code; j++) {\n                  glyphsVMetrics[j] = vmetric;\n                }\n              }\n            }\n          }\n        }\n      } else {\n        var firstChar = properties.firstChar;\n        widths = dict.get('Widths');\n        if (widths) {\n          j = firstChar;\n          for (i = 0, ii = widths.length; i < ii; i++) {\n            glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n          }\n          defaultWidth = parseFloat(descriptor.get('MissingWidth')) || 0;\n        } else {\n          var baseFontName = dict.get('BaseFont');\n          if ((0, _primitives.isName)(baseFontName)) {\n            var metrics = this.getBaseFontMetrics(baseFontName.name);\n            glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n            defaultWidth = metrics.defaultWidth;\n          }\n        }\n      }\n      var isMonospace = true;\n      var firstWidth = defaultWidth;\n      for (var glyph in glyphsWidths) {\n        var glyphWidth = glyphsWidths[glyph];\n        if (!glyphWidth) {\n          continue;\n        }\n        if (!firstWidth) {\n          firstWidth = glyphWidth;\n          continue;\n        }\n        if (firstWidth !== glyphWidth) {\n          isMonospace = false;\n          break;\n        }\n      }\n      if (isMonospace) {\n        properties.flags |= _fonts.FontFlags.FixedPitch;\n      }\n      properties.defaultWidth = defaultWidth;\n      properties.widths = glyphsWidths;\n      properties.defaultVMetrics = defaultVMetrics;\n      properties.vmetrics = glyphsVMetrics;\n    },\n    isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) {\n      var fontNameWoStyle = baseFontName.split('-')[0];\n      return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== -1;\n    },\n    getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {\n      var defaultWidth = 0;\n      var widths = [];\n      var monospace = false;\n      var stdFontMap = (0, _standard_fonts.getStdFontMap)();\n      var lookupName = stdFontMap[name] || name;\n      var Metrics = (0, _metrics.getMetrics)();\n      if (!(lookupName in Metrics)) {\n        if (this.isSerifFont(name)) {\n          lookupName = 'Times-Roman';\n        } else {\n          lookupName = 'Helvetica';\n        }\n      }\n      var glyphWidths = Metrics[lookupName];\n      if ((0, _util.isNum)(glyphWidths)) {\n        defaultWidth = glyphWidths;\n        monospace = true;\n      } else {\n        widths = glyphWidths();\n      }\n      return {\n        defaultWidth: defaultWidth,\n        monospace: monospace,\n        widths: widths\n      };\n    },\n    buildCharCodeToWidth: function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName, properties) {\n      var widths = Object.create(null);\n      var differences = properties.differences;\n      var encoding = properties.defaultEncoding;\n      for (var charCode = 0; charCode < 256; charCode++) {\n        if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n          widths[charCode] = widthsByGlyphName[differences[charCode]];\n          continue;\n        }\n        if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n          widths[charCode] = widthsByGlyphName[encoding[charCode]];\n          continue;\n        }\n      }\n      return widths;\n    },\n    preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict) {\n      var baseDict = dict;\n      var type = dict.get('Subtype');\n      if (!(0, _primitives.isName)(type)) {\n        throw new _util.FormatError('invalid font Subtype');\n      }\n      var composite = false;\n      var uint8array;\n      if (type.name === 'Type0') {\n        var df = dict.get('DescendantFonts');\n        if (!df) {\n          throw new _util.FormatError('Descendant fonts are not specified');\n        }\n        dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n        type = dict.get('Subtype');\n        if (!(0, _primitives.isName)(type)) {\n          throw new _util.FormatError('invalid font Subtype');\n        }\n        composite = true;\n      }\n      var descriptor = dict.get('FontDescriptor');\n      if (descriptor) {\n        var hash = new _murmurhash.MurmurHash3_64();\n        var encoding = baseDict.getRaw('Encoding');\n        if ((0, _primitives.isName)(encoding)) {\n          hash.update(encoding.name);\n        } else if ((0, _primitives.isRef)(encoding)) {\n          hash.update(encoding.toString());\n        } else if ((0, _primitives.isDict)(encoding)) {\n          var keys = encoding.getKeys();\n          for (var i = 0, ii = keys.length; i < ii; i++) {\n            var entry = encoding.getRaw(keys[i]);\n            if ((0, _primitives.isName)(entry)) {\n              hash.update(entry.name);\n            } else if ((0, _primitives.isRef)(entry)) {\n              hash.update(entry.toString());\n            } else if (Array.isArray(entry)) {\n              var diffLength = entry.length,\n                  diffBuf = new Array(diffLength);\n              for (var j = 0; j < diffLength; j++) {\n                var diffEntry = entry[j];\n                if ((0, _primitives.isName)(diffEntry)) {\n                  diffBuf[j] = diffEntry.name;\n                } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) {\n                  diffBuf[j] = diffEntry.toString();\n                }\n              }\n              hash.update(diffBuf.join());\n            }\n          }\n        }\n        var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode');\n        if ((0, _primitives.isStream)(toUnicode)) {\n          var stream = toUnicode.str || toUnicode;\n          uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);\n          hash.update(uint8array);\n        } else if ((0, _primitives.isName)(toUnicode)) {\n          hash.update(toUnicode.name);\n        }\n        var widths = dict.get('Widths') || baseDict.get('Widths');\n        if (widths) {\n          uint8array = new Uint8Array(new Uint32Array(widths).buffer);\n          hash.update(uint8array);\n        }\n      }\n      return {\n        descriptor: descriptor,\n        dict: dict,\n        baseDict: baseDict,\n        composite: composite,\n        type: type.name,\n        hash: hash ? hash.hexdigest() : ''\n      };\n    },\n    translateFont: function PartialEvaluator_translateFont(preEvaluatedFont) {\n      var _this11 = this;\n\n      var baseDict = preEvaluatedFont.baseDict;\n      var dict = preEvaluatedFont.dict;\n      var composite = preEvaluatedFont.composite;\n      var descriptor = preEvaluatedFont.descriptor;\n      var type = preEvaluatedFont.type;\n      var maxCharIndex = composite ? 0xFFFF : 0xFF;\n      var properties;\n      if (!descriptor) {\n        if (type === 'Type3') {\n          descriptor = new _primitives.Dict(null);\n          descriptor.set('FontName', _primitives.Name.get(type));\n          descriptor.set('FontBBox', dict.getArray('FontBBox'));\n        } else {\n          var baseFontName = dict.get('BaseFont');\n          if (!(0, _primitives.isName)(baseFontName)) {\n            throw new _util.FormatError('Base font is not specified');\n          }\n          baseFontName = baseFontName.name.replace(/[,_]/g, '-');\n          var metrics = this.getBaseFontMetrics(baseFontName);\n          var fontNameWoStyle = baseFontName.split('-')[0];\n          var flags = (this.isSerifFont(fontNameWoStyle) ? _fonts.FontFlags.Serif : 0) | (metrics.monospace ? _fonts.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts.FontFlags.Symbolic : _fonts.FontFlags.Nonsymbolic);\n          properties = {\n            type: type,\n            name: baseFontName,\n            widths: metrics.widths,\n            defaultWidth: metrics.defaultWidth,\n            flags: flags,\n            firstChar: 0,\n            lastChar: maxCharIndex\n          };\n          return this.extractDataStructures(dict, dict, properties).then(function (properties) {\n            properties.widths = _this11.buildCharCodeToWidth(metrics.widths, properties);\n            return new _fonts.Font(baseFontName, null, properties);\n          });\n        }\n      }\n      var firstChar = dict.get('FirstChar') || 0;\n      var lastChar = dict.get('LastChar') || maxCharIndex;\n      var fontName = descriptor.get('FontName');\n      var baseFont = dict.get('BaseFont');\n      if ((0, _util.isString)(fontName)) {\n        fontName = _primitives.Name.get(fontName);\n      }\n      if ((0, _util.isString)(baseFont)) {\n        baseFont = _primitives.Name.get(baseFont);\n      }\n      if (type !== 'Type3') {\n        var fontNameStr = fontName && fontName.name;\n        var baseFontStr = baseFont && baseFont.name;\n        if (fontNameStr !== baseFontStr) {\n          (0, _util.info)('The FontDescriptor\\'s FontName is \"' + fontNameStr + '\" but should be the same as the Font\\'s BaseFont \"' + baseFontStr + '\"');\n          if (fontNameStr && baseFontStr && baseFontStr.indexOf(fontNameStr) === 0) {\n            fontName = baseFont;\n          }\n        }\n      }\n      fontName = fontName || baseFont;\n      if (!(0, _primitives.isName)(fontName)) {\n        throw new _util.FormatError('invalid font name');\n      }\n      var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3');\n      if (fontFile) {\n        if (fontFile.dict) {\n          var subtype = fontFile.dict.get('Subtype');\n          if (subtype) {\n            subtype = subtype.name;\n          }\n          var length1 = fontFile.dict.get('Length1');\n          var length2 = fontFile.dict.get('Length2');\n          var length3 = fontFile.dict.get('Length3');\n        }\n      }\n      properties = {\n        type: type,\n        name: fontName.name,\n        subtype: subtype,\n        file: fontFile,\n        length1: length1,\n        length2: length2,\n        length3: length3,\n        loadedName: baseDict.loadedName,\n        composite: composite,\n        wideChars: composite,\n        fixedPitch: false,\n        fontMatrix: dict.getArray('FontMatrix') || _util.FONT_IDENTITY_MATRIX,\n        firstChar: firstChar || 0,\n        lastChar: lastChar || maxCharIndex,\n        bbox: descriptor.getArray('FontBBox'),\n        ascent: descriptor.get('Ascent'),\n        descent: descriptor.get('Descent'),\n        xHeight: descriptor.get('XHeight'),\n        capHeight: descriptor.get('CapHeight'),\n        flags: descriptor.get('Flags'),\n        italicAngle: descriptor.get('ItalicAngle'),\n        isType3Font: false\n      };\n      var cMapPromise;\n      if (composite) {\n        var cidEncoding = baseDict.get('Encoding');\n        if ((0, _primitives.isName)(cidEncoding)) {\n          properties.cidEncoding = cidEncoding.name;\n        }\n        cMapPromise = _cmap.CMapFactory.create({\n          encoding: cidEncoding,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null\n        }).then(function (cMap) {\n          properties.cMap = cMap;\n          properties.vertical = properties.cMap.vertical;\n        });\n      } else {\n        cMapPromise = Promise.resolve(undefined);\n      }\n      return cMapPromise.then(function () {\n        return _this11.extractDataStructures(dict, baseDict, properties);\n      }).then(function (properties) {\n        _this11.extractWidths(dict, descriptor, properties);\n        if (type === 'Type3') {\n          properties.isType3Font = true;\n        }\n        return new _fonts.Font(fontName.name, fontFile, properties);\n      });\n    }\n  };\n  return PartialEvaluator;\n}();\nvar TranslatedFont = function TranslatedFontClosure() {\n  function TranslatedFont(loadedName, font, dict) {\n    this.loadedName = loadedName;\n    this.font = font;\n    this.dict = dict;\n    this.type3Loaded = null;\n    this.sent = false;\n  }\n  TranslatedFont.prototype = {\n    send: function send(handler) {\n      if (this.sent) {\n        return;\n      }\n      var fontData = this.font.exportData();\n      handler.send('commonobj', [this.loadedName, 'Font', fontData]);\n      this.sent = true;\n    },\n    loadType3Data: function loadType3Data(evaluator, resources, parentOperatorList, task) {\n      if (!this.font.isType3Font) {\n        throw new Error('Must be a Type3 font.');\n      }\n      if (this.type3Loaded) {\n        return this.type3Loaded;\n      }\n      var type3Options = Object.create(evaluator.options);\n      type3Options.ignoreErrors = false;\n      var type3Evaluator = evaluator.clone(type3Options);\n      var translatedFont = this.font;\n      var loadCharProcsPromise = Promise.resolve();\n      var charProcs = this.dict.get('CharProcs');\n      var fontResources = this.dict.get('Resources') || resources;\n      var charProcKeys = charProcs.getKeys();\n      var charProcOperatorList = Object.create(null);\n\n      var _loop2 = function _loop2() {\n        var key = charProcKeys[i];\n        loadCharProcsPromise = loadCharProcsPromise.then(function () {\n          var glyphStream = charProcs.get(key);\n          var operatorList = new _operator_list.OperatorList();\n          return type3Evaluator.getOperatorList({\n            stream: glyphStream,\n            task: task,\n            resources: fontResources,\n            operatorList: operatorList\n          }).then(function () {\n            charProcOperatorList[key] = operatorList.getIR();\n            parentOperatorList.addDependencies(operatorList.dependencies);\n          }).catch(function (reason) {\n            (0, _util.warn)('Type3 font resource \"' + key + '\" is not available.');\n            var operatorList = new _operator_list.OperatorList();\n            charProcOperatorList[key] = operatorList.getIR();\n          });\n        });\n      };\n\n      for (var i = 0, n = charProcKeys.length; i < n; ++i) {\n        _loop2();\n      }\n      this.type3Loaded = loadCharProcsPromise.then(function () {\n        translatedFont.charProcOperatorList = charProcOperatorList;\n      });\n      return this.type3Loaded;\n    }\n  };\n  return TranslatedFont;\n}();\nvar StateManager = function StateManagerClosure() {\n  function StateManager(initialState) {\n    this.state = initialState;\n    this.stateStack = [];\n  }\n  StateManager.prototype = {\n    save: function save() {\n      var old = this.state;\n      this.stateStack.push(this.state);\n      this.state = old.clone();\n    },\n    restore: function restore() {\n      var prev = this.stateStack.pop();\n      if (prev) {\n        this.state = prev;\n      }\n    },\n    transform: function transform(args) {\n      this.state.ctm = _util.Util.transform(this.state.ctm, args);\n    }\n  };\n  return StateManager;\n}();\nvar TextState = function TextStateClosure() {\n  function TextState() {\n    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);\n    this.fontName = null;\n    this.fontSize = 0;\n    this.font = null;\n    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n    this.textMatrix = _util.IDENTITY_MATRIX.slice();\n    this.textLineMatrix = _util.IDENTITY_MATRIX.slice();\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.leading = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n  }\n  TextState.prototype = {\n    setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {\n      var m = this.textMatrix;\n      m[0] = a;\n      m[1] = b;\n      m[2] = c;\n      m[3] = d;\n      m[4] = e;\n      m[5] = f;\n    },\n    setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {\n      var m = this.textLineMatrix;\n      m[0] = a;\n      m[1] = b;\n      m[2] = c;\n      m[3] = d;\n      m[4] = e;\n      m[5] = f;\n    },\n    translateTextMatrix: function TextState_translateTextMatrix(x, y) {\n      var m = this.textMatrix;\n      m[4] = m[0] * x + m[2] * y + m[4];\n      m[5] = m[1] * x + m[3] * y + m[5];\n    },\n    translateTextLineMatrix: function TextState_translateTextMatrix(x, y) {\n      var m = this.textLineMatrix;\n      m[4] = m[0] * x + m[2] * y + m[4];\n      m[5] = m[1] * x + m[3] * y + m[5];\n    },\n    calcTextLineMatrixAdvance: function TextState_calcTextLineMatrixAdvance(a, b, c, d, e, f) {\n      var font = this.font;\n      if (!font) {\n        return null;\n      }\n      var m = this.textLineMatrix;\n      if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {\n        return null;\n      }\n      var txDiff = e - m[4],\n          tyDiff = f - m[5];\n      if (font.vertical && txDiff !== 0 || !font.vertical && tyDiff !== 0) {\n        return null;\n      }\n      var tx,\n          ty,\n          denominator = a * d - b * c;\n      if (font.vertical) {\n        tx = -tyDiff * c / denominator;\n        ty = tyDiff * a / denominator;\n      } else {\n        tx = txDiff * d / denominator;\n        ty = -txDiff * b / denominator;\n      }\n      return {\n        width: tx,\n        height: ty,\n        value: font.vertical ? ty : tx\n      };\n    },\n    calcRenderMatrix: function TextState_calcRendeMatrix(ctm) {\n      var tsm = [this.fontSize * this.textHScale, 0, 0, this.fontSize, 0, this.textRise];\n      return _util.Util.transform(ctm, _util.Util.transform(this.textMatrix, tsm));\n    },\n    carriageReturn: function TextState_carriageReturn() {\n      this.translateTextLineMatrix(0, -this.leading);\n      this.textMatrix = this.textLineMatrix.slice();\n    },\n    clone: function TextState_clone() {\n      var clone = Object.create(this);\n      clone.textMatrix = this.textMatrix.slice();\n      clone.textLineMatrix = this.textLineMatrix.slice();\n      clone.fontMatrix = this.fontMatrix.slice();\n      return clone;\n    }\n  };\n  return TextState;\n}();\nvar EvalState = function EvalStateClosure() {\n  function EvalState() {\n    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);\n    this.font = null;\n    this.textRenderingMode = _util.TextRenderingMode.FILL;\n    this.fillColorSpace = _colorspace.ColorSpace.singletons.gray;\n    this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;\n  }\n  EvalState.prototype = {\n    clone: function CanvasExtraState_clone() {\n      return Object.create(this);\n    }\n  };\n  return EvalState;\n}();\nvar EvaluatorPreprocessor = function EvaluatorPreprocessorClosure() {\n  var getOPMap = (0, _util.getLookupTableFactory)(function (t) {\n    t['w'] = {\n      id: _util.OPS.setLineWidth,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['J'] = {\n      id: _util.OPS.setLineCap,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['j'] = {\n      id: _util.OPS.setLineJoin,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['M'] = {\n      id: _util.OPS.setMiterLimit,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['d'] = {\n      id: _util.OPS.setDash,\n      numArgs: 2,\n      variableArgs: false\n    };\n    t['ri'] = {\n      id: _util.OPS.setRenderingIntent,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['i'] = {\n      id: _util.OPS.setFlatness,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['gs'] = {\n      id: _util.OPS.setGState,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['q'] = {\n      id: _util.OPS.save,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['Q'] = {\n      id: _util.OPS.restore,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['cm'] = {\n      id: _util.OPS.transform,\n      numArgs: 6,\n      variableArgs: false\n    };\n    t['m'] = {\n      id: _util.OPS.moveTo,\n      numArgs: 2,\n      variableArgs: false\n    };\n    t['l'] = {\n      id: _util.OPS.lineTo,\n      numArgs: 2,\n      variableArgs: false\n    };\n    t['c'] = {\n      id: _util.OPS.curveTo,\n      numArgs: 6,\n      variableArgs: false\n    };\n    t['v'] = {\n      id: _util.OPS.curveTo2,\n      numArgs: 4,\n      variableArgs: false\n    };\n    t['y'] = {\n      id: _util.OPS.curveTo3,\n      numArgs: 4,\n      variableArgs: false\n    };\n    t['h'] = {\n      id: _util.OPS.closePath,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['re'] = {\n      id: _util.OPS.rectangle,\n      numArgs: 4,\n      variableArgs: false\n    };\n    t['S'] = {\n      id: _util.OPS.stroke,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['s'] = {\n      id: _util.OPS.closeStroke,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['f'] = {\n      id: _util.OPS.fill,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['F'] = {\n      id: _util.OPS.fill,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['f*'] = {\n      id: _util.OPS.eoFill,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['B'] = {\n      id: _util.OPS.fillStroke,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['B*'] = {\n      id: _util.OPS.eoFillStroke,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['b'] = {\n      id: _util.OPS.closeFillStroke,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['b*'] = {\n      id: _util.OPS.closeEOFillStroke,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['n'] = {\n      id: _util.OPS.endPath,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['W'] = {\n      id: _util.OPS.clip,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['W*'] = {\n      id: _util.OPS.eoClip,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['BT'] = {\n      id: _util.OPS.beginText,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['ET'] = {\n      id: _util.OPS.endText,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['Tc'] = {\n      id: _util.OPS.setCharSpacing,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['Tw'] = {\n      id: _util.OPS.setWordSpacing,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['Tz'] = {\n      id: _util.OPS.setHScale,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['TL'] = {\n      id: _util.OPS.setLeading,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['Tf'] = {\n      id: _util.OPS.setFont,\n      numArgs: 2,\n      variableArgs: false\n    };\n    t['Tr'] = {\n      id: _util.OPS.setTextRenderingMode,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['Ts'] = {\n      id: _util.OPS.setTextRise,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['Td'] = {\n      id: _util.OPS.moveText,\n      numArgs: 2,\n      variableArgs: false\n    };\n    t['TD'] = {\n      id: _util.OPS.setLeadingMoveText,\n      numArgs: 2,\n      variableArgs: false\n    };\n    t['Tm'] = {\n      id: _util.OPS.setTextMatrix,\n      numArgs: 6,\n      variableArgs: false\n    };\n    t['T*'] = {\n      id: _util.OPS.nextLine,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['Tj'] = {\n      id: _util.OPS.showText,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['TJ'] = {\n      id: _util.OPS.showSpacedText,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['\\''] = {\n      id: _util.OPS.nextLineShowText,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['\"'] = {\n      id: _util.OPS.nextLineSetSpacingShowText,\n      numArgs: 3,\n      variableArgs: false\n    };\n    t['d0'] = {\n      id: _util.OPS.setCharWidth,\n      numArgs: 2,\n      variableArgs: false\n    };\n    t['d1'] = {\n      id: _util.OPS.setCharWidthAndBounds,\n      numArgs: 6,\n      variableArgs: false\n    };\n    t['CS'] = {\n      id: _util.OPS.setStrokeColorSpace,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['cs'] = {\n      id: _util.OPS.setFillColorSpace,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['SC'] = {\n      id: _util.OPS.setStrokeColor,\n      numArgs: 4,\n      variableArgs: true\n    };\n    t['SCN'] = {\n      id: _util.OPS.setStrokeColorN,\n      numArgs: 33,\n      variableArgs: true\n    };\n    t['sc'] = {\n      id: _util.OPS.setFillColor,\n      numArgs: 4,\n      variableArgs: true\n    };\n    t['scn'] = {\n      id: _util.OPS.setFillColorN,\n      numArgs: 33,\n      variableArgs: true\n    };\n    t['G'] = {\n      id: _util.OPS.setStrokeGray,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['g'] = {\n      id: _util.OPS.setFillGray,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['RG'] = {\n      id: _util.OPS.setStrokeRGBColor,\n      numArgs: 3,\n      variableArgs: false\n    };\n    t['rg'] = {\n      id: _util.OPS.setFillRGBColor,\n      numArgs: 3,\n      variableArgs: false\n    };\n    t['K'] = {\n      id: _util.OPS.setStrokeCMYKColor,\n      numArgs: 4,\n      variableArgs: false\n    };\n    t['k'] = {\n      id: _util.OPS.setFillCMYKColor,\n      numArgs: 4,\n      variableArgs: false\n    };\n    t['sh'] = {\n      id: _util.OPS.shadingFill,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['BI'] = {\n      id: _util.OPS.beginInlineImage,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['ID'] = {\n      id: _util.OPS.beginImageData,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['EI'] = {\n      id: _util.OPS.endInlineImage,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['Do'] = {\n      id: _util.OPS.paintXObject,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['MP'] = {\n      id: _util.OPS.markPoint,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['DP'] = {\n      id: _util.OPS.markPointProps,\n      numArgs: 2,\n      variableArgs: false\n    };\n    t['BMC'] = {\n      id: _util.OPS.beginMarkedContent,\n      numArgs: 1,\n      variableArgs: false\n    };\n    t['BDC'] = {\n      id: _util.OPS.beginMarkedContentProps,\n      numArgs: 2,\n      variableArgs: false\n    };\n    t['EMC'] = {\n      id: _util.OPS.endMarkedContent,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['BX'] = {\n      id: _util.OPS.beginCompat,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['EX'] = {\n      id: _util.OPS.endCompat,\n      numArgs: 0,\n      variableArgs: false\n    };\n    t['BM'] = null;\n    t['BD'] = null;\n    t['true'] = null;\n    t['fa'] = null;\n    t['fal'] = null;\n    t['fals'] = null;\n    t['false'] = null;\n    t['nu'] = null;\n    t['nul'] = null;\n    t['null'] = null;\n  });\n  var MAX_INVALID_PATH_OPS = 20;\n  function EvaluatorPreprocessor(stream, xref, stateManager) {\n    this.opMap = getOPMap();\n    this.parser = new _parser.Parser(new _parser.Lexer(stream, this.opMap), false, xref);\n    this.stateManager = stateManager;\n    this.nonProcessedArgs = [];\n    this._numInvalidPathOPS = 0;\n  }\n  EvaluatorPreprocessor.prototype = {\n    get savedStatesDepth() {\n      return this.stateManager.stateStack.length;\n    },\n    read: function EvaluatorPreprocessor_read(operation) {\n      var args = operation.args;\n      while (true) {\n        var obj = this.parser.getObj();\n        if ((0, _primitives.isCmd)(obj)) {\n          var cmd = obj.cmd;\n          var opSpec = this.opMap[cmd];\n          if (!opSpec) {\n            (0, _util.warn)('Unknown command \"' + cmd + '\".');\n            continue;\n          }\n          var fn = opSpec.id;\n          var numArgs = opSpec.numArgs;\n          var argsLength = args !== null ? args.length : 0;\n          if (!opSpec.variableArgs) {\n            if (argsLength !== numArgs) {\n              var nonProcessedArgs = this.nonProcessedArgs;\n              while (argsLength > numArgs) {\n                nonProcessedArgs.push(args.shift());\n                argsLength--;\n              }\n              while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n                if (args === null) {\n                  args = [];\n                }\n                args.unshift(nonProcessedArgs.pop());\n                argsLength++;\n              }\n            }\n            if (argsLength < numArgs) {\n              var partialMsg = 'command ' + cmd + ': expected ' + numArgs + ' args, ' + ('but received ' + argsLength + ' args.');\n              if (fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath && ++this._numInvalidPathOPS > MAX_INVALID_PATH_OPS) {\n                throw new _util.FormatError('Invalid ' + partialMsg);\n              }\n              (0, _util.warn)('Skipping ' + partialMsg);\n              if (args !== null) {\n                args.length = 0;\n              }\n              continue;\n            }\n          } else if (argsLength > numArgs) {\n            (0, _util.info)('Command ' + cmd + ': expected [0, ' + numArgs + '] args, ' + ('but received ' + argsLength + ' args.'));\n          }\n          this.preprocessCommand(fn, args);\n          operation.fn = fn;\n          operation.args = args;\n          return true;\n        }\n        if ((0, _primitives.isEOF)(obj)) {\n          return false;\n        }\n        if (obj !== null) {\n          if (args === null) {\n            args = [];\n          }\n          args.push(obj);\n          if (args.length > 33) {\n            throw new _util.FormatError('Too many arguments');\n          }\n        }\n      }\n    },\n    preprocessCommand: function EvaluatorPreprocessor_preprocessCommand(fn, args) {\n      switch (fn | 0) {\n        case _util.OPS.save:\n          this.stateManager.save();\n          break;\n        case _util.OPS.restore:\n          this.stateManager.restore();\n          break;\n        case _util.OPS.transform:\n          this.stateManager.transform(args);\n          break;\n      }\n    }\n  };\n  return EvaluatorPreprocessor;\n}();\nexports.PartialEvaluator = PartialEvaluator;\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CMapFactory = exports.IdentityCMap = exports.CMap = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _parser = __w_pdfjs_require__(139);\n\nvar _stream = __w_pdfjs_require__(140);\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BUILT_IN_CMAPS = ['Adobe-GB1-UCS2', 'Adobe-CNS1-UCS2', 'Adobe-Japan1-UCS2', 'Adobe-Korea1-UCS2', '78-EUC-H', '78-EUC-V', '78-H', '78-RKSJ-H', '78-RKSJ-V', '78-V', '78ms-RKSJ-H', '78ms-RKSJ-V', '83pv-RKSJ-H', '90ms-RKSJ-H', '90ms-RKSJ-V', '90msp-RKSJ-H', '90msp-RKSJ-V', '90pv-RKSJ-H', '90pv-RKSJ-V', 'Add-H', 'Add-RKSJ-H', 'Add-RKSJ-V', 'Add-V', 'Adobe-CNS1-0', 'Adobe-CNS1-1', 'Adobe-CNS1-2', 'Adobe-CNS1-3', 'Adobe-CNS1-4', 'Adobe-CNS1-5', 'Adobe-CNS1-6', 'Adobe-GB1-0', 'Adobe-GB1-1', 'Adobe-GB1-2', 'Adobe-GB1-3', 'Adobe-GB1-4', 'Adobe-GB1-5', 'Adobe-Japan1-0', 'Adobe-Japan1-1', 'Adobe-Japan1-2', 'Adobe-Japan1-3', 'Adobe-Japan1-4', 'Adobe-Japan1-5', 'Adobe-Japan1-6', 'Adobe-Korea1-0', 'Adobe-Korea1-1', 'Adobe-Korea1-2', 'B5-H', 'B5-V', 'B5pc-H', 'B5pc-V', 'CNS-EUC-H', 'CNS-EUC-V', 'CNS1-H', 'CNS1-V', 'CNS2-H', 'CNS2-V', 'ETHK-B5-H', 'ETHK-B5-V', 'ETen-B5-H', 'ETen-B5-V', 'ETenms-B5-H', 'ETenms-B5-V', 'EUC-H', 'EUC-V', 'Ext-H', 'Ext-RKSJ-H', 'Ext-RKSJ-V', 'Ext-V', 'GB-EUC-H', 'GB-EUC-V', 'GB-H', 'GB-V', 'GBK-EUC-H', 'GBK-EUC-V', 'GBK2K-H', 'GBK2K-V', 'GBKp-EUC-H', 'GBKp-EUC-V', 'GBT-EUC-H', 'GBT-EUC-V', 'GBT-H', 'GBT-V', 'GBTpc-EUC-H', 'GBTpc-EUC-V', 'GBpc-EUC-H', 'GBpc-EUC-V', 'H', 'HKdla-B5-H', 'HKdla-B5-V', 'HKdlb-B5-H', 'HKdlb-B5-V', 'HKgccs-B5-H', 'HKgccs-B5-V', 'HKm314-B5-H', 'HKm314-B5-V', 'HKm471-B5-H', 'HKm471-B5-V', 'HKscs-B5-H', 'HKscs-B5-V', 'Hankaku', 'Hiragana', 'KSC-EUC-H', 'KSC-EUC-V', 'KSC-H', 'KSC-Johab-H', 'KSC-Johab-V', 'KSC-V', 'KSCms-UHC-H', 'KSCms-UHC-HW-H', 'KSCms-UHC-HW-V', 'KSCms-UHC-V', 'KSCpc-EUC-H', 'KSCpc-EUC-V', 'Katakana', 'NWP-H', 'NWP-V', 'RKSJ-H', 'RKSJ-V', 'Roman', 'UniCNS-UCS2-H', 'UniCNS-UCS2-V', 'UniCNS-UTF16-H', 'UniCNS-UTF16-V', 'UniCNS-UTF32-H', 'UniCNS-UTF32-V', 'UniCNS-UTF8-H', 'UniCNS-UTF8-V', 'UniGB-UCS2-H', 'UniGB-UCS2-V', 'UniGB-UTF16-H', 'UniGB-UTF16-V', 'UniGB-UTF32-H', 'UniGB-UTF32-V', 'UniGB-UTF8-H', 'UniGB-UTF8-V', 'UniJIS-UCS2-H', 'UniJIS-UCS2-HW-H', 'UniJIS-UCS2-HW-V', 'UniJIS-UCS2-V', 'UniJIS-UTF16-H', 'UniJIS-UTF16-V', 'UniJIS-UTF32-H', 'UniJIS-UTF32-V', 'UniJIS-UTF8-H', 'UniJIS-UTF8-V', 'UniJIS2004-UTF16-H', 'UniJIS2004-UTF16-V', 'UniJIS2004-UTF32-H', 'UniJIS2004-UTF32-V', 'UniJIS2004-UTF8-H', 'UniJIS2004-UTF8-V', 'UniJISPro-UCS2-HW-V', 'UniJISPro-UCS2-V', 'UniJISPro-UTF8-V', 'UniJISX0213-UTF32-H', 'UniJISX0213-UTF32-V', 'UniJISX02132004-UTF32-H', 'UniJISX02132004-UTF32-V', 'UniKS-UCS2-H', 'UniKS-UCS2-V', 'UniKS-UTF16-H', 'UniKS-UTF16-V', 'UniKS-UTF32-H', 'UniKS-UTF32-V', 'UniKS-UTF8-H', 'UniKS-UTF8-V', 'V', 'WP-Symbol'];\n\nvar CMap = function () {\n  function CMap() {\n    var builtInCMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n    _classCallCheck(this, CMap);\n\n    this.codespaceRanges = [[], [], [], []];\n    this.numCodespaceRanges = 0;\n    this._map = [];\n    this.name = '';\n    this.vertical = false;\n    this.useCMap = null;\n    this.builtInCMap = builtInCMap;\n  }\n\n  _createClass(CMap, [{\n    key: 'addCodespaceRange',\n    value: function addCodespaceRange(n, low, high) {\n      this.codespaceRanges[n - 1].push(low, high);\n      this.numCodespaceRanges++;\n    }\n  }, {\n    key: 'mapCidRange',\n    value: function mapCidRange(low, high, dstLow) {\n      while (low <= high) {\n        this._map[low++] = dstLow++;\n      }\n    }\n  }, {\n    key: 'mapBfRange',\n    value: function mapBfRange(low, high, dstLow) {\n      var lastByte = dstLow.length - 1;\n      while (low <= high) {\n        this._map[low++] = dstLow;\n        dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);\n      }\n    }\n  }, {\n    key: 'mapBfRangeToArray',\n    value: function mapBfRangeToArray(low, high, array) {\n      var i = 0,\n          ii = array.length;\n      while (low <= high && i < ii) {\n        this._map[low] = array[i++];\n        ++low;\n      }\n    }\n  }, {\n    key: 'mapOne',\n    value: function mapOne(src, dst) {\n      this._map[src] = dst;\n    }\n  }, {\n    key: 'lookup',\n    value: function lookup(code) {\n      return this._map[code];\n    }\n  }, {\n    key: 'contains',\n    value: function contains(code) {\n      return this._map[code] !== undefined;\n    }\n  }, {\n    key: 'forEach',\n    value: function forEach(callback) {\n      var map = this._map;\n      var length = map.length;\n      if (length <= 0x10000) {\n        for (var i = 0; i < length; i++) {\n          if (map[i] !== undefined) {\n            callback(i, map[i]);\n          }\n        }\n      } else {\n        for (var _i in map) {\n          callback(_i, map[_i]);\n        }\n      }\n    }\n  }, {\n    key: 'charCodeOf',\n    value: function charCodeOf(value) {\n      var map = this._map;\n      if (map.length <= 0x10000) {\n        return map.indexOf(value);\n      }\n      for (var charCode in map) {\n        if (map[charCode] === value) {\n          return charCode | 0;\n        }\n      }\n      return -1;\n    }\n  }, {\n    key: 'getMap',\n    value: function getMap() {\n      return this._map;\n    }\n  }, {\n    key: 'readCharCode',\n    value: function readCharCode(str, offset, out) {\n      var c = 0;\n      var codespaceRanges = this.codespaceRanges;\n      for (var n = 0, nn = codespaceRanges.length; n < nn; n++) {\n        c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;\n        var codespaceRange = codespaceRanges[n];\n        for (var k = 0, kk = codespaceRange.length; k < kk;) {\n          var low = codespaceRange[k++];\n          var high = codespaceRange[k++];\n          if (c >= low && c <= high) {\n            out.charcode = c;\n            out.length = n + 1;\n            return;\n          }\n        }\n      }\n      out.charcode = 0;\n      out.length = 1;\n    }\n  }, {\n    key: 'length',\n    get: function get() {\n      return this._map.length;\n    }\n  }, {\n    key: 'isIdentityCMap',\n    get: function get() {\n      if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) {\n        return false;\n      }\n      if (this._map.length !== 0x10000) {\n        return false;\n      }\n      for (var i = 0; i < 0x10000; i++) {\n        if (this._map[i] !== i) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }]);\n\n  return CMap;\n}();\n\nvar IdentityCMap = function (_CMap) {\n  _inherits(IdentityCMap, _CMap);\n\n  function IdentityCMap(vertical, n) {\n    _classCallCheck(this, IdentityCMap);\n\n    var _this = _possibleConstructorReturn(this, (IdentityCMap.__proto__ || Object.getPrototypeOf(IdentityCMap)).call(this));\n\n    _this.vertical = vertical;\n    _this.addCodespaceRange(n, 0, 0xffff);\n    return _this;\n  }\n\n  _createClass(IdentityCMap, [{\n    key: 'mapCidRange',\n    value: function mapCidRange(low, high, dstLow) {\n      (0, _util.unreachable)('should not call mapCidRange');\n    }\n  }, {\n    key: 'mapBfRange',\n    value: function mapBfRange(low, high, dstLow) {\n      (0, _util.unreachable)('should not call mapBfRange');\n    }\n  }, {\n    key: 'mapBfRangeToArray',\n    value: function mapBfRangeToArray(low, high, array) {\n      (0, _util.unreachable)('should not call mapBfRangeToArray');\n    }\n  }, {\n    key: 'mapOne',\n    value: function mapOne(src, dst) {\n      (0, _util.unreachable)('should not call mapCidOne');\n    }\n  }, {\n    key: 'lookup',\n    value: function lookup(code) {\n      return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n    }\n  }, {\n    key: 'contains',\n    value: function contains(code) {\n      return Number.isInteger(code) && code <= 0xffff;\n    }\n  }, {\n    key: 'forEach',\n    value: function forEach(callback) {\n      for (var i = 0; i <= 0xffff; i++) {\n        callback(i, i);\n      }\n    }\n  }, {\n    key: 'charCodeOf',\n    value: function charCodeOf(value) {\n      return Number.isInteger(value) && value <= 0xffff ? value : -1;\n    }\n  }, {\n    key: 'getMap',\n    value: function getMap() {\n      var map = new Array(0x10000);\n      for (var i = 0; i <= 0xffff; i++) {\n        map[i] = i;\n      }\n      return map;\n    }\n  }, {\n    key: 'length',\n    get: function get() {\n      return 0x10000;\n    }\n  }, {\n    key: 'isIdentityCMap',\n    get: function get() {\n      (0, _util.unreachable)('should not access .isIdentityCMap');\n    }\n  }]);\n\n  return IdentityCMap;\n}(CMap);\n\nvar BinaryCMapReader = function BinaryCMapReaderClosure() {\n  function hexToInt(a, size) {\n    var n = 0;\n    for (var i = 0; i <= size; i++) {\n      n = n << 8 | a[i];\n    }\n    return n >>> 0;\n  }\n  function hexToStr(a, size) {\n    if (size === 1) {\n      return String.fromCharCode(a[0], a[1]);\n    }\n    if (size === 3) {\n      return String.fromCharCode(a[0], a[1], a[2], a[3]);\n    }\n    return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n  }\n  function addHex(a, b, size) {\n    var c = 0;\n    for (var i = size; i >= 0; i--) {\n      c += a[i] + b[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n  function incHex(a, size) {\n    var c = 1;\n    for (var i = size; i >= 0 && c > 0; i--) {\n      c += a[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n  var MAX_NUM_SIZE = 16;\n  var MAX_ENCODED_NUM_SIZE = 19;\n  function BinaryCMapStream(data) {\n    this.buffer = data;\n    this.pos = 0;\n    this.end = data.length;\n    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n  }\n  BinaryCMapStream.prototype = {\n    readByte: function readByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.buffer[this.pos++];\n    },\n    readNumber: function readNumber() {\n      var n = 0;\n      var last;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new _util.FormatError('unexpected EOF in bcmap');\n        }\n        last = !(b & 0x80);\n        n = n << 7 | b & 0x7F;\n      } while (!last);\n      return n;\n    },\n    readSigned: function readSigned() {\n      var n = this.readNumber();\n      return n & 1 ? ~(n >>> 1) : n >>> 1;\n    },\n    readHex: function readHex(num, size) {\n      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n      this.pos += size + 1;\n    },\n    readHexNumber: function readHexNumber(num, size) {\n      var last;\n      var stack = this.tmpBuf,\n          sp = 0;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new _util.FormatError('unexpected EOF in bcmap');\n        }\n        last = !(b & 0x80);\n        stack[sp++] = b & 0x7F;\n      } while (!last);\n      var i = size,\n          buffer = 0,\n          bufferSize = 0;\n      while (i >= 0) {\n        while (bufferSize < 8 && stack.length > 0) {\n          buffer = stack[--sp] << bufferSize | buffer;\n          bufferSize += 7;\n        }\n        num[i] = buffer & 255;\n        i--;\n        buffer >>= 8;\n        bufferSize -= 8;\n      }\n    },\n    readHexSigned: function readHexSigned(num, size) {\n      this.readHexNumber(num, size);\n      var sign = num[size] & 1 ? 255 : 0;\n      var c = 0;\n      for (var i = 0; i <= size; i++) {\n        c = (c & 1) << 8 | num[i];\n        num[i] = c >> 1 ^ sign;\n      }\n    },\n    readString: function readString() {\n      var len = this.readNumber();\n      var s = '';\n      for (var i = 0; i < len; i++) {\n        s += String.fromCharCode(this.readNumber());\n      }\n      return s;\n    }\n  };\n  function processBinaryCMap(data, cMap, extend) {\n    return new Promise(function (resolve, reject) {\n      var stream = new BinaryCMapStream(data);\n      var header = stream.readByte();\n      cMap.vertical = !!(header & 1);\n      var useCMap = null;\n      var start = new Uint8Array(MAX_NUM_SIZE);\n      var end = new Uint8Array(MAX_NUM_SIZE);\n      var char = new Uint8Array(MAX_NUM_SIZE);\n      var charCode = new Uint8Array(MAX_NUM_SIZE);\n      var tmp = new Uint8Array(MAX_NUM_SIZE);\n      var code;\n      var b;\n      while ((b = stream.readByte()) >= 0) {\n        var type = b >> 5;\n        if (type === 7) {\n          switch (b & 0x1F) {\n            case 0:\n              stream.readString();\n              break;\n            case 1:\n              useCMap = stream.readString();\n              break;\n          }\n          continue;\n        }\n        var sequence = !!(b & 0x10);\n        var dataSize = b & 15;\n        if (dataSize + 1 > MAX_NUM_SIZE) {\n          throw new Error('processBinaryCMap: Invalid dataSize.');\n        }\n        var ucs2DataSize = 1;\n        var subitemsCount = stream.readNumber();\n        var i;\n        switch (type) {\n          case 0:\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n            }\n            break;\n          case 1:\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            stream.readNumber();\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              stream.readNumber();\n            }\n            break;\n          case 2:\n            stream.readHex(char, dataSize);\n            code = stream.readNumber();\n            cMap.mapOne(hexToInt(char, dataSize), code);\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, dataSize);\n                addHex(char, tmp, dataSize);\n              }\n              code = stream.readSigned() + (code + 1);\n              cMap.mapOne(hexToInt(char, dataSize), code);\n            }\n            break;\n          case 3:\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            code = stream.readNumber();\n            cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, dataSize);\n                addHex(start, end, dataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              code = stream.readNumber();\n              cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n            }\n            break;\n          case 4:\n            stream.readHex(char, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, ucs2DataSize);\n                addHex(char, tmp, ucs2DataSize);\n              }\n              incHex(charCode, dataSize);\n              stream.readHexSigned(tmp, dataSize);\n              addHex(charCode, tmp, dataSize);\n              cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n            }\n            break;\n          case 5:\n            stream.readHex(start, ucs2DataSize);\n            stream.readHexNumber(end, ucs2DataSize);\n            addHex(end, start, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, ucs2DataSize);\n                addHex(start, end, ucs2DataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, ucs2DataSize);\n              addHex(end, start, ucs2DataSize);\n              stream.readHex(charCode, dataSize);\n              cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n            }\n            break;\n          default:\n            reject(new Error('processBinaryCMap: Unknown type: ' + type));\n            return;\n        }\n      }\n      if (useCMap) {\n        resolve(extend(useCMap));\n        return;\n      }\n      resolve(cMap);\n    });\n  }\n  function BinaryCMapReader() {}\n  BinaryCMapReader.prototype = { process: processBinaryCMap };\n  return BinaryCMapReader;\n}();\nvar CMapFactory = function CMapFactoryClosure() {\n  function strToInt(str) {\n    var a = 0;\n    for (var i = 0; i < str.length; i++) {\n      a = a << 8 | str.charCodeAt(i);\n    }\n    return a >>> 0;\n  }\n  function expectString(obj) {\n    if (!(0, _util.isString)(obj)) {\n      throw new _util.FormatError('Malformed CMap: expected string.');\n    }\n  }\n  function expectInt(obj) {\n    if (!Number.isInteger(obj)) {\n      throw new _util.FormatError('Malformed CMap: expected int.');\n    }\n  }\n  function parseBfChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if ((0, _primitives.isEOF)(obj)) {\n        break;\n      }\n      if ((0, _primitives.isCmd)(obj, 'endbfchar')) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n  function parseBfRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if ((0, _primitives.isEOF)(obj)) {\n        break;\n      }\n      if ((0, _primitives.isCmd)(obj, 'endbfrange')) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      if (Number.isInteger(obj) || (0, _util.isString)(obj)) {\n        var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n        cMap.mapBfRange(low, high, dstLow);\n      } else if ((0, _primitives.isCmd)(obj, '[')) {\n        obj = lexer.getObj();\n        var array = [];\n        while (!(0, _primitives.isCmd)(obj, ']') && !(0, _primitives.isEOF)(obj)) {\n          array.push(obj);\n          obj = lexer.getObj();\n        }\n        cMap.mapBfRangeToArray(low, high, array);\n      } else {\n        break;\n      }\n    }\n    throw new _util.FormatError('Invalid bf range.');\n  }\n  function parseCidChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if ((0, _primitives.isEOF)(obj)) {\n        break;\n      }\n      if ((0, _primitives.isCmd)(obj, 'endcidchar')) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n  function parseCidRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if ((0, _primitives.isEOF)(obj)) {\n        break;\n      }\n      if ((0, _primitives.isCmd)(obj, 'endcidrange')) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dstLow = obj;\n      cMap.mapCidRange(low, high, dstLow);\n    }\n  }\n  function parseCodespaceRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if ((0, _primitives.isEOF)(obj)) {\n        break;\n      }\n      if ((0, _primitives.isCmd)(obj, 'endcodespacerange')) {\n        return;\n      }\n      if (!(0, _util.isString)(obj)) {\n        break;\n      }\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      if (!(0, _util.isString)(obj)) {\n        break;\n      }\n      var high = strToInt(obj);\n      cMap.addCodespaceRange(obj.length, low, high);\n    }\n    throw new _util.FormatError('Invalid codespace range.');\n  }\n  function parseWMode(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (Number.isInteger(obj)) {\n      cMap.vertical = !!obj;\n    }\n  }\n  function parseCMapName(cMap, lexer) {\n    var obj = lexer.getObj();\n    if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) {\n      cMap.name = obj.name;\n    }\n  }\n  function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n    var previous;\n    var embeddedUseCMap;\n    objLoop: while (true) {\n      try {\n        var obj = lexer.getObj();\n        if ((0, _primitives.isEOF)(obj)) {\n          break;\n        } else if ((0, _primitives.isName)(obj)) {\n          if (obj.name === 'WMode') {\n            parseWMode(cMap, lexer);\n          } else if (obj.name === 'CMapName') {\n            parseCMapName(cMap, lexer);\n          }\n          previous = obj;\n        } else if ((0, _primitives.isCmd)(obj)) {\n          switch (obj.cmd) {\n            case 'endcmap':\n              break objLoop;\n            case 'usecmap':\n              if ((0, _primitives.isName)(previous)) {\n                embeddedUseCMap = previous.name;\n              }\n              break;\n            case 'begincodespacerange':\n              parseCodespaceRange(cMap, lexer);\n              break;\n            case 'beginbfchar':\n              parseBfChar(cMap, lexer);\n              break;\n            case 'begincidchar':\n              parseCidChar(cMap, lexer);\n              break;\n            case 'beginbfrange':\n              parseBfRange(cMap, lexer);\n              break;\n            case 'begincidrange':\n              parseCidRange(cMap, lexer);\n              break;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof _util.MissingDataException) {\n          throw ex;\n        }\n        (0, _util.warn)('Invalid cMap data: ' + ex);\n        continue;\n      }\n    }\n    if (!useCMap && embeddedUseCMap) {\n      useCMap = embeddedUseCMap;\n    }\n    if (useCMap) {\n      return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n    }\n    return Promise.resolve(cMap);\n  }\n  function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n    return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (newCMap) {\n      cMap.useCMap = newCMap;\n      if (cMap.numCodespaceRanges === 0) {\n        var useCodespaceRanges = cMap.useCMap.codespaceRanges;\n        for (var i = 0; i < useCodespaceRanges.length; i++) {\n          cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n        }\n        cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n      }\n      cMap.useCMap.forEach(function (key, value) {\n        if (!cMap.contains(key)) {\n          cMap.mapOne(key, cMap.useCMap.lookup(key));\n        }\n      });\n      return cMap;\n    });\n  }\n  function createBuiltInCMap(name, fetchBuiltInCMap) {\n    if (name === 'Identity-H') {\n      return Promise.resolve(new IdentityCMap(false, 2));\n    } else if (name === 'Identity-V') {\n      return Promise.resolve(new IdentityCMap(true, 2));\n    }\n    if (!BUILT_IN_CMAPS.includes(name)) {\n      return Promise.reject(new Error('Unknown CMap name: ' + name));\n    }\n    if (!fetchBuiltInCMap) {\n      return Promise.reject(new Error('Built-in CMap parameters are not provided.'));\n    }\n    return fetchBuiltInCMap(name).then(function (data) {\n      var cMapData = data.cMapData,\n          compressionType = data.compressionType;\n      var cMap = new CMap(true);\n      if (compressionType === _util.CMapCompressionType.BINARY) {\n        return new BinaryCMapReader().process(cMapData, cMap, function (useCMap) {\n          return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n        });\n      }\n      if (compressionType === _util.CMapCompressionType.NONE) {\n        var lexer = new _parser.Lexer(new _stream.Stream(cMapData));\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n      }\n      return Promise.reject(new Error('TODO: Only BINARY/NONE CMap compression is currently supported.'));\n    });\n  }\n  return {\n    create: function create(params) {\n      var encoding = params.encoding;\n      var fetchBuiltInCMap = params.fetchBuiltInCMap;\n      var useCMap = params.useCMap;\n      if ((0, _primitives.isName)(encoding)) {\n        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n      } else if ((0, _primitives.isStream)(encoding)) {\n        var cMap = new CMap();\n        var lexer = new _parser.Lexer(encoding);\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function (parsedCMap) {\n          if (parsedCMap.isIdentityCMap) {\n            return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n          }\n          return parsedCMap;\n        });\n      }\n      return Promise.reject(new Error('Encoding required.'));\n    }\n  };\n}();\nexports.CMap = CMap;\nexports.IdentityCMap = IdentityCMap;\nexports.CMapFactory = CMapFactory;\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getFontType = exports.IdentityToUnicodeMap = exports.ToUnicodeMap = exports.FontFlags = exports.Font = exports.ErrorFont = exports.SEAC_ANALYSIS_ENABLED = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _cff_parser = __w_pdfjs_require__(157);\n\nvar _glyphlist = __w_pdfjs_require__(160);\n\nvar _encodings = __w_pdfjs_require__(159);\n\nvar _standard_fonts = __w_pdfjs_require__(161);\n\nvar _unicode = __w_pdfjs_require__(162);\n\nvar _font_renderer = __w_pdfjs_require__(163);\n\nvar _cmap = __w_pdfjs_require__(155);\n\nvar _stream = __w_pdfjs_require__(140);\n\nvar _type1_parser = __w_pdfjs_require__(164);\n\nvar PRIVATE_USE_AREAS = [[0xE000, 0xF8FF], [0x100000, 0x10FFFD]];\nvar PDF_GLYPH_SPACE_UNITS = 1000;\nvar SEAC_ANALYSIS_ENABLED = true;\nvar FontFlags = {\n  FixedPitch: 1,\n  Serif: 2,\n  Symbolic: 4,\n  Script: 8,\n  Nonsymbolic: 32,\n  Italic: 64,\n  AllCap: 65536,\n  SmallCap: 131072,\n  ForceBold: 262144\n};\nvar MacStandardGlyphOrdering = ['.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];\nfunction adjustWidths(properties) {\n  if (!properties.fontMatrix) {\n    return;\n  }\n  if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) {\n    return;\n  }\n  var scale = 0.001 / properties.fontMatrix[0];\n  var glyphsWidths = properties.widths;\n  for (var glyph in glyphsWidths) {\n    glyphsWidths[glyph] *= scale;\n  }\n  properties.defaultWidth *= scale;\n}\nfunction adjustToUnicode(properties, builtInEncoding) {\n  if (properties.hasIncludedToUnicodeMap) {\n    return;\n  }\n  if (properties.hasEncoding) {\n    return;\n  }\n  if (builtInEncoding === properties.defaultEncoding) {\n    return;\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  var toUnicode = [],\n      glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n  for (var charCode in builtInEncoding) {\n    var glyphName = builtInEncoding[charCode];\n    var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toUnicode[charCode] = String.fromCharCode(unicode);\n    }\n  }\n  properties.toUnicode.amend(toUnicode);\n}\nfunction getFontType(type, subtype) {\n  switch (type) {\n    case 'Type1':\n      return subtype === 'Type1C' ? _util.FontType.TYPE1C : _util.FontType.TYPE1;\n    case 'CIDFontType0':\n      return subtype === 'CIDFontType0C' ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0;\n    case 'OpenType':\n      return _util.FontType.OPENTYPE;\n    case 'TrueType':\n      return _util.FontType.TRUETYPE;\n    case 'CIDFontType2':\n      return _util.FontType.CIDFONTTYPE2;\n    case 'MMType1':\n      return _util.FontType.MMTYPE1;\n    case 'Type0':\n      return _util.FontType.TYPE0;\n    default:\n      return _util.FontType.UNKNOWN;\n  }\n}\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n  if (glyphsUnicodeMap[name] !== undefined) {\n    return name;\n  }\n  var unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap);\n  if (unicode !== -1) {\n    for (var key in glyphsUnicodeMap) {\n      if (glyphsUnicodeMap[key] === unicode) {\n        return key;\n      }\n    }\n  }\n  (0, _util.info)('Unable to recover a standard glyph name for: ' + name);\n  return name;\n}\nvar Glyph = function GlyphClosure() {\n  function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n    this.fontChar = fontChar;\n    this.unicode = unicode;\n    this.accent = accent;\n    this.width = width;\n    this.vmetric = vmetric;\n    this.operatorListId = operatorListId;\n    this.isSpace = isSpace;\n    this.isInFont = isInFont;\n  }\n  Glyph.prototype.matchesForCache = function (fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n    return this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace && this.isInFont === isInFont;\n  };\n  return Glyph;\n}();\nvar ToUnicodeMap = function ToUnicodeMapClosure() {\n  function ToUnicodeMap() {\n    var cmap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n    this._map = cmap;\n  }\n  ToUnicodeMap.prototype = {\n    get length() {\n      return this._map.length;\n    },\n    forEach: function forEach(callback) {\n      for (var charCode in this._map) {\n        callback(charCode, this._map[charCode].charCodeAt(0));\n      }\n    },\n    has: function has(i) {\n      return this._map[i] !== undefined;\n    },\n    get: function get(i) {\n      return this._map[i];\n    },\n    charCodeOf: function charCodeOf(value) {\n      var map = this._map;\n      if (map.length <= 0x10000) {\n        return map.indexOf(value);\n      }\n      for (var charCode in map) {\n        if (map[charCode] === value) {\n          return charCode | 0;\n        }\n      }\n      return -1;\n    },\n    amend: function amend(map) {\n      for (var charCode in map) {\n        this._map[charCode] = map[charCode];\n      }\n    }\n  };\n  return ToUnicodeMap;\n}();\nvar IdentityToUnicodeMap = function IdentityToUnicodeMapClosure() {\n  function IdentityToUnicodeMap(firstChar, lastChar) {\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n  }\n  IdentityToUnicodeMap.prototype = {\n    get length() {\n      return this.lastChar + 1 - this.firstChar;\n    },\n    forEach: function forEach(callback) {\n      for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n        callback(i, i);\n      }\n    },\n    has: function has(i) {\n      return this.firstChar <= i && i <= this.lastChar;\n    },\n    get: function get(i) {\n      if (this.firstChar <= i && i <= this.lastChar) {\n        return String.fromCharCode(i);\n      }\n      return undefined;\n    },\n    charCodeOf: function charCodeOf(v) {\n      return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1;\n    },\n    amend: function amend(map) {\n      (0, _util.unreachable)('Should not call amend()');\n    }\n  };\n  return IdentityToUnicodeMap;\n}();\nvar OpenTypeFileBuilder = function OpenTypeFileBuilderClosure() {\n  function writeInt16(dest, offset, num) {\n    dest[offset] = num >> 8 & 0xFF;\n    dest[offset + 1] = num & 0xFF;\n  }\n  function writeInt32(dest, offset, num) {\n    dest[offset] = num >> 24 & 0xFF;\n    dest[offset + 1] = num >> 16 & 0xFF;\n    dest[offset + 2] = num >> 8 & 0xFF;\n    dest[offset + 3] = num & 0xFF;\n  }\n  function writeData(dest, offset, data) {\n    var i, ii;\n    if (data instanceof Uint8Array) {\n      dest.set(data, offset);\n    } else if (typeof data === 'string') {\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data.charCodeAt(i) & 0xFF;\n      }\n    } else {\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data[i] & 0xFF;\n      }\n    }\n  }\n  function OpenTypeFileBuilder(sfnt) {\n    this.sfnt = sfnt;\n    this.tables = Object.create(null);\n  }\n  OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) {\n    var maxPower2 = 1,\n        log2 = 0;\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\n      maxPower2 <<= 1;\n      log2++;\n    }\n    var searchRange = maxPower2 * entrySize;\n    return {\n      range: searchRange,\n      entry: log2,\n      rangeShift: entrySize * entriesCount - searchRange\n    };\n  };\n  var OTF_HEADER_SIZE = 12;\n  var OTF_TABLE_ENTRY_SIZE = 16;\n  OpenTypeFileBuilder.prototype = {\n    toArray: function OpenTypeFileBuilder_toArray() {\n      var sfnt = this.sfnt;\n      var tables = this.tables;\n      var tablesNames = Object.keys(tables);\n      tablesNames.sort();\n      var numTables = tablesNames.length;\n      var i, j, jj, table, tableName;\n      var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n      var tableOffsets = [offset];\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        var paddedLength = (table.length + 3 & ~3) >>> 0;\n        offset += paddedLength;\n        tableOffsets.push(offset);\n      }\n      var file = new Uint8Array(offset);\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        writeData(file, tableOffsets[i], table);\n      }\n      if (sfnt === 'true') {\n        sfnt = (0, _util.string32)(0x00010000);\n      }\n      file[0] = sfnt.charCodeAt(0) & 0xFF;\n      file[1] = sfnt.charCodeAt(1) & 0xFF;\n      file[2] = sfnt.charCodeAt(2) & 0xFF;\n      file[3] = sfnt.charCodeAt(3) & 0xFF;\n      writeInt16(file, 4, numTables);\n      var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n      writeInt16(file, 6, searchParams.range);\n      writeInt16(file, 8, searchParams.entry);\n      writeInt16(file, 10, searchParams.rangeShift);\n      offset = OTF_HEADER_SIZE;\n      for (i = 0; i < numTables; i++) {\n        tableName = tablesNames[i];\n        file[offset] = tableName.charCodeAt(0) & 0xFF;\n        file[offset + 1] = tableName.charCodeAt(1) & 0xFF;\n        file[offset + 2] = tableName.charCodeAt(2) & 0xFF;\n        file[offset + 3] = tableName.charCodeAt(3) & 0xFF;\n        var checksum = 0;\n        for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n          var quad = (0, _util.readUint32)(file, j);\n          checksum = checksum + quad >>> 0;\n        }\n        writeInt32(file, offset + 4, checksum);\n        writeInt32(file, offset + 8, tableOffsets[i]);\n        writeInt32(file, offset + 12, tables[tableName].length);\n        offset += OTF_TABLE_ENTRY_SIZE;\n      }\n      return file;\n    },\n    addTable: function OpenTypeFileBuilder_addTable(tag, data) {\n      if (tag in this.tables) {\n        throw new Error('Table ' + tag + ' already exists');\n      }\n      this.tables[tag] = data;\n    }\n  };\n  return OpenTypeFileBuilder;\n}();\nvar Font = function FontClosure() {\n  function Font(name, file, properties) {\n    var charCode;\n    this.name = name;\n    this.loadedName = properties.loadedName;\n    this.isType3Font = properties.isType3Font;\n    this.sizes = [];\n    this.missingFile = false;\n    this.glyphCache = Object.create(null);\n    this.isSerifFont = !!(properties.flags & FontFlags.Serif);\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n    var type = properties.type;\n    var subtype = properties.subtype;\n    this.type = type;\n    this.subtype = subtype;\n    this.fallbackName = this.isMonospace ? 'monospace' : this.isSerifFont ? 'serif' : 'sans-serif';\n    this.differences = properties.differences;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.composite = properties.composite;\n    this.wideChars = properties.wideChars;\n    this.cMap = properties.cMap;\n    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n    this.fontMatrix = properties.fontMatrix;\n    this.bbox = properties.bbox;\n    this.defaultEncoding = properties.defaultEncoding;\n    this.toUnicode = properties.toUnicode;\n    this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap();\n    this.toFontChar = [];\n    if (properties.type === 'Type3') {\n      for (charCode = 0; charCode < 256; charCode++) {\n        this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];\n      }\n      this.fontType = _util.FontType.TYPE3;\n      return;\n    }\n    this.cidEncoding = properties.cidEncoding;\n    this.vertical = properties.vertical;\n    if (this.vertical) {\n      this.vmetrics = properties.vmetrics;\n      this.defaultVMetrics = properties.defaultVMetrics;\n    }\n    if (!file || file.isEmpty) {\n      if (file) {\n        (0, _util.warn)('Font file is empty in \"' + name + '\" (' + this.loadedName + ')');\n      }\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    var _getFontFileType = getFontFileType(file, properties);\n\n    var _getFontFileType2 = _slicedToArray(_getFontFileType, 2);\n\n    type = _getFontFileType2[0];\n    subtype = _getFontFileType2[1];\n\n    if (type !== this.type || subtype !== this.subtype) {\n      (0, _util.info)('Inconsistent font file Type/SubType, expected: ' + (this.type + '/' + this.subtype + ' but found: ' + type + '/' + subtype + '.'));\n    }\n    try {\n      var data;\n      switch (type) {\n        case 'MMType1':\n          (0, _util.info)('MMType1 font (' + name + '), falling back to Type1.');\n        case 'Type1':\n        case 'CIDFontType0':\n          this.mimetype = 'font/opentype';\n          var cff = subtype === 'Type1C' || subtype === 'CIDFontType0C' ? new CFFFont(file, properties) : new Type1Font(name, file, properties);\n          adjustWidths(properties);\n          data = this.convert(name, cff, properties);\n          break;\n        case 'OpenType':\n        case 'TrueType':\n        case 'CIDFontType2':\n          this.mimetype = 'font/opentype';\n          data = this.checkAndRepair(name, file, properties);\n          if (this.isOpenType) {\n            adjustWidths(properties);\n            type = 'OpenType';\n          }\n          break;\n        default:\n          throw new _util.FormatError('Font ' + type + ' is not supported');\n      }\n    } catch (e) {\n      (0, _util.warn)(e);\n      this.fallbackToSystemFont();\n      return;\n    }\n    this.data = data;\n    this.fontType = getFontType(type, subtype);\n    this.fontMatrix = properties.fontMatrix;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.toUnicode = properties.toUnicode;\n    this.encoding = properties.baseEncoding;\n    this.seacMap = properties.seacMap;\n  }\n  Font.getFontID = function () {\n    var ID = 1;\n    return function Font_getFontID() {\n      return String(ID++);\n    };\n  }();\n  function int16(b0, b1) {\n    return (b0 << 8) + b1;\n  }\n  function writeSignedInt16(bytes, index, value) {\n    bytes[index + 1] = value;\n    bytes[index] = value >>> 8;\n  }\n  function signedInt16(b0, b1) {\n    var value = (b0 << 8) + b1;\n    return value & 1 << 15 ? value - 0x10000 : value;\n  }\n  function int32(b0, b1, b2, b3) {\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n  function string16(value) {\n    return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n  }\n  function safeString16(value) {\n    value = value > 0x7FFF ? 0x7FFF : value < -0x8000 ? -0x8000 : value;\n    return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n  }\n  function isTrueTypeFile(file) {\n    var header = file.peekBytes(4);\n    return (0, _util.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === 'true';\n  }\n  function isTrueTypeCollectionFile(file) {\n    var header = file.peekBytes(4);\n    return (0, _util.bytesToString)(header) === 'ttcf';\n  }\n  function isOpenTypeFile(file) {\n    var header = file.peekBytes(4);\n    return (0, _util.bytesToString)(header) === 'OTTO';\n  }\n  function isType1File(file) {\n    var header = file.peekBytes(2);\n    if (header[0] === 0x25 && header[1] === 0x21) {\n      return true;\n    }\n    if (header[0] === 0x80 && header[1] === 0x01) {\n      return true;\n    }\n    return false;\n  }\n  function isCFFFile(file) {\n    var header = file.peekBytes(4);\n    if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {\n      return true;\n    }\n    return false;\n  }\n  function getFontFileType(file, _ref) {\n    var type = _ref.type,\n        subtype = _ref.subtype,\n        composite = _ref.composite;\n\n    var fileType = void 0,\n        fileSubtype = void 0;\n    if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n      if (composite) {\n        fileType = 'CIDFontType2';\n      } else {\n        fileType = 'TrueType';\n      }\n    } else if (isOpenTypeFile(file)) {\n      if (composite) {\n        fileType = 'CIDFontType2';\n      } else {\n        fileType = 'OpenType';\n      }\n    } else if (isType1File(file)) {\n      if (composite) {\n        fileType = 'CIDFontType0';\n      } else {\n        fileType = type === 'MMType1' ? 'MMType1' : 'Type1';\n      }\n    } else if (isCFFFile(file)) {\n      if (composite) {\n        fileType = 'CIDFontType0';\n        fileSubtype = 'CIDFontType0C';\n      } else {\n        fileType = type === 'MMType1' ? 'MMType1' : 'Type1';\n        fileSubtype = 'Type1C';\n      }\n    } else {\n      (0, _util.warn)('getFontFileType: Unable to detect correct font file Type/Subtype.');\n      fileType = type;\n      fileSubtype = subtype;\n    }\n    return [fileType, fileSubtype];\n  }\n  function buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n    var toFontChar = [],\n        unicode;\n    for (var i = 0, ii = encoding.length; i < ii; i++) {\n      unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[i] = unicode;\n      }\n    }\n    for (var charCode in differences) {\n      unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[+charCode] = unicode;\n      }\n    }\n    return toFontChar;\n  }\n  function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n    var newMap = Object.create(null);\n    var toFontChar = [];\n    var privateUseAreaIndex = 0;\n    var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n    var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n    for (var originalCharCode in charCodeToGlyphId) {\n      originalCharCode |= 0;\n      var glyphId = charCodeToGlyphId[originalCharCode];\n      if (!hasGlyph(glyphId)) {\n        continue;\n      }\n      if (nextAvailableFontCharCode > privateUseOffetEnd) {\n        privateUseAreaIndex++;\n        if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n          (0, _util.warn)('Ran out of space in font private use area.');\n          break;\n        }\n        nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n        privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n      }\n      var fontCharCode = nextAvailableFontCharCode++;\n      if (glyphId === 0) {\n        glyphId = newGlyphZeroId;\n      }\n      newMap[fontCharCode] = glyphId;\n      toFontChar[originalCharCode] = fontCharCode;\n    }\n    return {\n      toFontChar: toFontChar,\n      charCodeToGlyphId: newMap,\n      nextAvailableFontCharCode: nextAvailableFontCharCode\n    };\n  }\n  function getRanges(glyphs, numGlyphs) {\n    var codes = [];\n    for (var charCode in glyphs) {\n      if (glyphs[charCode] >= numGlyphs) {\n        continue;\n      }\n      codes.push({\n        fontCharCode: charCode | 0,\n        glyphId: glyphs[charCode]\n      });\n    }\n    if (codes.length === 0) {\n      codes.push({\n        fontCharCode: 0,\n        glyphId: 0\n      });\n    }\n    codes.sort(function fontGetRangesSort(a, b) {\n      return a.fontCharCode - b.fontCharCode;\n    });\n    var ranges = [];\n    var length = codes.length;\n    for (var n = 0; n < length;) {\n      var start = codes[n].fontCharCode;\n      var codeIndices = [codes[n].glyphId];\n      ++n;\n      var end = start;\n      while (n < length && end + 1 === codes[n].fontCharCode) {\n        codeIndices.push(codes[n].glyphId);\n        ++end;\n        ++n;\n        if (end === 0xFFFF) {\n          break;\n        }\n      }\n      ranges.push([start, end, codeIndices]);\n    }\n    return ranges;\n  }\n  function createCmapTable(glyphs, numGlyphs) {\n    var ranges = getRanges(glyphs, numGlyphs);\n    var numTables = ranges[ranges.length - 1][1] > 0xFFFF ? 2 : 1;\n    var cmap = '\\x00\\x00' + string16(numTables) + '\\x00\\x03' + '\\x00\\x01' + (0, _util.string32)(4 + numTables * 8);\n    var i, ii, j, jj;\n    for (i = ranges.length - 1; i >= 0; --i) {\n      if (ranges[i][0] <= 0xFFFF) {\n        break;\n      }\n    }\n    var bmpLength = i + 1;\n    if (ranges[i][0] < 0xFFFF && ranges[i][1] === 0xFFFF) {\n      ranges[i][1] = 0xFFFE;\n    }\n    var trailingRangesCount = ranges[i][1] < 0xFFFF ? 1 : 0;\n    var segCount = bmpLength + trailingRangesCount;\n    var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n    var startCount = '';\n    var endCount = '';\n    var idDeltas = '';\n    var idRangeOffsets = '';\n    var glyphsIds = '';\n    var bias = 0;\n    var range, start, end, codes;\n    for (i = 0, ii = bmpLength; i < ii; i++) {\n      range = ranges[i];\n      start = range[0];\n      end = range[1];\n      startCount += string16(start);\n      endCount += string16(end);\n      codes = range[2];\n      var contiguous = true;\n      for (j = 1, jj = codes.length; j < jj; ++j) {\n        if (codes[j] !== codes[j - 1] + 1) {\n          contiguous = false;\n          break;\n        }\n      }\n      if (!contiguous) {\n        var offset = (segCount - i) * 2 + bias * 2;\n        bias += end - start + 1;\n        idDeltas += string16(0);\n        idRangeOffsets += string16(offset);\n        for (j = 0, jj = codes.length; j < jj; ++j) {\n          glyphsIds += string16(codes[j]);\n        }\n      } else {\n        var startCode = codes[0];\n        idDeltas += string16(startCode - start & 0xFFFF);\n        idRangeOffsets += string16(0);\n      }\n    }\n    if (trailingRangesCount > 0) {\n      endCount += '\\xFF\\xFF';\n      startCount += '\\xFF\\xFF';\n      idDeltas += '\\x00\\x01';\n      idRangeOffsets += '\\x00\\x00';\n    }\n    var format314 = '\\x00\\x00' + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + '\\x00\\x00' + startCount + idDeltas + idRangeOffsets + glyphsIds;\n    var format31012 = '';\n    var header31012 = '';\n    if (numTables > 1) {\n      cmap += '\\x00\\x03' + '\\x00\\x0A' + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length);\n      format31012 = '';\n      for (i = 0, ii = ranges.length; i < ii; i++) {\n        range = ranges[i];\n        start = range[0];\n        codes = range[2];\n        var code = codes[0];\n        for (j = 1, jj = codes.length; j < jj; ++j) {\n          if (codes[j] !== codes[j - 1] + 1) {\n            end = range[0] + j - 1;\n            format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code);\n            start = end + 1;\n            code = codes[j];\n          }\n        }\n        format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code);\n      }\n      header31012 = '\\x00\\x0C' + '\\x00\\x00' + (0, _util.string32)(format31012.length + 16) + '\\x00\\x00\\x00\\x00' + (0, _util.string32)(format31012.length / 12);\n    }\n    return cmap + '\\x00\\x04' + string16(format314.length + 4) + format314 + header31012 + format31012;\n  }\n  function validateOS2Table(os2) {\n    var stream = new _stream.Stream(os2.data);\n    var version = stream.getUint16();\n    stream.getBytes(60);\n    var selection = stream.getUint16();\n    if (version < 4 && selection & 0x0300) {\n      return false;\n    }\n    var firstChar = stream.getUint16();\n    var lastChar = stream.getUint16();\n    if (firstChar > lastChar) {\n      return false;\n    }\n    stream.getBytes(6);\n    var usWinAscent = stream.getUint16();\n    if (usWinAscent === 0) {\n      return false;\n    }\n    os2.data[8] = os2.data[9] = 0;\n    return true;\n  }\n  function createOS2Table(properties, charstrings, override) {\n    override = override || {\n      unitsPerEm: 0,\n      yMax: 0,\n      yMin: 0,\n      ascent: 0,\n      descent: 0\n    };\n    var ulUnicodeRange1 = 0;\n    var ulUnicodeRange2 = 0;\n    var ulUnicodeRange3 = 0;\n    var ulUnicodeRange4 = 0;\n    var firstCharIndex = null;\n    var lastCharIndex = 0;\n    if (charstrings) {\n      for (var code in charstrings) {\n        code |= 0;\n        if (firstCharIndex > code || !firstCharIndex) {\n          firstCharIndex = code;\n        }\n        if (lastCharIndex < code) {\n          lastCharIndex = code;\n        }\n        var position = (0, _unicode.getUnicodeRangeFor)(code);\n        if (position < 32) {\n          ulUnicodeRange1 |= 1 << position;\n        } else if (position < 64) {\n          ulUnicodeRange2 |= 1 << position - 32;\n        } else if (position < 96) {\n          ulUnicodeRange3 |= 1 << position - 64;\n        } else if (position < 123) {\n          ulUnicodeRange4 |= 1 << position - 96;\n        } else {\n          throw new _util.FormatError('Unicode ranges Bits > 123 are reserved for internal usage');\n        }\n      }\n      if (lastCharIndex > 0xFFFF) {\n        lastCharIndex = 0xFFFF;\n      }\n    } else {\n      firstCharIndex = 0;\n      lastCharIndex = 255;\n    }\n    var bbox = properties.bbox || [0, 0, 0, 0];\n    var unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];\n    var scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n    var typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n    var typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));\n    if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n      typoDescent = -typoDescent;\n    }\n    var winAscent = override.yMax || typoAscent;\n    var winDescent = -override.yMin || -typoDescent;\n    return '\\x00\\x03' + '\\x02\\x24' + '\\x01\\xF4' + '\\x00\\x05' + '\\x00\\x00' + '\\x02\\x8A' + '\\x02\\xBB' + '\\x00\\x00' + '\\x00\\x8C' + '\\x02\\x8A' + '\\x02\\xBB' + '\\x00\\x00' + '\\x01\\xDF' + '\\x00\\x31' + '\\x01\\x02' + '\\x00\\x00' + '\\x00\\x00\\x06' + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + '\\x00\\x00\\x00\\x00\\x00\\x00' + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + '\\x2A\\x32\\x31\\x2A' + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + '\\x00\\x64' + string16(winAscent) + string16(winDescent) + '\\x00\\x00\\x00\\x00' + '\\x00\\x00\\x00\\x00' + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + '\\x00\\x03';\n  }\n  function createPostTable(properties) {\n    var angle = Math.floor(properties.italicAngle * Math.pow(2, 16));\n    return '\\x00\\x03\\x00\\x00' + (0, _util.string32)(angle) + '\\x00\\x00' + '\\x00\\x00' + (0, _util.string32)(properties.fixedPitch) + '\\x00\\x00\\x00\\x00' + '\\x00\\x00\\x00\\x00' + '\\x00\\x00\\x00\\x00' + '\\x00\\x00\\x00\\x00';\n  }\n  function createNameTable(name, proto) {\n    if (!proto) {\n      proto = [[], []];\n    }\n    var strings = [proto[0][0] || 'Original licence', proto[0][1] || name, proto[0][2] || 'Unknown', proto[0][3] || 'uniqueID', proto[0][4] || name, proto[0][5] || 'Version 0.11', proto[0][6] || '', proto[0][7] || 'Unknown', proto[0][8] || 'Unknown', proto[0][9] || 'Unknown'];\n    var stringsUnicode = [];\n    var i, ii, j, jj, str;\n    for (i = 0, ii = strings.length; i < ii; i++) {\n      str = proto[1][i] || strings[i];\n      var strBufUnicode = [];\n      for (j = 0, jj = str.length; j < jj; j++) {\n        strBufUnicode.push(string16(str.charCodeAt(j)));\n      }\n      stringsUnicode.push(strBufUnicode.join(''));\n    }\n    var names = [strings, stringsUnicode];\n    var platforms = ['\\x00\\x01', '\\x00\\x03'];\n    var encodings = ['\\x00\\x00', '\\x00\\x01'];\n    var languages = ['\\x00\\x00', '\\x04\\x09'];\n    var namesRecordCount = strings.length * platforms.length;\n    var nameTable = '\\x00\\x00' + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6);\n    var strOffset = 0;\n    for (i = 0, ii = platforms.length; i < ii; i++) {\n      var strs = names[i];\n      for (j = 0, jj = strs.length; j < jj; j++) {\n        str = strs[j];\n        var nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset);\n        nameTable += nameRecord;\n        strOffset += str.length;\n      }\n    }\n    nameTable += strings.join('') + stringsUnicode.join('');\n    return nameTable;\n  }\n  Font.prototype = {\n    name: null,\n    font: null,\n    mimetype: null,\n    encoding: null,\n    get renderer() {\n      var renderer = _font_renderer.FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n      return (0, _util.shadow)(this, 'renderer', renderer);\n    },\n    exportData: function Font_exportData() {\n      var data = {};\n      for (var i in this) {\n        if (this.hasOwnProperty(i)) {\n          data[i] = this[i];\n        }\n      }\n      return data;\n    },\n    fallbackToSystemFont: function Font_fallbackToSystemFont() {\n      var _this = this;\n\n      this.missingFile = true;\n      var charCode, unicode;\n      var name = this.name;\n      var type = this.type;\n      var subtype = this.subtype;\n      var fontName = name.replace(/[,_]/g, '-');\n      var stdFontMap = (0, _standard_fonts.getStdFontMap)(),\n          nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)();\n      var isStandardFont = !!stdFontMap[fontName] || !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n      fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n      this.bold = fontName.search(/bold/gi) !== -1;\n      this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n      this.black = name.search(/Black/g) !== -1;\n      this.remeasure = Object.keys(this.widths).length > 0;\n      if (isStandardFont && type === 'CIDFontType2' && this.cidEncoding.indexOf('Identity-') === 0) {\n        var GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)();\n        var map = [];\n        for (charCode in GlyphMapForStandardFonts) {\n          map[+charCode] = GlyphMapForStandardFonts[charCode];\n        }\n        if (/Arial-?Black/i.test(name)) {\n          var SupplementalGlyphMapForArialBlack = (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)();\n          for (charCode in SupplementalGlyphMapForArialBlack) {\n            map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];\n          }\n        } else if (/Calibri/i.test(name)) {\n          var SupplementalGlyphMapForCalibri = (0, _standard_fonts.getSupplementalGlyphMapForCalibri)();\n          for (charCode in SupplementalGlyphMapForCalibri) {\n            map[+charCode] = SupplementalGlyphMapForCalibri[charCode];\n          }\n        }\n        var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;\n        if (!isIdentityUnicode) {\n          this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n            map[+charCode] = unicodeCharCode;\n          });\n        }\n        this.toFontChar = map;\n        this.toUnicode = new ToUnicodeMap(map);\n      } else if (/Symbol/i.test(fontName)) {\n        this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);\n      } else if (/Dingbats/i.test(fontName)) {\n        if (/Wingdings/i.test(name)) {\n          (0, _util.warn)('Non-embedded Wingdings font, falling back to ZapfDingbats.');\n        }\n        this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences);\n      } else if (isStandardFont) {\n        this.toFontChar = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);\n      } else {\n        var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n          if (!_this.composite) {\n            var glyphName = _this.differences[charCode] || _this.defaultEncoding[charCode];\n            unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n            if (unicode !== -1) {\n              unicodeCharCode = unicode;\n            }\n          }\n          _this.toFontChar[charCode] = unicodeCharCode;\n        });\n      }\n      this.loadedName = fontName.split('-')[0];\n      this.fontType = getFontType(type, subtype);\n    },\n    checkAndRepair: function Font_checkAndRepair(name, font, properties) {\n      var VALID_TABLES = ['OS/2', 'cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'post', 'loca', 'glyf', 'fpgm', 'prep', 'cvt ', 'CFF '];\n      function readTables(file, numTables) {\n        var tables = Object.create(null);\n        tables['OS/2'] = null;\n        tables['cmap'] = null;\n        tables['head'] = null;\n        tables['hhea'] = null;\n        tables['hmtx'] = null;\n        tables['maxp'] = null;\n        tables['name'] = null;\n        tables['post'] = null;\n        for (var i = 0; i < numTables; i++) {\n          var table = readTableEntry(font);\n          if (!VALID_TABLES.includes(table.tag)) {\n            continue;\n          }\n          if (table.length === 0) {\n            continue;\n          }\n          tables[table.tag] = table;\n        }\n        return tables;\n      }\n      function readTableEntry(file) {\n        var tag = (0, _util.bytesToString)(file.getBytes(4));\n        var checksum = file.getInt32() >>> 0;\n        var offset = file.getInt32() >>> 0;\n        var length = file.getInt32() >>> 0;\n        var previousPosition = file.pos;\n        file.pos = file.start ? file.start : 0;\n        file.skip(offset);\n        var data = file.getBytes(length);\n        file.pos = previousPosition;\n        if (tag === 'head') {\n          data[8] = data[9] = data[10] = data[11] = 0;\n          data[17] |= 0x20;\n        }\n        return {\n          tag: tag,\n          checksum: checksum,\n          length: length,\n          offset: offset,\n          data: data\n        };\n      }\n      function readOpenTypeHeader(ttf) {\n        return {\n          version: (0, _util.bytesToString)(ttf.getBytes(4)),\n          numTables: ttf.getUint16(),\n          searchRange: ttf.getUint16(),\n          entrySelector: ttf.getUint16(),\n          rangeShift: ttf.getUint16()\n        };\n      }\n      function readTrueTypeCollectionHeader(ttc) {\n        var ttcTag = (0, _util.bytesToString)(ttc.getBytes(4));\n        (0, _util.assert)(ttcTag === 'ttcf', 'Must be a TrueType Collection font.');\n        var majorVersion = ttc.getUint16();\n        var minorVersion = ttc.getUint16();\n        var numFonts = ttc.getInt32() >>> 0;\n        var offsetTable = [];\n        for (var i = 0; i < numFonts; i++) {\n          offsetTable.push(ttc.getInt32() >>> 0);\n        }\n        var header = {\n          ttcTag: ttcTag,\n          majorVersion: majorVersion,\n          minorVersion: minorVersion,\n          numFonts: numFonts,\n          offsetTable: offsetTable\n        };\n        switch (majorVersion) {\n          case 1:\n            return header;\n          case 2:\n            header.dsigTag = ttc.getInt32() >>> 0;\n            header.dsigLength = ttc.getInt32() >>> 0;\n            header.dsigOffset = ttc.getInt32() >>> 0;\n            return header;\n        }\n        throw new _util.FormatError('Invalid TrueType Collection majorVersion: ' + majorVersion + '.');\n      }\n      function readTrueTypeCollectionData(ttc, fontName) {\n        var _readTrueTypeCollecti = readTrueTypeCollectionHeader(ttc),\n            numFonts = _readTrueTypeCollecti.numFonts,\n            offsetTable = _readTrueTypeCollecti.offsetTable;\n\n        for (var i = 0; i < numFonts; i++) {\n          ttc.pos = (ttc.start || 0) + offsetTable[i];\n          var potentialHeader = readOpenTypeHeader(ttc);\n          var potentialTables = readTables(ttc, potentialHeader.numTables);\n          if (!potentialTables['name']) {\n            throw new _util.FormatError('TrueType Collection font must contain a \"name\" table.');\n          }\n          var nameTable = readNameTable(potentialTables['name']);\n          for (var j = 0, jj = nameTable.length; j < jj; j++) {\n            for (var k = 0, kk = nameTable[j].length; k < kk; k++) {\n              var nameEntry = nameTable[j][k];\n              if (nameEntry && nameEntry.replace(/\\s/g, '') === fontName) {\n                return {\n                  header: potentialHeader,\n                  tables: potentialTables\n                };\n              }\n            }\n          }\n        }\n        throw new _util.FormatError('TrueType Collection does not contain \"' + fontName + '\" font.');\n      }\n      function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) {\n        if (!cmap) {\n          (0, _util.warn)('No cmap table available.');\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false\n          };\n        }\n        var segment;\n        var start = (font.start ? font.start : 0) + cmap.offset;\n        font.pos = start;\n        font.getUint16();\n        var numTables = font.getUint16();\n        var potentialTable;\n        var canBreak = false;\n        for (var i = 0; i < numTables; i++) {\n          var platformId = font.getUint16();\n          var encodingId = font.getUint16();\n          var offset = font.getInt32() >>> 0;\n          var useTable = false;\n          if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === encodingId) {\n            continue;\n          }\n          if (platformId === 0 && encodingId === 0) {\n            useTable = true;\n          } else if (platformId === 1 && encodingId === 0) {\n            useTable = true;\n          } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {\n            useTable = true;\n            if (!isSymbolicFont) {\n              canBreak = true;\n            }\n          } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n            useTable = true;\n            canBreak = true;\n          }\n          if (useTable) {\n            potentialTable = {\n              platformId: platformId,\n              encodingId: encodingId,\n              offset: offset\n            };\n          }\n          if (canBreak) {\n            break;\n          }\n        }\n        if (potentialTable) {\n          font.pos = start + potentialTable.offset;\n        }\n        if (!potentialTable || font.peekByte() === -1) {\n          (0, _util.warn)('Could not find a preferred cmap table.');\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false\n          };\n        }\n        var format = font.getUint16();\n        font.getUint16();\n        font.getUint16();\n        var hasShortCmap = false;\n        var mappings = [];\n        var j, glyphId;\n        if (format === 0) {\n          for (j = 0; j < 256; j++) {\n            var index = font.getByte();\n            if (!index) {\n              continue;\n            }\n            mappings.push({\n              charCode: j,\n              glyphId: index\n            });\n          }\n          hasShortCmap = true;\n        } else if (format === 4) {\n          var segCount = font.getUint16() >> 1;\n          font.getBytes(6);\n          var segIndex,\n              segments = [];\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments.push({ end: font.getUint16() });\n          }\n          font.getUint16();\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].start = font.getUint16();\n          }\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].delta = font.getUint16();\n          }\n          var offsetsCount = 0;\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            var rangeOffset = font.getUint16();\n            if (!rangeOffset) {\n              segment.offsetIndex = -1;\n              continue;\n            }\n            var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n            segment.offsetIndex = offsetIndex;\n            offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);\n          }\n          var offsets = [];\n          for (j = 0; j < offsetsCount; j++) {\n            offsets.push(font.getUint16());\n          }\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            start = segment.start;\n            var end = segment.end;\n            var delta = segment.delta;\n            offsetIndex = segment.offsetIndex;\n            for (j = start; j <= end; j++) {\n              if (j === 0xFFFF) {\n                continue;\n              }\n              glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n              glyphId = glyphId + delta & 0xFFFF;\n              mappings.push({\n                charCode: j,\n                glyphId: glyphId\n              });\n            }\n          }\n        } else if (format === 6) {\n          var firstCode = font.getUint16();\n          var entryCount = font.getUint16();\n          for (j = 0; j < entryCount; j++) {\n            glyphId = font.getUint16();\n            var charCode = firstCode + j;\n            mappings.push({\n              charCode: charCode,\n              glyphId: glyphId\n            });\n          }\n        } else {\n          (0, _util.warn)('cmap table has unsupported format: ' + format);\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false\n          };\n        }\n        mappings.sort(function (a, b) {\n          return a.charCode - b.charCode;\n        });\n        for (i = 1; i < mappings.length; i++) {\n          if (mappings[i - 1].charCode === mappings[i].charCode) {\n            mappings.splice(i, 1);\n            i--;\n          }\n        }\n        return {\n          platformId: potentialTable.platformId,\n          encodingId: potentialTable.encodingId,\n          mappings: mappings,\n          hasShortCmap: hasShortCmap\n        };\n      }\n      function sanitizeMetrics(font, header, metrics, numGlyphs) {\n        if (!header) {\n          if (metrics) {\n            metrics.data = null;\n          }\n          return;\n        }\n        font.pos = (font.start ? font.start : 0) + header.offset;\n        font.pos += header.length - 2;\n        var numOfMetrics = font.getUint16();\n        if (numOfMetrics > numGlyphs) {\n          (0, _util.info)('The numOfMetrics (' + numOfMetrics + ') should not be ' + 'greater than the numGlyphs (' + numGlyphs + ')');\n          numOfMetrics = numGlyphs;\n          header.data[34] = (numOfMetrics & 0xff00) >> 8;\n          header.data[35] = numOfMetrics & 0x00ff;\n        }\n        var numOfSidebearings = numGlyphs - numOfMetrics;\n        var numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);\n        if (numMissing > 0) {\n          var entries = new Uint8Array(metrics.length + numMissing * 2);\n          entries.set(metrics.data);\n          metrics.data = entries;\n        }\n      }\n      function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {\n        var glyphProfile = {\n          length: 0,\n          sizeOfInstructions: 0\n        };\n        if (sourceEnd - sourceStart <= 12) {\n          return glyphProfile;\n        }\n        var glyf = source.subarray(sourceStart, sourceEnd);\n        var contoursCount = signedInt16(glyf[0], glyf[1]);\n        if (contoursCount < 0) {\n          contoursCount = -1;\n          writeSignedInt16(glyf, 0, contoursCount);\n          dest.set(glyf, destStart);\n          glyphProfile.length = glyf.length;\n          return glyphProfile;\n        }\n        var i,\n            j = 10,\n            flagsCount = 0;\n        for (i = 0; i < contoursCount; i++) {\n          var endPoint = glyf[j] << 8 | glyf[j + 1];\n          flagsCount = endPoint + 1;\n          j += 2;\n        }\n        var instructionsStart = j;\n        var instructionsLength = glyf[j] << 8 | glyf[j + 1];\n        glyphProfile.sizeOfInstructions = instructionsLength;\n        j += 2 + instructionsLength;\n        var instructionsEnd = j;\n        var coordinatesLength = 0;\n        for (i = 0; i < flagsCount; i++) {\n          var flag = glyf[j++];\n          if (flag & 0xC0) {\n            glyf[j - 1] = flag & 0x3F;\n          }\n          var xyLength = (flag & 2 ? 1 : flag & 16 ? 0 : 2) + (flag & 4 ? 1 : flag & 32 ? 0 : 2);\n          coordinatesLength += xyLength;\n          if (flag & 8) {\n            var repeat = glyf[j++];\n            i += repeat;\n            coordinatesLength += repeat * xyLength;\n          }\n        }\n        if (coordinatesLength === 0) {\n          return glyphProfile;\n        }\n        var glyphDataLength = j + coordinatesLength;\n        if (glyphDataLength > glyf.length) {\n          return glyphProfile;\n        }\n        if (!hintsValid && instructionsLength > 0) {\n          dest.set(glyf.subarray(0, instructionsStart), destStart);\n          dest.set([0, 0], destStart + instructionsStart);\n          dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);\n          glyphDataLength -= instructionsLength;\n          if (glyf.length - glyphDataLength > 3) {\n            glyphDataLength = glyphDataLength + 3 & ~3;\n          }\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        if (glyf.length - glyphDataLength > 3) {\n          glyphDataLength = glyphDataLength + 3 & ~3;\n          dest.set(glyf.subarray(0, glyphDataLength), destStart);\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        dest.set(glyf, destStart);\n        glyphProfile.length = glyf.length;\n        return glyphProfile;\n      }\n      function sanitizeHead(head, numGlyphs, locaLength) {\n        var data = head.data;\n        var version = int32(data[0], data[1], data[2], data[3]);\n        if (version >> 16 !== 1) {\n          (0, _util.info)('Attempting to fix invalid version in head table: ' + version);\n          data[0] = 0;\n          data[1] = 1;\n          data[2] = 0;\n          data[3] = 0;\n        }\n        var indexToLocFormat = int16(data[50], data[51]);\n        if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n          (0, _util.info)('Attempting to fix invalid indexToLocFormat in head table: ' + indexToLocFormat);\n          var numGlyphsPlusOne = numGlyphs + 1;\n          if (locaLength === numGlyphsPlusOne << 1) {\n            data[50] = 0;\n            data[51] = 0;\n          } else if (locaLength === numGlyphsPlusOne << 2) {\n            data[50] = 0;\n            data[51] = 1;\n          } else {\n            throw new _util.FormatError('Could not fix indexToLocFormat: ' + indexToLocFormat);\n          }\n        }\n      }\n      function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) {\n        var itemSize, itemDecode, itemEncode;\n        if (isGlyphLocationsLong) {\n          itemSize = 4;\n          itemDecode = function fontItemDecodeLong(data, offset) {\n            return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n          };\n          itemEncode = function fontItemEncodeLong(data, offset, value) {\n            data[offset] = value >>> 24 & 0xFF;\n            data[offset + 1] = value >> 16 & 0xFF;\n            data[offset + 2] = value >> 8 & 0xFF;\n            data[offset + 3] = value & 0xFF;\n          };\n        } else {\n          itemSize = 2;\n          itemDecode = function fontItemDecode(data, offset) {\n            return data[offset] << 9 | data[offset + 1] << 1;\n          };\n          itemEncode = function fontItemEncode(data, offset, value) {\n            data[offset] = value >> 9 & 0xFF;\n            data[offset + 1] = value >> 1 & 0xFF;\n          };\n        }\n        var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n        var locaData = loca.data;\n        var locaDataSize = itemSize * (1 + numGlyphsOut);\n        locaData = new Uint8Array(locaDataSize);\n        locaData.set(loca.data.subarray(0, locaDataSize));\n        loca.data = locaData;\n        var oldGlyfData = glyf.data;\n        var oldGlyfDataLength = oldGlyfData.length;\n        var newGlyfData = new Uint8Array(oldGlyfDataLength);\n        var startOffset = itemDecode(locaData, 0);\n        var writeOffset = 0;\n        var missingGlyphs = Object.create(null);\n        itemEncode(locaData, 0, writeOffset);\n        var i, j;\n        for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n          var endOffset = itemDecode(locaData, j);\n          if (endOffset === 0) {\n            endOffset = startOffset;\n          }\n          if (endOffset > oldGlyfDataLength && (oldGlyfDataLength + 3 & ~3) === endOffset) {\n            endOffset = oldGlyfDataLength;\n          }\n          if (endOffset > oldGlyfDataLength) {\n            startOffset = endOffset;\n          }\n          var glyphProfile = sanitizeGlyph(oldGlyfData, startOffset, endOffset, newGlyfData, writeOffset, hintsValid);\n          var newLength = glyphProfile.length;\n          if (newLength === 0) {\n            missingGlyphs[i] = true;\n          }\n          if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n            maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n          }\n          writeOffset += newLength;\n          itemEncode(locaData, j, writeOffset);\n          startOffset = endOffset;\n        }\n        if (writeOffset === 0) {\n          var simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);\n          for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n            itemEncode(locaData, j, simpleGlyph.length);\n          }\n          glyf.data = simpleGlyph;\n        } else if (dupFirstEntry) {\n          var firstEntryLength = itemDecode(locaData, itemSize);\n          if (newGlyfData.length > firstEntryLength + writeOffset) {\n            glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n          } else {\n            glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n            glyf.data.set(newGlyfData.subarray(0, writeOffset));\n          }\n          glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n          itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);\n        } else {\n          glyf.data = newGlyfData.subarray(0, writeOffset);\n        }\n        return {\n          missingGlyphs: missingGlyphs,\n          maxSizeOfInstructions: maxSizeOfInstructions\n        };\n      }\n      function readPostScriptTable(post, properties, maxpNumGlyphs) {\n        var start = (font.start ? font.start : 0) + post.offset;\n        font.pos = start;\n        var length = post.length,\n            end = start + length;\n        var version = font.getInt32();\n        font.getBytes(28);\n        var glyphNames;\n        var valid = true;\n        var i;\n        switch (version) {\n          case 0x00010000:\n            glyphNames = MacStandardGlyphOrdering;\n            break;\n          case 0x00020000:\n            var numGlyphs = font.getUint16();\n            if (numGlyphs !== maxpNumGlyphs) {\n              valid = false;\n              break;\n            }\n            var glyphNameIndexes = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var index = font.getUint16();\n              if (index >= 32768) {\n                valid = false;\n                break;\n              }\n              glyphNameIndexes.push(index);\n            }\n            if (!valid) {\n              break;\n            }\n            var customNames = [];\n            var strBuf = [];\n            while (font.pos < end) {\n              var stringLength = font.getByte();\n              strBuf.length = stringLength;\n              for (i = 0; i < stringLength; ++i) {\n                strBuf[i] = String.fromCharCode(font.getByte());\n              }\n              customNames.push(strBuf.join(''));\n            }\n            glyphNames = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var j = glyphNameIndexes[i];\n              if (j < 258) {\n                glyphNames.push(MacStandardGlyphOrdering[j]);\n                continue;\n              }\n              glyphNames.push(customNames[j - 258]);\n            }\n            break;\n          case 0x00030000:\n            break;\n          default:\n            (0, _util.warn)('Unknown/unsupported post table version ' + version);\n            valid = false;\n            if (properties.defaultEncoding) {\n              glyphNames = properties.defaultEncoding;\n            }\n            break;\n        }\n        properties.glyphNames = glyphNames;\n        return valid;\n      }\n      function readNameTable(nameTable) {\n        var start = (font.start ? font.start : 0) + nameTable.offset;\n        font.pos = start;\n        var names = [[], []];\n        var length = nameTable.length,\n            end = start + length;\n        var format = font.getUint16();\n        var FORMAT_0_HEADER_LENGTH = 6;\n        if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n          return names;\n        }\n        var numRecords = font.getUint16();\n        var stringsStart = font.getUint16();\n        var records = [];\n        var NAME_RECORD_LENGTH = 12;\n        var i, ii;\n        for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n          var r = {\n            platform: font.getUint16(),\n            encoding: font.getUint16(),\n            language: font.getUint16(),\n            name: font.getUint16(),\n            length: font.getUint16(),\n            offset: font.getUint16()\n          };\n          if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 && r.language === 0x409) {\n            records.push(r);\n          }\n        }\n        for (i = 0, ii = records.length; i < ii; i++) {\n          var record = records[i];\n          if (record.length <= 0) {\n            continue;\n          }\n          var pos = start + stringsStart + record.offset;\n          if (pos + record.length > end) {\n            continue;\n          }\n          font.pos = pos;\n          var nameIndex = record.name;\n          if (record.encoding) {\n            var str = '';\n            for (var j = 0, jj = record.length; j < jj; j += 2) {\n              str += String.fromCharCode(font.getUint16());\n            }\n            names[1][nameIndex] = str;\n          } else {\n            names[0][nameIndex] = (0, _util.bytesToString)(font.getBytes(record.length));\n          }\n        }\n        return names;\n      }\n      var TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n      function sanitizeTTProgram(table, ttContext) {\n        var data = table.data;\n        var i = 0,\n            j,\n            n,\n            b,\n            funcId,\n            pc,\n            lastEndf = 0,\n            lastDeff = 0;\n        var stack = [];\n        var callstack = [];\n        var functionsCalled = [];\n        var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n        var inFDEF = false,\n            ifLevel = 0,\n            inELSE = 0;\n        for (var ii = data.length; i < ii;) {\n          var op = data[i++];\n          if (op === 0x40) {\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if (op === 0x41) {\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push(b << 8 | data[i++]);\n              }\n            }\n          } else if ((op & 0xF8) === 0xB0) {\n            n = op - 0xB0 + 1;\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if ((op & 0xF8) === 0xB8) {\n            n = op - 0xB8 + 1;\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push(b << 8 | data[i++]);\n              }\n            }\n          } else if (op === 0x2B && !tooComplexToFollowFunctions) {\n            if (!inFDEF && !inELSE) {\n              funcId = stack[stack.length - 1];\n              if (isNaN(funcId)) {\n                (0, _util.info)('TT: CALL empty stack (or invalid entry).');\n              } else {\n                ttContext.functionsUsed[funcId] = true;\n                if (funcId in ttContext.functionsStackDeltas) {\n                  var newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];\n                  if (newStackLength < 0) {\n                    (0, _util.warn)('TT: CALL invalid functions stack delta.');\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  stack.length = newStackLength;\n                } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {\n                  callstack.push({\n                    data: data,\n                    i: i,\n                    stackTop: stack.length - 1\n                  });\n                  functionsCalled.push(funcId);\n                  pc = ttContext.functionsDefined[funcId];\n                  if (!pc) {\n                    (0, _util.warn)('TT: CALL non-existent function');\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  data = pc.data;\n                  i = pc.i;\n                }\n              }\n            }\n          } else if (op === 0x2C && !tooComplexToFollowFunctions) {\n            if (inFDEF || inELSE) {\n              (0, _util.warn)('TT: nested FDEFs not allowed');\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            lastDeff = i;\n            funcId = stack.pop();\n            ttContext.functionsDefined[funcId] = {\n              data: data,\n              i: i\n            };\n          } else if (op === 0x2D) {\n            if (inFDEF) {\n              inFDEF = false;\n              lastEndf = i;\n            } else {\n              pc = callstack.pop();\n              if (!pc) {\n                (0, _util.warn)('TT: ENDF bad stack');\n                ttContext.hintsValid = false;\n                return;\n              }\n              funcId = functionsCalled.pop();\n              data = pc.data;\n              i = pc.i;\n              ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n            }\n          } else if (op === 0x89) {\n            if (inFDEF || inELSE) {\n              (0, _util.warn)('TT: nested IDEFs not allowed');\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            lastDeff = i;\n          } else if (op === 0x58) {\n            ++ifLevel;\n          } else if (op === 0x1B) {\n            inELSE = ifLevel;\n          } else if (op === 0x59) {\n            if (inELSE === ifLevel) {\n              inELSE = 0;\n            }\n            --ifLevel;\n          } else if (op === 0x1C) {\n            if (!inFDEF && !inELSE) {\n              var offset = stack[stack.length - 1];\n              if (offset > 0) {\n                i += offset - 1;\n              }\n            }\n          }\n          if (!inFDEF && !inELSE) {\n            var stackDelta = op <= 0x8E ? TTOpsStackDeltas[op] : op >= 0xC0 && op <= 0xDF ? -1 : op >= 0xE0 ? -2 : 0;\n            if (op >= 0x71 && op <= 0x75) {\n              n = stack.pop();\n              if (!isNaN(n)) {\n                stackDelta = -n * 2;\n              }\n            }\n            while (stackDelta < 0 && stack.length > 0) {\n              stack.pop();\n              stackDelta++;\n            }\n            while (stackDelta > 0) {\n              stack.push(NaN);\n              stackDelta--;\n            }\n          }\n        }\n        ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n        var content = [data];\n        if (i > data.length) {\n          content.push(new Uint8Array(i - data.length));\n        }\n        if (lastDeff > lastEndf) {\n          (0, _util.warn)('TT: complementing a missing function tail');\n          content.push(new Uint8Array([0x22, 0x2D]));\n        }\n        foldTTTable(table, content);\n      }\n      function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n        if (ttContext.tooComplexToFollowFunctions) {\n          return;\n        }\n        if (ttContext.functionsDefined.length > maxFunctionDefs) {\n          (0, _util.warn)('TT: more functions defined than expected');\n          ttContext.hintsValid = false;\n          return;\n        }\n        for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n          if (j > maxFunctionDefs) {\n            (0, _util.warn)('TT: invalid function id: ' + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n          if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n            (0, _util.warn)('TT: undefined function: ' + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n        }\n      }\n      function foldTTTable(table, content) {\n        if (content.length > 1) {\n          var newLength = 0;\n          var j, jj;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            newLength += content[j].length;\n          }\n          newLength = newLength + 3 & ~3;\n          var result = new Uint8Array(newLength);\n          var pos = 0;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            result.set(content[j], pos);\n            pos += content[j].length;\n          }\n          table.data = result;\n          table.length = newLength;\n        }\n      }\n      function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n        var ttContext = {\n          functionsDefined: [],\n          functionsUsed: [],\n          functionsStackDeltas: [],\n          tooComplexToFollowFunctions: false,\n          hintsValid: true\n        };\n        if (fpgm) {\n          sanitizeTTProgram(fpgm, ttContext);\n        }\n        if (prep) {\n          sanitizeTTProgram(prep, ttContext);\n        }\n        if (fpgm) {\n          checkInvalidFunctions(ttContext, maxFunctionDefs);\n        }\n        if (cvt && cvt.length & 1) {\n          var cvtData = new Uint8Array(cvt.length + 1);\n          cvtData.set(cvt.data);\n          cvt.data = cvtData;\n        }\n        return ttContext.hintsValid;\n      }\n      font = new _stream.Stream(new Uint8Array(font.getBytes()));\n      var header = void 0,\n          tables = void 0;\n      if (isTrueTypeCollectionFile(font)) {\n        var ttcData = readTrueTypeCollectionData(font, this.name);\n        header = ttcData.header;\n        tables = ttcData.tables;\n      } else {\n        header = readOpenTypeHeader(font);\n        tables = readTables(font, header.numTables);\n      }\n      var cff = void 0,\n          cffFile = void 0;\n      var isTrueType = !tables['CFF '];\n      if (!isTrueType) {\n        var isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || !(properties.cMap instanceof _cmap.IdentityCMap));\n        if (header.version === 'OTTO' && !isComposite || !tables['head'] || !tables['hhea'] || !tables['maxp'] || !tables['post']) {\n          cffFile = new _stream.Stream(tables['CFF '].data);\n          cff = new CFFFont(cffFile, properties);\n          adjustWidths(properties);\n          return this.convert(name, cff, properties);\n        }\n        delete tables['glyf'];\n        delete tables['loca'];\n        delete tables['fpgm'];\n        delete tables['prep'];\n        delete tables['cvt '];\n        this.isOpenType = true;\n      } else {\n        if (!tables['loca']) {\n          throw new _util.FormatError('Required \"loca\" table is not found');\n        }\n        if (!tables['glyf']) {\n          (0, _util.warn)('Required \"glyf\" table is not found -- trying to recover.');\n          tables['glyf'] = {\n            tag: 'glyf',\n            data: new Uint8Array(0)\n          };\n        }\n        this.isOpenType = false;\n      }\n      if (!tables['maxp']) {\n        throw new _util.FormatError('Required \"maxp\" table is not found');\n      }\n      font.pos = (font.start || 0) + tables['maxp'].offset;\n      var version = font.getInt32();\n      var numGlyphs = font.getUint16();\n      var numGlyphsOut = numGlyphs + 1;\n      var dupFirstEntry = true;\n      if (numGlyphsOut > 0xFFFF) {\n        dupFirstEntry = false;\n        numGlyphsOut = numGlyphs;\n        (0, _util.warn)('Not enough space in glyfs to duplicate first glyph.');\n      }\n      var maxFunctionDefs = 0;\n      var maxSizeOfInstructions = 0;\n      if (version >= 0x00010000 && tables['maxp'].length >= 22) {\n        font.pos += 8;\n        var maxZones = font.getUint16();\n        if (maxZones > 2) {\n          tables['maxp'].data[14] = 0;\n          tables['maxp'].data[15] = 2;\n        }\n        font.pos += 4;\n        maxFunctionDefs = font.getUint16();\n        font.pos += 4;\n        maxSizeOfInstructions = font.getUint16();\n      }\n      tables['maxp'].data[4] = numGlyphsOut >> 8;\n      tables['maxp'].data[5] = numGlyphsOut & 255;\n      var hintsValid = sanitizeTTPrograms(tables['fpgm'], tables['prep'], tables['cvt '], maxFunctionDefs);\n      if (!hintsValid) {\n        delete tables['fpgm'];\n        delete tables['prep'];\n        delete tables['cvt '];\n      }\n      sanitizeMetrics(font, tables['hhea'], tables['hmtx'], numGlyphsOut);\n      if (!tables['head']) {\n        throw new _util.FormatError('Required \"head\" table is not found');\n      }\n      sanitizeHead(tables['head'], numGlyphs, isTrueType ? tables['loca'].length : 0);\n      var missingGlyphs = Object.create(null);\n      if (isTrueType) {\n        var isGlyphLocationsLong = int16(tables['head'].data[50], tables['head'].data[51]);\n        var glyphsInfo = sanitizeGlyphLocations(tables['loca'], tables['glyf'], numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions);\n        missingGlyphs = glyphsInfo.missingGlyphs;\n        if (version >= 0x00010000 && tables['maxp'].length >= 22) {\n          tables['maxp'].data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n          tables['maxp'].data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n        }\n      }\n      if (!tables['hhea']) {\n        throw new _util.FormatError('Required \"hhea\" table is not found');\n      }\n      if (tables['hhea'].data[10] === 0 && tables['hhea'].data[11] === 0) {\n        tables['hhea'].data[10] = 0xFF;\n        tables['hhea'].data[11] = 0xFF;\n      }\n      var metricsOverride = {\n        unitsPerEm: int16(tables['head'].data[18], tables['head'].data[19]),\n        yMax: int16(tables['head'].data[42], tables['head'].data[43]),\n        yMin: signedInt16(tables['head'].data[38], tables['head'].data[39]),\n        ascent: int16(tables['hhea'].data[4], tables['hhea'].data[5]),\n        descent: signedInt16(tables['hhea'].data[6], tables['hhea'].data[7])\n      };\n      this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n      this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n      if (tables['post']) {\n        readPostScriptTable(tables['post'], properties, numGlyphs);\n      }\n      tables['post'] = {\n        tag: 'post',\n        data: createPostTable(properties)\n      };\n      var charCodeToGlyphId = [],\n          charCode;\n      function hasGlyph(glyphId) {\n        return !missingGlyphs[glyphId];\n      }\n      if (properties.composite) {\n        var cidToGidMap = properties.cidToGidMap || [];\n        var isCidToGidMapEmpty = cidToGidMap.length === 0;\n        properties.cMap.forEach(function (charCode, cid) {\n          if (cid > 0xffff) {\n            throw new _util.FormatError('Max size of CID is 65,535');\n          }\n          var glyphId = -1;\n          if (isCidToGidMapEmpty) {\n            glyphId = cid;\n          } else if (cidToGidMap[cid] !== undefined) {\n            glyphId = cidToGidMap[cid];\n          }\n          if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        });\n      } else {\n        var cmapTable = readCmapTable(tables['cmap'], font, this.isSymbolicFont, properties.hasEncoding);\n        var cmapPlatformId = cmapTable.platformId;\n        var cmapEncodingId = cmapTable.encodingId;\n        var cmapMappings = cmapTable.mappings;\n        var cmapMappingsLength = cmapMappings.length;\n        if (properties.hasEncoding && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0) || cmapPlatformId === -1 && cmapEncodingId === -1 && !!(0, _encodings.getEncoding)(properties.baseEncodingName)) {\n          var baseEncoding = [];\n          if (properties.baseEncodingName === 'MacRomanEncoding' || properties.baseEncodingName === 'WinAnsiEncoding') {\n            baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);\n          }\n          var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n          for (charCode = 0; charCode < 256; charCode++) {\n            var glyphName, standardGlyphName;\n            if (this.differences && charCode in this.differences) {\n              glyphName = this.differences[charCode];\n            } else if (charCode in baseEncoding && baseEncoding[charCode] !== '') {\n              glyphName = baseEncoding[charCode];\n            } else {\n              glyphName = _encodings.StandardEncoding[charCode];\n            }\n            if (!glyphName) {\n              continue;\n            }\n            standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n            var unicodeOrCharCode;\n            if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n              unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n            } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n              unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName);\n            }\n            var found = false;\n            for (var i = 0; i < cmapMappingsLength; ++i) {\n              if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n                continue;\n              }\n              charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n              found = true;\n              break;\n            }\n            if (!found && properties.glyphNames) {\n              var glyphId = properties.glyphNames.indexOf(glyphName);\n              if (glyphId === -1 && standardGlyphName !== glyphName) {\n                glyphId = properties.glyphNames.indexOf(standardGlyphName);\n              }\n              if (glyphId > 0 && hasGlyph(glyphId)) {\n                charCodeToGlyphId[charCode] = glyphId;\n              }\n            }\n          }\n        } else if (cmapPlatformId === 0 && cmapEncodingId === 0) {\n          for (var _i = 0; _i < cmapMappingsLength; ++_i) {\n            charCodeToGlyphId[cmapMappings[_i].charCode] = cmapMappings[_i].glyphId;\n          }\n        } else {\n          for (var _i2 = 0; _i2 < cmapMappingsLength; ++_i2) {\n            charCode = cmapMappings[_i2].charCode;\n            if (cmapPlatformId === 3 && charCode >= 0xF000 && charCode <= 0xF0FF) {\n              charCode &= 0xFF;\n            }\n            charCodeToGlyphId[charCode] = cmapMappings[_i2].glyphId;\n          }\n        }\n      }\n      if (charCodeToGlyphId.length === 0) {\n        charCodeToGlyphId[0] = 0;\n      }\n      var glyphZeroId = numGlyphsOut - 1;\n      if (!dupFirstEntry) {\n        glyphZeroId = 0;\n      }\n      var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);\n      this.toFontChar = newMapping.toFontChar;\n      tables['cmap'] = {\n        tag: 'cmap',\n        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut)\n      };\n      if (!tables['OS/2'] || !validateOS2Table(tables['OS/2'])) {\n        tables['OS/2'] = {\n          tag: 'OS/2',\n          data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)\n        };\n      }\n      if (!isTrueType) {\n        try {\n          cffFile = new _stream.Stream(tables['CFF '].data);\n          var parser = new _cff_parser.CFFParser(cffFile, properties, SEAC_ANALYSIS_ENABLED);\n          cff = parser.parse();\n          cff.duplicateFirstGlyph();\n          var compiler = new _cff_parser.CFFCompiler(cff);\n          tables['CFF '].data = compiler.compile();\n        } catch (e) {\n          (0, _util.warn)('Failed to compile font ' + properties.loadedName);\n        }\n      }\n      if (!tables['name']) {\n        tables['name'] = {\n          tag: 'name',\n          data: createNameTable(this.name)\n        };\n      } else {\n        var namePrototype = readNameTable(tables['name']);\n        tables['name'].data = createNameTable(name, namePrototype);\n      }\n      var builder = new OpenTypeFileBuilder(header.version);\n      for (var tableTag in tables) {\n        builder.addTable(tableTag, tables[tableTag].data);\n      }\n      return builder.toArray();\n    },\n    convert: function Font_convert(fontName, font, properties) {\n      properties.fixedPitch = false;\n      if (properties.builtInEncoding) {\n        adjustToUnicode(properties, properties.builtInEncoding);\n      }\n      var glyphZeroId = 1;\n      if (font instanceof CFFFont) {\n        glyphZeroId = font.numGlyphs - 1;\n      }\n      var mapping = font.getGlyphMapping(properties);\n      var newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId);\n      this.toFontChar = newMapping.toFontChar;\n      var numGlyphs = font.numGlyphs;\n      function getCharCodes(charCodeToGlyphId, glyphId) {\n        var charCodes = null;\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            if (!charCodes) {\n              charCodes = [];\n            }\n            charCodes.push(charCode | 0);\n          }\n        }\n        return charCodes;\n      }\n      function createCharCode(charCodeToGlyphId, glyphId) {\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            return charCode | 0;\n          }\n        }\n        newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;\n        return newMapping.nextAvailableFontCharCode++;\n      }\n      var seacs = font.seacs;\n      if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n        var matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n        var charset = font.getCharset();\n        var seacMap = Object.create(null);\n        for (var glyphId in seacs) {\n          glyphId |= 0;\n          var seac = seacs[glyphId];\n          var baseGlyphName = _encodings.StandardEncoding[seac[2]];\n          var accentGlyphName = _encodings.StandardEncoding[seac[3]];\n          var baseGlyphId = charset.indexOf(baseGlyphName);\n          var accentGlyphId = charset.indexOf(accentGlyphName);\n          if (baseGlyphId < 0 || accentGlyphId < 0) {\n            continue;\n          }\n          var accentOffset = {\n            x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n            y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]\n          };\n          var charCodes = getCharCodes(mapping, glyphId);\n          if (!charCodes) {\n            continue;\n          }\n          for (var i = 0, ii = charCodes.length; i < ii; i++) {\n            var charCode = charCodes[i];\n            var charCodeToGlyphId = newMapping.charCodeToGlyphId;\n            var baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);\n            var accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);\n            seacMap[charCode] = {\n              baseFontCharCode: baseFontCharCode,\n              accentFontCharCode: accentFontCharCode,\n              accentOffset: accentOffset\n            };\n          }\n        }\n        properties.seacMap = seacMap;\n      }\n      var unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];\n      var builder = new OpenTypeFileBuilder('\\x4F\\x54\\x54\\x4F');\n      builder.addTable('CFF ', font.data);\n      builder.addTable('OS/2', createOS2Table(properties, newMapping.charCodeToGlyphId));\n      builder.addTable('cmap', createCmapTable(newMapping.charCodeToGlyphId, numGlyphs));\n      builder.addTable('head', '\\x00\\x01\\x00\\x00' + '\\x00\\x00\\x10\\x00' + '\\x00\\x00\\x00\\x00' + '\\x5F\\x0F\\x3C\\xF5' + '\\x00\\x00' + safeString16(unitsPerEm) + '\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27' + '\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27' + '\\x00\\x00' + safeString16(properties.descent) + '\\x0F\\xFF' + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + '\\x00\\x11' + '\\x00\\x00' + '\\x00\\x00' + '\\x00\\x00');\n      builder.addTable('hhea', '\\x00\\x01\\x00\\x00' + safeString16(properties.ascent) + safeString16(properties.descent) + '\\x00\\x00' + '\\xFF\\xFF' + '\\x00\\x00' + '\\x00\\x00' + '\\x00\\x00' + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + '\\x00\\x00' + '\\x00\\x00' + '\\x00\\x00' + '\\x00\\x00' + '\\x00\\x00' + '\\x00\\x00' + string16(numGlyphs));\n      builder.addTable('hmtx', function fontFieldsHmtx() {\n        var charstrings = font.charstrings;\n        var cffWidths = font.cff ? font.cff.widths : null;\n        var hmtx = '\\x00\\x00\\x00\\x00';\n        for (var i = 1, ii = numGlyphs; i < ii; i++) {\n          var width = 0;\n          if (charstrings) {\n            var charstring = charstrings[i - 1];\n            width = 'width' in charstring ? charstring.width : 0;\n          } else if (cffWidths) {\n            width = Math.ceil(cffWidths[i] || 0);\n          }\n          hmtx += string16(width) + string16(0);\n        }\n        return hmtx;\n      }());\n      builder.addTable('maxp', '\\x00\\x00\\x50\\x00' + string16(numGlyphs));\n      builder.addTable('name', createNameTable(fontName));\n      builder.addTable('post', createPostTable(properties));\n      return builder.toArray();\n    },\n    get spaceWidth() {\n      if ('_shadowWidth' in this) {\n        return this._shadowWidth;\n      }\n      var possibleSpaceReplacements = ['space', 'minus', 'one', 'i', 'I'];\n      var width;\n      for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n        var glyphName = possibleSpaceReplacements[i];\n        if (glyphName in this.widths) {\n          width = this.widths[glyphName];\n          break;\n        }\n        var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n        var glyphUnicode = glyphsUnicodeMap[glyphName];\n        var charcode = 0;\n        if (this.composite) {\n          if (this.cMap.contains(glyphUnicode)) {\n            charcode = this.cMap.lookup(glyphUnicode);\n          }\n        }\n        if (!charcode && this.toUnicode) {\n          charcode = this.toUnicode.charCodeOf(glyphUnicode);\n        }\n        if (charcode <= 0) {\n          charcode = glyphUnicode;\n        }\n        width = this.widths[charcode];\n        if (width) {\n          break;\n        }\n      }\n      width = width || this.defaultWidth;\n      this._shadowWidth = width;\n      return width;\n    },\n    charToGlyph: function Font_charToGlyph(charcode, isSpace) {\n      var fontCharCode, width, operatorListId;\n      var widthCode = charcode;\n      if (this.cMap && this.cMap.contains(charcode)) {\n        widthCode = this.cMap.lookup(charcode);\n      }\n      width = this.widths[widthCode];\n      width = (0, _util.isNum)(width) ? width : this.defaultWidth;\n      var vmetric = this.vmetrics && this.vmetrics[widthCode];\n      var unicode = this.toUnicode.get(charcode) || this.fallbackToUnicode.get(charcode) || charcode;\n      if (typeof unicode === 'number') {\n        unicode = String.fromCharCode(unicode);\n      }\n      var isInFont = charcode in this.toFontChar;\n      fontCharCode = this.toFontChar[charcode] || charcode;\n      if (this.missingFile) {\n        fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode);\n      }\n      if (this.isType3Font) {\n        operatorListId = fontCharCode;\n      }\n      var accent = null;\n      if (this.seacMap && this.seacMap[charcode]) {\n        isInFont = true;\n        var seac = this.seacMap[charcode];\n        fontCharCode = seac.baseFontCharCode;\n        accent = {\n          fontChar: String.fromCodePoint(seac.accentFontCharCode),\n          offset: seac.accentOffset\n        };\n      }\n      var fontChar = typeof fontCharCode === 'number' ? String.fromCodePoint(fontCharCode) : '';\n      var glyph = this.glyphCache[charcode];\n      if (!glyph || !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont)) {\n        glyph = new Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);\n        this.glyphCache[charcode] = glyph;\n      }\n      return glyph;\n    },\n    charsToGlyphs: function Font_charsToGlyphs(chars) {\n      var charsCache = this.charsCache;\n      var glyphs, glyph, charcode;\n      if (charsCache) {\n        glyphs = charsCache[chars];\n        if (glyphs) {\n          return glyphs;\n        }\n      }\n      if (!charsCache) {\n        charsCache = this.charsCache = Object.create(null);\n      }\n      glyphs = [];\n      var charsCacheKey = chars;\n      var i = 0,\n          ii;\n      if (this.cMap) {\n        var c = Object.create(null);\n        while (i < chars.length) {\n          this.cMap.readCharCode(chars, i, c);\n          charcode = c.charcode;\n          var length = c.length;\n          i += length;\n          var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;\n          glyph = this.charToGlyph(charcode, isSpace);\n          glyphs.push(glyph);\n        }\n      } else {\n        for (i = 0, ii = chars.length; i < ii; ++i) {\n          charcode = chars.charCodeAt(i);\n          glyph = this.charToGlyph(charcode, charcode === 0x20);\n          glyphs.push(glyph);\n        }\n      }\n      return charsCache[charsCacheKey] = glyphs;\n    }\n  };\n  return Font;\n}();\nvar ErrorFont = function ErrorFontClosure() {\n  function ErrorFont(error) {\n    this.error = error;\n    this.loadedName = 'g_font_error';\n    this.missingFile = true;\n  }\n  ErrorFont.prototype = {\n    charsToGlyphs: function ErrorFont_charsToGlyphs() {\n      return [];\n    },\n    exportData: function ErrorFont_exportData() {\n      return { error: this.error };\n    }\n  };\n  return ErrorFont;\n}();\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n  var charCodeToGlyphId = Object.create(null);\n  var glyphId, charCode, baseEncoding;\n  var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n  if (properties.baseEncodingName) {\n    baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0;\n      }\n    }\n  } else if (isSymbolicFont) {\n    for (charCode in builtInEncoding) {\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n    }\n  } else {\n    baseEncoding = _encodings.StandardEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0;\n      }\n    }\n  }\n  var differences = properties.differences,\n      glyphsUnicodeMap;\n  if (differences) {\n    for (charCode in differences) {\n      var glyphName = differences[charCode];\n      glyphId = glyphNames.indexOf(glyphName);\n      if (glyphId === -1) {\n        if (!glyphsUnicodeMap) {\n          glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n        }\n        var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n        if (standardGlyphName !== glyphName) {\n          glyphId = glyphNames.indexOf(standardGlyphName);\n        }\n      }\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0;\n      }\n    }\n  }\n  return charCodeToGlyphId;\n}\nvar Type1Font = function Type1FontClosure() {\n  function findBlock(streamBytes, signature, startIndex) {\n    var streamBytesLength = streamBytes.length;\n    var signatureLength = signature.length;\n    var scanLength = streamBytesLength - signatureLength;\n    var i = startIndex,\n        j,\n        found = false;\n    while (i < scanLength) {\n      j = 0;\n      while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        i += j;\n        while (i < streamBytesLength && (0, _util.isSpace)(streamBytes[i])) {\n          i++;\n        }\n        found = true;\n        break;\n      }\n      i++;\n    }\n    return {\n      found: found,\n      length: i\n    };\n  }\n  function getHeaderBlock(stream, suggestedLength) {\n    var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n    var streamStartPos = stream.pos;\n    var headerBytes, headerBytesLength, block;\n    try {\n      headerBytes = stream.getBytes(suggestedLength);\n      headerBytesLength = headerBytes.length;\n    } catch (ex) {\n      if (ex instanceof _util.MissingDataException) {\n        throw ex;\n      }\n    }\n    if (headerBytesLength === suggestedLength) {\n      block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length);\n      if (block.found && block.length === suggestedLength) {\n        return {\n          stream: new _stream.Stream(headerBytes),\n          length: suggestedLength\n        };\n      }\n    }\n    (0, _util.warn)('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n    stream.pos = streamStartPos;\n    var SCAN_BLOCK_LENGTH = 2048;\n    var actualLength;\n    while (true) {\n      var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n      if (block.length === 0) {\n        break;\n      }\n      stream.pos += block.length;\n      if (block.found) {\n        actualLength = stream.pos - streamStartPos;\n        break;\n      }\n    }\n    stream.pos = streamStartPos;\n    if (actualLength) {\n      return {\n        stream: new _stream.Stream(stream.getBytes(actualLength)),\n        length: actualLength\n      };\n    }\n    (0, _util.warn)('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n    return {\n      stream: new _stream.Stream(stream.getBytes(suggestedLength)),\n      length: suggestedLength\n    };\n  }\n  function getEexecBlock(stream, suggestedLength) {\n    var eexecBytes = stream.getBytes();\n    return {\n      stream: new _stream.Stream(eexecBytes),\n      length: eexecBytes.length\n    };\n  }\n  function Type1Font(name, file, properties) {\n    var PFB_HEADER_SIZE = 6;\n    var headerBlockLength = properties.length1;\n    var eexecBlockLength = properties.length2;\n    var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n    var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n    if (pfbHeaderPresent) {\n      file.skip(PFB_HEADER_SIZE);\n      headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n    }\n    var headerBlock = getHeaderBlock(file, headerBlockLength);\n    var headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED);\n    headerBlockParser.extractFontHeader(properties);\n    if (pfbHeaderPresent) {\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n      eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n    }\n    var eexecBlock = getEexecBlock(file, eexecBlockLength);\n    var eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED);\n    var data = eexecBlockParser.extractFontProgram();\n    for (var info in data.properties) {\n      properties[info] = data.properties[info];\n    }\n    var charstrings = data.charstrings;\n    var type2Charstrings = this.getType2Charstrings(charstrings);\n    var subrs = this.getType2Subrs(data.subrs);\n    this.charstrings = charstrings;\n    this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties);\n    this.seacs = this.getSeacs(data.charstrings);\n  }\n  Type1Font.prototype = {\n    get numGlyphs() {\n      return this.charstrings.length + 1;\n    },\n    getCharset: function Type1Font_getCharset() {\n      var charset = ['.notdef'];\n      var charstrings = this.charstrings;\n      for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        charset.push(charstrings[glyphId].glyphName);\n      }\n      return charset;\n    },\n    getGlyphMapping: function Type1Font_getGlyphMapping(properties) {\n      var charstrings = this.charstrings;\n      var glyphNames = ['.notdef'],\n          glyphId;\n      for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        glyphNames.push(charstrings[glyphId].glyphName);\n      }\n      var encoding = properties.builtInEncoding;\n      if (encoding) {\n        var builtInEncoding = Object.create(null);\n        for (var charCode in encoding) {\n          glyphId = glyphNames.indexOf(encoding[charCode]);\n          if (glyphId >= 0) {\n            builtInEncoding[charCode] = glyphId;\n          }\n        }\n      }\n      return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n    },\n    hasGlyphId: function Type1Font_hasGlyphID(id) {\n      if (id < 0 || id >= this.numGlyphs) {\n        return false;\n      }\n      if (id === 0) {\n        return true;\n      }\n      var glyph = this.charstrings[id - 1];\n      return glyph.charstring.length > 0;\n    },\n    getSeacs: function Type1Font_getSeacs(charstrings) {\n      var i, ii;\n      var seacMap = [];\n      for (i = 0, ii = charstrings.length; i < ii; i++) {\n        var charstring = charstrings[i];\n        if (charstring.seac) {\n          seacMap[i + 1] = charstring.seac;\n        }\n      }\n      return seacMap;\n    },\n    getType2Charstrings: function Type1Font_getType2Charstrings(type1Charstrings) {\n      var type2Charstrings = [];\n      for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {\n        type2Charstrings.push(type1Charstrings[i].charstring);\n      }\n      return type2Charstrings;\n    },\n    getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {\n      var bias = 0;\n      var count = type1Subrs.length;\n      if (count < 1133) {\n        bias = 107;\n      } else if (count < 33769) {\n        bias = 1131;\n      } else {\n        bias = 32768;\n      }\n      var type2Subrs = [];\n      var i;\n      for (i = 0; i < bias; i++) {\n        type2Subrs.push([0x0B]);\n      }\n      for (i = 0; i < count; i++) {\n        type2Subrs.push(type1Subrs[i]);\n      }\n      return type2Subrs;\n    },\n    wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) {\n      var cff = new _cff_parser.CFF();\n      cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4);\n      cff.names = [name];\n      var topDict = new _cff_parser.CFFTopDict();\n      topDict.setByName('version', 391);\n      topDict.setByName('Notice', 392);\n      topDict.setByName('FullName', 393);\n      topDict.setByName('FamilyName', 394);\n      topDict.setByName('Weight', 395);\n      topDict.setByName('Encoding', null);\n      topDict.setByName('FontMatrix', properties.fontMatrix);\n      topDict.setByName('FontBBox', properties.bbox);\n      topDict.setByName('charset', null);\n      topDict.setByName('CharStrings', null);\n      topDict.setByName('Private', null);\n      cff.topDict = topDict;\n      var strings = new _cff_parser.CFFStrings();\n      strings.add('Version 0.11');\n      strings.add('See original notice');\n      strings.add(name);\n      strings.add(name);\n      strings.add('Medium');\n      cff.strings = strings;\n      cff.globalSubrIndex = new _cff_parser.CFFIndex();\n      var count = glyphs.length;\n      var charsetArray = [0];\n      var i, ii;\n      for (i = 0; i < count; i++) {\n        var index = _cff_parser.CFFStandardStrings.indexOf(charstrings[i].glyphName);\n        if (index === -1) {\n          index = 0;\n        }\n        charsetArray.push(index >> 8 & 0xff, index & 0xff);\n      }\n      cff.charset = new _cff_parser.CFFCharset(false, 0, [], charsetArray);\n      var charStringsIndex = new _cff_parser.CFFIndex();\n      charStringsIndex.add([0x8B, 0x0E]);\n      for (i = 0; i < count; i++) {\n        charStringsIndex.add(glyphs[i]);\n      }\n      cff.charStrings = charStringsIndex;\n      var privateDict = new _cff_parser.CFFPrivateDict();\n      privateDict.setByName('Subrs', null);\n      var fields = ['BlueValues', 'OtherBlues', 'FamilyBlues', 'FamilyOtherBlues', 'StemSnapH', 'StemSnapV', 'BlueShift', 'BlueFuzz', 'BlueScale', 'LanguageGroup', 'ExpansionFactor', 'ForceBold', 'StdHW', 'StdVW'];\n      for (i = 0, ii = fields.length; i < ii; i++) {\n        var field = fields[i];\n        if (!(field in properties.privateData)) {\n          continue;\n        }\n        var value = properties.privateData[field];\n        if (Array.isArray(value)) {\n          for (var j = value.length - 1; j > 0; j--) {\n            value[j] -= value[j - 1];\n          }\n        }\n        privateDict.setByName(field, value);\n      }\n      cff.topDict.privateDict = privateDict;\n      var subrIndex = new _cff_parser.CFFIndex();\n      for (i = 0, ii = subrs.length; i < ii; i++) {\n        subrIndex.add(subrs[i]);\n      }\n      privateDict.subrsIndex = subrIndex;\n      var compiler = new _cff_parser.CFFCompiler(cff);\n      return compiler.compile();\n    }\n  };\n  return Type1Font;\n}();\nvar CFFFont = function CFFFontClosure() {\n  function CFFFont(file, properties) {\n    this.properties = properties;\n    var parser = new _cff_parser.CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n    this.cff = parser.parse();\n    this.cff.duplicateFirstGlyph();\n    var compiler = new _cff_parser.CFFCompiler(this.cff);\n    this.seacs = this.cff.seacs;\n    try {\n      this.data = compiler.compile();\n    } catch (e) {\n      (0, _util.warn)('Failed to compile font ' + properties.loadedName);\n      this.data = file;\n    }\n  }\n  CFFFont.prototype = {\n    get numGlyphs() {\n      return this.cff.charStrings.count;\n    },\n    getCharset: function CFFFont_getCharset() {\n      return this.cff.charset.charset;\n    },\n    getGlyphMapping: function CFFFont_getGlyphMapping() {\n      var cff = this.cff;\n      var properties = this.properties;\n      var charsets = cff.charset.charset;\n      var charCodeToGlyphId;\n      var glyphId;\n      if (properties.composite) {\n        charCodeToGlyphId = Object.create(null);\n        if (cff.isCIDFont) {\n          for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n            var cid = charsets[glyphId];\n            var charCode = properties.cMap.charCodeOf(cid);\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        } else {\n          for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n            charCodeToGlyphId[glyphId] = glyphId;\n          }\n        }\n        return charCodeToGlyphId;\n      }\n      var encoding = cff.encoding ? cff.encoding.encoding : null;\n      charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n      return charCodeToGlyphId;\n    },\n    hasGlyphId: function CFFFont_hasGlyphID(id) {\n      return this.cff.hasGlyphId(id);\n    }\n  };\n  return CFFFont;\n}();\nexports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED;\nexports.ErrorFont = ErrorFont;\nexports.Font = Font;\nexports.FontFlags = FontFlags;\nexports.ToUnicodeMap = ToUnicodeMap;\nexports.IdentityToUnicodeMap = IdentityToUnicodeMap;\nexports.getFontType = getFontType;\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CFFFDSelect = exports.CFFCompiler = exports.CFFPrivateDict = exports.CFFTopDict = exports.CFFCharset = exports.CFFIndex = exports.CFFStrings = exports.CFFHeader = exports.CFF = exports.CFFParser = exports.CFFStandardStrings = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _charsets = __w_pdfjs_require__(158);\n\nvar _encodings = __w_pdfjs_require__(159);\n\nvar MAX_SUBR_NESTING = 10;\nvar CFFStandardStrings = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003', 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'];\nvar CFFParser = function CFFParserClosure() {\n  var CharstringValidationData = [null, {\n    id: 'hstem',\n    min: 2,\n    stackClearing: true,\n    stem: true\n  }, null, {\n    id: 'vstem',\n    min: 2,\n    stackClearing: true,\n    stem: true\n  }, {\n    id: 'vmoveto',\n    min: 1,\n    stackClearing: true\n  }, {\n    id: 'rlineto',\n    min: 2,\n    resetStack: true\n  }, {\n    id: 'hlineto',\n    min: 1,\n    resetStack: true\n  }, {\n    id: 'vlineto',\n    min: 1,\n    resetStack: true\n  }, {\n    id: 'rrcurveto',\n    min: 6,\n    resetStack: true\n  }, null, {\n    id: 'callsubr',\n    min: 1,\n    undefStack: true\n  }, {\n    id: 'return',\n    min: 0,\n    undefStack: true\n  }, null, null, {\n    id: 'endchar',\n    min: 0,\n    stackClearing: true\n  }, null, null, null, {\n    id: 'hstemhm',\n    min: 2,\n    stackClearing: true,\n    stem: true\n  }, {\n    id: 'hintmask',\n    min: 0,\n    stackClearing: true\n  }, {\n    id: 'cntrmask',\n    min: 0,\n    stackClearing: true\n  }, {\n    id: 'rmoveto',\n    min: 2,\n    stackClearing: true\n  }, {\n    id: 'hmoveto',\n    min: 1,\n    stackClearing: true\n  }, {\n    id: 'vstemhm',\n    min: 2,\n    stackClearing: true,\n    stem: true\n  }, {\n    id: 'rcurveline',\n    min: 8,\n    resetStack: true\n  }, {\n    id: 'rlinecurve',\n    min: 8,\n    resetStack: true\n  }, {\n    id: 'vvcurveto',\n    min: 4,\n    resetStack: true\n  }, {\n    id: 'hhcurveto',\n    min: 4,\n    resetStack: true\n  }, null, {\n    id: 'callgsubr',\n    min: 1,\n    undefStack: true\n  }, {\n    id: 'vhcurveto',\n    min: 4,\n    resetStack: true\n  }, {\n    id: 'hvcurveto',\n    min: 4,\n    resetStack: true\n  }];\n  var CharstringValidationData12 = [null, null, null, {\n    id: 'and',\n    min: 2,\n    stackDelta: -1\n  }, {\n    id: 'or',\n    min: 2,\n    stackDelta: -1\n  }, {\n    id: 'not',\n    min: 1,\n    stackDelta: 0\n  }, null, null, null, {\n    id: 'abs',\n    min: 1,\n    stackDelta: 0\n  }, {\n    id: 'add',\n    min: 2,\n    stackDelta: -1,\n    stackFn: function stack_div(stack, index) {\n      stack[index - 2] = stack[index - 2] + stack[index - 1];\n    }\n  }, {\n    id: 'sub',\n    min: 2,\n    stackDelta: -1,\n    stackFn: function stack_div(stack, index) {\n      stack[index - 2] = stack[index - 2] - stack[index - 1];\n    }\n  }, {\n    id: 'div',\n    min: 2,\n    stackDelta: -1,\n    stackFn: function stack_div(stack, index) {\n      stack[index - 2] = stack[index - 2] / stack[index - 1];\n    }\n  }, null, {\n    id: 'neg',\n    min: 1,\n    stackDelta: 0,\n    stackFn: function stack_div(stack, index) {\n      stack[index - 1] = -stack[index - 1];\n    }\n  }, {\n    id: 'eq',\n    min: 2,\n    stackDelta: -1\n  }, null, null, {\n    id: 'drop',\n    min: 1,\n    stackDelta: -1\n  }, null, {\n    id: 'put',\n    min: 2,\n    stackDelta: -2\n  }, {\n    id: 'get',\n    min: 1,\n    stackDelta: 0\n  }, {\n    id: 'ifelse',\n    min: 4,\n    stackDelta: -3\n  }, {\n    id: 'random',\n    min: 0,\n    stackDelta: 1\n  }, {\n    id: 'mul',\n    min: 2,\n    stackDelta: -1,\n    stackFn: function stack_div(stack, index) {\n      stack[index - 2] = stack[index - 2] * stack[index - 1];\n    }\n  }, null, {\n    id: 'sqrt',\n    min: 1,\n    stackDelta: 0\n  }, {\n    id: 'dup',\n    min: 1,\n    stackDelta: 1\n  }, {\n    id: 'exch',\n    min: 2,\n    stackDelta: 0\n  }, {\n    id: 'index',\n    min: 2,\n    stackDelta: 0\n  }, {\n    id: 'roll',\n    min: 3,\n    stackDelta: -2\n  }, null, null, null, {\n    id: 'hflex',\n    min: 7,\n    resetStack: true\n  }, {\n    id: 'flex',\n    min: 13,\n    resetStack: true\n  }, {\n    id: 'hflex1',\n    min: 9,\n    resetStack: true\n  }, {\n    id: 'flex1',\n    min: 11,\n    resetStack: true\n  }];\n  function CFFParser(file, properties, seacAnalysisEnabled) {\n    this.bytes = file.getBytes();\n    this.properties = properties;\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n  }\n  CFFParser.prototype = {\n    parse: function CFFParser_parse() {\n      var properties = this.properties;\n      var cff = new CFF();\n      this.cff = cff;\n      var header = this.parseHeader();\n      var nameIndex = this.parseIndex(header.endPos);\n      var topDictIndex = this.parseIndex(nameIndex.endPos);\n      var stringIndex = this.parseIndex(topDictIndex.endPos);\n      var globalSubrIndex = this.parseIndex(stringIndex.endPos);\n      var topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n      var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n      cff.header = header.obj;\n      cff.names = this.parseNameIndex(nameIndex.obj);\n      cff.strings = this.parseStringIndex(stringIndex.obj);\n      cff.topDict = topDict;\n      cff.globalSubrIndex = globalSubrIndex.obj;\n      this.parsePrivateDict(cff.topDict);\n      cff.isCIDFont = topDict.hasName('ROS');\n      var charStringOffset = topDict.getByName('CharStrings');\n      var charStringIndex = this.parseIndex(charStringOffset).obj;\n      var fontMatrix = topDict.getByName('FontMatrix');\n      if (fontMatrix) {\n        properties.fontMatrix = fontMatrix;\n      }\n      var fontBBox = topDict.getByName('FontBBox');\n      if (fontBBox) {\n        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n        properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n        properties.ascentScaled = true;\n      }\n      var charset, encoding;\n      if (cff.isCIDFont) {\n        var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj;\n        for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n          var dictRaw = fdArrayIndex.get(i);\n          var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);\n          this.parsePrivateDict(fontDict);\n          cff.fdArray.push(fontDict);\n        }\n        encoding = null;\n        charset = this.parseCharsets(topDict.getByName('charset'), charStringIndex.count, cff.strings, true);\n        cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'), charStringIndex.count);\n      } else {\n        charset = this.parseCharsets(topDict.getByName('charset'), charStringIndex.count, cff.strings, false);\n        encoding = this.parseEncoding(topDict.getByName('Encoding'), properties, cff.strings, charset.charset);\n      }\n      cff.charset = charset;\n      cff.encoding = encoding;\n      var charStringsAndSeacs = this.parseCharStrings({\n        charStrings: charStringIndex,\n        localSubrIndex: topDict.privateDict.subrsIndex,\n        globalSubrIndex: globalSubrIndex.obj,\n        fdSelect: cff.fdSelect,\n        fdArray: cff.fdArray,\n        privateDict: topDict.privateDict\n      });\n      cff.charStrings = charStringsAndSeacs.charStrings;\n      cff.seacs = charStringsAndSeacs.seacs;\n      cff.widths = charStringsAndSeacs.widths;\n      return cff;\n    },\n    parseHeader: function CFFParser_parseHeader() {\n      var bytes = this.bytes;\n      var bytesLength = bytes.length;\n      var offset = 0;\n      while (offset < bytesLength && bytes[offset] !== 1) {\n        ++offset;\n      }\n      if (offset >= bytesLength) {\n        throw new _util.FormatError('Invalid CFF header');\n      }\n      if (offset !== 0) {\n        (0, _util.info)('cff data is shifted');\n        bytes = bytes.subarray(offset);\n        this.bytes = bytes;\n      }\n      var major = bytes[0];\n      var minor = bytes[1];\n      var hdrSize = bytes[2];\n      var offSize = bytes[3];\n      var header = new CFFHeader(major, minor, hdrSize, offSize);\n      return {\n        obj: header,\n        endPos: hdrSize\n      };\n    },\n    parseDict: function CFFParser_parseDict(dict) {\n      var pos = 0;\n      function parseOperand() {\n        var value = dict[pos++];\n        if (value === 30) {\n          return parseFloatOperand();\n        } else if (value === 28) {\n          value = dict[pos++];\n          value = (value << 24 | dict[pos++] << 16) >> 16;\n          return value;\n        } else if (value === 29) {\n          value = dict[pos++];\n          value = value << 8 | dict[pos++];\n          value = value << 8 | dict[pos++];\n          value = value << 8 | dict[pos++];\n          return value;\n        } else if (value >= 32 && value <= 246) {\n          return value - 139;\n        } else if (value >= 247 && value <= 250) {\n          return (value - 247) * 256 + dict[pos++] + 108;\n        } else if (value >= 251 && value <= 254) {\n          return -((value - 251) * 256) - dict[pos++] - 108;\n        }\n        (0, _util.warn)('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n        return NaN;\n      }\n      function parseFloatOperand() {\n        var str = '';\n        var eof = 15;\n        var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-'];\n        var length = dict.length;\n        while (pos < length) {\n          var b = dict[pos++];\n          var b1 = b >> 4;\n          var b2 = b & 15;\n          if (b1 === eof) {\n            break;\n          }\n          str += lookup[b1];\n          if (b2 === eof) {\n            break;\n          }\n          str += lookup[b2];\n        }\n        return parseFloat(str);\n      }\n      var operands = [];\n      var entries = [];\n      pos = 0;\n      var end = dict.length;\n      while (pos < end) {\n        var b = dict[pos];\n        if (b <= 21) {\n          if (b === 12) {\n            b = b << 8 | dict[++pos];\n          }\n          entries.push([b, operands]);\n          operands = [];\n          ++pos;\n        } else {\n          operands.push(parseOperand());\n        }\n      }\n      return entries;\n    },\n    parseIndex: function CFFParser_parseIndex(pos) {\n      var cffIndex = new CFFIndex();\n      var bytes = this.bytes;\n      var count = bytes[pos++] << 8 | bytes[pos++];\n      var offsets = [];\n      var end = pos;\n      var i, ii;\n      if (count !== 0) {\n        var offsetSize = bytes[pos++];\n        var startPos = pos + (count + 1) * offsetSize - 1;\n        for (i = 0, ii = count + 1; i < ii; ++i) {\n          var offset = 0;\n          for (var j = 0; j < offsetSize; ++j) {\n            offset <<= 8;\n            offset += bytes[pos++];\n          }\n          offsets.push(startPos + offset);\n        }\n        end = offsets[count];\n      }\n      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n        var offsetStart = offsets[i];\n        var offsetEnd = offsets[i + 1];\n        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n      }\n      return {\n        obj: cffIndex,\n        endPos: end\n      };\n    },\n    parseNameIndex: function CFFParser_parseNameIndex(index) {\n      var names = [];\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var name = index.get(i);\n        names.push((0, _util.bytesToString)(name));\n      }\n      return names;\n    },\n    parseStringIndex: function CFFParser_parseStringIndex(index) {\n      var strings = new CFFStrings();\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var data = index.get(i);\n        strings.add((0, _util.bytesToString)(data));\n      }\n      return strings;\n    },\n    createDict: function CFFParser_createDict(Type, dict, strings) {\n      var cffDict = new Type(strings);\n      for (var i = 0, ii = dict.length; i < ii; ++i) {\n        var pair = dict[i];\n        var key = pair[0];\n        var value = pair[1];\n        cffDict.setByKey(key, value);\n      }\n      return cffDict;\n    },\n    parseCharString: function CFFParser_parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n      if (!data || state.callDepth > MAX_SUBR_NESTING) {\n        return false;\n      }\n      var stackSize = state.stackSize;\n      var stack = state.stack;\n      var length = data.length;\n      for (var j = 0; j < length;) {\n        var value = data[j++];\n        var validationCommand = null;\n        if (value === 12) {\n          var q = data[j++];\n          if (q === 0) {\n            data[j - 2] = 139;\n            data[j - 1] = 22;\n            stackSize = 0;\n          } else {\n            validationCommand = CharstringValidationData12[q];\n          }\n        } else if (value === 28) {\n          stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16;\n          j += 2;\n          stackSize++;\n        } else if (value === 14) {\n          if (stackSize >= 4) {\n            stackSize -= 4;\n            if (this.seacAnalysisEnabled) {\n              state.seac = stack.slice(stackSize, stackSize + 4);\n              return false;\n            }\n          }\n          validationCommand = CharstringValidationData[value];\n        } else if (value >= 32 && value <= 246) {\n          stack[stackSize] = value - 139;\n          stackSize++;\n        } else if (value >= 247 && value <= 254) {\n          stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108;\n          j++;\n          stackSize++;\n        } else if (value === 255) {\n          stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536;\n          j += 4;\n          stackSize++;\n        } else if (value === 19 || value === 20) {\n          state.hints += stackSize >> 1;\n          j += state.hints + 7 >> 3;\n          stackSize %= 2;\n          validationCommand = CharstringValidationData[value];\n        } else if (value === 10 || value === 29) {\n          var subrsIndex;\n          if (value === 10) {\n            subrsIndex = localSubrIndex;\n          } else {\n            subrsIndex = globalSubrIndex;\n          }\n          if (!subrsIndex) {\n            validationCommand = CharstringValidationData[value];\n            (0, _util.warn)('Missing subrsIndex for ' + validationCommand.id);\n            return false;\n          }\n          var bias = 32768;\n          if (subrsIndex.count < 1240) {\n            bias = 107;\n          } else if (subrsIndex.count < 33900) {\n            bias = 1131;\n          }\n          var subrNumber = stack[--stackSize] + bias;\n          if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {\n            validationCommand = CharstringValidationData[value];\n            (0, _util.warn)('Out of bounds subrIndex for ' + validationCommand.id);\n            return false;\n          }\n          state.stackSize = stackSize;\n          state.callDepth++;\n          var valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);\n          if (!valid) {\n            return false;\n          }\n          state.callDepth--;\n          stackSize = state.stackSize;\n          continue;\n        } else if (value === 11) {\n          state.stackSize = stackSize;\n          return true;\n        } else {\n          validationCommand = CharstringValidationData[value];\n        }\n        if (validationCommand) {\n          if (validationCommand.stem) {\n            state.hints += stackSize >> 1;\n          }\n          if ('min' in validationCommand) {\n            if (!state.undefStack && stackSize < validationCommand.min) {\n              (0, _util.warn)('Not enough parameters for ' + validationCommand.id + '; actual: ' + stackSize + ', expected: ' + validationCommand.min);\n              return false;\n            }\n          }\n          if (state.firstStackClearing && validationCommand.stackClearing) {\n            state.firstStackClearing = false;\n            stackSize -= validationCommand.min;\n            if (stackSize >= 2 && validationCommand.stem) {\n              stackSize %= 2;\n            } else if (stackSize > 1) {\n              (0, _util.warn)('Found too many parameters for stack-clearing command');\n            }\n            if (stackSize > 0 && stack[stackSize - 1] >= 0) {\n              state.width = stack[stackSize - 1];\n            }\n          }\n          if ('stackDelta' in validationCommand) {\n            if ('stackFn' in validationCommand) {\n              validationCommand.stackFn(stack, stackSize);\n            }\n            stackSize += validationCommand.stackDelta;\n          } else if (validationCommand.stackClearing) {\n            stackSize = 0;\n          } else if (validationCommand.resetStack) {\n            stackSize = 0;\n            state.undefStack = false;\n          } else if (validationCommand.undefStack) {\n            stackSize = 0;\n            state.undefStack = true;\n            state.firstStackClearing = false;\n          }\n        }\n      }\n      state.stackSize = stackSize;\n      return true;\n    },\n    parseCharStrings: function parseCharStrings(_ref) {\n      var charStrings = _ref.charStrings,\n          localSubrIndex = _ref.localSubrIndex,\n          globalSubrIndex = _ref.globalSubrIndex,\n          fdSelect = _ref.fdSelect,\n          fdArray = _ref.fdArray,\n          privateDict = _ref.privateDict;\n\n      var seacs = [];\n      var widths = [];\n      var count = charStrings.count;\n      for (var i = 0; i < count; i++) {\n        var charstring = charStrings.get(i);\n        var state = {\n          callDepth: 0,\n          stackSize: 0,\n          stack: [],\n          undefStack: true,\n          hints: 0,\n          firstStackClearing: true,\n          seac: null,\n          width: null\n        };\n        var valid = true;\n        var localSubrToUse = null;\n        var privateDictToUse = privateDict;\n        if (fdSelect && fdArray.length) {\n          var fdIndex = fdSelect.getFDIndex(i);\n          if (fdIndex === -1) {\n            (0, _util.warn)('Glyph index is not in fd select.');\n            valid = false;\n          }\n          if (fdIndex >= fdArray.length) {\n            (0, _util.warn)('Invalid fd index for glyph index.');\n            valid = false;\n          }\n          if (valid) {\n            privateDictToUse = fdArray[fdIndex].privateDict;\n            localSubrToUse = privateDictToUse.subrsIndex;\n          }\n        } else if (localSubrIndex) {\n          localSubrToUse = localSubrIndex;\n        }\n        if (valid) {\n          valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);\n        }\n        if (state.width !== null) {\n          var nominalWidth = privateDictToUse.getByName('nominalWidthX');\n          widths[i] = nominalWidth + state.width;\n        } else {\n          var defaultWidth = privateDictToUse.getByName('defaultWidthX');\n          widths[i] = defaultWidth;\n        }\n        if (state.seac !== null) {\n          seacs[i] = state.seac;\n        }\n        if (!valid) {\n          charStrings.set(i, new Uint8Array([14]));\n        }\n      }\n      return {\n        charStrings: charStrings,\n        seacs: seacs,\n        widths: widths\n      };\n    },\n\n    emptyPrivateDictionary: function CFFParser_emptyPrivateDictionary(parentDict) {\n      var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n      parentDict.setByKey(18, [0, 0]);\n      parentDict.privateDict = privateDict;\n    },\n    parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) {\n      if (!parentDict.hasName('Private')) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var privateOffset = parentDict.getByName('Private');\n      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n        parentDict.removeByName('Private');\n        return;\n      }\n      var size = privateOffset[0];\n      var offset = privateOffset[1];\n      if (size === 0 || offset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var privateDictEnd = offset + size;\n      var dictData = this.bytes.subarray(offset, privateDictEnd);\n      var dict = this.parseDict(dictData);\n      var privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);\n      parentDict.privateDict = privateDict;\n      if (!privateDict.getByName('Subrs')) {\n        return;\n      }\n      var subrsOffset = privateDict.getByName('Subrs');\n      var relativeOffset = offset + subrsOffset;\n      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var subrsIndex = this.parseIndex(relativeOffset);\n      privateDict.subrsIndex = subrsIndex.obj;\n    },\n    parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {\n      if (pos === 0) {\n        return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset);\n      } else if (pos === 1) {\n        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset);\n      } else if (pos === 2) {\n        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset);\n      }\n      var bytes = this.bytes;\n      var start = pos;\n      var format = bytes[pos++];\n      var charset = ['.notdef'];\n      var id, count, i;\n      length -= 1;\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; i++) {\n            id = bytes[pos++] << 8 | bytes[pos++];\n            charset.push(cid ? id : strings.get(id));\n          }\n          break;\n        case 1:\n          while (charset.length <= length) {\n            id = bytes[pos++] << 8 | bytes[pos++];\n            count = bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        case 2:\n          while (charset.length <= length) {\n            id = bytes[pos++] << 8 | bytes[pos++];\n            count = bytes[pos++] << 8 | bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        default:\n          throw new _util.FormatError('Unknown charset format');\n      }\n      var end = pos;\n      var raw = bytes.subarray(start, end);\n      return new CFFCharset(false, format, charset, raw);\n    },\n    parseEncoding: function CFFParser_parseEncoding(pos, properties, strings, charset) {\n      var encoding = Object.create(null);\n      var bytes = this.bytes;\n      var predefined = false;\n      var format, i, ii;\n      var raw = null;\n      function readSupplement() {\n        var supplementsCount = bytes[pos++];\n        for (i = 0; i < supplementsCount; i++) {\n          var code = bytes[pos++];\n          var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n          encoding[code] = charset.indexOf(strings.get(sid));\n        }\n      }\n      if (pos === 0 || pos === 1) {\n        predefined = true;\n        format = pos;\n        var baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding;\n        for (i = 0, ii = charset.length; i < ii; i++) {\n          var index = baseEncoding.indexOf(charset[i]);\n          if (index !== -1) {\n            encoding[index] = i;\n          }\n        }\n      } else {\n        var dataStart = pos;\n        format = bytes[pos++];\n        switch (format & 0x7f) {\n          case 0:\n            var glyphsCount = bytes[pos++];\n            for (i = 1; i <= glyphsCount; i++) {\n              encoding[bytes[pos++]] = i;\n            }\n            break;\n          case 1:\n            var rangesCount = bytes[pos++];\n            var gid = 1;\n            for (i = 0; i < rangesCount; i++) {\n              var start = bytes[pos++];\n              var left = bytes[pos++];\n              for (var j = start; j <= start + left; j++) {\n                encoding[j] = gid++;\n              }\n            }\n            break;\n          default:\n            throw new _util.FormatError('Unknown encoding format: ' + format + ' in CFF');\n        }\n        var dataEnd = pos;\n        if (format & 0x80) {\n          bytes[dataStart] &= 0x7f;\n          readSupplement();\n        }\n        raw = bytes.subarray(dataStart, dataEnd);\n      }\n      format = format & 0x7f;\n      return new CFFEncoding(predefined, format, encoding, raw);\n    },\n    parseFDSelect: function CFFParser_parseFDSelect(pos, length) {\n      var bytes = this.bytes;\n      var format = bytes[pos++];\n      var fdSelect = [];\n      var i;\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; ++i) {\n            var id = bytes[pos++];\n            fdSelect.push(id);\n          }\n          break;\n        case 3:\n          var rangesCount = bytes[pos++] << 8 | bytes[pos++];\n          for (i = 0; i < rangesCount; ++i) {\n            var first = bytes[pos++] << 8 | bytes[pos++];\n            if (i === 0 && first !== 0) {\n              (0, _util.warn)('parseFDSelect: The first range must have a first GID of 0' + ' -- trying to recover.');\n              first = 0;\n            }\n            var fdIndex = bytes[pos++];\n            var next = bytes[pos] << 8 | bytes[pos + 1];\n            for (var j = first; j < next; ++j) {\n              fdSelect.push(fdIndex);\n            }\n          }\n          pos += 2;\n          break;\n        default:\n          throw new _util.FormatError('parseFDSelect: Unknown format \"' + format + '\".');\n      }\n      if (fdSelect.length !== length) {\n        throw new _util.FormatError('parseFDSelect: Invalid font data.');\n      }\n      return new CFFFDSelect(format, fdSelect);\n    }\n  };\n  return CFFParser;\n}();\nvar CFF = function CFFClosure() {\n  function CFF() {\n    this.header = null;\n    this.names = [];\n    this.topDict = null;\n    this.strings = new CFFStrings();\n    this.globalSubrIndex = null;\n    this.encoding = null;\n    this.charset = null;\n    this.charStrings = null;\n    this.fdArray = [];\n    this.fdSelect = null;\n    this.isCIDFont = false;\n  }\n  CFF.prototype = {\n    duplicateFirstGlyph: function CFF_duplicateFirstGlyph() {\n      if (this.charStrings.count >= 65535) {\n        (0, _util.warn)('Not enough space in charstrings to duplicate first glyph.');\n        return;\n      }\n      var glyphZero = this.charStrings.get(0);\n      this.charStrings.add(glyphZero);\n      if (this.isCIDFont) {\n        this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n      }\n    },\n    hasGlyphId: function CFF_hasGlyphID(id) {\n      if (id < 0 || id >= this.charStrings.count) {\n        return false;\n      }\n      var glyph = this.charStrings.get(id);\n      return glyph.length > 0;\n    }\n  };\n  return CFF;\n}();\nvar CFFHeader = function CFFHeaderClosure() {\n  function CFFHeader(major, minor, hdrSize, offSize) {\n    this.major = major;\n    this.minor = minor;\n    this.hdrSize = hdrSize;\n    this.offSize = offSize;\n  }\n  return CFFHeader;\n}();\nvar CFFStrings = function CFFStringsClosure() {\n  function CFFStrings() {\n    this.strings = [];\n  }\n  CFFStrings.prototype = {\n    get: function CFFStrings_get(index) {\n      if (index >= 0 && index <= 390) {\n        return CFFStandardStrings[index];\n      }\n      if (index - 391 <= this.strings.length) {\n        return this.strings[index - 391];\n      }\n      return CFFStandardStrings[0];\n    },\n    add: function CFFStrings_add(value) {\n      this.strings.push(value);\n    },\n    get count() {\n      return this.strings.length;\n    }\n  };\n  return CFFStrings;\n}();\nvar CFFIndex = function CFFIndexClosure() {\n  function CFFIndex() {\n    this.objects = [];\n    this.length = 0;\n  }\n  CFFIndex.prototype = {\n    add: function CFFIndex_add(data) {\n      this.length += data.length;\n      this.objects.push(data);\n    },\n    set: function CFFIndex_set(index, data) {\n      this.length += data.length - this.objects[index].length;\n      this.objects[index] = data;\n    },\n    get: function CFFIndex_get(index) {\n      return this.objects[index];\n    },\n    get count() {\n      return this.objects.length;\n    }\n  };\n  return CFFIndex;\n}();\nvar CFFDict = function CFFDictClosure() {\n  function CFFDict(tables, strings) {\n    this.keyToNameMap = tables.keyToNameMap;\n    this.nameToKeyMap = tables.nameToKeyMap;\n    this.defaults = tables.defaults;\n    this.types = tables.types;\n    this.opcodes = tables.opcodes;\n    this.order = tables.order;\n    this.strings = strings;\n    this.values = Object.create(null);\n  }\n  CFFDict.prototype = {\n    setByKey: function CFFDict_setByKey(key, value) {\n      if (!(key in this.keyToNameMap)) {\n        return false;\n      }\n      var valueLength = value.length;\n      if (valueLength === 0) {\n        return true;\n      }\n      for (var i = 0; i < valueLength; i++) {\n        if (isNaN(value[i])) {\n          (0, _util.warn)('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n          return true;\n        }\n      }\n      var type = this.types[key];\n      if (type === 'num' || type === 'sid' || type === 'offset') {\n        value = value[0];\n      }\n      this.values[key] = value;\n      return true;\n    },\n    setByName: function CFFDict_setByName(name, value) {\n      if (!(name in this.nameToKeyMap)) {\n        throw new _util.FormatError('Invalid dictionary name \"' + name + '\"');\n      }\n      this.values[this.nameToKeyMap[name]] = value;\n    },\n    hasName: function CFFDict_hasName(name) {\n      return this.nameToKeyMap[name] in this.values;\n    },\n    getByName: function CFFDict_getByName(name) {\n      if (!(name in this.nameToKeyMap)) {\n        throw new _util.FormatError('Invalid dictionary name ' + name + '\"');\n      }\n      var key = this.nameToKeyMap[name];\n      if (!(key in this.values)) {\n        return this.defaults[key];\n      }\n      return this.values[key];\n    },\n    removeByName: function CFFDict_removeByName(name) {\n      delete this.values[this.nameToKeyMap[name]];\n    }\n  };\n  CFFDict.createTables = function CFFDict_createTables(layout) {\n    var tables = {\n      keyToNameMap: {},\n      nameToKeyMap: {},\n      defaults: {},\n      types: {},\n      opcodes: {},\n      order: []\n    };\n    for (var i = 0, ii = layout.length; i < ii; ++i) {\n      var entry = layout[i];\n      var key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];\n      tables.keyToNameMap[key] = entry[1];\n      tables.nameToKeyMap[entry[1]] = key;\n      tables.types[key] = entry[2];\n      tables.defaults[key] = entry[3];\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n      tables.order.push(key);\n    }\n    return tables;\n  };\n  return CFFDict;\n}();\nvar CFFTopDict = function CFFTopDictClosure() {\n  var layout = [[[12, 30], 'ROS', ['sid', 'sid', 'num'], null], [[12, 20], 'SyntheticBase', 'num', null], [0, 'version', 'sid', null], [1, 'Notice', 'sid', null], [[12, 0], 'Copyright', 'sid', null], [2, 'FullName', 'sid', null], [3, 'FamilyName', 'sid', null], [4, 'Weight', 'sid', null], [[12, 1], 'isFixedPitch', 'num', 0], [[12, 2], 'ItalicAngle', 'num', 0], [[12, 3], 'UnderlinePosition', 'num', -100], [[12, 4], 'UnderlineThickness', 'num', 50], [[12, 5], 'PaintType', 'num', 0], [[12, 6], 'CharstringType', 'num', 2], [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'], [0.001, 0, 0, 0.001, 0, 0]], [13, 'UniqueID', 'num', null], [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]], [[12, 8], 'StrokeWidth', 'num', 0], [14, 'XUID', 'array', null], [15, 'charset', 'offset', 0], [16, 'Encoding', 'offset', 0], [17, 'CharStrings', 'offset', 0], [18, 'Private', ['offset', 'offset'], null], [[12, 21], 'PostScript', 'sid', null], [[12, 22], 'BaseFontName', 'sid', null], [[12, 23], 'BaseFontBlend', 'delta', null], [[12, 31], 'CIDFontVersion', 'num', 0], [[12, 32], 'CIDFontRevision', 'num', 0], [[12, 33], 'CIDFontType', 'num', 0], [[12, 34], 'CIDCount', 'num', 8720], [[12, 35], 'UIDBase', 'num', null], [[12, 37], 'FDSelect', 'offset', null], [[12, 36], 'FDArray', 'offset', null], [[12, 38], 'FontName', 'sid', null]];\n  var tables = null;\n  function CFFTopDict(strings) {\n    if (tables === null) {\n      tables = CFFDict.createTables(layout);\n    }\n    CFFDict.call(this, tables, strings);\n    this.privateDict = null;\n  }\n  CFFTopDict.prototype = Object.create(CFFDict.prototype);\n  return CFFTopDict;\n}();\nvar CFFPrivateDict = function CFFPrivateDictClosure() {\n  var layout = [[6, 'BlueValues', 'delta', null], [7, 'OtherBlues', 'delta', null], [8, 'FamilyBlues', 'delta', null], [9, 'FamilyOtherBlues', 'delta', null], [[12, 9], 'BlueScale', 'num', 0.039625], [[12, 10], 'BlueShift', 'num', 7], [[12, 11], 'BlueFuzz', 'num', 1], [10, 'StdHW', 'num', null], [11, 'StdVW', 'num', null], [[12, 12], 'StemSnapH', 'delta', null], [[12, 13], 'StemSnapV', 'delta', null], [[12, 14], 'ForceBold', 'num', 0], [[12, 17], 'LanguageGroup', 'num', 0], [[12, 18], 'ExpansionFactor', 'num', 0.06], [[12, 19], 'initialRandomSeed', 'num', 0], [20, 'defaultWidthX', 'num', 0], [21, 'nominalWidthX', 'num', 0], [19, 'Subrs', 'offset', null]];\n  var tables = null;\n  function CFFPrivateDict(strings) {\n    if (tables === null) {\n      tables = CFFDict.createTables(layout);\n    }\n    CFFDict.call(this, tables, strings);\n    this.subrsIndex = null;\n  }\n  CFFPrivateDict.prototype = Object.create(CFFDict.prototype);\n  return CFFPrivateDict;\n}();\nvar CFFCharsetPredefinedTypes = {\n  ISO_ADOBE: 0,\n  EXPERT: 1,\n  EXPERT_SUBSET: 2\n};\nvar CFFCharset = function CFFCharsetClosure() {\n  function CFFCharset(predefined, format, charset, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.charset = charset;\n    this.raw = raw;\n  }\n  return CFFCharset;\n}();\nvar CFFEncoding = function CFFEncodingClosure() {\n  function CFFEncoding(predefined, format, encoding, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.encoding = encoding;\n    this.raw = raw;\n  }\n  return CFFEncoding;\n}();\nvar CFFFDSelect = function CFFFDSelectClosure() {\n  function CFFFDSelect(format, fdSelect) {\n    this.format = format;\n    this.fdSelect = fdSelect;\n  }\n  CFFFDSelect.prototype = {\n    getFDIndex: function CFFFDSelect_get(glyphIndex) {\n      if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n        return -1;\n      }\n      return this.fdSelect[glyphIndex];\n    }\n  };\n  return CFFFDSelect;\n}();\nvar CFFOffsetTracker = function CFFOffsetTrackerClosure() {\n  function CFFOffsetTracker() {\n    this.offsets = Object.create(null);\n  }\n  CFFOffsetTracker.prototype = {\n    isTracking: function CFFOffsetTracker_isTracking(key) {\n      return key in this.offsets;\n    },\n    track: function CFFOffsetTracker_track(key, location) {\n      if (key in this.offsets) {\n        throw new _util.FormatError('Already tracking location of ' + key);\n      }\n      this.offsets[key] = location;\n    },\n    offset: function CFFOffsetTracker_offset(value) {\n      for (var key in this.offsets) {\n        this.offsets[key] += value;\n      }\n    },\n    setEntryLocation: function CFFOffsetTracker_setEntryLocation(key, values, output) {\n      if (!(key in this.offsets)) {\n        throw new _util.FormatError('Not tracking location of ' + key);\n      }\n      var data = output.data;\n      var dataOffset = this.offsets[key];\n      var size = 5;\n      for (var i = 0, ii = values.length; i < ii; ++i) {\n        var offset0 = i * size + dataOffset;\n        var offset1 = offset0 + 1;\n        var offset2 = offset0 + 2;\n        var offset3 = offset0 + 3;\n        var offset4 = offset0 + 4;\n        if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n          throw new _util.FormatError('writing to an offset that is not empty');\n        }\n        var value = values[i];\n        data[offset0] = 0x1d;\n        data[offset1] = value >> 24 & 0xFF;\n        data[offset2] = value >> 16 & 0xFF;\n        data[offset3] = value >> 8 & 0xFF;\n        data[offset4] = value & 0xFF;\n      }\n    }\n  };\n  return CFFOffsetTracker;\n}();\nvar CFFCompiler = function CFFCompilerClosure() {\n  function CFFCompiler(cff) {\n    this.cff = cff;\n  }\n  CFFCompiler.prototype = {\n    compile: function CFFCompiler_compile() {\n      var cff = this.cff;\n      var output = {\n        data: [],\n        length: 0,\n        add: function CFFCompiler_add(data) {\n          this.data = this.data.concat(data);\n          this.length = this.data.length;\n        }\n      };\n      var header = this.compileHeader(cff.header);\n      output.add(header);\n      var nameIndex = this.compileNameIndex(cff.names);\n      output.add(nameIndex);\n      if (cff.isCIDFont) {\n        if (cff.topDict.hasName('FontMatrix')) {\n          var base = cff.topDict.getByName('FontMatrix');\n          cff.topDict.removeByName('FontMatrix');\n          for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {\n            var subDict = cff.fdArray[i];\n            var matrix = base.slice(0);\n            if (subDict.hasName('FontMatrix')) {\n              matrix = _util.Util.transform(matrix, subDict.getByName('FontMatrix'));\n            }\n            subDict.setByName('FontMatrix', matrix);\n          }\n        }\n      }\n      cff.topDict.setByName('charset', 0);\n      var compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);\n      output.add(compiled.output);\n      var topDictTracker = compiled.trackers[0];\n      var stringIndex = this.compileStringIndex(cff.strings.strings);\n      output.add(stringIndex);\n      var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n      output.add(globalSubrIndex);\n      if (cff.encoding && cff.topDict.hasName('Encoding')) {\n        if (cff.encoding.predefined) {\n          topDictTracker.setEntryLocation('Encoding', [cff.encoding.format], output);\n        } else {\n          var encoding = this.compileEncoding(cff.encoding);\n          topDictTracker.setEntryLocation('Encoding', [output.length], output);\n          output.add(encoding);\n        }\n      }\n      var charset = this.compileCharset(cff.charset);\n      topDictTracker.setEntryLocation('charset', [output.length], output);\n      output.add(charset);\n      var charStrings = this.compileCharStrings(cff.charStrings);\n      topDictTracker.setEntryLocation('CharStrings', [output.length], output);\n      output.add(charStrings);\n      if (cff.isCIDFont) {\n        topDictTracker.setEntryLocation('FDSelect', [output.length], output);\n        var fdSelect = this.compileFDSelect(cff.fdSelect);\n        output.add(fdSelect);\n        compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n        topDictTracker.setEntryLocation('FDArray', [output.length], output);\n        output.add(compiled.output);\n        var fontDictTrackers = compiled.trackers;\n        this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n      }\n      this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n      output.add([0]);\n      return output.data;\n    },\n    encodeNumber: function CFFCompiler_encodeNumber(value) {\n      if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) {\n        return this.encodeInteger(value);\n      }\n      return this.encodeFloat(value);\n    },\n    encodeFloat: function CFFCompiler_encodeFloat(num) {\n      var value = num.toString();\n      var m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n      if (m) {\n        var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length));\n        value = (Math.round(num * epsilon) / epsilon).toString();\n      }\n      var nibbles = '';\n      var i, ii;\n      for (i = 0, ii = value.length; i < ii; ++i) {\n        var a = value[i];\n        if (a === 'e') {\n          nibbles += value[++i] === '-' ? 'c' : 'b';\n        } else if (a === '.') {\n          nibbles += 'a';\n        } else if (a === '-') {\n          nibbles += 'e';\n        } else {\n          nibbles += a;\n        }\n      }\n      nibbles += nibbles.length & 1 ? 'f' : 'ff';\n      var out = [30];\n      for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n        out.push(parseInt(nibbles.substring(i, i + 2), 16));\n      }\n      return out;\n    },\n    encodeInteger: function CFFCompiler_encodeInteger(value) {\n      var code;\n      if (value >= -107 && value <= 107) {\n        code = [value + 139];\n      } else if (value >= 108 && value <= 1131) {\n        value = value - 108;\n        code = [(value >> 8) + 247, value & 0xFF];\n      } else if (value >= -1131 && value <= -108) {\n        value = -value - 108;\n        code = [(value >> 8) + 251, value & 0xFF];\n      } else if (value >= -32768 && value <= 32767) {\n        code = [0x1c, value >> 8 & 0xFF, value & 0xFF];\n      } else {\n        code = [0x1d, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF];\n      }\n      return code;\n    },\n    compileHeader: function CFFCompiler_compileHeader(header) {\n      return [header.major, header.minor, header.hdrSize, header.offSize];\n    },\n    compileNameIndex: function CFFCompiler_compileNameIndex(names) {\n      var nameIndex = new CFFIndex();\n      for (var i = 0, ii = names.length; i < ii; ++i) {\n        var name = names[i];\n        var length = Math.min(name.length, 127);\n        var sanitizedName = new Array(length);\n        for (var j = 0; j < length; j++) {\n          var char = name[j];\n          if (char < '!' || char > '~' || char === '[' || char === ']' || char === '(' || char === ')' || char === '{' || char === '}' || char === '<' || char === '>' || char === '/' || char === '%') {\n            char = '_';\n          }\n          sanitizedName[j] = char;\n        }\n        sanitizedName = sanitizedName.join('');\n        if (sanitizedName === '') {\n          sanitizedName = 'Bad_Font_Name';\n        }\n        nameIndex.add((0, _util.stringToBytes)(sanitizedName));\n      }\n      return this.compileIndex(nameIndex);\n    },\n    compileTopDicts: function CFFCompiler_compileTopDicts(dicts, length, removeCidKeys) {\n      var fontDictTrackers = [];\n      var fdArrayIndex = new CFFIndex();\n      for (var i = 0, ii = dicts.length; i < ii; ++i) {\n        var fontDict = dicts[i];\n        if (removeCidKeys) {\n          fontDict.removeByName('CIDFontVersion');\n          fontDict.removeByName('CIDFontRevision');\n          fontDict.removeByName('CIDFontType');\n          fontDict.removeByName('CIDCount');\n          fontDict.removeByName('UIDBase');\n        }\n        var fontDictTracker = new CFFOffsetTracker();\n        var fontDictData = this.compileDict(fontDict, fontDictTracker);\n        fontDictTrackers.push(fontDictTracker);\n        fdArrayIndex.add(fontDictData);\n        fontDictTracker.offset(length);\n      }\n      fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n      return {\n        trackers: fontDictTrackers,\n        output: fdArrayIndex\n      };\n    },\n    compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts, trackers, output) {\n      for (var i = 0, ii = dicts.length; i < ii; ++i) {\n        var fontDict = dicts[i];\n        var privateDict = fontDict.privateDict;\n        if (!privateDict || !fontDict.hasName('Private')) {\n          throw new _util.FormatError('There must be a private dictionary.');\n        }\n        var privateDictTracker = new CFFOffsetTracker();\n        var privateDictData = this.compileDict(privateDict, privateDictTracker);\n        var outputLength = output.length;\n        privateDictTracker.offset(outputLength);\n        if (!privateDictData.length) {\n          outputLength = 0;\n        }\n        trackers[i].setEntryLocation('Private', [privateDictData.length, outputLength], output);\n        output.add(privateDictData);\n        if (privateDict.subrsIndex && privateDict.hasName('Subrs')) {\n          var subrs = this.compileIndex(privateDict.subrsIndex);\n          privateDictTracker.setEntryLocation('Subrs', [privateDictData.length], output);\n          output.add(subrs);\n        }\n      }\n    },\n    compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {\n      var out = [];\n      var order = dict.order;\n      for (var i = 0; i < order.length; ++i) {\n        var key = order[i];\n        if (!(key in dict.values)) {\n          continue;\n        }\n        var values = dict.values[key];\n        var types = dict.types[key];\n        if (!Array.isArray(types)) {\n          types = [types];\n        }\n        if (!Array.isArray(values)) {\n          values = [values];\n        }\n        if (values.length === 0) {\n          continue;\n        }\n        for (var j = 0, jj = types.length; j < jj; ++j) {\n          var type = types[j];\n          var value = values[j];\n          switch (type) {\n            case 'num':\n            case 'sid':\n              out = out.concat(this.encodeNumber(value));\n              break;\n            case 'offset':\n              var name = dict.keyToNameMap[key];\n              if (!offsetTracker.isTracking(name)) {\n                offsetTracker.track(name, out.length);\n              }\n              out = out.concat([0x1d, 0, 0, 0, 0]);\n              break;\n            case 'array':\n            case 'delta':\n              out = out.concat(this.encodeNumber(value));\n              for (var k = 1, kk = values.length; k < kk; ++k) {\n                out = out.concat(this.encodeNumber(values[k]));\n              }\n              break;\n            default:\n              throw new _util.FormatError('Unknown data type of ' + type);\n          }\n        }\n        out = out.concat(dict.opcodes[key]);\n      }\n      return out;\n    },\n    compileStringIndex: function CFFCompiler_compileStringIndex(strings) {\n      var stringIndex = new CFFIndex();\n      for (var i = 0, ii = strings.length; i < ii; ++i) {\n        stringIndex.add((0, _util.stringToBytes)(strings[i]));\n      }\n      return this.compileIndex(stringIndex);\n    },\n    compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {\n      var globalSubrIndex = this.cff.globalSubrIndex;\n      this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n    },\n    compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) {\n      var charStringsIndex = new CFFIndex();\n      for (var i = 0; i < charStrings.count; i++) {\n        var glyph = charStrings.get(i);\n        if (glyph.length === 0) {\n          charStringsIndex.add(new Uint8Array([0x8B, 0x0E]));\n          continue;\n        }\n        charStringsIndex.add(glyph);\n      }\n      return this.compileIndex(charStringsIndex);\n    },\n    compileCharset: function CFFCompiler_compileCharset(charset) {\n      var length = 1 + (this.cff.charStrings.count - 1) * 2;\n      var out = new Uint8Array(length);\n      return this.compileTypedArray(out);\n    },\n    compileEncoding: function CFFCompiler_compileEncoding(encoding) {\n      return this.compileTypedArray(encoding.raw);\n    },\n    compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {\n      var format = fdSelect.format;\n      var out = void 0,\n          i = void 0;\n      switch (format) {\n        case 0:\n          out = new Uint8Array(1 + fdSelect.fdSelect.length);\n          out[0] = format;\n          for (i = 0; i < fdSelect.fdSelect.length; i++) {\n            out[i + 1] = fdSelect.fdSelect[i];\n          }\n          break;\n        case 3:\n          var start = 0;\n          var lastFD = fdSelect.fdSelect[0];\n          var ranges = [format, 0, 0, start >> 8 & 0xFF, start & 0xFF, lastFD];\n          for (i = 1; i < fdSelect.fdSelect.length; i++) {\n            var currentFD = fdSelect.fdSelect[i];\n            if (currentFD !== lastFD) {\n              ranges.push(i >> 8 & 0xFF, i & 0xFF, currentFD);\n              lastFD = currentFD;\n            }\n          }\n          var numRanges = (ranges.length - 3) / 3;\n          ranges[1] = numRanges >> 8 & 0xFF;\n          ranges[2] = numRanges & 0xFF;\n          ranges.push(i >> 8 & 0xFF, i & 0xFF);\n          out = new Uint8Array(ranges);\n          break;\n      }\n      return this.compileTypedArray(out);\n    },\n    compileTypedArray: function CFFCompiler_compileTypedArray(data) {\n      var out = [];\n      for (var i = 0, ii = data.length; i < ii; ++i) {\n        out[i] = data[i];\n      }\n      return out;\n    },\n    compileIndex: function CFFCompiler_compileIndex(index, trackers) {\n      trackers = trackers || [];\n      var objects = index.objects;\n      var count = objects.length;\n      if (count === 0) {\n        return [0, 0, 0];\n      }\n      var data = [count >> 8 & 0xFF, count & 0xff];\n      var lastOffset = 1,\n          i;\n      for (i = 0; i < count; ++i) {\n        lastOffset += objects[i].length;\n      }\n      var offsetSize;\n      if (lastOffset < 0x100) {\n        offsetSize = 1;\n      } else if (lastOffset < 0x10000) {\n        offsetSize = 2;\n      } else if (lastOffset < 0x1000000) {\n        offsetSize = 3;\n      } else {\n        offsetSize = 4;\n      }\n      data.push(offsetSize);\n      var relativeOffset = 1;\n      for (i = 0; i < count + 1; i++) {\n        if (offsetSize === 1) {\n          data.push(relativeOffset & 0xFF);\n        } else if (offsetSize === 2) {\n          data.push(relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF);\n        } else if (offsetSize === 3) {\n          data.push(relativeOffset >> 16 & 0xFF, relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF);\n        } else {\n          data.push(relativeOffset >>> 24 & 0xFF, relativeOffset >> 16 & 0xFF, relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF);\n        }\n        if (objects[i]) {\n          relativeOffset += objects[i].length;\n        }\n      }\n      for (i = 0; i < count; i++) {\n        if (trackers[i]) {\n          trackers[i].offset(data.length);\n        }\n        for (var j = 0, jj = objects[i].length; j < jj; j++) {\n          data.push(objects[i][j]);\n        }\n      }\n      return data;\n    }\n  };\n  return CFFCompiler;\n}();\nexports.CFFStandardStrings = CFFStandardStrings;\nexports.CFFParser = CFFParser;\nexports.CFF = CFF;\nexports.CFFHeader = CFFHeader;\nexports.CFFStrings = CFFStrings;\nexports.CFFIndex = CFFIndex;\nexports.CFFCharset = CFFCharset;\nexports.CFFTopDict = CFFTopDict;\nexports.CFFPrivateDict = CFFPrivateDict;\nexports.CFFCompiler = CFFCompiler;\nexports.CFFFDSelect = CFFFDSelect;\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];\nvar ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];\nvar ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];\nexports.ISOAdobeCharset = ISOAdobeCharset;\nexports.ExpertCharset = ExpertCharset;\nexports.ExpertSubsetCharset = ExpertSubsetCharset;\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar ExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];\nvar MacExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '', 'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '', 'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall', 'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall', 'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall', 'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '', 'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior', 'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior', 'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior', 'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '', 'dollarinferior', '', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior', 'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall', 'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '', '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '', 'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior', 'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior', '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall', 'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior', 'periodsuperior', 'Dotaccentsmall', 'Ringsmall', '', '', '', ''];\nvar MacRomanEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron'];\nvar StandardEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls', '', '', '', ''];\nvar WinAnsiEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron', 'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft', 'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash', 'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet', 'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', 'sterling', 'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered', 'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute', 'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters', 'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis', 'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis', 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve', 'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn', 'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis', 'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis', 'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve', 'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash', 'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn', 'ydieresis'];\nvar SymbolSetEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent', 'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus', 'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi', 'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft', 'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex', 'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota', 'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho', 'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta', 'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal', 'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade', 'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree', 'plusminus', 'second', 'greaterequal', 'multiply', 'proportional', 'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence', 'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn', 'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply', 'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset', 'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element', 'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif', 'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot', 'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup', 'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans', 'copyrightsans', 'trademarksans', 'summation', 'parenlefttp', 'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex', 'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex', '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt', 'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp', 'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid', 'bracerightbt', ''];\nvar ZapfDingbatsEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117', 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19', 'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7', 'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36', 'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46', 'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56', 'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66', 'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75', 'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97', 'a98', 'a99', 'a100', '', 'a89', 'a90', 'a93', 'a94', 'a91', 'a92', 'a205', 'a85', 'a206', 'a86', 'a87', 'a88', 'a95', 'a96', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103', 'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120', 'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129', 'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138', 'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147', 'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156', 'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165', 'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173', 'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180', 'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', 'a185', 'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', 'a191', ''];\nfunction getEncoding(encodingName) {\n  switch (encodingName) {\n    case 'WinAnsiEncoding':\n      return WinAnsiEncoding;\n    case 'StandardEncoding':\n      return StandardEncoding;\n    case 'MacRomanEncoding':\n      return MacRomanEncoding;\n    case 'SymbolSetEncoding':\n      return SymbolSetEncoding;\n    case 'ZapfDingbatsEncoding':\n      return ZapfDingbatsEncoding;\n    case 'ExpertEncoding':\n      return ExpertEncoding;\n    case 'MacExpertEncoding':\n      return MacExpertEncoding;\n    default:\n      return null;\n  }\n}\nexports.WinAnsiEncoding = WinAnsiEncoding;\nexports.StandardEncoding = StandardEncoding;\nexports.MacRomanEncoding = MacRomanEncoding;\nexports.SymbolSetEncoding = SymbolSetEncoding;\nexports.ZapfDingbatsEncoding = ZapfDingbatsEncoding;\nexports.ExpertEncoding = ExpertEncoding;\nexports.getEncoding = getEncoding;\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getLookupTableFactory = __w_pdfjs_require__(2).getLookupTableFactory;\nvar getGlyphsUnicode = getLookupTableFactory(function (t) {\n t['A'] = 0x0041;\n t['AE'] = 0x00C6;\n t['AEacute'] = 0x01FC;\n t['AEmacron'] = 0x01E2;\n t['AEsmall'] = 0xF7E6;\n t['Aacute'] = 0x00C1;\n t['Aacutesmall'] = 0xF7E1;\n t['Abreve'] = 0x0102;\n t['Abreveacute'] = 0x1EAE;\n t['Abrevecyrillic'] = 0x04D0;\n t['Abrevedotbelow'] = 0x1EB6;\n t['Abrevegrave'] = 0x1EB0;\n t['Abrevehookabove'] = 0x1EB2;\n t['Abrevetilde'] = 0x1EB4;\n t['Acaron'] = 0x01CD;\n t['Acircle'] = 0x24B6;\n t['Acircumflex'] = 0x00C2;\n t['Acircumflexacute'] = 0x1EA4;\n t['Acircumflexdotbelow'] = 0x1EAC;\n t['Acircumflexgrave'] = 0x1EA6;\n t['Acircumflexhookabove'] = 0x1EA8;\n t['Acircumflexsmall'] = 0xF7E2;\n t['Acircumflextilde'] = 0x1EAA;\n t['Acute'] = 0xF6C9;\n t['Acutesmall'] = 0xF7B4;\n t['Acyrillic'] = 0x0410;\n t['Adblgrave'] = 0x0200;\n t['Adieresis'] = 0x00C4;\n t['Adieresiscyrillic'] = 0x04D2;\n t['Adieresismacron'] = 0x01DE;\n t['Adieresissmall'] = 0xF7E4;\n t['Adotbelow'] = 0x1EA0;\n t['Adotmacron'] = 0x01E0;\n t['Agrave'] = 0x00C0;\n t['Agravesmall'] = 0xF7E0;\n t['Ahookabove'] = 0x1EA2;\n t['Aiecyrillic'] = 0x04D4;\n t['Ainvertedbreve'] = 0x0202;\n t['Alpha'] = 0x0391;\n t['Alphatonos'] = 0x0386;\n t['Amacron'] = 0x0100;\n t['Amonospace'] = 0xFF21;\n t['Aogonek'] = 0x0104;\n t['Aring'] = 0x00C5;\n t['Aringacute'] = 0x01FA;\n t['Aringbelow'] = 0x1E00;\n t['Aringsmall'] = 0xF7E5;\n t['Asmall'] = 0xF761;\n t['Atilde'] = 0x00C3;\n t['Atildesmall'] = 0xF7E3;\n t['Aybarmenian'] = 0x0531;\n t['B'] = 0x0042;\n t['Bcircle'] = 0x24B7;\n t['Bdotaccent'] = 0x1E02;\n t['Bdotbelow'] = 0x1E04;\n t['Becyrillic'] = 0x0411;\n t['Benarmenian'] = 0x0532;\n t['Beta'] = 0x0392;\n t['Bhook'] = 0x0181;\n t['Blinebelow'] = 0x1E06;\n t['Bmonospace'] = 0xFF22;\n t['Brevesmall'] = 0xF6F4;\n t['Bsmall'] = 0xF762;\n t['Btopbar'] = 0x0182;\n t['C'] = 0x0043;\n t['Caarmenian'] = 0x053E;\n t['Cacute'] = 0x0106;\n t['Caron'] = 0xF6CA;\n t['Caronsmall'] = 0xF6F5;\n t['Ccaron'] = 0x010C;\n t['Ccedilla'] = 0x00C7;\n t['Ccedillaacute'] = 0x1E08;\n t['Ccedillasmall'] = 0xF7E7;\n t['Ccircle'] = 0x24B8;\n t['Ccircumflex'] = 0x0108;\n t['Cdot'] = 0x010A;\n t['Cdotaccent'] = 0x010A;\n t['Cedillasmall'] = 0xF7B8;\n t['Chaarmenian'] = 0x0549;\n t['Cheabkhasiancyrillic'] = 0x04BC;\n t['Checyrillic'] = 0x0427;\n t['Chedescenderabkhasiancyrillic'] = 0x04BE;\n t['Chedescendercyrillic'] = 0x04B6;\n t['Chedieresiscyrillic'] = 0x04F4;\n t['Cheharmenian'] = 0x0543;\n t['Chekhakassiancyrillic'] = 0x04CB;\n t['Cheverticalstrokecyrillic'] = 0x04B8;\n t['Chi'] = 0x03A7;\n t['Chook'] = 0x0187;\n t['Circumflexsmall'] = 0xF6F6;\n t['Cmonospace'] = 0xFF23;\n t['Coarmenian'] = 0x0551;\n t['Csmall'] = 0xF763;\n t['D'] = 0x0044;\n t['DZ'] = 0x01F1;\n t['DZcaron'] = 0x01C4;\n t['Daarmenian'] = 0x0534;\n t['Dafrican'] = 0x0189;\n t['Dcaron'] = 0x010E;\n t['Dcedilla'] = 0x1E10;\n t['Dcircle'] = 0x24B9;\n t['Dcircumflexbelow'] = 0x1E12;\n t['Dcroat'] = 0x0110;\n t['Ddotaccent'] = 0x1E0A;\n t['Ddotbelow'] = 0x1E0C;\n t['Decyrillic'] = 0x0414;\n t['Deicoptic'] = 0x03EE;\n t['Delta'] = 0x2206;\n t['Deltagreek'] = 0x0394;\n t['Dhook'] = 0x018A;\n t['Dieresis'] = 0xF6CB;\n t['DieresisAcute'] = 0xF6CC;\n t['DieresisGrave'] = 0xF6CD;\n t['Dieresissmall'] = 0xF7A8;\n t['Digammagreek'] = 0x03DC;\n t['Djecyrillic'] = 0x0402;\n t['Dlinebelow'] = 0x1E0E;\n t['Dmonospace'] = 0xFF24;\n t['Dotaccentsmall'] = 0xF6F7;\n t['Dslash'] = 0x0110;\n t['Dsmall'] = 0xF764;\n t['Dtopbar'] = 0x018B;\n t['Dz'] = 0x01F2;\n t['Dzcaron'] = 0x01C5;\n t['Dzeabkhasiancyrillic'] = 0x04E0;\n t['Dzecyrillic'] = 0x0405;\n t['Dzhecyrillic'] = 0x040F;\n t['E'] = 0x0045;\n t['Eacute'] = 0x00C9;\n t['Eacutesmall'] = 0xF7E9;\n t['Ebreve'] = 0x0114;\n t['Ecaron'] = 0x011A;\n t['Ecedillabreve'] = 0x1E1C;\n t['Echarmenian'] = 0x0535;\n t['Ecircle'] = 0x24BA;\n t['Ecircumflex'] = 0x00CA;\n t['Ecircumflexacute'] = 0x1EBE;\n t['Ecircumflexbelow'] = 0x1E18;\n t['Ecircumflexdotbelow'] = 0x1EC6;\n t['Ecircumflexgrave'] = 0x1EC0;\n t['Ecircumflexhookabove'] = 0x1EC2;\n t['Ecircumflexsmall'] = 0xF7EA;\n t['Ecircumflextilde'] = 0x1EC4;\n t['Ecyrillic'] = 0x0404;\n t['Edblgrave'] = 0x0204;\n t['Edieresis'] = 0x00CB;\n t['Edieresissmall'] = 0xF7EB;\n t['Edot'] = 0x0116;\n t['Edotaccent'] = 0x0116;\n t['Edotbelow'] = 0x1EB8;\n t['Efcyrillic'] = 0x0424;\n t['Egrave'] = 0x00C8;\n t['Egravesmall'] = 0xF7E8;\n t['Eharmenian'] = 0x0537;\n t['Ehookabove'] = 0x1EBA;\n t['Eightroman'] = 0x2167;\n t['Einvertedbreve'] = 0x0206;\n t['Eiotifiedcyrillic'] = 0x0464;\n t['Elcyrillic'] = 0x041B;\n t['Elevenroman'] = 0x216A;\n t['Emacron'] = 0x0112;\n t['Emacronacute'] = 0x1E16;\n t['Emacrongrave'] = 0x1E14;\n t['Emcyrillic'] = 0x041C;\n t['Emonospace'] = 0xFF25;\n t['Encyrillic'] = 0x041D;\n t['Endescendercyrillic'] = 0x04A2;\n t['Eng'] = 0x014A;\n t['Enghecyrillic'] = 0x04A4;\n t['Enhookcyrillic'] = 0x04C7;\n t['Eogonek'] = 0x0118;\n t['Eopen'] = 0x0190;\n t['Epsilon'] = 0x0395;\n t['Epsilontonos'] = 0x0388;\n t['Ercyrillic'] = 0x0420;\n t['Ereversed'] = 0x018E;\n t['Ereversedcyrillic'] = 0x042D;\n t['Escyrillic'] = 0x0421;\n t['Esdescendercyrillic'] = 0x04AA;\n t['Esh'] = 0x01A9;\n t['Esmall'] = 0xF765;\n t['Eta'] = 0x0397;\n t['Etarmenian'] = 0x0538;\n t['Etatonos'] = 0x0389;\n t['Eth'] = 0x00D0;\n t['Ethsmall'] = 0xF7F0;\n t['Etilde'] = 0x1EBC;\n t['Etildebelow'] = 0x1E1A;\n t['Euro'] = 0x20AC;\n t['Ezh'] = 0x01B7;\n t['Ezhcaron'] = 0x01EE;\n t['Ezhreversed'] = 0x01B8;\n t['F'] = 0x0046;\n t['Fcircle'] = 0x24BB;\n t['Fdotaccent'] = 0x1E1E;\n t['Feharmenian'] = 0x0556;\n t['Feicoptic'] = 0x03E4;\n t['Fhook'] = 0x0191;\n t['Fitacyrillic'] = 0x0472;\n t['Fiveroman'] = 0x2164;\n t['Fmonospace'] = 0xFF26;\n t['Fourroman'] = 0x2163;\n t['Fsmall'] = 0xF766;\n t['G'] = 0x0047;\n t['GBsquare'] = 0x3387;\n t['Gacute'] = 0x01F4;\n t['Gamma'] = 0x0393;\n t['Gammaafrican'] = 0x0194;\n t['Gangiacoptic'] = 0x03EA;\n t['Gbreve'] = 0x011E;\n t['Gcaron'] = 0x01E6;\n t['Gcedilla'] = 0x0122;\n t['Gcircle'] = 0x24BC;\n t['Gcircumflex'] = 0x011C;\n t['Gcommaaccent'] = 0x0122;\n t['Gdot'] = 0x0120;\n t['Gdotaccent'] = 0x0120;\n t['Gecyrillic'] = 0x0413;\n t['Ghadarmenian'] = 0x0542;\n t['Ghemiddlehookcyrillic'] = 0x0494;\n t['Ghestrokecyrillic'] = 0x0492;\n t['Gheupturncyrillic'] = 0x0490;\n t['Ghook'] = 0x0193;\n t['Gimarmenian'] = 0x0533;\n t['Gjecyrillic'] = 0x0403;\n t['Gmacron'] = 0x1E20;\n t['Gmonospace'] = 0xFF27;\n t['Grave'] = 0xF6CE;\n t['Gravesmall'] = 0xF760;\n t['Gsmall'] = 0xF767;\n t['Gsmallhook'] = 0x029B;\n t['Gstroke'] = 0x01E4;\n t['H'] = 0x0048;\n t['H18533'] = 0x25CF;\n t['H18543'] = 0x25AA;\n t['H18551'] = 0x25AB;\n t['H22073'] = 0x25A1;\n t['HPsquare'] = 0x33CB;\n t['Haabkhasiancyrillic'] = 0x04A8;\n t['Hadescendercyrillic'] = 0x04B2;\n t['Hardsigncyrillic'] = 0x042A;\n t['Hbar'] = 0x0126;\n t['Hbrevebelow'] = 0x1E2A;\n t['Hcedilla'] = 0x1E28;\n t['Hcircle'] = 0x24BD;\n t['Hcircumflex'] = 0x0124;\n t['Hdieresis'] = 0x1E26;\n t['Hdotaccent'] = 0x1E22;\n t['Hdotbelow'] = 0x1E24;\n t['Hmonospace'] = 0xFF28;\n t['Hoarmenian'] = 0x0540;\n t['Horicoptic'] = 0x03E8;\n t['Hsmall'] = 0xF768;\n t['Hungarumlaut'] = 0xF6CF;\n t['Hungarumlautsmall'] = 0xF6F8;\n t['Hzsquare'] = 0x3390;\n t['I'] = 0x0049;\n t['IAcyrillic'] = 0x042F;\n t['IJ'] = 0x0132;\n t['IUcyrillic'] = 0x042E;\n t['Iacute'] = 0x00CD;\n t['Iacutesmall'] = 0xF7ED;\n t['Ibreve'] = 0x012C;\n t['Icaron'] = 0x01CF;\n t['Icircle'] = 0x24BE;\n t['Icircumflex'] = 0x00CE;\n t['Icircumflexsmall'] = 0xF7EE;\n t['Icyrillic'] = 0x0406;\n t['Idblgrave'] = 0x0208;\n t['Idieresis'] = 0x00CF;\n t['Idieresisacute'] = 0x1E2E;\n t['Idieresiscyrillic'] = 0x04E4;\n t['Idieresissmall'] = 0xF7EF;\n t['Idot'] = 0x0130;\n t['Idotaccent'] = 0x0130;\n t['Idotbelow'] = 0x1ECA;\n t['Iebrevecyrillic'] = 0x04D6;\n t['Iecyrillic'] = 0x0415;\n t['Ifraktur'] = 0x2111;\n t['Igrave'] = 0x00CC;\n t['Igravesmall'] = 0xF7EC;\n t['Ihookabove'] = 0x1EC8;\n t['Iicyrillic'] = 0x0418;\n t['Iinvertedbreve'] = 0x020A;\n t['Iishortcyrillic'] = 0x0419;\n t['Imacron'] = 0x012A;\n t['Imacroncyrillic'] = 0x04E2;\n t['Imonospace'] = 0xFF29;\n t['Iniarmenian'] = 0x053B;\n t['Iocyrillic'] = 0x0401;\n t['Iogonek'] = 0x012E;\n t['Iota'] = 0x0399;\n t['Iotaafrican'] = 0x0196;\n t['Iotadieresis'] = 0x03AA;\n t['Iotatonos'] = 0x038A;\n t['Ismall'] = 0xF769;\n t['Istroke'] = 0x0197;\n t['Itilde'] = 0x0128;\n t['Itildebelow'] = 0x1E2C;\n t['Izhitsacyrillic'] = 0x0474;\n t['Izhitsadblgravecyrillic'] = 0x0476;\n t['J'] = 0x004A;\n t['Jaarmenian'] = 0x0541;\n t['Jcircle'] = 0x24BF;\n t['Jcircumflex'] = 0x0134;\n t['Jecyrillic'] = 0x0408;\n t['Jheharmenian'] = 0x054B;\n t['Jmonospace'] = 0xFF2A;\n t['Jsmall'] = 0xF76A;\n t['K'] = 0x004B;\n t['KBsquare'] = 0x3385;\n t['KKsquare'] = 0x33CD;\n t['Kabashkircyrillic'] = 0x04A0;\n t['Kacute'] = 0x1E30;\n t['Kacyrillic'] = 0x041A;\n t['Kadescendercyrillic'] = 0x049A;\n t['Kahookcyrillic'] = 0x04C3;\n t['Kappa'] = 0x039A;\n t['Kastrokecyrillic'] = 0x049E;\n t['Kaverticalstrokecyrillic'] = 0x049C;\n t['Kcaron'] = 0x01E8;\n t['Kcedilla'] = 0x0136;\n t['Kcircle'] = 0x24C0;\n t['Kcommaaccent'] = 0x0136;\n t['Kdotbelow'] = 0x1E32;\n t['Keharmenian'] = 0x0554;\n t['Kenarmenian'] = 0x053F;\n t['Khacyrillic'] = 0x0425;\n t['Kheicoptic'] = 0x03E6;\n t['Khook'] = 0x0198;\n t['Kjecyrillic'] = 0x040C;\n t['Klinebelow'] = 0x1E34;\n t['Kmonospace'] = 0xFF2B;\n t['Koppacyrillic'] = 0x0480;\n t['Koppagreek'] = 0x03DE;\n t['Ksicyrillic'] = 0x046E;\n t['Ksmall'] = 0xF76B;\n t['L'] = 0x004C;\n t['LJ'] = 0x01C7;\n t['LL'] = 0xF6BF;\n t['Lacute'] = 0x0139;\n t['Lambda'] = 0x039B;\n t['Lcaron'] = 0x013D;\n t['Lcedilla'] = 0x013B;\n t['Lcircle'] = 0x24C1;\n t['Lcircumflexbelow'] = 0x1E3C;\n t['Lcommaaccent'] = 0x013B;\n t['Ldot'] = 0x013F;\n t['Ldotaccent'] = 0x013F;\n t['Ldotbelow'] = 0x1E36;\n t['Ldotbelowmacron'] = 0x1E38;\n t['Liwnarmenian'] = 0x053C;\n t['Lj'] = 0x01C8;\n t['Ljecyrillic'] = 0x0409;\n t['Llinebelow'] = 0x1E3A;\n t['Lmonospace'] = 0xFF2C;\n t['Lslash'] = 0x0141;\n t['Lslashsmall'] = 0xF6F9;\n t['Lsmall'] = 0xF76C;\n t['M'] = 0x004D;\n t['MBsquare'] = 0x3386;\n t['Macron'] = 0xF6D0;\n t['Macronsmall'] = 0xF7AF;\n t['Macute'] = 0x1E3E;\n t['Mcircle'] = 0x24C2;\n t['Mdotaccent'] = 0x1E40;\n t['Mdotbelow'] = 0x1E42;\n t['Menarmenian'] = 0x0544;\n t['Mmonospace'] = 0xFF2D;\n t['Msmall'] = 0xF76D;\n t['Mturned'] = 0x019C;\n t['Mu'] = 0x039C;\n t['N'] = 0x004E;\n t['NJ'] = 0x01CA;\n t['Nacute'] = 0x0143;\n t['Ncaron'] = 0x0147;\n t['Ncedilla'] = 0x0145;\n t['Ncircle'] = 0x24C3;\n t['Ncircumflexbelow'] = 0x1E4A;\n t['Ncommaaccent'] = 0x0145;\n t['Ndotaccent'] = 0x1E44;\n t['Ndotbelow'] = 0x1E46;\n t['Nhookleft'] = 0x019D;\n t['Nineroman'] = 0x2168;\n t['Nj'] = 0x01CB;\n t['Njecyrillic'] = 0x040A;\n t['Nlinebelow'] = 0x1E48;\n t['Nmonospace'] = 0xFF2E;\n t['Nowarmenian'] = 0x0546;\n t['Nsmall'] = 0xF76E;\n t['Ntilde'] = 0x00D1;\n t['Ntildesmall'] = 0xF7F1;\n t['Nu'] = 0x039D;\n t['O'] = 0x004F;\n t['OE'] = 0x0152;\n t['OEsmall'] = 0xF6FA;\n t['Oacute'] = 0x00D3;\n t['Oacutesmall'] = 0xF7F3;\n t['Obarredcyrillic'] = 0x04E8;\n t['Obarreddieresiscyrillic'] = 0x04EA;\n t['Obreve'] = 0x014E;\n t['Ocaron'] = 0x01D1;\n t['Ocenteredtilde'] = 0x019F;\n t['Ocircle'] = 0x24C4;\n t['Ocircumflex'] = 0x00D4;\n t['Ocircumflexacute'] = 0x1ED0;\n t['Ocircumflexdotbelow'] = 0x1ED8;\n t['Ocircumflexgrave'] = 0x1ED2;\n t['Ocircumflexhookabove'] = 0x1ED4;\n t['Ocircumflexsmall'] = 0xF7F4;\n t['Ocircumflextilde'] = 0x1ED6;\n t['Ocyrillic'] = 0x041E;\n t['Odblacute'] = 0x0150;\n t['Odblgrave'] = 0x020C;\n t['Odieresis'] = 0x00D6;\n t['Odieresiscyrillic'] = 0x04E6;\n t['Odieresissmall'] = 0xF7F6;\n t['Odotbelow'] = 0x1ECC;\n t['Ogoneksmall'] = 0xF6FB;\n t['Ograve'] = 0x00D2;\n t['Ogravesmall'] = 0xF7F2;\n t['Oharmenian'] = 0x0555;\n t['Ohm'] = 0x2126;\n t['Ohookabove'] = 0x1ECE;\n t['Ohorn'] = 0x01A0;\n t['Ohornacute'] = 0x1EDA;\n t['Ohorndotbelow'] = 0x1EE2;\n t['Ohorngrave'] = 0x1EDC;\n t['Ohornhookabove'] = 0x1EDE;\n t['Ohorntilde'] = 0x1EE0;\n t['Ohungarumlaut'] = 0x0150;\n t['Oi'] = 0x01A2;\n t['Oinvertedbreve'] = 0x020E;\n t['Omacron'] = 0x014C;\n t['Omacronacute'] = 0x1E52;\n t['Omacrongrave'] = 0x1E50;\n t['Omega'] = 0x2126;\n t['Omegacyrillic'] = 0x0460;\n t['Omegagreek'] = 0x03A9;\n t['Omegaroundcyrillic'] = 0x047A;\n t['Omegatitlocyrillic'] = 0x047C;\n t['Omegatonos'] = 0x038F;\n t['Omicron'] = 0x039F;\n t['Omicrontonos'] = 0x038C;\n t['Omonospace'] = 0xFF2F;\n t['Oneroman'] = 0x2160;\n t['Oogonek'] = 0x01EA;\n t['Oogonekmacron'] = 0x01EC;\n t['Oopen'] = 0x0186;\n t['Oslash'] = 0x00D8;\n t['Oslashacute'] = 0x01FE;\n t['Oslashsmall'] = 0xF7F8;\n t['Osmall'] = 0xF76F;\n t['Ostrokeacute'] = 0x01FE;\n t['Otcyrillic'] = 0x047E;\n t['Otilde'] = 0x00D5;\n t['Otildeacute'] = 0x1E4C;\n t['Otildedieresis'] = 0x1E4E;\n t['Otildesmall'] = 0xF7F5;\n t['P'] = 0x0050;\n t['Pacute'] = 0x1E54;\n t['Pcircle'] = 0x24C5;\n t['Pdotaccent'] = 0x1E56;\n t['Pecyrillic'] = 0x041F;\n t['Peharmenian'] = 0x054A;\n t['Pemiddlehookcyrillic'] = 0x04A6;\n t['Phi'] = 0x03A6;\n t['Phook'] = 0x01A4;\n t['Pi'] = 0x03A0;\n t['Piwrarmenian'] = 0x0553;\n t['Pmonospace'] = 0xFF30;\n t['Psi'] = 0x03A8;\n t['Psicyrillic'] = 0x0470;\n t['Psmall'] = 0xF770;\n t['Q'] = 0x0051;\n t['Qcircle'] = 0x24C6;\n t['Qmonospace'] = 0xFF31;\n t['Qsmall'] = 0xF771;\n t['R'] = 0x0052;\n t['Raarmenian'] = 0x054C;\n t['Racute'] = 0x0154;\n t['Rcaron'] = 0x0158;\n t['Rcedilla'] = 0x0156;\n t['Rcircle'] = 0x24C7;\n t['Rcommaaccent'] = 0x0156;\n t['Rdblgrave'] = 0x0210;\n t['Rdotaccent'] = 0x1E58;\n t['Rdotbelow'] = 0x1E5A;\n t['Rdotbelowmacron'] = 0x1E5C;\n t['Reharmenian'] = 0x0550;\n t['Rfraktur'] = 0x211C;\n t['Rho'] = 0x03A1;\n t['Ringsmall'] = 0xF6FC;\n t['Rinvertedbreve'] = 0x0212;\n t['Rlinebelow'] = 0x1E5E;\n t['Rmonospace'] = 0xFF32;\n t['Rsmall'] = 0xF772;\n t['Rsmallinverted'] = 0x0281;\n t['Rsmallinvertedsuperior'] = 0x02B6;\n t['S'] = 0x0053;\n t['SF010000'] = 0x250C;\n t['SF020000'] = 0x2514;\n t['SF030000'] = 0x2510;\n t['SF040000'] = 0x2518;\n t['SF050000'] = 0x253C;\n t['SF060000'] = 0x252C;\n t['SF070000'] = 0x2534;\n t['SF080000'] = 0x251C;\n t['SF090000'] = 0x2524;\n t['SF100000'] = 0x2500;\n t['SF110000'] = 0x2502;\n t['SF190000'] = 0x2561;\n t['SF200000'] = 0x2562;\n t['SF210000'] = 0x2556;\n t['SF220000'] = 0x2555;\n t['SF230000'] = 0x2563;\n t['SF240000'] = 0x2551;\n t['SF250000'] = 0x2557;\n t['SF260000'] = 0x255D;\n t['SF270000'] = 0x255C;\n t['SF280000'] = 0x255B;\n t['SF360000'] = 0x255E;\n t['SF370000'] = 0x255F;\n t['SF380000'] = 0x255A;\n t['SF390000'] = 0x2554;\n t['SF400000'] = 0x2569;\n t['SF410000'] = 0x2566;\n t['SF420000'] = 0x2560;\n t['SF430000'] = 0x2550;\n t['SF440000'] = 0x256C;\n t['SF450000'] = 0x2567;\n t['SF460000'] = 0x2568;\n t['SF470000'] = 0x2564;\n t['SF480000'] = 0x2565;\n t['SF490000'] = 0x2559;\n t['SF500000'] = 0x2558;\n t['SF510000'] = 0x2552;\n t['SF520000'] = 0x2553;\n t['SF530000'] = 0x256B;\n t['SF540000'] = 0x256A;\n t['Sacute'] = 0x015A;\n t['Sacutedotaccent'] = 0x1E64;\n t['Sampigreek'] = 0x03E0;\n t['Scaron'] = 0x0160;\n t['Scarondotaccent'] = 0x1E66;\n t['Scaronsmall'] = 0xF6FD;\n t['Scedilla'] = 0x015E;\n t['Schwa'] = 0x018F;\n t['Schwacyrillic'] = 0x04D8;\n t['Schwadieresiscyrillic'] = 0x04DA;\n t['Scircle'] = 0x24C8;\n t['Scircumflex'] = 0x015C;\n t['Scommaaccent'] = 0x0218;\n t['Sdotaccent'] = 0x1E60;\n t['Sdotbelow'] = 0x1E62;\n t['Sdotbelowdotaccent'] = 0x1E68;\n t['Seharmenian'] = 0x054D;\n t['Sevenroman'] = 0x2166;\n t['Shaarmenian'] = 0x0547;\n t['Shacyrillic'] = 0x0428;\n t['Shchacyrillic'] = 0x0429;\n t['Sheicoptic'] = 0x03E2;\n t['Shhacyrillic'] = 0x04BA;\n t['Shimacoptic'] = 0x03EC;\n t['Sigma'] = 0x03A3;\n t['Sixroman'] = 0x2165;\n t['Smonospace'] = 0xFF33;\n t['Softsigncyrillic'] = 0x042C;\n t['Ssmall'] = 0xF773;\n t['Stigmagreek'] = 0x03DA;\n t['T'] = 0x0054;\n t['Tau'] = 0x03A4;\n t['Tbar'] = 0x0166;\n t['Tcaron'] = 0x0164;\n t['Tcedilla'] = 0x0162;\n t['Tcircle'] = 0x24C9;\n t['Tcircumflexbelow'] = 0x1E70;\n t['Tcommaaccent'] = 0x0162;\n t['Tdotaccent'] = 0x1E6A;\n t['Tdotbelow'] = 0x1E6C;\n t['Tecyrillic'] = 0x0422;\n t['Tedescendercyrillic'] = 0x04AC;\n t['Tenroman'] = 0x2169;\n t['Tetsecyrillic'] = 0x04B4;\n t['Theta'] = 0x0398;\n t['Thook'] = 0x01AC;\n t['Thorn'] = 0x00DE;\n t['Thornsmall'] = 0xF7FE;\n t['Threeroman'] = 0x2162;\n t['Tildesmall'] = 0xF6FE;\n t['Tiwnarmenian'] = 0x054F;\n t['Tlinebelow'] = 0x1E6E;\n t['Tmonospace'] = 0xFF34;\n t['Toarmenian'] = 0x0539;\n t['Tonefive'] = 0x01BC;\n t['Tonesix'] = 0x0184;\n t['Tonetwo'] = 0x01A7;\n t['Tretroflexhook'] = 0x01AE;\n t['Tsecyrillic'] = 0x0426;\n t['Tshecyrillic'] = 0x040B;\n t['Tsmall'] = 0xF774;\n t['Twelveroman'] = 0x216B;\n t['Tworoman'] = 0x2161;\n t['U'] = 0x0055;\n t['Uacute'] = 0x00DA;\n t['Uacutesmall'] = 0xF7FA;\n t['Ubreve'] = 0x016C;\n t['Ucaron'] = 0x01D3;\n t['Ucircle'] = 0x24CA;\n t['Ucircumflex'] = 0x00DB;\n t['Ucircumflexbelow'] = 0x1E76;\n t['Ucircumflexsmall'] = 0xF7FB;\n t['Ucyrillic'] = 0x0423;\n t['Udblacute'] = 0x0170;\n t['Udblgrave'] = 0x0214;\n t['Udieresis'] = 0x00DC;\n t['Udieresisacute'] = 0x01D7;\n t['Udieresisbelow'] = 0x1E72;\n t['Udieresiscaron'] = 0x01D9;\n t['Udieresiscyrillic'] = 0x04F0;\n t['Udieresisgrave'] = 0x01DB;\n t['Udieresismacron'] = 0x01D5;\n t['Udieresissmall'] = 0xF7FC;\n t['Udotbelow'] = 0x1EE4;\n t['Ugrave'] = 0x00D9;\n t['Ugravesmall'] = 0xF7F9;\n t['Uhookabove'] = 0x1EE6;\n t['Uhorn'] = 0x01AF;\n t['Uhornacute'] = 0x1EE8;\n t['Uhorndotbelow'] = 0x1EF0;\n t['Uhorngrave'] = 0x1EEA;\n t['Uhornhookabove'] = 0x1EEC;\n t['Uhorntilde'] = 0x1EEE;\n t['Uhungarumlaut'] = 0x0170;\n t['Uhungarumlautcyrillic'] = 0x04F2;\n t['Uinvertedbreve'] = 0x0216;\n t['Ukcyrillic'] = 0x0478;\n t['Umacron'] = 0x016A;\n t['Umacroncyrillic'] = 0x04EE;\n t['Umacrondieresis'] = 0x1E7A;\n t['Umonospace'] = 0xFF35;\n t['Uogonek'] = 0x0172;\n t['Upsilon'] = 0x03A5;\n t['Upsilon1'] = 0x03D2;\n t['Upsilonacutehooksymbolgreek'] = 0x03D3;\n t['Upsilonafrican'] = 0x01B1;\n t['Upsilondieresis'] = 0x03AB;\n t['Upsilondieresishooksymbolgreek'] = 0x03D4;\n t['Upsilonhooksymbol'] = 0x03D2;\n t['Upsilontonos'] = 0x038E;\n t['Uring'] = 0x016E;\n t['Ushortcyrillic'] = 0x040E;\n t['Usmall'] = 0xF775;\n t['Ustraightcyrillic'] = 0x04AE;\n t['Ustraightstrokecyrillic'] = 0x04B0;\n t['Utilde'] = 0x0168;\n t['Utildeacute'] = 0x1E78;\n t['Utildebelow'] = 0x1E74;\n t['V'] = 0x0056;\n t['Vcircle'] = 0x24CB;\n t['Vdotbelow'] = 0x1E7E;\n t['Vecyrillic'] = 0x0412;\n t['Vewarmenian'] = 0x054E;\n t['Vhook'] = 0x01B2;\n t['Vmonospace'] = 0xFF36;\n t['Voarmenian'] = 0x0548;\n t['Vsmall'] = 0xF776;\n t['Vtilde'] = 0x1E7C;\n t['W'] = 0x0057;\n t['Wacute'] = 0x1E82;\n t['Wcircle'] = 0x24CC;\n t['Wcircumflex'] = 0x0174;\n t['Wdieresis'] = 0x1E84;\n t['Wdotaccent'] = 0x1E86;\n t['Wdotbelow'] = 0x1E88;\n t['Wgrave'] = 0x1E80;\n t['Wmonospace'] = 0xFF37;\n t['Wsmall'] = 0xF777;\n t['X'] = 0x0058;\n t['Xcircle'] = 0x24CD;\n t['Xdieresis'] = 0x1E8C;\n t['Xdotaccent'] = 0x1E8A;\n t['Xeharmenian'] = 0x053D;\n t['Xi'] = 0x039E;\n t['Xmonospace'] = 0xFF38;\n t['Xsmall'] = 0xF778;\n t['Y'] = 0x0059;\n t['Yacute'] = 0x00DD;\n t['Yacutesmall'] = 0xF7FD;\n t['Yatcyrillic'] = 0x0462;\n t['Ycircle'] = 0x24CE;\n t['Ycircumflex'] = 0x0176;\n t['Ydieresis'] = 0x0178;\n t['Ydieresissmall'] = 0xF7FF;\n t['Ydotaccent'] = 0x1E8E;\n t['Ydotbelow'] = 0x1EF4;\n t['Yericyrillic'] = 0x042B;\n t['Yerudieresiscyrillic'] = 0x04F8;\n t['Ygrave'] = 0x1EF2;\n t['Yhook'] = 0x01B3;\n t['Yhookabove'] = 0x1EF6;\n t['Yiarmenian'] = 0x0545;\n t['Yicyrillic'] = 0x0407;\n t['Yiwnarmenian'] = 0x0552;\n t['Ymonospace'] = 0xFF39;\n t['Ysmall'] = 0xF779;\n t['Ytilde'] = 0x1EF8;\n t['Yusbigcyrillic'] = 0x046A;\n t['Yusbigiotifiedcyrillic'] = 0x046C;\n t['Yuslittlecyrillic'] = 0x0466;\n t['Yuslittleiotifiedcyrillic'] = 0x0468;\n t['Z'] = 0x005A;\n t['Zaarmenian'] = 0x0536;\n t['Zacute'] = 0x0179;\n t['Zcaron'] = 0x017D;\n t['Zcaronsmall'] = 0xF6FF;\n t['Zcircle'] = 0x24CF;\n t['Zcircumflex'] = 0x1E90;\n t['Zdot'] = 0x017B;\n t['Zdotaccent'] = 0x017B;\n t['Zdotbelow'] = 0x1E92;\n t['Zecyrillic'] = 0x0417;\n t['Zedescendercyrillic'] = 0x0498;\n t['Zedieresiscyrillic'] = 0x04DE;\n t['Zeta'] = 0x0396;\n t['Zhearmenian'] = 0x053A;\n t['Zhebrevecyrillic'] = 0x04C1;\n t['Zhecyrillic'] = 0x0416;\n t['Zhedescendercyrillic'] = 0x0496;\n t['Zhedieresiscyrillic'] = 0x04DC;\n t['Zlinebelow'] = 0x1E94;\n t['Zmonospace'] = 0xFF3A;\n t['Zsmall'] = 0xF77A;\n t['Zstroke'] = 0x01B5;\n t['a'] = 0x0061;\n t['aabengali'] = 0x0986;\n t['aacute'] = 0x00E1;\n t['aadeva'] = 0x0906;\n t['aagujarati'] = 0x0A86;\n t['aagurmukhi'] = 0x0A06;\n t['aamatragurmukhi'] = 0x0A3E;\n t['aarusquare'] = 0x3303;\n t['aavowelsignbengali'] = 0x09BE;\n t['aavowelsigndeva'] = 0x093E;\n t['aavowelsigngujarati'] = 0x0ABE;\n t['abbreviationmarkarmenian'] = 0x055F;\n t['abbreviationsigndeva'] = 0x0970;\n t['abengali'] = 0x0985;\n t['abopomofo'] = 0x311A;\n t['abreve'] = 0x0103;\n t['abreveacute'] = 0x1EAF;\n t['abrevecyrillic'] = 0x04D1;\n t['abrevedotbelow'] = 0x1EB7;\n t['abrevegrave'] = 0x1EB1;\n t['abrevehookabove'] = 0x1EB3;\n t['abrevetilde'] = 0x1EB5;\n t['acaron'] = 0x01CE;\n t['acircle'] = 0x24D0;\n t['acircumflex'] = 0x00E2;\n t['acircumflexacute'] = 0x1EA5;\n t['acircumflexdotbelow'] = 0x1EAD;\n t['acircumflexgrave'] = 0x1EA7;\n t['acircumflexhookabove'] = 0x1EA9;\n t['acircumflextilde'] = 0x1EAB;\n t['acute'] = 0x00B4;\n t['acutebelowcmb'] = 0x0317;\n t['acutecmb'] = 0x0301;\n t['acutecomb'] = 0x0301;\n t['acutedeva'] = 0x0954;\n t['acutelowmod'] = 0x02CF;\n t['acutetonecmb'] = 0x0341;\n t['acyrillic'] = 0x0430;\n t['adblgrave'] = 0x0201;\n t['addakgurmukhi'] = 0x0A71;\n t['adeva'] = 0x0905;\n t['adieresis'] = 0x00E4;\n t['adieresiscyrillic'] = 0x04D3;\n t['adieresismacron'] = 0x01DF;\n t['adotbelow'] = 0x1EA1;\n t['adotmacron'] = 0x01E1;\n t['ae'] = 0x00E6;\n t['aeacute'] = 0x01FD;\n t['aekorean'] = 0x3150;\n t['aemacron'] = 0x01E3;\n t['afii00208'] = 0x2015;\n t['afii08941'] = 0x20A4;\n t['afii10017'] = 0x0410;\n t['afii10018'] = 0x0411;\n t['afii10019'] = 0x0412;\n t['afii10020'] = 0x0413;\n t['afii10021'] = 0x0414;\n t['afii10022'] = 0x0415;\n t['afii10023'] = 0x0401;\n t['afii10024'] = 0x0416;\n t['afii10025'] = 0x0417;\n t['afii10026'] = 0x0418;\n t['afii10027'] = 0x0419;\n t['afii10028'] = 0x041A;\n t['afii10029'] = 0x041B;\n t['afii10030'] = 0x041C;\n t['afii10031'] = 0x041D;\n t['afii10032'] = 0x041E;\n t['afii10033'] = 0x041F;\n t['afii10034'] = 0x0420;\n t['afii10035'] = 0x0421;\n t['afii10036'] = 0x0422;\n t['afii10037'] = 0x0423;\n t['afii10038'] = 0x0424;\n t['afii10039'] = 0x0425;\n t['afii10040'] = 0x0426;\n t['afii10041'] = 0x0427;\n t['afii10042'] = 0x0428;\n t['afii10043'] = 0x0429;\n t['afii10044'] = 0x042A;\n t['afii10045'] = 0x042B;\n t['afii10046'] = 0x042C;\n t['afii10047'] = 0x042D;\n t['afii10048'] = 0x042E;\n t['afii10049'] = 0x042F;\n t['afii10050'] = 0x0490;\n t['afii10051'] = 0x0402;\n t['afii10052'] = 0x0403;\n t['afii10053'] = 0x0404;\n t['afii10054'] = 0x0405;\n t['afii10055'] = 0x0406;\n t['afii10056'] = 0x0407;\n t['afii10057'] = 0x0408;\n t['afii10058'] = 0x0409;\n t['afii10059'] = 0x040A;\n t['afii10060'] = 0x040B;\n t['afii10061'] = 0x040C;\n t['afii10062'] = 0x040E;\n t['afii10063'] = 0xF6C4;\n t['afii10064'] = 0xF6C5;\n t['afii10065'] = 0x0430;\n t['afii10066'] = 0x0431;\n t['afii10067'] = 0x0432;\n t['afii10068'] = 0x0433;\n t['afii10069'] = 0x0434;\n t['afii10070'] = 0x0435;\n t['afii10071'] = 0x0451;\n t['afii10072'] = 0x0436;\n t['afii10073'] = 0x0437;\n t['afii10074'] = 0x0438;\n t['afii10075'] = 0x0439;\n t['afii10076'] = 0x043A;\n t['afii10077'] = 0x043B;\n t['afii10078'] = 0x043C;\n t['afii10079'] = 0x043D;\n t['afii10080'] = 0x043E;\n t['afii10081'] = 0x043F;\n t['afii10082'] = 0x0440;\n t['afii10083'] = 0x0441;\n t['afii10084'] = 0x0442;\n t['afii10085'] = 0x0443;\n t['afii10086'] = 0x0444;\n t['afii10087'] = 0x0445;\n t['afii10088'] = 0x0446;\n t['afii10089'] = 0x0447;\n t['afii10090'] = 0x0448;\n t['afii10091'] = 0x0449;\n t['afii10092'] = 0x044A;\n t['afii10093'] = 0x044B;\n t['afii10094'] = 0x044C;\n t['afii10095'] = 0x044D;\n t['afii10096'] = 0x044E;\n t['afii10097'] = 0x044F;\n t['afii10098'] = 0x0491;\n t['afii10099'] = 0x0452;\n t['afii10100'] = 0x0453;\n t['afii10101'] = 0x0454;\n t['afii10102'] = 0x0455;\n t['afii10103'] = 0x0456;\n t['afii10104'] = 0x0457;\n t['afii10105'] = 0x0458;\n t['afii10106'] = 0x0459;\n t['afii10107'] = 0x045A;\n t['afii10108'] = 0x045B;\n t['afii10109'] = 0x045C;\n t['afii10110'] = 0x045E;\n t['afii10145'] = 0x040F;\n t['afii10146'] = 0x0462;\n t['afii10147'] = 0x0472;\n t['afii10148'] = 0x0474;\n t['afii10192'] = 0xF6C6;\n t['afii10193'] = 0x045F;\n t['afii10194'] = 0x0463;\n t['afii10195'] = 0x0473;\n t['afii10196'] = 0x0475;\n t['afii10831'] = 0xF6C7;\n t['afii10832'] = 0xF6C8;\n t['afii10846'] = 0x04D9;\n t['afii299'] = 0x200E;\n t['afii300'] = 0x200F;\n t['afii301'] = 0x200D;\n t['afii57381'] = 0x066A;\n t['afii57388'] = 0x060C;\n t['afii57392'] = 0x0660;\n t['afii57393'] = 0x0661;\n t['afii57394'] = 0x0662;\n t['afii57395'] = 0x0663;\n t['afii57396'] = 0x0664;\n t['afii57397'] = 0x0665;\n t['afii57398'] = 0x0666;\n t['afii57399'] = 0x0667;\n t['afii57400'] = 0x0668;\n t['afii57401'] = 0x0669;\n t['afii57403'] = 0x061B;\n t['afii57407'] = 0x061F;\n t['afii57409'] = 0x0621;\n t['afii57410'] = 0x0622;\n t['afii57411'] = 0x0623;\n t['afii57412'] = 0x0624;\n t['afii57413'] = 0x0625;\n t['afii57414'] = 0x0626;\n t['afii57415'] = 0x0627;\n t['afii57416'] = 0x0628;\n t['afii57417'] = 0x0629;\n t['afii57418'] = 0x062A;\n t['afii57419'] = 0x062B;\n t['afii57420'] = 0x062C;\n t['afii57421'] = 0x062D;\n t['afii57422'] = 0x062E;\n t['afii57423'] = 0x062F;\n t['afii57424'] = 0x0630;\n t['afii57425'] = 0x0631;\n t['afii57426'] = 0x0632;\n t['afii57427'] = 0x0633;\n t['afii57428'] = 0x0634;\n t['afii57429'] = 0x0635;\n t['afii57430'] = 0x0636;\n t['afii57431'] = 0x0637;\n t['afii57432'] = 0x0638;\n t['afii57433'] = 0x0639;\n t['afii57434'] = 0x063A;\n t['afii57440'] = 0x0640;\n t['afii57441'] = 0x0641;\n t['afii57442'] = 0x0642;\n t['afii57443'] = 0x0643;\n t['afii57444'] = 0x0644;\n t['afii57445'] = 0x0645;\n t['afii57446'] = 0x0646;\n t['afii57448'] = 0x0648;\n t['afii57449'] = 0x0649;\n t['afii57450'] = 0x064A;\n t['afii57451'] = 0x064B;\n t['afii57452'] = 0x064C;\n t['afii57453'] = 0x064D;\n t['afii57454'] = 0x064E;\n t['afii57455'] = 0x064F;\n t['afii57456'] = 0x0650;\n t['afii57457'] = 0x0651;\n t['afii57458'] = 0x0652;\n t['afii57470'] = 0x0647;\n t['afii57505'] = 0x06A4;\n t['afii57506'] = 0x067E;\n t['afii57507'] = 0x0686;\n t['afii57508'] = 0x0698;\n t['afii57509'] = 0x06AF;\n t['afii57511'] = 0x0679;\n t['afii57512'] = 0x0688;\n t['afii57513'] = 0x0691;\n t['afii57514'] = 0x06BA;\n t['afii57519'] = 0x06D2;\n t['afii57534'] = 0x06D5;\n t['afii57636'] = 0x20AA;\n t['afii57645'] = 0x05BE;\n t['afii57658'] = 0x05C3;\n t['afii57664'] = 0x05D0;\n t['afii57665'] = 0x05D1;\n t['afii57666'] = 0x05D2;\n t['afii57667'] = 0x05D3;\n t['afii57668'] = 0x05D4;\n t['afii57669'] = 0x05D5;\n t['afii57670'] = 0x05D6;\n t['afii57671'] = 0x05D7;\n t['afii57672'] = 0x05D8;\n t['afii57673'] = 0x05D9;\n t['afii57674'] = 0x05DA;\n t['afii57675'] = 0x05DB;\n t['afii57676'] = 0x05DC;\n t['afii57677'] = 0x05DD;\n t['afii57678'] = 0x05DE;\n t['afii57679'] = 0x05DF;\n t['afii57680'] = 0x05E0;\n t['afii57681'] = 0x05E1;\n t['afii57682'] = 0x05E2;\n t['afii57683'] = 0x05E3;\n t['afii57684'] = 0x05E4;\n t['afii57685'] = 0x05E5;\n t['afii57686'] = 0x05E6;\n t['afii57687'] = 0x05E7;\n t['afii57688'] = 0x05E8;\n t['afii57689'] = 0x05E9;\n t['afii57690'] = 0x05EA;\n t['afii57694'] = 0xFB2A;\n t['afii57695'] = 0xFB2B;\n t['afii57700'] = 0xFB4B;\n t['afii57705'] = 0xFB1F;\n t['afii57716'] = 0x05F0;\n t['afii57717'] = 0x05F1;\n t['afii57718'] = 0x05F2;\n t['afii57723'] = 0xFB35;\n t['afii57793'] = 0x05B4;\n t['afii57794'] = 0x05B5;\n t['afii57795'] = 0x05B6;\n t['afii57796'] = 0x05BB;\n t['afii57797'] = 0x05B8;\n t['afii57798'] = 0x05B7;\n t['afii57799'] = 0x05B0;\n t['afii57800'] = 0x05B2;\n t['afii57801'] = 0x05B1;\n t['afii57802'] = 0x05B3;\n t['afii57803'] = 0x05C2;\n t['afii57804'] = 0x05C1;\n t['afii57806'] = 0x05B9;\n t['afii57807'] = 0x05BC;\n t['afii57839'] = 0x05BD;\n t['afii57841'] = 0x05BF;\n t['afii57842'] = 0x05C0;\n t['afii57929'] = 0x02BC;\n t['afii61248'] = 0x2105;\n t['afii61289'] = 0x2113;\n t['afii61352'] = 0x2116;\n t['afii61573'] = 0x202C;\n t['afii61574'] = 0x202D;\n t['afii61575'] = 0x202E;\n t['afii61664'] = 0x200C;\n t['afii63167'] = 0x066D;\n t['afii64937'] = 0x02BD;\n t['agrave'] = 0x00E0;\n t['agujarati'] = 0x0A85;\n t['agurmukhi'] = 0x0A05;\n t['ahiragana'] = 0x3042;\n t['ahookabove'] = 0x1EA3;\n t['aibengali'] = 0x0990;\n t['aibopomofo'] = 0x311E;\n t['aideva'] = 0x0910;\n t['aiecyrillic'] = 0x04D5;\n t['aigujarati'] = 0x0A90;\n t['aigurmukhi'] = 0x0A10;\n t['aimatragurmukhi'] = 0x0A48;\n t['ainarabic'] = 0x0639;\n t['ainfinalarabic'] = 0xFECA;\n t['aininitialarabic'] = 0xFECB;\n t['ainmedialarabic'] = 0xFECC;\n t['ainvertedbreve'] = 0x0203;\n t['aivowelsignbengali'] = 0x09C8;\n t['aivowelsigndeva'] = 0x0948;\n t['aivowelsigngujarati'] = 0x0AC8;\n t['akatakana'] = 0x30A2;\n t['akatakanahalfwidth'] = 0xFF71;\n t['akorean'] = 0x314F;\n t['alef'] = 0x05D0;\n t['alefarabic'] = 0x0627;\n t['alefdageshhebrew'] = 0xFB30;\n t['aleffinalarabic'] = 0xFE8E;\n t['alefhamzaabovearabic'] = 0x0623;\n t['alefhamzaabovefinalarabic'] = 0xFE84;\n t['alefhamzabelowarabic'] = 0x0625;\n t['alefhamzabelowfinalarabic'] = 0xFE88;\n t['alefhebrew'] = 0x05D0;\n t['aleflamedhebrew'] = 0xFB4F;\n t['alefmaddaabovearabic'] = 0x0622;\n t['alefmaddaabovefinalarabic'] = 0xFE82;\n t['alefmaksuraarabic'] = 0x0649;\n t['alefmaksurafinalarabic'] = 0xFEF0;\n t['alefmaksurainitialarabic'] = 0xFEF3;\n t['alefmaksuramedialarabic'] = 0xFEF4;\n t['alefpatahhebrew'] = 0xFB2E;\n t['alefqamatshebrew'] = 0xFB2F;\n t['aleph'] = 0x2135;\n t['allequal'] = 0x224C;\n t['alpha'] = 0x03B1;\n t['alphatonos'] = 0x03AC;\n t['amacron'] = 0x0101;\n t['amonospace'] = 0xFF41;\n t['ampersand'] = 0x0026;\n t['ampersandmonospace'] = 0xFF06;\n t['ampersandsmall'] = 0xF726;\n t['amsquare'] = 0x33C2;\n t['anbopomofo'] = 0x3122;\n t['angbopomofo'] = 0x3124;\n t['angbracketleft'] = 0x3008;\n t['angbracketright'] = 0x3009;\n t['angkhankhuthai'] = 0x0E5A;\n t['angle'] = 0x2220;\n t['anglebracketleft'] = 0x3008;\n t['anglebracketleftvertical'] = 0xFE3F;\n t['anglebracketright'] = 0x3009;\n t['anglebracketrightvertical'] = 0xFE40;\n t['angleleft'] = 0x2329;\n t['angleright'] = 0x232A;\n t['angstrom'] = 0x212B;\n t['anoteleia'] = 0x0387;\n t['anudattadeva'] = 0x0952;\n t['anusvarabengali'] = 0x0982;\n t['anusvaradeva'] = 0x0902;\n t['anusvaragujarati'] = 0x0A82;\n t['aogonek'] = 0x0105;\n t['apaatosquare'] = 0x3300;\n t['aparen'] = 0x249C;\n t['apostrophearmenian'] = 0x055A;\n t['apostrophemod'] = 0x02BC;\n t['apple'] = 0xF8FF;\n t['approaches'] = 0x2250;\n t['approxequal'] = 0x2248;\n t['approxequalorimage'] = 0x2252;\n t['approximatelyequal'] = 0x2245;\n t['araeaekorean'] = 0x318E;\n t['araeakorean'] = 0x318D;\n t['arc'] = 0x2312;\n t['arighthalfring'] = 0x1E9A;\n t['aring'] = 0x00E5;\n t['aringacute'] = 0x01FB;\n t['aringbelow'] = 0x1E01;\n t['arrowboth'] = 0x2194;\n t['arrowdashdown'] = 0x21E3;\n t['arrowdashleft'] = 0x21E0;\n t['arrowdashright'] = 0x21E2;\n t['arrowdashup'] = 0x21E1;\n t['arrowdblboth'] = 0x21D4;\n t['arrowdbldown'] = 0x21D3;\n t['arrowdblleft'] = 0x21D0;\n t['arrowdblright'] = 0x21D2;\n t['arrowdblup'] = 0x21D1;\n t['arrowdown'] = 0x2193;\n t['arrowdownleft'] = 0x2199;\n t['arrowdownright'] = 0x2198;\n t['arrowdownwhite'] = 0x21E9;\n t['arrowheaddownmod'] = 0x02C5;\n t['arrowheadleftmod'] = 0x02C2;\n t['arrowheadrightmod'] = 0x02C3;\n t['arrowheadupmod'] = 0x02C4;\n t['arrowhorizex'] = 0xF8E7;\n t['arrowleft'] = 0x2190;\n t['arrowleftdbl'] = 0x21D0;\n t['arrowleftdblstroke'] = 0x21CD;\n t['arrowleftoverright'] = 0x21C6;\n t['arrowleftwhite'] = 0x21E6;\n t['arrowright'] = 0x2192;\n t['arrowrightdblstroke'] = 0x21CF;\n t['arrowrightheavy'] = 0x279E;\n t['arrowrightoverleft'] = 0x21C4;\n t['arrowrightwhite'] = 0x21E8;\n t['arrowtableft'] = 0x21E4;\n t['arrowtabright'] = 0x21E5;\n t['arrowup'] = 0x2191;\n t['arrowupdn'] = 0x2195;\n t['arrowupdnbse'] = 0x21A8;\n t['arrowupdownbase'] = 0x21A8;\n t['arrowupleft'] = 0x2196;\n t['arrowupleftofdown'] = 0x21C5;\n t['arrowupright'] = 0x2197;\n t['arrowupwhite'] = 0x21E7;\n t['arrowvertex'] = 0xF8E6;\n t['asciicircum'] = 0x005E;\n t['asciicircummonospace'] = 0xFF3E;\n t['asciitilde'] = 0x007E;\n t['asciitildemonospace'] = 0xFF5E;\n t['ascript'] = 0x0251;\n t['ascriptturned'] = 0x0252;\n t['asmallhiragana'] = 0x3041;\n t['asmallkatakana'] = 0x30A1;\n t['asmallkatakanahalfwidth'] = 0xFF67;\n t['asterisk'] = 0x002A;\n t['asteriskaltonearabic'] = 0x066D;\n t['asteriskarabic'] = 0x066D;\n t['asteriskmath'] = 0x2217;\n t['asteriskmonospace'] = 0xFF0A;\n t['asterisksmall'] = 0xFE61;\n t['asterism'] = 0x2042;\n t['asuperior'] = 0xF6E9;\n t['asymptoticallyequal'] = 0x2243;\n t['at'] = 0x0040;\n t['atilde'] = 0x00E3;\n t['atmonospace'] = 0xFF20;\n t['atsmall'] = 0xFE6B;\n t['aturned'] = 0x0250;\n t['aubengali'] = 0x0994;\n t['aubopomofo'] = 0x3120;\n t['audeva'] = 0x0914;\n t['augujarati'] = 0x0A94;\n t['augurmukhi'] = 0x0A14;\n t['aulengthmarkbengali'] = 0x09D7;\n t['aumatragurmukhi'] = 0x0A4C;\n t['auvowelsignbengali'] = 0x09CC;\n t['auvowelsigndeva'] = 0x094C;\n t['auvowelsigngujarati'] = 0x0ACC;\n t['avagrahadeva'] = 0x093D;\n t['aybarmenian'] = 0x0561;\n t['ayin'] = 0x05E2;\n t['ayinaltonehebrew'] = 0xFB20;\n t['ayinhebrew'] = 0x05E2;\n t['b'] = 0x0062;\n t['babengali'] = 0x09AC;\n t['backslash'] = 0x005C;\n t['backslashmonospace'] = 0xFF3C;\n t['badeva'] = 0x092C;\n t['bagujarati'] = 0x0AAC;\n t['bagurmukhi'] = 0x0A2C;\n t['bahiragana'] = 0x3070;\n t['bahtthai'] = 0x0E3F;\n t['bakatakana'] = 0x30D0;\n t['bar'] = 0x007C;\n t['barmonospace'] = 0xFF5C;\n t['bbopomofo'] = 0x3105;\n t['bcircle'] = 0x24D1;\n t['bdotaccent'] = 0x1E03;\n t['bdotbelow'] = 0x1E05;\n t['beamedsixteenthnotes'] = 0x266C;\n t['because'] = 0x2235;\n t['becyrillic'] = 0x0431;\n t['beharabic'] = 0x0628;\n t['behfinalarabic'] = 0xFE90;\n t['behinitialarabic'] = 0xFE91;\n t['behiragana'] = 0x3079;\n t['behmedialarabic'] = 0xFE92;\n t['behmeeminitialarabic'] = 0xFC9F;\n t['behmeemisolatedarabic'] = 0xFC08;\n t['behnoonfinalarabic'] = 0xFC6D;\n t['bekatakana'] = 0x30D9;\n t['benarmenian'] = 0x0562;\n t['bet'] = 0x05D1;\n t['beta'] = 0x03B2;\n t['betasymbolgreek'] = 0x03D0;\n t['betdagesh'] = 0xFB31;\n t['betdageshhebrew'] = 0xFB31;\n t['bethebrew'] = 0x05D1;\n t['betrafehebrew'] = 0xFB4C;\n t['bhabengali'] = 0x09AD;\n t['bhadeva'] = 0x092D;\n t['bhagujarati'] = 0x0AAD;\n t['bhagurmukhi'] = 0x0A2D;\n t['bhook'] = 0x0253;\n t['bihiragana'] = 0x3073;\n t['bikatakana'] = 0x30D3;\n t['bilabialclick'] = 0x0298;\n t['bindigurmukhi'] = 0x0A02;\n t['birusquare'] = 0x3331;\n t['blackcircle'] = 0x25CF;\n t['blackdiamond'] = 0x25C6;\n t['blackdownpointingtriangle'] = 0x25BC;\n t['blackleftpointingpointer'] = 0x25C4;\n t['blackleftpointingtriangle'] = 0x25C0;\n t['blacklenticularbracketleft'] = 0x3010;\n t['blacklenticularbracketleftvertical'] = 0xFE3B;\n t['blacklenticularbracketright'] = 0x3011;\n t['blacklenticularbracketrightvertical'] = 0xFE3C;\n t['blacklowerlefttriangle'] = 0x25E3;\n t['blacklowerrighttriangle'] = 0x25E2;\n t['blackrectangle'] = 0x25AC;\n t['blackrightpointingpointer'] = 0x25BA;\n t['blackrightpointingtriangle'] = 0x25B6;\n t['blacksmallsquare'] = 0x25AA;\n t['blacksmilingface'] = 0x263B;\n t['blacksquare'] = 0x25A0;\n t['blackstar'] = 0x2605;\n t['blackupperlefttriangle'] = 0x25E4;\n t['blackupperrighttriangle'] = 0x25E5;\n t['blackuppointingsmalltriangle'] = 0x25B4;\n t['blackuppointingtriangle'] = 0x25B2;\n t['blank'] = 0x2423;\n t['blinebelow'] = 0x1E07;\n t['block'] = 0x2588;\n t['bmonospace'] = 0xFF42;\n t['bobaimaithai'] = 0x0E1A;\n t['bohiragana'] = 0x307C;\n t['bokatakana'] = 0x30DC;\n t['bparen'] = 0x249D;\n t['bqsquare'] = 0x33C3;\n t['braceex'] = 0xF8F4;\n t['braceleft'] = 0x007B;\n t['braceleftbt'] = 0xF8F3;\n t['braceleftmid'] = 0xF8F2;\n t['braceleftmonospace'] = 0xFF5B;\n t['braceleftsmall'] = 0xFE5B;\n t['bracelefttp'] = 0xF8F1;\n t['braceleftvertical'] = 0xFE37;\n t['braceright'] = 0x007D;\n t['bracerightbt'] = 0xF8FE;\n t['bracerightmid'] = 0xF8FD;\n t['bracerightmonospace'] = 0xFF5D;\n t['bracerightsmall'] = 0xFE5C;\n t['bracerighttp'] = 0xF8FC;\n t['bracerightvertical'] = 0xFE38;\n t['bracketleft'] = 0x005B;\n t['bracketleftbt'] = 0xF8F0;\n t['bracketleftex'] = 0xF8EF;\n t['bracketleftmonospace'] = 0xFF3B;\n t['bracketlefttp'] = 0xF8EE;\n t['bracketright'] = 0x005D;\n t['bracketrightbt'] = 0xF8FB;\n t['bracketrightex'] = 0xF8FA;\n t['bracketrightmonospace'] = 0xFF3D;\n t['bracketrighttp'] = 0xF8F9;\n t['breve'] = 0x02D8;\n t['brevebelowcmb'] = 0x032E;\n t['brevecmb'] = 0x0306;\n t['breveinvertedbelowcmb'] = 0x032F;\n t['breveinvertedcmb'] = 0x0311;\n t['breveinverteddoublecmb'] = 0x0361;\n t['bridgebelowcmb'] = 0x032A;\n t['bridgeinvertedbelowcmb'] = 0x033A;\n t['brokenbar'] = 0x00A6;\n t['bstroke'] = 0x0180;\n t['bsuperior'] = 0xF6EA;\n t['btopbar'] = 0x0183;\n t['buhiragana'] = 0x3076;\n t['bukatakana'] = 0x30D6;\n t['bullet'] = 0x2022;\n t['bulletinverse'] = 0x25D8;\n t['bulletoperator'] = 0x2219;\n t['bullseye'] = 0x25CE;\n t['c'] = 0x0063;\n t['caarmenian'] = 0x056E;\n t['cabengali'] = 0x099A;\n t['cacute'] = 0x0107;\n t['cadeva'] = 0x091A;\n t['cagujarati'] = 0x0A9A;\n t['cagurmukhi'] = 0x0A1A;\n t['calsquare'] = 0x3388;\n t['candrabindubengali'] = 0x0981;\n t['candrabinducmb'] = 0x0310;\n t['candrabindudeva'] = 0x0901;\n t['candrabindugujarati'] = 0x0A81;\n t['capslock'] = 0x21EA;\n t['careof'] = 0x2105;\n t['caron'] = 0x02C7;\n t['caronbelowcmb'] = 0x032C;\n t['caroncmb'] = 0x030C;\n t['carriagereturn'] = 0x21B5;\n t['cbopomofo'] = 0x3118;\n t['ccaron'] = 0x010D;\n t['ccedilla'] = 0x00E7;\n t['ccedillaacute'] = 0x1E09;\n t['ccircle'] = 0x24D2;\n t['ccircumflex'] = 0x0109;\n t['ccurl'] = 0x0255;\n t['cdot'] = 0x010B;\n t['cdotaccent'] = 0x010B;\n t['cdsquare'] = 0x33C5;\n t['cedilla'] = 0x00B8;\n t['cedillacmb'] = 0x0327;\n t['cent'] = 0x00A2;\n t['centigrade'] = 0x2103;\n t['centinferior'] = 0xF6DF;\n t['centmonospace'] = 0xFFE0;\n t['centoldstyle'] = 0xF7A2;\n t['centsuperior'] = 0xF6E0;\n t['chaarmenian'] = 0x0579;\n t['chabengali'] = 0x099B;\n t['chadeva'] = 0x091B;\n t['chagujarati'] = 0x0A9B;\n t['chagurmukhi'] = 0x0A1B;\n t['chbopomofo'] = 0x3114;\n t['cheabkhasiancyrillic'] = 0x04BD;\n t['checkmark'] = 0x2713;\n t['checyrillic'] = 0x0447;\n t['chedescenderabkhasiancyrillic'] = 0x04BF;\n t['chedescendercyrillic'] = 0x04B7;\n t['chedieresiscyrillic'] = 0x04F5;\n t['cheharmenian'] = 0x0573;\n t['chekhakassiancyrillic'] = 0x04CC;\n t['cheverticalstrokecyrillic'] = 0x04B9;\n t['chi'] = 0x03C7;\n t['chieuchacirclekorean'] = 0x3277;\n t['chieuchaparenkorean'] = 0x3217;\n t['chieuchcirclekorean'] = 0x3269;\n t['chieuchkorean'] = 0x314A;\n t['chieuchparenkorean'] = 0x3209;\n t['chochangthai'] = 0x0E0A;\n t['chochanthai'] = 0x0E08;\n t['chochingthai'] = 0x0E09;\n t['chochoethai'] = 0x0E0C;\n t['chook'] = 0x0188;\n t['cieucacirclekorean'] = 0x3276;\n t['cieucaparenkorean'] = 0x3216;\n t['cieuccirclekorean'] = 0x3268;\n t['cieuckorean'] = 0x3148;\n t['cieucparenkorean'] = 0x3208;\n t['cieucuparenkorean'] = 0x321C;\n t['circle'] = 0x25CB;\n t['circlecopyrt'] = 0x00A9;\n t['circlemultiply'] = 0x2297;\n t['circleot'] = 0x2299;\n t['circleplus'] = 0x2295;\n t['circlepostalmark'] = 0x3036;\n t['circlewithlefthalfblack'] = 0x25D0;\n t['circlewithrighthalfblack'] = 0x25D1;\n t['circumflex'] = 0x02C6;\n t['circumflexbelowcmb'] = 0x032D;\n t['circumflexcmb'] = 0x0302;\n t['clear'] = 0x2327;\n t['clickalveolar'] = 0x01C2;\n t['clickdental'] = 0x01C0;\n t['clicklateral'] = 0x01C1;\n t['clickretroflex'] = 0x01C3;\n t['club'] = 0x2663;\n t['clubsuitblack'] = 0x2663;\n t['clubsuitwhite'] = 0x2667;\n t['cmcubedsquare'] = 0x33A4;\n t['cmonospace'] = 0xFF43;\n t['cmsquaredsquare'] = 0x33A0;\n t['coarmenian'] = 0x0581;\n t['colon'] = 0x003A;\n t['colonmonetary'] = 0x20A1;\n t['colonmonospace'] = 0xFF1A;\n t['colonsign'] = 0x20A1;\n t['colonsmall'] = 0xFE55;\n t['colontriangularhalfmod'] = 0x02D1;\n t['colontriangularmod'] = 0x02D0;\n t['comma'] = 0x002C;\n t['commaabovecmb'] = 0x0313;\n t['commaaboverightcmb'] = 0x0315;\n t['commaaccent'] = 0xF6C3;\n t['commaarabic'] = 0x060C;\n t['commaarmenian'] = 0x055D;\n t['commainferior'] = 0xF6E1;\n t['commamonospace'] = 0xFF0C;\n t['commareversedabovecmb'] = 0x0314;\n t['commareversedmod'] = 0x02BD;\n t['commasmall'] = 0xFE50;\n t['commasuperior'] = 0xF6E2;\n t['commaturnedabovecmb'] = 0x0312;\n t['commaturnedmod'] = 0x02BB;\n t['compass'] = 0x263C;\n t['congruent'] = 0x2245;\n t['contourintegral'] = 0x222E;\n t['control'] = 0x2303;\n t['controlACK'] = 0x0006;\n t['controlBEL'] = 0x0007;\n t['controlBS'] = 0x0008;\n t['controlCAN'] = 0x0018;\n t['controlCR'] = 0x000D;\n t['controlDC1'] = 0x0011;\n t['controlDC2'] = 0x0012;\n t['controlDC3'] = 0x0013;\n t['controlDC4'] = 0x0014;\n t['controlDEL'] = 0x007F;\n t['controlDLE'] = 0x0010;\n t['controlEM'] = 0x0019;\n t['controlENQ'] = 0x0005;\n t['controlEOT'] = 0x0004;\n t['controlESC'] = 0x001B;\n t['controlETB'] = 0x0017;\n t['controlETX'] = 0x0003;\n t['controlFF'] = 0x000C;\n t['controlFS'] = 0x001C;\n t['controlGS'] = 0x001D;\n t['controlHT'] = 0x0009;\n t['controlLF'] = 0x000A;\n t['controlNAK'] = 0x0015;\n t['controlNULL'] = 0x0000;\n t['controlRS'] = 0x001E;\n t['controlSI'] = 0x000F;\n t['controlSO'] = 0x000E;\n t['controlSOT'] = 0x0002;\n t['controlSTX'] = 0x0001;\n t['controlSUB'] = 0x001A;\n t['controlSYN'] = 0x0016;\n t['controlUS'] = 0x001F;\n t['controlVT'] = 0x000B;\n t['copyright'] = 0x00A9;\n t['copyrightsans'] = 0xF8E9;\n t['copyrightserif'] = 0xF6D9;\n t['cornerbracketleft'] = 0x300C;\n t['cornerbracketlefthalfwidth'] = 0xFF62;\n t['cornerbracketleftvertical'] = 0xFE41;\n t['cornerbracketright'] = 0x300D;\n t['cornerbracketrighthalfwidth'] = 0xFF63;\n t['cornerbracketrightvertical'] = 0xFE42;\n t['corporationsquare'] = 0x337F;\n t['cosquare'] = 0x33C7;\n t['coverkgsquare'] = 0x33C6;\n t['cparen'] = 0x249E;\n t['cruzeiro'] = 0x20A2;\n t['cstretched'] = 0x0297;\n t['curlyand'] = 0x22CF;\n t['curlyor'] = 0x22CE;\n t['currency'] = 0x00A4;\n t['cyrBreve'] = 0xF6D1;\n t['cyrFlex'] = 0xF6D2;\n t['cyrbreve'] = 0xF6D4;\n t['cyrflex'] = 0xF6D5;\n t['d'] = 0x0064;\n t['daarmenian'] = 0x0564;\n t['dabengali'] = 0x09A6;\n t['dadarabic'] = 0x0636;\n t['dadeva'] = 0x0926;\n t['dadfinalarabic'] = 0xFEBE;\n t['dadinitialarabic'] = 0xFEBF;\n t['dadmedialarabic'] = 0xFEC0;\n t['dagesh'] = 0x05BC;\n t['dageshhebrew'] = 0x05BC;\n t['dagger'] = 0x2020;\n t['daggerdbl'] = 0x2021;\n t['dagujarati'] = 0x0AA6;\n t['dagurmukhi'] = 0x0A26;\n t['dahiragana'] = 0x3060;\n t['dakatakana'] = 0x30C0;\n t['dalarabic'] = 0x062F;\n t['dalet'] = 0x05D3;\n t['daletdagesh'] = 0xFB33;\n t['daletdageshhebrew'] = 0xFB33;\n t['dalethebrew'] = 0x05D3;\n t['dalfinalarabic'] = 0xFEAA;\n t['dammaarabic'] = 0x064F;\n t['dammalowarabic'] = 0x064F;\n t['dammatanaltonearabic'] = 0x064C;\n t['dammatanarabic'] = 0x064C;\n t['danda'] = 0x0964;\n t['dargahebrew'] = 0x05A7;\n t['dargalefthebrew'] = 0x05A7;\n t['dasiapneumatacyrilliccmb'] = 0x0485;\n t['dblGrave'] = 0xF6D3;\n t['dblanglebracketleft'] = 0x300A;\n t['dblanglebracketleftvertical'] = 0xFE3D;\n t['dblanglebracketright'] = 0x300B;\n t['dblanglebracketrightvertical'] = 0xFE3E;\n t['dblarchinvertedbelowcmb'] = 0x032B;\n t['dblarrowleft'] = 0x21D4;\n t['dblarrowright'] = 0x21D2;\n t['dbldanda'] = 0x0965;\n t['dblgrave'] = 0xF6D6;\n t['dblgravecmb'] = 0x030F;\n t['dblintegral'] = 0x222C;\n t['dbllowline'] = 0x2017;\n t['dbllowlinecmb'] = 0x0333;\n t['dbloverlinecmb'] = 0x033F;\n t['dblprimemod'] = 0x02BA;\n t['dblverticalbar'] = 0x2016;\n t['dblverticallineabovecmb'] = 0x030E;\n t['dbopomofo'] = 0x3109;\n t['dbsquare'] = 0x33C8;\n t['dcaron'] = 0x010F;\n t['dcedilla'] = 0x1E11;\n t['dcircle'] = 0x24D3;\n t['dcircumflexbelow'] = 0x1E13;\n t['dcroat'] = 0x0111;\n t['ddabengali'] = 0x09A1;\n t['ddadeva'] = 0x0921;\n t['ddagujarati'] = 0x0AA1;\n t['ddagurmukhi'] = 0x0A21;\n t['ddalarabic'] = 0x0688;\n t['ddalfinalarabic'] = 0xFB89;\n t['dddhadeva'] = 0x095C;\n t['ddhabengali'] = 0x09A2;\n t['ddhadeva'] = 0x0922;\n t['ddhagujarati'] = 0x0AA2;\n t['ddhagurmukhi'] = 0x0A22;\n t['ddotaccent'] = 0x1E0B;\n t['ddotbelow'] = 0x1E0D;\n t['decimalseparatorarabic'] = 0x066B;\n t['decimalseparatorpersian'] = 0x066B;\n t['decyrillic'] = 0x0434;\n t['degree'] = 0x00B0;\n t['dehihebrew'] = 0x05AD;\n t['dehiragana'] = 0x3067;\n t['deicoptic'] = 0x03EF;\n t['dekatakana'] = 0x30C7;\n t['deleteleft'] = 0x232B;\n t['deleteright'] = 0x2326;\n t['delta'] = 0x03B4;\n t['deltaturned'] = 0x018D;\n t['denominatorminusonenumeratorbengali'] = 0x09F8;\n t['dezh'] = 0x02A4;\n t['dhabengali'] = 0x09A7;\n t['dhadeva'] = 0x0927;\n t['dhagujarati'] = 0x0AA7;\n t['dhagurmukhi'] = 0x0A27;\n t['dhook'] = 0x0257;\n t['dialytikatonos'] = 0x0385;\n t['dialytikatonoscmb'] = 0x0344;\n t['diamond'] = 0x2666;\n t['diamondsuitwhite'] = 0x2662;\n t['dieresis'] = 0x00A8;\n t['dieresisacute'] = 0xF6D7;\n t['dieresisbelowcmb'] = 0x0324;\n t['dieresiscmb'] = 0x0308;\n t['dieresisgrave'] = 0xF6D8;\n t['dieresistonos'] = 0x0385;\n t['dihiragana'] = 0x3062;\n t['dikatakana'] = 0x30C2;\n t['dittomark'] = 0x3003;\n t['divide'] = 0x00F7;\n t['divides'] = 0x2223;\n t['divisionslash'] = 0x2215;\n t['djecyrillic'] = 0x0452;\n t['dkshade'] = 0x2593;\n t['dlinebelow'] = 0x1E0F;\n t['dlsquare'] = 0x3397;\n t['dmacron'] = 0x0111;\n t['dmonospace'] = 0xFF44;\n t['dnblock'] = 0x2584;\n t['dochadathai'] = 0x0E0E;\n t['dodekthai'] = 0x0E14;\n t['dohiragana'] = 0x3069;\n t['dokatakana'] = 0x30C9;\n t['dollar'] = 0x0024;\n t['dollarinferior'] = 0xF6E3;\n t['dollarmonospace'] = 0xFF04;\n t['dollaroldstyle'] = 0xF724;\n t['dollarsmall'] = 0xFE69;\n t['dollarsuperior'] = 0xF6E4;\n t['dong'] = 0x20AB;\n t['dorusquare'] = 0x3326;\n t['dotaccent'] = 0x02D9;\n t['dotaccentcmb'] = 0x0307;\n t['dotbelowcmb'] = 0x0323;\n t['dotbelowcomb'] = 0x0323;\n t['dotkatakana'] = 0x30FB;\n t['dotlessi'] = 0x0131;\n t['dotlessj'] = 0xF6BE;\n t['dotlessjstrokehook'] = 0x0284;\n t['dotmath'] = 0x22C5;\n t['dottedcircle'] = 0x25CC;\n t['doubleyodpatah'] = 0xFB1F;\n t['doubleyodpatahhebrew'] = 0xFB1F;\n t['downtackbelowcmb'] = 0x031E;\n t['downtackmod'] = 0x02D5;\n t['dparen'] = 0x249F;\n t['dsuperior'] = 0xF6EB;\n t['dtail'] = 0x0256;\n t['dtopbar'] = 0x018C;\n t['duhiragana'] = 0x3065;\n t['dukatakana'] = 0x30C5;\n t['dz'] = 0x01F3;\n t['dzaltone'] = 0x02A3;\n t['dzcaron'] = 0x01C6;\n t['dzcurl'] = 0x02A5;\n t['dzeabkhasiancyrillic'] = 0x04E1;\n t['dzecyrillic'] = 0x0455;\n t['dzhecyrillic'] = 0x045F;\n t['e'] = 0x0065;\n t['eacute'] = 0x00E9;\n t['earth'] = 0x2641;\n t['ebengali'] = 0x098F;\n t['ebopomofo'] = 0x311C;\n t['ebreve'] = 0x0115;\n t['ecandradeva'] = 0x090D;\n t['ecandragujarati'] = 0x0A8D;\n t['ecandravowelsigndeva'] = 0x0945;\n t['ecandravowelsigngujarati'] = 0x0AC5;\n t['ecaron'] = 0x011B;\n t['ecedillabreve'] = 0x1E1D;\n t['echarmenian'] = 0x0565;\n t['echyiwnarmenian'] = 0x0587;\n t['ecircle'] = 0x24D4;\n t['ecircumflex'] = 0x00EA;\n t['ecircumflexacute'] = 0x1EBF;\n t['ecircumflexbelow'] = 0x1E19;\n t['ecircumflexdotbelow'] = 0x1EC7;\n t['ecircumflexgrave'] = 0x1EC1;\n t['ecircumflexhookabove'] = 0x1EC3;\n t['ecircumflextilde'] = 0x1EC5;\n t['ecyrillic'] = 0x0454;\n t['edblgrave'] = 0x0205;\n t['edeva'] = 0x090F;\n t['edieresis'] = 0x00EB;\n t['edot'] = 0x0117;\n t['edotaccent'] = 0x0117;\n t['edotbelow'] = 0x1EB9;\n t['eegurmukhi'] = 0x0A0F;\n t['eematragurmukhi'] = 0x0A47;\n t['efcyrillic'] = 0x0444;\n t['egrave'] = 0x00E8;\n t['egujarati'] = 0x0A8F;\n t['eharmenian'] = 0x0567;\n t['ehbopomofo'] = 0x311D;\n t['ehiragana'] = 0x3048;\n t['ehookabove'] = 0x1EBB;\n t['eibopomofo'] = 0x311F;\n t['eight'] = 0x0038;\n t['eightarabic'] = 0x0668;\n t['eightbengali'] = 0x09EE;\n t['eightcircle'] = 0x2467;\n t['eightcircleinversesansserif'] = 0x2791;\n t['eightdeva'] = 0x096E;\n t['eighteencircle'] = 0x2471;\n t['eighteenparen'] = 0x2485;\n t['eighteenperiod'] = 0x2499;\n t['eightgujarati'] = 0x0AEE;\n t['eightgurmukhi'] = 0x0A6E;\n t['eighthackarabic'] = 0x0668;\n t['eighthangzhou'] = 0x3028;\n t['eighthnotebeamed'] = 0x266B;\n t['eightideographicparen'] = 0x3227;\n t['eightinferior'] = 0x2088;\n t['eightmonospace'] = 0xFF18;\n t['eightoldstyle'] = 0xF738;\n t['eightparen'] = 0x247B;\n t['eightperiod'] = 0x248F;\n t['eightpersian'] = 0x06F8;\n t['eightroman'] = 0x2177;\n t['eightsuperior'] = 0x2078;\n t['eightthai'] = 0x0E58;\n t['einvertedbreve'] = 0x0207;\n t['eiotifiedcyrillic'] = 0x0465;\n t['ekatakana'] = 0x30A8;\n t['ekatakanahalfwidth'] = 0xFF74;\n t['ekonkargurmukhi'] = 0x0A74;\n t['ekorean'] = 0x3154;\n t['elcyrillic'] = 0x043B;\n t['element'] = 0x2208;\n t['elevencircle'] = 0x246A;\n t['elevenparen'] = 0x247E;\n t['elevenperiod'] = 0x2492;\n t['elevenroman'] = 0x217A;\n t['ellipsis'] = 0x2026;\n t['ellipsisvertical'] = 0x22EE;\n t['emacron'] = 0x0113;\n t['emacronacute'] = 0x1E17;\n t['emacrongrave'] = 0x1E15;\n t['emcyrillic'] = 0x043C;\n t['emdash'] = 0x2014;\n t['emdashvertical'] = 0xFE31;\n t['emonospace'] = 0xFF45;\n t['emphasismarkarmenian'] = 0x055B;\n t['emptyset'] = 0x2205;\n t['enbopomofo'] = 0x3123;\n t['encyrillic'] = 0x043D;\n t['endash'] = 0x2013;\n t['endashvertical'] = 0xFE32;\n t['endescendercyrillic'] = 0x04A3;\n t['eng'] = 0x014B;\n t['engbopomofo'] = 0x3125;\n t['enghecyrillic'] = 0x04A5;\n t['enhookcyrillic'] = 0x04C8;\n t['enspace'] = 0x2002;\n t['eogonek'] = 0x0119;\n t['eokorean'] = 0x3153;\n t['eopen'] = 0x025B;\n t['eopenclosed'] = 0x029A;\n t['eopenreversed'] = 0x025C;\n t['eopenreversedclosed'] = 0x025E;\n t['eopenreversedhook'] = 0x025D;\n t['eparen'] = 0x24A0;\n t['epsilon'] = 0x03B5;\n t['epsilontonos'] = 0x03AD;\n t['equal'] = 0x003D;\n t['equalmonospace'] = 0xFF1D;\n t['equalsmall'] = 0xFE66;\n t['equalsuperior'] = 0x207C;\n t['equivalence'] = 0x2261;\n t['erbopomofo'] = 0x3126;\n t['ercyrillic'] = 0x0440;\n t['ereversed'] = 0x0258;\n t['ereversedcyrillic'] = 0x044D;\n t['escyrillic'] = 0x0441;\n t['esdescendercyrillic'] = 0x04AB;\n t['esh'] = 0x0283;\n t['eshcurl'] = 0x0286;\n t['eshortdeva'] = 0x090E;\n t['eshortvowelsigndeva'] = 0x0946;\n t['eshreversedloop'] = 0x01AA;\n t['eshsquatreversed'] = 0x0285;\n t['esmallhiragana'] = 0x3047;\n t['esmallkatakana'] = 0x30A7;\n t['esmallkatakanahalfwidth'] = 0xFF6A;\n t['estimated'] = 0x212E;\n t['esuperior'] = 0xF6EC;\n t['eta'] = 0x03B7;\n t['etarmenian'] = 0x0568;\n t['etatonos'] = 0x03AE;\n t['eth'] = 0x00F0;\n t['etilde'] = 0x1EBD;\n t['etildebelow'] = 0x1E1B;\n t['etnahtafoukhhebrew'] = 0x0591;\n t['etnahtafoukhlefthebrew'] = 0x0591;\n t['etnahtahebrew'] = 0x0591;\n t['etnahtalefthebrew'] = 0x0591;\n t['eturned'] = 0x01DD;\n t['eukorean'] = 0x3161;\n t['euro'] = 0x20AC;\n t['evowelsignbengali'] = 0x09C7;\n t['evowelsigndeva'] = 0x0947;\n t['evowelsigngujarati'] = 0x0AC7;\n t['exclam'] = 0x0021;\n t['exclamarmenian'] = 0x055C;\n t['exclamdbl'] = 0x203C;\n t['exclamdown'] = 0x00A1;\n t['exclamdownsmall'] = 0xF7A1;\n t['exclammonospace'] = 0xFF01;\n t['exclamsmall'] = 0xF721;\n t['existential'] = 0x2203;\n t['ezh'] = 0x0292;\n t['ezhcaron'] = 0x01EF;\n t['ezhcurl'] = 0x0293;\n t['ezhreversed'] = 0x01B9;\n t['ezhtail'] = 0x01BA;\n t['f'] = 0x0066;\n t['fadeva'] = 0x095E;\n t['fagurmukhi'] = 0x0A5E;\n t['fahrenheit'] = 0x2109;\n t['fathaarabic'] = 0x064E;\n t['fathalowarabic'] = 0x064E;\n t['fathatanarabic'] = 0x064B;\n t['fbopomofo'] = 0x3108;\n t['fcircle'] = 0x24D5;\n t['fdotaccent'] = 0x1E1F;\n t['feharabic'] = 0x0641;\n t['feharmenian'] = 0x0586;\n t['fehfinalarabic'] = 0xFED2;\n t['fehinitialarabic'] = 0xFED3;\n t['fehmedialarabic'] = 0xFED4;\n t['feicoptic'] = 0x03E5;\n t['female'] = 0x2640;\n t['ff'] = 0xFB00;\n t['ffi'] = 0xFB03;\n t['ffl'] = 0xFB04;\n t['fi'] = 0xFB01;\n t['fifteencircle'] = 0x246E;\n t['fifteenparen'] = 0x2482;\n t['fifteenperiod'] = 0x2496;\n t['figuredash'] = 0x2012;\n t['filledbox'] = 0x25A0;\n t['filledrect'] = 0x25AC;\n t['finalkaf'] = 0x05DA;\n t['finalkafdagesh'] = 0xFB3A;\n t['finalkafdageshhebrew'] = 0xFB3A;\n t['finalkafhebrew'] = 0x05DA;\n t['finalmem'] = 0x05DD;\n t['finalmemhebrew'] = 0x05DD;\n t['finalnun'] = 0x05DF;\n t['finalnunhebrew'] = 0x05DF;\n t['finalpe'] = 0x05E3;\n t['finalpehebrew'] = 0x05E3;\n t['finaltsadi'] = 0x05E5;\n t['finaltsadihebrew'] = 0x05E5;\n t['firsttonechinese'] = 0x02C9;\n t['fisheye'] = 0x25C9;\n t['fitacyrillic'] = 0x0473;\n t['five'] = 0x0035;\n t['fivearabic'] = 0x0665;\n t['fivebengali'] = 0x09EB;\n t['fivecircle'] = 0x2464;\n t['fivecircleinversesansserif'] = 0x278E;\n t['fivedeva'] = 0x096B;\n t['fiveeighths'] = 0x215D;\n t['fivegujarati'] = 0x0AEB;\n t['fivegurmukhi'] = 0x0A6B;\n t['fivehackarabic'] = 0x0665;\n t['fivehangzhou'] = 0x3025;\n t['fiveideographicparen'] = 0x3224;\n t['fiveinferior'] = 0x2085;\n t['fivemonospace'] = 0xFF15;\n t['fiveoldstyle'] = 0xF735;\n t['fiveparen'] = 0x2478;\n t['fiveperiod'] = 0x248C;\n t['fivepersian'] = 0x06F5;\n t['fiveroman'] = 0x2174;\n t['fivesuperior'] = 0x2075;\n t['fivethai'] = 0x0E55;\n t['fl'] = 0xFB02;\n t['florin'] = 0x0192;\n t['fmonospace'] = 0xFF46;\n t['fmsquare'] = 0x3399;\n t['fofanthai'] = 0x0E1F;\n t['fofathai'] = 0x0E1D;\n t['fongmanthai'] = 0x0E4F;\n t['forall'] = 0x2200;\n t['four'] = 0x0034;\n t['fourarabic'] = 0x0664;\n t['fourbengali'] = 0x09EA;\n t['fourcircle'] = 0x2463;\n t['fourcircleinversesansserif'] = 0x278D;\n t['fourdeva'] = 0x096A;\n t['fourgujarati'] = 0x0AEA;\n t['fourgurmukhi'] = 0x0A6A;\n t['fourhackarabic'] = 0x0664;\n t['fourhangzhou'] = 0x3024;\n t['fourideographicparen'] = 0x3223;\n t['fourinferior'] = 0x2084;\n t['fourmonospace'] = 0xFF14;\n t['fournumeratorbengali'] = 0x09F7;\n t['fouroldstyle'] = 0xF734;\n t['fourparen'] = 0x2477;\n t['fourperiod'] = 0x248B;\n t['fourpersian'] = 0x06F4;\n t['fourroman'] = 0x2173;\n t['foursuperior'] = 0x2074;\n t['fourteencircle'] = 0x246D;\n t['fourteenparen'] = 0x2481;\n t['fourteenperiod'] = 0x2495;\n t['fourthai'] = 0x0E54;\n t['fourthtonechinese'] = 0x02CB;\n t['fparen'] = 0x24A1;\n t['fraction'] = 0x2044;\n t['franc'] = 0x20A3;\n t['g'] = 0x0067;\n t['gabengali'] = 0x0997;\n t['gacute'] = 0x01F5;\n t['gadeva'] = 0x0917;\n t['gafarabic'] = 0x06AF;\n t['gaffinalarabic'] = 0xFB93;\n t['gafinitialarabic'] = 0xFB94;\n t['gafmedialarabic'] = 0xFB95;\n t['gagujarati'] = 0x0A97;\n t['gagurmukhi'] = 0x0A17;\n t['gahiragana'] = 0x304C;\n t['gakatakana'] = 0x30AC;\n t['gamma'] = 0x03B3;\n t['gammalatinsmall'] = 0x0263;\n t['gammasuperior'] = 0x02E0;\n t['gangiacoptic'] = 0x03EB;\n t['gbopomofo'] = 0x310D;\n t['gbreve'] = 0x011F;\n t['gcaron'] = 0x01E7;\n t['gcedilla'] = 0x0123;\n t['gcircle'] = 0x24D6;\n t['gcircumflex'] = 0x011D;\n t['gcommaaccent'] = 0x0123;\n t['gdot'] = 0x0121;\n t['gdotaccent'] = 0x0121;\n t['gecyrillic'] = 0x0433;\n t['gehiragana'] = 0x3052;\n t['gekatakana'] = 0x30B2;\n t['geometricallyequal'] = 0x2251;\n t['gereshaccenthebrew'] = 0x059C;\n t['gereshhebrew'] = 0x05F3;\n t['gereshmuqdamhebrew'] = 0x059D;\n t['germandbls'] = 0x00DF;\n t['gershayimaccenthebrew'] = 0x059E;\n t['gershayimhebrew'] = 0x05F4;\n t['getamark'] = 0x3013;\n t['ghabengali'] = 0x0998;\n t['ghadarmenian'] = 0x0572;\n t['ghadeva'] = 0x0918;\n t['ghagujarati'] = 0x0A98;\n t['ghagurmukhi'] = 0x0A18;\n t['ghainarabic'] = 0x063A;\n t['ghainfinalarabic'] = 0xFECE;\n t['ghaininitialarabic'] = 0xFECF;\n t['ghainmedialarabic'] = 0xFED0;\n t['ghemiddlehookcyrillic'] = 0x0495;\n t['ghestrokecyrillic'] = 0x0493;\n t['gheupturncyrillic'] = 0x0491;\n t['ghhadeva'] = 0x095A;\n t['ghhagurmukhi'] = 0x0A5A;\n t['ghook'] = 0x0260;\n t['ghzsquare'] = 0x3393;\n t['gihiragana'] = 0x304E;\n t['gikatakana'] = 0x30AE;\n t['gimarmenian'] = 0x0563;\n t['gimel'] = 0x05D2;\n t['gimeldagesh'] = 0xFB32;\n t['gimeldageshhebrew'] = 0xFB32;\n t['gimelhebrew'] = 0x05D2;\n t['gjecyrillic'] = 0x0453;\n t['glottalinvertedstroke'] = 0x01BE;\n t['glottalstop'] = 0x0294;\n t['glottalstopinverted'] = 0x0296;\n t['glottalstopmod'] = 0x02C0;\n t['glottalstopreversed'] = 0x0295;\n t['glottalstopreversedmod'] = 0x02C1;\n t['glottalstopreversedsuperior'] = 0x02E4;\n t['glottalstopstroke'] = 0x02A1;\n t['glottalstopstrokereversed'] = 0x02A2;\n t['gmacron'] = 0x1E21;\n t['gmonospace'] = 0xFF47;\n t['gohiragana'] = 0x3054;\n t['gokatakana'] = 0x30B4;\n t['gparen'] = 0x24A2;\n t['gpasquare'] = 0x33AC;\n t['gradient'] = 0x2207;\n t['grave'] = 0x0060;\n t['gravebelowcmb'] = 0x0316;\n t['gravecmb'] = 0x0300;\n t['gravecomb'] = 0x0300;\n t['gravedeva'] = 0x0953;\n t['gravelowmod'] = 0x02CE;\n t['gravemonospace'] = 0xFF40;\n t['gravetonecmb'] = 0x0340;\n t['greater'] = 0x003E;\n t['greaterequal'] = 0x2265;\n t['greaterequalorless'] = 0x22DB;\n t['greatermonospace'] = 0xFF1E;\n t['greaterorequivalent'] = 0x2273;\n t['greaterorless'] = 0x2277;\n t['greateroverequal'] = 0x2267;\n t['greatersmall'] = 0xFE65;\n t['gscript'] = 0x0261;\n t['gstroke'] = 0x01E5;\n t['guhiragana'] = 0x3050;\n t['guillemotleft'] = 0x00AB;\n t['guillemotright'] = 0x00BB;\n t['guilsinglleft'] = 0x2039;\n t['guilsinglright'] = 0x203A;\n t['gukatakana'] = 0x30B0;\n t['guramusquare'] = 0x3318;\n t['gysquare'] = 0x33C9;\n t['h'] = 0x0068;\n t['haabkhasiancyrillic'] = 0x04A9;\n t['haaltonearabic'] = 0x06C1;\n t['habengali'] = 0x09B9;\n t['hadescendercyrillic'] = 0x04B3;\n t['hadeva'] = 0x0939;\n t['hagujarati'] = 0x0AB9;\n t['hagurmukhi'] = 0x0A39;\n t['haharabic'] = 0x062D;\n t['hahfinalarabic'] = 0xFEA2;\n t['hahinitialarabic'] = 0xFEA3;\n t['hahiragana'] = 0x306F;\n t['hahmedialarabic'] = 0xFEA4;\n t['haitusquare'] = 0x332A;\n t['hakatakana'] = 0x30CF;\n t['hakatakanahalfwidth'] = 0xFF8A;\n t['halantgurmukhi'] = 0x0A4D;\n t['hamzaarabic'] = 0x0621;\n t['hamzalowarabic'] = 0x0621;\n t['hangulfiller'] = 0x3164;\n t['hardsigncyrillic'] = 0x044A;\n t['harpoonleftbarbup'] = 0x21BC;\n t['harpoonrightbarbup'] = 0x21C0;\n t['hasquare'] = 0x33CA;\n t['hatafpatah'] = 0x05B2;\n t['hatafpatah16'] = 0x05B2;\n t['hatafpatah23'] = 0x05B2;\n t['hatafpatah2f'] = 0x05B2;\n t['hatafpatahhebrew'] = 0x05B2;\n t['hatafpatahnarrowhebrew'] = 0x05B2;\n t['hatafpatahquarterhebrew'] = 0x05B2;\n t['hatafpatahwidehebrew'] = 0x05B2;\n t['hatafqamats'] = 0x05B3;\n t['hatafqamats1b'] = 0x05B3;\n t['hatafqamats28'] = 0x05B3;\n t['hatafqamats34'] = 0x05B3;\n t['hatafqamatshebrew'] = 0x05B3;\n t['hatafqamatsnarrowhebrew'] = 0x05B3;\n t['hatafqamatsquarterhebrew'] = 0x05B3;\n t['hatafqamatswidehebrew'] = 0x05B3;\n t['hatafsegol'] = 0x05B1;\n t['hatafsegol17'] = 0x05B1;\n t['hatafsegol24'] = 0x05B1;\n t['hatafsegol30'] = 0x05B1;\n t['hatafsegolhebrew'] = 0x05B1;\n t['hatafsegolnarrowhebrew'] = 0x05B1;\n t['hatafsegolquarterhebrew'] = 0x05B1;\n t['hatafsegolwidehebrew'] = 0x05B1;\n t['hbar'] = 0x0127;\n t['hbopomofo'] = 0x310F;\n t['hbrevebelow'] = 0x1E2B;\n t['hcedilla'] = 0x1E29;\n t['hcircle'] = 0x24D7;\n t['hcircumflex'] = 0x0125;\n t['hdieresis'] = 0x1E27;\n t['hdotaccent'] = 0x1E23;\n t['hdotbelow'] = 0x1E25;\n t['he'] = 0x05D4;\n t['heart'] = 0x2665;\n t['heartsuitblack'] = 0x2665;\n t['heartsuitwhite'] = 0x2661;\n t['hedagesh'] = 0xFB34;\n t['hedageshhebrew'] = 0xFB34;\n t['hehaltonearabic'] = 0x06C1;\n t['heharabic'] = 0x0647;\n t['hehebrew'] = 0x05D4;\n t['hehfinalaltonearabic'] = 0xFBA7;\n t['hehfinalalttwoarabic'] = 0xFEEA;\n t['hehfinalarabic'] = 0xFEEA;\n t['hehhamzaabovefinalarabic'] = 0xFBA5;\n t['hehhamzaaboveisolatedarabic'] = 0xFBA4;\n t['hehinitialaltonearabic'] = 0xFBA8;\n t['hehinitialarabic'] = 0xFEEB;\n t['hehiragana'] = 0x3078;\n t['hehmedialaltonearabic'] = 0xFBA9;\n t['hehmedialarabic'] = 0xFEEC;\n t['heiseierasquare'] = 0x337B;\n t['hekatakana'] = 0x30D8;\n t['hekatakanahalfwidth'] = 0xFF8D;\n t['hekutaarusquare'] = 0x3336;\n t['henghook'] = 0x0267;\n t['herutusquare'] = 0x3339;\n t['het'] = 0x05D7;\n t['hethebrew'] = 0x05D7;\n t['hhook'] = 0x0266;\n t['hhooksuperior'] = 0x02B1;\n t['hieuhacirclekorean'] = 0x327B;\n t['hieuhaparenkorean'] = 0x321B;\n t['hieuhcirclekorean'] = 0x326D;\n t['hieuhkorean'] = 0x314E;\n t['hieuhparenkorean'] = 0x320D;\n t['hihiragana'] = 0x3072;\n t['hikatakana'] = 0x30D2;\n t['hikatakanahalfwidth'] = 0xFF8B;\n t['hiriq'] = 0x05B4;\n t['hiriq14'] = 0x05B4;\n t['hiriq21'] = 0x05B4;\n t['hiriq2d'] = 0x05B4;\n t['hiriqhebrew'] = 0x05B4;\n t['hiriqnarrowhebrew'] = 0x05B4;\n t['hiriqquarterhebrew'] = 0x05B4;\n t['hiriqwidehebrew'] = 0x05B4;\n t['hlinebelow'] = 0x1E96;\n t['hmonospace'] = 0xFF48;\n t['hoarmenian'] = 0x0570;\n t['hohipthai'] = 0x0E2B;\n t['hohiragana'] = 0x307B;\n t['hokatakana'] = 0x30DB;\n t['hokatakanahalfwidth'] = 0xFF8E;\n t['holam'] = 0x05B9;\n t['holam19'] = 0x05B9;\n t['holam26'] = 0x05B9;\n t['holam32'] = 0x05B9;\n t['holamhebrew'] = 0x05B9;\n t['holamnarrowhebrew'] = 0x05B9;\n t['holamquarterhebrew'] = 0x05B9;\n t['holamwidehebrew'] = 0x05B9;\n t['honokhukthai'] = 0x0E2E;\n t['hookabovecomb'] = 0x0309;\n t['hookcmb'] = 0x0309;\n t['hookpalatalizedbelowcmb'] = 0x0321;\n t['hookretroflexbelowcmb'] = 0x0322;\n t['hoonsquare'] = 0x3342;\n t['horicoptic'] = 0x03E9;\n t['horizontalbar'] = 0x2015;\n t['horncmb'] = 0x031B;\n t['hotsprings'] = 0x2668;\n t['house'] = 0x2302;\n t['hparen'] = 0x24A3;\n t['hsuperior'] = 0x02B0;\n t['hturned'] = 0x0265;\n t['huhiragana'] = 0x3075;\n t['huiitosquare'] = 0x3333;\n t['hukatakana'] = 0x30D5;\n t['hukatakanahalfwidth'] = 0xFF8C;\n t['hungarumlaut'] = 0x02DD;\n t['hungarumlautcmb'] = 0x030B;\n t['hv'] = 0x0195;\n t['hyphen'] = 0x002D;\n t['hypheninferior'] = 0xF6E5;\n t['hyphenmonospace'] = 0xFF0D;\n t['hyphensmall'] = 0xFE63;\n t['hyphensuperior'] = 0xF6E6;\n t['hyphentwo'] = 0x2010;\n t['i'] = 0x0069;\n t['iacute'] = 0x00ED;\n t['iacyrillic'] = 0x044F;\n t['ibengali'] = 0x0987;\n t['ibopomofo'] = 0x3127;\n t['ibreve'] = 0x012D;\n t['icaron'] = 0x01D0;\n t['icircle'] = 0x24D8;\n t['icircumflex'] = 0x00EE;\n t['icyrillic'] = 0x0456;\n t['idblgrave'] = 0x0209;\n t['ideographearthcircle'] = 0x328F;\n t['ideographfirecircle'] = 0x328B;\n t['ideographicallianceparen'] = 0x323F;\n t['ideographiccallparen'] = 0x323A;\n t['ideographiccentrecircle'] = 0x32A5;\n t['ideographicclose'] = 0x3006;\n t['ideographiccomma'] = 0x3001;\n t['ideographiccommaleft'] = 0xFF64;\n t['ideographiccongratulationparen'] = 0x3237;\n t['ideographiccorrectcircle'] = 0x32A3;\n t['ideographicearthparen'] = 0x322F;\n t['ideographicenterpriseparen'] = 0x323D;\n t['ideographicexcellentcircle'] = 0x329D;\n t['ideographicfestivalparen'] = 0x3240;\n t['ideographicfinancialcircle'] = 0x3296;\n t['ideographicfinancialparen'] = 0x3236;\n t['ideographicfireparen'] = 0x322B;\n t['ideographichaveparen'] = 0x3232;\n t['ideographichighcircle'] = 0x32A4;\n t['ideographiciterationmark'] = 0x3005;\n t['ideographiclaborcircle'] = 0x3298;\n t['ideographiclaborparen'] = 0x3238;\n t['ideographicleftcircle'] = 0x32A7;\n t['ideographiclowcircle'] = 0x32A6;\n t['ideographicmedicinecircle'] = 0x32A9;\n t['ideographicmetalparen'] = 0x322E;\n t['ideographicmoonparen'] = 0x322A;\n t['ideographicnameparen'] = 0x3234;\n t['ideographicperiod'] = 0x3002;\n t['ideographicprintcircle'] = 0x329E;\n t['ideographicreachparen'] = 0x3243;\n t['ideographicrepresentparen'] = 0x3239;\n t['ideographicresourceparen'] = 0x323E;\n t['ideographicrightcircle'] = 0x32A8;\n t['ideographicsecretcircle'] = 0x3299;\n t['ideographicselfparen'] = 0x3242;\n t['ideographicsocietyparen'] = 0x3233;\n t['ideographicspace'] = 0x3000;\n t['ideographicspecialparen'] = 0x3235;\n t['ideographicstockparen'] = 0x3231;\n t['ideographicstudyparen'] = 0x323B;\n t['ideographicsunparen'] = 0x3230;\n t['ideographicsuperviseparen'] = 0x323C;\n t['ideographicwaterparen'] = 0x322C;\n t['ideographicwoodparen'] = 0x322D;\n t['ideographiczero'] = 0x3007;\n t['ideographmetalcircle'] = 0x328E;\n t['ideographmooncircle'] = 0x328A;\n t['ideographnamecircle'] = 0x3294;\n t['ideographsuncircle'] = 0x3290;\n t['ideographwatercircle'] = 0x328C;\n t['ideographwoodcircle'] = 0x328D;\n t['ideva'] = 0x0907;\n t['idieresis'] = 0x00EF;\n t['idieresisacute'] = 0x1E2F;\n t['idieresiscyrillic'] = 0x04E5;\n t['idotbelow'] = 0x1ECB;\n t['iebrevecyrillic'] = 0x04D7;\n t['iecyrillic'] = 0x0435;\n t['ieungacirclekorean'] = 0x3275;\n t['ieungaparenkorean'] = 0x3215;\n t['ieungcirclekorean'] = 0x3267;\n t['ieungkorean'] = 0x3147;\n t['ieungparenkorean'] = 0x3207;\n t['igrave'] = 0x00EC;\n t['igujarati'] = 0x0A87;\n t['igurmukhi'] = 0x0A07;\n t['ihiragana'] = 0x3044;\n t['ihookabove'] = 0x1EC9;\n t['iibengali'] = 0x0988;\n t['iicyrillic'] = 0x0438;\n t['iideva'] = 0x0908;\n t['iigujarati'] = 0x0A88;\n t['iigurmukhi'] = 0x0A08;\n t['iimatragurmukhi'] = 0x0A40;\n t['iinvertedbreve'] = 0x020B;\n t['iishortcyrillic'] = 0x0439;\n t['iivowelsignbengali'] = 0x09C0;\n t['iivowelsigndeva'] = 0x0940;\n t['iivowelsigngujarati'] = 0x0AC0;\n t['ij'] = 0x0133;\n t['ikatakana'] = 0x30A4;\n t['ikatakanahalfwidth'] = 0xFF72;\n t['ikorean'] = 0x3163;\n t['ilde'] = 0x02DC;\n t['iluyhebrew'] = 0x05AC;\n t['imacron'] = 0x012B;\n t['imacroncyrillic'] = 0x04E3;\n t['imageorapproximatelyequal'] = 0x2253;\n t['imatragurmukhi'] = 0x0A3F;\n t['imonospace'] = 0xFF49;\n t['increment'] = 0x2206;\n t['infinity'] = 0x221E;\n t['iniarmenian'] = 0x056B;\n t['integral'] = 0x222B;\n t['integralbottom'] = 0x2321;\n t['integralbt'] = 0x2321;\n t['integralex'] = 0xF8F5;\n t['integraltop'] = 0x2320;\n t['integraltp'] = 0x2320;\n t['intersection'] = 0x2229;\n t['intisquare'] = 0x3305;\n t['invbullet'] = 0x25D8;\n t['invcircle'] = 0x25D9;\n t['invsmileface'] = 0x263B;\n t['iocyrillic'] = 0x0451;\n t['iogonek'] = 0x012F;\n t['iota'] = 0x03B9;\n t['iotadieresis'] = 0x03CA;\n t['iotadieresistonos'] = 0x0390;\n t['iotalatin'] = 0x0269;\n t['iotatonos'] = 0x03AF;\n t['iparen'] = 0x24A4;\n t['irigurmukhi'] = 0x0A72;\n t['ismallhiragana'] = 0x3043;\n t['ismallkatakana'] = 0x30A3;\n t['ismallkatakanahalfwidth'] = 0xFF68;\n t['issharbengali'] = 0x09FA;\n t['istroke'] = 0x0268;\n t['isuperior'] = 0xF6ED;\n t['iterationhiragana'] = 0x309D;\n t['iterationkatakana'] = 0x30FD;\n t['itilde'] = 0x0129;\n t['itildebelow'] = 0x1E2D;\n t['iubopomofo'] = 0x3129;\n t['iucyrillic'] = 0x044E;\n t['ivowelsignbengali'] = 0x09BF;\n t['ivowelsigndeva'] = 0x093F;\n t['ivowelsigngujarati'] = 0x0ABF;\n t['izhitsacyrillic'] = 0x0475;\n t['izhitsadblgravecyrillic'] = 0x0477;\n t['j'] = 0x006A;\n t['jaarmenian'] = 0x0571;\n t['jabengali'] = 0x099C;\n t['jadeva'] = 0x091C;\n t['jagujarati'] = 0x0A9C;\n t['jagurmukhi'] = 0x0A1C;\n t['jbopomofo'] = 0x3110;\n t['jcaron'] = 0x01F0;\n t['jcircle'] = 0x24D9;\n t['jcircumflex'] = 0x0135;\n t['jcrossedtail'] = 0x029D;\n t['jdotlessstroke'] = 0x025F;\n t['jecyrillic'] = 0x0458;\n t['jeemarabic'] = 0x062C;\n t['jeemfinalarabic'] = 0xFE9E;\n t['jeeminitialarabic'] = 0xFE9F;\n t['jeemmedialarabic'] = 0xFEA0;\n t['jeharabic'] = 0x0698;\n t['jehfinalarabic'] = 0xFB8B;\n t['jhabengali'] = 0x099D;\n t['jhadeva'] = 0x091D;\n t['jhagujarati'] = 0x0A9D;\n t['jhagurmukhi'] = 0x0A1D;\n t['jheharmenian'] = 0x057B;\n t['jis'] = 0x3004;\n t['jmonospace'] = 0xFF4A;\n t['jparen'] = 0x24A5;\n t['jsuperior'] = 0x02B2;\n t['k'] = 0x006B;\n t['kabashkircyrillic'] = 0x04A1;\n t['kabengali'] = 0x0995;\n t['kacute'] = 0x1E31;\n t['kacyrillic'] = 0x043A;\n t['kadescendercyrillic'] = 0x049B;\n t['kadeva'] = 0x0915;\n t['kaf'] = 0x05DB;\n t['kafarabic'] = 0x0643;\n t['kafdagesh'] = 0xFB3B;\n t['kafdageshhebrew'] = 0xFB3B;\n t['kaffinalarabic'] = 0xFEDA;\n t['kafhebrew'] = 0x05DB;\n t['kafinitialarabic'] = 0xFEDB;\n t['kafmedialarabic'] = 0xFEDC;\n t['kafrafehebrew'] = 0xFB4D;\n t['kagujarati'] = 0x0A95;\n t['kagurmukhi'] = 0x0A15;\n t['kahiragana'] = 0x304B;\n t['kahookcyrillic'] = 0x04C4;\n t['kakatakana'] = 0x30AB;\n t['kakatakanahalfwidth'] = 0xFF76;\n t['kappa'] = 0x03BA;\n t['kappasymbolgreek'] = 0x03F0;\n t['kapyeounmieumkorean'] = 0x3171;\n t['kapyeounphieuphkorean'] = 0x3184;\n t['kapyeounpieupkorean'] = 0x3178;\n t['kapyeounssangpieupkorean'] = 0x3179;\n t['karoriisquare'] = 0x330D;\n t['kashidaautoarabic'] = 0x0640;\n t['kashidaautonosidebearingarabic'] = 0x0640;\n t['kasmallkatakana'] = 0x30F5;\n t['kasquare'] = 0x3384;\n t['kasraarabic'] = 0x0650;\n t['kasratanarabic'] = 0x064D;\n t['kastrokecyrillic'] = 0x049F;\n t['katahiraprolongmarkhalfwidth'] = 0xFF70;\n t['kaverticalstrokecyrillic'] = 0x049D;\n t['kbopomofo'] = 0x310E;\n t['kcalsquare'] = 0x3389;\n t['kcaron'] = 0x01E9;\n t['kcedilla'] = 0x0137;\n t['kcircle'] = 0x24DA;\n t['kcommaaccent'] = 0x0137;\n t['kdotbelow'] = 0x1E33;\n t['keharmenian'] = 0x0584;\n t['kehiragana'] = 0x3051;\n t['kekatakana'] = 0x30B1;\n t['kekatakanahalfwidth'] = 0xFF79;\n t['kenarmenian'] = 0x056F;\n t['kesmallkatakana'] = 0x30F6;\n t['kgreenlandic'] = 0x0138;\n t['khabengali'] = 0x0996;\n t['khacyrillic'] = 0x0445;\n t['khadeva'] = 0x0916;\n t['khagujarati'] = 0x0A96;\n t['khagurmukhi'] = 0x0A16;\n t['khaharabic'] = 0x062E;\n t['khahfinalarabic'] = 0xFEA6;\n t['khahinitialarabic'] = 0xFEA7;\n t['khahmedialarabic'] = 0xFEA8;\n t['kheicoptic'] = 0x03E7;\n t['khhadeva'] = 0x0959;\n t['khhagurmukhi'] = 0x0A59;\n t['khieukhacirclekorean'] = 0x3278;\n t['khieukhaparenkorean'] = 0x3218;\n t['khieukhcirclekorean'] = 0x326A;\n t['khieukhkorean'] = 0x314B;\n t['khieukhparenkorean'] = 0x320A;\n t['khokhaithai'] = 0x0E02;\n t['khokhonthai'] = 0x0E05;\n t['khokhuatthai'] = 0x0E03;\n t['khokhwaithai'] = 0x0E04;\n t['khomutthai'] = 0x0E5B;\n t['khook'] = 0x0199;\n t['khorakhangthai'] = 0x0E06;\n t['khzsquare'] = 0x3391;\n t['kihiragana'] = 0x304D;\n t['kikatakana'] = 0x30AD;\n t['kikatakanahalfwidth'] = 0xFF77;\n t['kiroguramusquare'] = 0x3315;\n t['kiromeetorusquare'] = 0x3316;\n t['kirosquare'] = 0x3314;\n t['kiyeokacirclekorean'] = 0x326E;\n t['kiyeokaparenkorean'] = 0x320E;\n t['kiyeokcirclekorean'] = 0x3260;\n t['kiyeokkorean'] = 0x3131;\n t['kiyeokparenkorean'] = 0x3200;\n t['kiyeoksioskorean'] = 0x3133;\n t['kjecyrillic'] = 0x045C;\n t['klinebelow'] = 0x1E35;\n t['klsquare'] = 0x3398;\n t['kmcubedsquare'] = 0x33A6;\n t['kmonospace'] = 0xFF4B;\n t['kmsquaredsquare'] = 0x33A2;\n t['kohiragana'] = 0x3053;\n t['kohmsquare'] = 0x33C0;\n t['kokaithai'] = 0x0E01;\n t['kokatakana'] = 0x30B3;\n t['kokatakanahalfwidth'] = 0xFF7A;\n t['kooposquare'] = 0x331E;\n t['koppacyrillic'] = 0x0481;\n t['koreanstandardsymbol'] = 0x327F;\n t['koroniscmb'] = 0x0343;\n t['kparen'] = 0x24A6;\n t['kpasquare'] = 0x33AA;\n t['ksicyrillic'] = 0x046F;\n t['ktsquare'] = 0x33CF;\n t['kturned'] = 0x029E;\n t['kuhiragana'] = 0x304F;\n t['kukatakana'] = 0x30AF;\n t['kukatakanahalfwidth'] = 0xFF78;\n t['kvsquare'] = 0x33B8;\n t['kwsquare'] = 0x33BE;\n t['l'] = 0x006C;\n t['labengali'] = 0x09B2;\n t['lacute'] = 0x013A;\n t['ladeva'] = 0x0932;\n t['lagujarati'] = 0x0AB2;\n t['lagurmukhi'] = 0x0A32;\n t['lakkhangyaothai'] = 0x0E45;\n t['lamaleffinalarabic'] = 0xFEFC;\n t['lamalefhamzaabovefinalarabic'] = 0xFEF8;\n t['lamalefhamzaaboveisolatedarabic'] = 0xFEF7;\n t['lamalefhamzabelowfinalarabic'] = 0xFEFA;\n t['lamalefhamzabelowisolatedarabic'] = 0xFEF9;\n t['lamalefisolatedarabic'] = 0xFEFB;\n t['lamalefmaddaabovefinalarabic'] = 0xFEF6;\n t['lamalefmaddaaboveisolatedarabic'] = 0xFEF5;\n t['lamarabic'] = 0x0644;\n t['lambda'] = 0x03BB;\n t['lambdastroke'] = 0x019B;\n t['lamed'] = 0x05DC;\n t['lameddagesh'] = 0xFB3C;\n t['lameddageshhebrew'] = 0xFB3C;\n t['lamedhebrew'] = 0x05DC;\n t['lamfinalarabic'] = 0xFEDE;\n t['lamhahinitialarabic'] = 0xFCCA;\n t['laminitialarabic'] = 0xFEDF;\n t['lamjeeminitialarabic'] = 0xFCC9;\n t['lamkhahinitialarabic'] = 0xFCCB;\n t['lamlamhehisolatedarabic'] = 0xFDF2;\n t['lammedialarabic'] = 0xFEE0;\n t['lammeemhahinitialarabic'] = 0xFD88;\n t['lammeeminitialarabic'] = 0xFCCC;\n t['largecircle'] = 0x25EF;\n t['lbar'] = 0x019A;\n t['lbelt'] = 0x026C;\n t['lbopomofo'] = 0x310C;\n t['lcaron'] = 0x013E;\n t['lcedilla'] = 0x013C;\n t['lcircle'] = 0x24DB;\n t['lcircumflexbelow'] = 0x1E3D;\n t['lcommaaccent'] = 0x013C;\n t['ldot'] = 0x0140;\n t['ldotaccent'] = 0x0140;\n t['ldotbelow'] = 0x1E37;\n t['ldotbelowmacron'] = 0x1E39;\n t['leftangleabovecmb'] = 0x031A;\n t['lefttackbelowcmb'] = 0x0318;\n t['less'] = 0x003C;\n t['lessequal'] = 0x2264;\n t['lessequalorgreater'] = 0x22DA;\n t['lessmonospace'] = 0xFF1C;\n t['lessorequivalent'] = 0x2272;\n t['lessorgreater'] = 0x2276;\n t['lessoverequal'] = 0x2266;\n t['lesssmall'] = 0xFE64;\n t['lezh'] = 0x026E;\n t['lfblock'] = 0x258C;\n t['lhookretroflex'] = 0x026D;\n t['lira'] = 0x20A4;\n t['liwnarmenian'] = 0x056C;\n t['lj'] = 0x01C9;\n t['ljecyrillic'] = 0x0459;\n t['ll'] = 0xF6C0;\n t['lladeva'] = 0x0933;\n t['llagujarati'] = 0x0AB3;\n t['llinebelow'] = 0x1E3B;\n t['llladeva'] = 0x0934;\n t['llvocalicbengali'] = 0x09E1;\n t['llvocalicdeva'] = 0x0961;\n t['llvocalicvowelsignbengali'] = 0x09E3;\n t['llvocalicvowelsigndeva'] = 0x0963;\n t['lmiddletilde'] = 0x026B;\n t['lmonospace'] = 0xFF4C;\n t['lmsquare'] = 0x33D0;\n t['lochulathai'] = 0x0E2C;\n t['logicaland'] = 0x2227;\n t['logicalnot'] = 0x00AC;\n t['logicalnotreversed'] = 0x2310;\n t['logicalor'] = 0x2228;\n t['lolingthai'] = 0x0E25;\n t['longs'] = 0x017F;\n t['lowlinecenterline'] = 0xFE4E;\n t['lowlinecmb'] = 0x0332;\n t['lowlinedashed'] = 0xFE4D;\n t['lozenge'] = 0x25CA;\n t['lparen'] = 0x24A7;\n t['lslash'] = 0x0142;\n t['lsquare'] = 0x2113;\n t['lsuperior'] = 0xF6EE;\n t['ltshade'] = 0x2591;\n t['luthai'] = 0x0E26;\n t['lvocalicbengali'] = 0x098C;\n t['lvocalicdeva'] = 0x090C;\n t['lvocalicvowelsignbengali'] = 0x09E2;\n t['lvocalicvowelsigndeva'] = 0x0962;\n t['lxsquare'] = 0x33D3;\n t['m'] = 0x006D;\n t['mabengali'] = 0x09AE;\n t['macron'] = 0x00AF;\n t['macronbelowcmb'] = 0x0331;\n t['macroncmb'] = 0x0304;\n t['macronlowmod'] = 0x02CD;\n t['macronmonospace'] = 0xFFE3;\n t['macute'] = 0x1E3F;\n t['madeva'] = 0x092E;\n t['magujarati'] = 0x0AAE;\n t['magurmukhi'] = 0x0A2E;\n t['mahapakhhebrew'] = 0x05A4;\n t['mahapakhlefthebrew'] = 0x05A4;\n t['mahiragana'] = 0x307E;\n t['maichattawalowleftthai'] = 0xF895;\n t['maichattawalowrightthai'] = 0xF894;\n t['maichattawathai'] = 0x0E4B;\n t['maichattawaupperleftthai'] = 0xF893;\n t['maieklowleftthai'] = 0xF88C;\n t['maieklowrightthai'] = 0xF88B;\n t['maiekthai'] = 0x0E48;\n t['maiekupperleftthai'] = 0xF88A;\n t['maihanakatleftthai'] = 0xF884;\n t['maihanakatthai'] = 0x0E31;\n t['maitaikhuleftthai'] = 0xF889;\n t['maitaikhuthai'] = 0x0E47;\n t['maitholowleftthai'] = 0xF88F;\n t['maitholowrightthai'] = 0xF88E;\n t['maithothai'] = 0x0E49;\n t['maithoupperleftthai'] = 0xF88D;\n t['maitrilowleftthai'] = 0xF892;\n t['maitrilowrightthai'] = 0xF891;\n t['maitrithai'] = 0x0E4A;\n t['maitriupperleftthai'] = 0xF890;\n t['maiyamokthai'] = 0x0E46;\n t['makatakana'] = 0x30DE;\n t['makatakanahalfwidth'] = 0xFF8F;\n t['male'] = 0x2642;\n t['mansyonsquare'] = 0x3347;\n t['maqafhebrew'] = 0x05BE;\n t['mars'] = 0x2642;\n t['masoracirclehebrew'] = 0x05AF;\n t['masquare'] = 0x3383;\n t['mbopomofo'] = 0x3107;\n t['mbsquare'] = 0x33D4;\n t['mcircle'] = 0x24DC;\n t['mcubedsquare'] = 0x33A5;\n t['mdotaccent'] = 0x1E41;\n t['mdotbelow'] = 0x1E43;\n t['meemarabic'] = 0x0645;\n t['meemfinalarabic'] = 0xFEE2;\n t['meeminitialarabic'] = 0xFEE3;\n t['meemmedialarabic'] = 0xFEE4;\n t['meemmeeminitialarabic'] = 0xFCD1;\n t['meemmeemisolatedarabic'] = 0xFC48;\n t['meetorusquare'] = 0x334D;\n t['mehiragana'] = 0x3081;\n t['meizierasquare'] = 0x337E;\n t['mekatakana'] = 0x30E1;\n t['mekatakanahalfwidth'] = 0xFF92;\n t['mem'] = 0x05DE;\n t['memdagesh'] = 0xFB3E;\n t['memdageshhebrew'] = 0xFB3E;\n t['memhebrew'] = 0x05DE;\n t['menarmenian'] = 0x0574;\n t['merkhahebrew'] = 0x05A5;\n t['merkhakefulahebrew'] = 0x05A6;\n t['merkhakefulalefthebrew'] = 0x05A6;\n t['merkhalefthebrew'] = 0x05A5;\n t['mhook'] = 0x0271;\n t['mhzsquare'] = 0x3392;\n t['middledotkatakanahalfwidth'] = 0xFF65;\n t['middot'] = 0x00B7;\n t['mieumacirclekorean'] = 0x3272;\n t['mieumaparenkorean'] = 0x3212;\n t['mieumcirclekorean'] = 0x3264;\n t['mieumkorean'] = 0x3141;\n t['mieumpansioskorean'] = 0x3170;\n t['mieumparenkorean'] = 0x3204;\n t['mieumpieupkorean'] = 0x316E;\n t['mieumsioskorean'] = 0x316F;\n t['mihiragana'] = 0x307F;\n t['mikatakana'] = 0x30DF;\n t['mikatakanahalfwidth'] = 0xFF90;\n t['minus'] = 0x2212;\n t['minusbelowcmb'] = 0x0320;\n t['minuscircle'] = 0x2296;\n t['minusmod'] = 0x02D7;\n t['minusplus'] = 0x2213;\n t['minute'] = 0x2032;\n t['miribaarusquare'] = 0x334A;\n t['mirisquare'] = 0x3349;\n t['mlonglegturned'] = 0x0270;\n t['mlsquare'] = 0x3396;\n t['mmcubedsquare'] = 0x33A3;\n t['mmonospace'] = 0xFF4D;\n t['mmsquaredsquare'] = 0x339F;\n t['mohiragana'] = 0x3082;\n t['mohmsquare'] = 0x33C1;\n t['mokatakana'] = 0x30E2;\n t['mokatakanahalfwidth'] = 0xFF93;\n t['molsquare'] = 0x33D6;\n t['momathai'] = 0x0E21;\n t['moverssquare'] = 0x33A7;\n t['moverssquaredsquare'] = 0x33A8;\n t['mparen'] = 0x24A8;\n t['mpasquare'] = 0x33AB;\n t['mssquare'] = 0x33B3;\n t['msuperior'] = 0xF6EF;\n t['mturned'] = 0x026F;\n t['mu'] = 0x00B5;\n t['mu1'] = 0x00B5;\n t['muasquare'] = 0x3382;\n t['muchgreater'] = 0x226B;\n t['muchless'] = 0x226A;\n t['mufsquare'] = 0x338C;\n t['mugreek'] = 0x03BC;\n t['mugsquare'] = 0x338D;\n t['muhiragana'] = 0x3080;\n t['mukatakana'] = 0x30E0;\n t['mukatakanahalfwidth'] = 0xFF91;\n t['mulsquare'] = 0x3395;\n t['multiply'] = 0x00D7;\n t['mumsquare'] = 0x339B;\n t['munahhebrew'] = 0x05A3;\n t['munahlefthebrew'] = 0x05A3;\n t['musicalnote'] = 0x266A;\n t['musicalnotedbl'] = 0x266B;\n t['musicflatsign'] = 0x266D;\n t['musicsharpsign'] = 0x266F;\n t['mussquare'] = 0x33B2;\n t['muvsquare'] = 0x33B6;\n t['muwsquare'] = 0x33BC;\n t['mvmegasquare'] = 0x33B9;\n t['mvsquare'] = 0x33B7;\n t['mwmegasquare'] = 0x33BF;\n t['mwsquare'] = 0x33BD;\n t['n'] = 0x006E;\n t['nabengali'] = 0x09A8;\n t['nabla'] = 0x2207;\n t['nacute'] = 0x0144;\n t['nadeva'] = 0x0928;\n t['nagujarati'] = 0x0AA8;\n t['nagurmukhi'] = 0x0A28;\n t['nahiragana'] = 0x306A;\n t['nakatakana'] = 0x30CA;\n t['nakatakanahalfwidth'] = 0xFF85;\n t['napostrophe'] = 0x0149;\n t['nasquare'] = 0x3381;\n t['nbopomofo'] = 0x310B;\n t['nbspace'] = 0x00A0;\n t['ncaron'] = 0x0148;\n t['ncedilla'] = 0x0146;\n t['ncircle'] = 0x24DD;\n t['ncircumflexbelow'] = 0x1E4B;\n t['ncommaaccent'] = 0x0146;\n t['ndotaccent'] = 0x1E45;\n t['ndotbelow'] = 0x1E47;\n t['nehiragana'] = 0x306D;\n t['nekatakana'] = 0x30CD;\n t['nekatakanahalfwidth'] = 0xFF88;\n t['newsheqelsign'] = 0x20AA;\n t['nfsquare'] = 0x338B;\n t['ngabengali'] = 0x0999;\n t['ngadeva'] = 0x0919;\n t['ngagujarati'] = 0x0A99;\n t['ngagurmukhi'] = 0x0A19;\n t['ngonguthai'] = 0x0E07;\n t['nhiragana'] = 0x3093;\n t['nhookleft'] = 0x0272;\n t['nhookretroflex'] = 0x0273;\n t['nieunacirclekorean'] = 0x326F;\n t['nieunaparenkorean'] = 0x320F;\n t['nieuncieuckorean'] = 0x3135;\n t['nieuncirclekorean'] = 0x3261;\n t['nieunhieuhkorean'] = 0x3136;\n t['nieunkorean'] = 0x3134;\n t['nieunpansioskorean'] = 0x3168;\n t['nieunparenkorean'] = 0x3201;\n t['nieunsioskorean'] = 0x3167;\n t['nieuntikeutkorean'] = 0x3166;\n t['nihiragana'] = 0x306B;\n t['nikatakana'] = 0x30CB;\n t['nikatakanahalfwidth'] = 0xFF86;\n t['nikhahitleftthai'] = 0xF899;\n t['nikhahitthai'] = 0x0E4D;\n t['nine'] = 0x0039;\n t['ninearabic'] = 0x0669;\n t['ninebengali'] = 0x09EF;\n t['ninecircle'] = 0x2468;\n t['ninecircleinversesansserif'] = 0x2792;\n t['ninedeva'] = 0x096F;\n t['ninegujarati'] = 0x0AEF;\n t['ninegurmukhi'] = 0x0A6F;\n t['ninehackarabic'] = 0x0669;\n t['ninehangzhou'] = 0x3029;\n t['nineideographicparen'] = 0x3228;\n t['nineinferior'] = 0x2089;\n t['ninemonospace'] = 0xFF19;\n t['nineoldstyle'] = 0xF739;\n t['nineparen'] = 0x247C;\n t['nineperiod'] = 0x2490;\n t['ninepersian'] = 0x06F9;\n t['nineroman'] = 0x2178;\n t['ninesuperior'] = 0x2079;\n t['nineteencircle'] = 0x2472;\n t['nineteenparen'] = 0x2486;\n t['nineteenperiod'] = 0x249A;\n t['ninethai'] = 0x0E59;\n t['nj'] = 0x01CC;\n t['njecyrillic'] = 0x045A;\n t['nkatakana'] = 0x30F3;\n t['nkatakanahalfwidth'] = 0xFF9D;\n t['nlegrightlong'] = 0x019E;\n t['nlinebelow'] = 0x1E49;\n t['nmonospace'] = 0xFF4E;\n t['nmsquare'] = 0x339A;\n t['nnabengali'] = 0x09A3;\n t['nnadeva'] = 0x0923;\n t['nnagujarati'] = 0x0AA3;\n t['nnagurmukhi'] = 0x0A23;\n t['nnnadeva'] = 0x0929;\n t['nohiragana'] = 0x306E;\n t['nokatakana'] = 0x30CE;\n t['nokatakanahalfwidth'] = 0xFF89;\n t['nonbreakingspace'] = 0x00A0;\n t['nonenthai'] = 0x0E13;\n t['nonuthai'] = 0x0E19;\n t['noonarabic'] = 0x0646;\n t['noonfinalarabic'] = 0xFEE6;\n t['noonghunnaarabic'] = 0x06BA;\n t['noonghunnafinalarabic'] = 0xFB9F;\n t['nooninitialarabic'] = 0xFEE7;\n t['noonjeeminitialarabic'] = 0xFCD2;\n t['noonjeemisolatedarabic'] = 0xFC4B;\n t['noonmedialarabic'] = 0xFEE8;\n t['noonmeeminitialarabic'] = 0xFCD5;\n t['noonmeemisolatedarabic'] = 0xFC4E;\n t['noonnoonfinalarabic'] = 0xFC8D;\n t['notcontains'] = 0x220C;\n t['notelement'] = 0x2209;\n t['notelementof'] = 0x2209;\n t['notequal'] = 0x2260;\n t['notgreater'] = 0x226F;\n t['notgreaternorequal'] = 0x2271;\n t['notgreaternorless'] = 0x2279;\n t['notidentical'] = 0x2262;\n t['notless'] = 0x226E;\n t['notlessnorequal'] = 0x2270;\n t['notparallel'] = 0x2226;\n t['notprecedes'] = 0x2280;\n t['notsubset'] = 0x2284;\n t['notsucceeds'] = 0x2281;\n t['notsuperset'] = 0x2285;\n t['nowarmenian'] = 0x0576;\n t['nparen'] = 0x24A9;\n t['nssquare'] = 0x33B1;\n t['nsuperior'] = 0x207F;\n t['ntilde'] = 0x00F1;\n t['nu'] = 0x03BD;\n t['nuhiragana'] = 0x306C;\n t['nukatakana'] = 0x30CC;\n t['nukatakanahalfwidth'] = 0xFF87;\n t['nuktabengali'] = 0x09BC;\n t['nuktadeva'] = 0x093C;\n t['nuktagujarati'] = 0x0ABC;\n t['nuktagurmukhi'] = 0x0A3C;\n t['numbersign'] = 0x0023;\n t['numbersignmonospace'] = 0xFF03;\n t['numbersignsmall'] = 0xFE5F;\n t['numeralsigngreek'] = 0x0374;\n t['numeralsignlowergreek'] = 0x0375;\n t['numero'] = 0x2116;\n t['nun'] = 0x05E0;\n t['nundagesh'] = 0xFB40;\n t['nundageshhebrew'] = 0xFB40;\n t['nunhebrew'] = 0x05E0;\n t['nvsquare'] = 0x33B5;\n t['nwsquare'] = 0x33BB;\n t['nyabengali'] = 0x099E;\n t['nyadeva'] = 0x091E;\n t['nyagujarati'] = 0x0A9E;\n t['nyagurmukhi'] = 0x0A1E;\n t['o'] = 0x006F;\n t['oacute'] = 0x00F3;\n t['oangthai'] = 0x0E2D;\n t['obarred'] = 0x0275;\n t['obarredcyrillic'] = 0x04E9;\n t['obarreddieresiscyrillic'] = 0x04EB;\n t['obengali'] = 0x0993;\n t['obopomofo'] = 0x311B;\n t['obreve'] = 0x014F;\n t['ocandradeva'] = 0x0911;\n t['ocandragujarati'] = 0x0A91;\n t['ocandravowelsigndeva'] = 0x0949;\n t['ocandravowelsigngujarati'] = 0x0AC9;\n t['ocaron'] = 0x01D2;\n t['ocircle'] = 0x24DE;\n t['ocircumflex'] = 0x00F4;\n t['ocircumflexacute'] = 0x1ED1;\n t['ocircumflexdotbelow'] = 0x1ED9;\n t['ocircumflexgrave'] = 0x1ED3;\n t['ocircumflexhookabove'] = 0x1ED5;\n t['ocircumflextilde'] = 0x1ED7;\n t['ocyrillic'] = 0x043E;\n t['odblacute'] = 0x0151;\n t['odblgrave'] = 0x020D;\n t['odeva'] = 0x0913;\n t['odieresis'] = 0x00F6;\n t['odieresiscyrillic'] = 0x04E7;\n t['odotbelow'] = 0x1ECD;\n t['oe'] = 0x0153;\n t['oekorean'] = 0x315A;\n t['ogonek'] = 0x02DB;\n t['ogonekcmb'] = 0x0328;\n t['ograve'] = 0x00F2;\n t['ogujarati'] = 0x0A93;\n t['oharmenian'] = 0x0585;\n t['ohiragana'] = 0x304A;\n t['ohookabove'] = 0x1ECF;\n t['ohorn'] = 0x01A1;\n t['ohornacute'] = 0x1EDB;\n t['ohorndotbelow'] = 0x1EE3;\n t['ohorngrave'] = 0x1EDD;\n t['ohornhookabove'] = 0x1EDF;\n t['ohorntilde'] = 0x1EE1;\n t['ohungarumlaut'] = 0x0151;\n t['oi'] = 0x01A3;\n t['oinvertedbreve'] = 0x020F;\n t['okatakana'] = 0x30AA;\n t['okatakanahalfwidth'] = 0xFF75;\n t['okorean'] = 0x3157;\n t['olehebrew'] = 0x05AB;\n t['omacron'] = 0x014D;\n t['omacronacute'] = 0x1E53;\n t['omacrongrave'] = 0x1E51;\n t['omdeva'] = 0x0950;\n t['omega'] = 0x03C9;\n t['omega1'] = 0x03D6;\n t['omegacyrillic'] = 0x0461;\n t['omegalatinclosed'] = 0x0277;\n t['omegaroundcyrillic'] = 0x047B;\n t['omegatitlocyrillic'] = 0x047D;\n t['omegatonos'] = 0x03CE;\n t['omgujarati'] = 0x0AD0;\n t['omicron'] = 0x03BF;\n t['omicrontonos'] = 0x03CC;\n t['omonospace'] = 0xFF4F;\n t['one'] = 0x0031;\n t['onearabic'] = 0x0661;\n t['onebengali'] = 0x09E7;\n t['onecircle'] = 0x2460;\n t['onecircleinversesansserif'] = 0x278A;\n t['onedeva'] = 0x0967;\n t['onedotenleader'] = 0x2024;\n t['oneeighth'] = 0x215B;\n t['onefitted'] = 0xF6DC;\n t['onegujarati'] = 0x0AE7;\n t['onegurmukhi'] = 0x0A67;\n t['onehackarabic'] = 0x0661;\n t['onehalf'] = 0x00BD;\n t['onehangzhou'] = 0x3021;\n t['oneideographicparen'] = 0x3220;\n t['oneinferior'] = 0x2081;\n t['onemonospace'] = 0xFF11;\n t['onenumeratorbengali'] = 0x09F4;\n t['oneoldstyle'] = 0xF731;\n t['oneparen'] = 0x2474;\n t['oneperiod'] = 0x2488;\n t['onepersian'] = 0x06F1;\n t['onequarter'] = 0x00BC;\n t['oneroman'] = 0x2170;\n t['onesuperior'] = 0x00B9;\n t['onethai'] = 0x0E51;\n t['onethird'] = 0x2153;\n t['oogonek'] = 0x01EB;\n t['oogonekmacron'] = 0x01ED;\n t['oogurmukhi'] = 0x0A13;\n t['oomatragurmukhi'] = 0x0A4B;\n t['oopen'] = 0x0254;\n t['oparen'] = 0x24AA;\n t['openbullet'] = 0x25E6;\n t['option'] = 0x2325;\n t['ordfeminine'] = 0x00AA;\n t['ordmasculine'] = 0x00BA;\n t['orthogonal'] = 0x221F;\n t['oshortdeva'] = 0x0912;\n t['oshortvowelsigndeva'] = 0x094A;\n t['oslash'] = 0x00F8;\n t['oslashacute'] = 0x01FF;\n t['osmallhiragana'] = 0x3049;\n t['osmallkatakana'] = 0x30A9;\n t['osmallkatakanahalfwidth'] = 0xFF6B;\n t['ostrokeacute'] = 0x01FF;\n t['osuperior'] = 0xF6F0;\n t['otcyrillic'] = 0x047F;\n t['otilde'] = 0x00F5;\n t['otildeacute'] = 0x1E4D;\n t['otildedieresis'] = 0x1E4F;\n t['oubopomofo'] = 0x3121;\n t['overline'] = 0x203E;\n t['overlinecenterline'] = 0xFE4A;\n t['overlinecmb'] = 0x0305;\n t['overlinedashed'] = 0xFE49;\n t['overlinedblwavy'] = 0xFE4C;\n t['overlinewavy'] = 0xFE4B;\n t['overscore'] = 0x00AF;\n t['ovowelsignbengali'] = 0x09CB;\n t['ovowelsigndeva'] = 0x094B;\n t['ovowelsigngujarati'] = 0x0ACB;\n t['p'] = 0x0070;\n t['paampssquare'] = 0x3380;\n t['paasentosquare'] = 0x332B;\n t['pabengali'] = 0x09AA;\n t['pacute'] = 0x1E55;\n t['padeva'] = 0x092A;\n t['pagedown'] = 0x21DF;\n t['pageup'] = 0x21DE;\n t['pagujarati'] = 0x0AAA;\n t['pagurmukhi'] = 0x0A2A;\n t['pahiragana'] = 0x3071;\n t['paiyannoithai'] = 0x0E2F;\n t['pakatakana'] = 0x30D1;\n t['palatalizationcyrilliccmb'] = 0x0484;\n t['palochkacyrillic'] = 0x04C0;\n t['pansioskorean'] = 0x317F;\n t['paragraph'] = 0x00B6;\n t['parallel'] = 0x2225;\n t['parenleft'] = 0x0028;\n t['parenleftaltonearabic'] = 0xFD3E;\n t['parenleftbt'] = 0xF8ED;\n t['parenleftex'] = 0xF8EC;\n t['parenleftinferior'] = 0x208D;\n t['parenleftmonospace'] = 0xFF08;\n t['parenleftsmall'] = 0xFE59;\n t['parenleftsuperior'] = 0x207D;\n t['parenlefttp'] = 0xF8EB;\n t['parenleftvertical'] = 0xFE35;\n t['parenright'] = 0x0029;\n t['parenrightaltonearabic'] = 0xFD3F;\n t['parenrightbt'] = 0xF8F8;\n t['parenrightex'] = 0xF8F7;\n t['parenrightinferior'] = 0x208E;\n t['parenrightmonospace'] = 0xFF09;\n t['parenrightsmall'] = 0xFE5A;\n t['parenrightsuperior'] = 0x207E;\n t['parenrighttp'] = 0xF8F6;\n t['parenrightvertical'] = 0xFE36;\n t['partialdiff'] = 0x2202;\n t['paseqhebrew'] = 0x05C0;\n t['pashtahebrew'] = 0x0599;\n t['pasquare'] = 0x33A9;\n t['patah'] = 0x05B7;\n t['patah11'] = 0x05B7;\n t['patah1d'] = 0x05B7;\n t['patah2a'] = 0x05B7;\n t['patahhebrew'] = 0x05B7;\n t['patahnarrowhebrew'] = 0x05B7;\n t['patahquarterhebrew'] = 0x05B7;\n t['patahwidehebrew'] = 0x05B7;\n t['pazerhebrew'] = 0x05A1;\n t['pbopomofo'] = 0x3106;\n t['pcircle'] = 0x24DF;\n t['pdotaccent'] = 0x1E57;\n t['pe'] = 0x05E4;\n t['pecyrillic'] = 0x043F;\n t['pedagesh'] = 0xFB44;\n t['pedageshhebrew'] = 0xFB44;\n t['peezisquare'] = 0x333B;\n t['pefinaldageshhebrew'] = 0xFB43;\n t['peharabic'] = 0x067E;\n t['peharmenian'] = 0x057A;\n t['pehebrew'] = 0x05E4;\n t['pehfinalarabic'] = 0xFB57;\n t['pehinitialarabic'] = 0xFB58;\n t['pehiragana'] = 0x307A;\n t['pehmedialarabic'] = 0xFB59;\n t['pekatakana'] = 0x30DA;\n t['pemiddlehookcyrillic'] = 0x04A7;\n t['perafehebrew'] = 0xFB4E;\n t['percent'] = 0x0025;\n t['percentarabic'] = 0x066A;\n t['percentmonospace'] = 0xFF05;\n t['percentsmall'] = 0xFE6A;\n t['period'] = 0x002E;\n t['periodarmenian'] = 0x0589;\n t['periodcentered'] = 0x00B7;\n t['periodhalfwidth'] = 0xFF61;\n t['periodinferior'] = 0xF6E7;\n t['periodmonospace'] = 0xFF0E;\n t['periodsmall'] = 0xFE52;\n t['periodsuperior'] = 0xF6E8;\n t['perispomenigreekcmb'] = 0x0342;\n t['perpendicular'] = 0x22A5;\n t['perthousand'] = 0x2030;\n t['peseta'] = 0x20A7;\n t['pfsquare'] = 0x338A;\n t['phabengali'] = 0x09AB;\n t['phadeva'] = 0x092B;\n t['phagujarati'] = 0x0AAB;\n t['phagurmukhi'] = 0x0A2B;\n t['phi'] = 0x03C6;\n t['phi1'] = 0x03D5;\n t['phieuphacirclekorean'] = 0x327A;\n t['phieuphaparenkorean'] = 0x321A;\n t['phieuphcirclekorean'] = 0x326C;\n t['phieuphkorean'] = 0x314D;\n t['phieuphparenkorean'] = 0x320C;\n t['philatin'] = 0x0278;\n t['phinthuthai'] = 0x0E3A;\n t['phisymbolgreek'] = 0x03D5;\n t['phook'] = 0x01A5;\n t['phophanthai'] = 0x0E1E;\n t['phophungthai'] = 0x0E1C;\n t['phosamphaothai'] = 0x0E20;\n t['pi'] = 0x03C0;\n t['pieupacirclekorean'] = 0x3273;\n t['pieupaparenkorean'] = 0x3213;\n t['pieupcieuckorean'] = 0x3176;\n t['pieupcirclekorean'] = 0x3265;\n t['pieupkiyeokkorean'] = 0x3172;\n t['pieupkorean'] = 0x3142;\n t['pieupparenkorean'] = 0x3205;\n t['pieupsioskiyeokkorean'] = 0x3174;\n t['pieupsioskorean'] = 0x3144;\n t['pieupsiostikeutkorean'] = 0x3175;\n t['pieupthieuthkorean'] = 0x3177;\n t['pieuptikeutkorean'] = 0x3173;\n t['pihiragana'] = 0x3074;\n t['pikatakana'] = 0x30D4;\n t['pisymbolgreek'] = 0x03D6;\n t['piwrarmenian'] = 0x0583;\n t['plus'] = 0x002B;\n t['plusbelowcmb'] = 0x031F;\n t['pluscircle'] = 0x2295;\n t['plusminus'] = 0x00B1;\n t['plusmod'] = 0x02D6;\n t['plusmonospace'] = 0xFF0B;\n t['plussmall'] = 0xFE62;\n t['plussuperior'] = 0x207A;\n t['pmonospace'] = 0xFF50;\n t['pmsquare'] = 0x33D8;\n t['pohiragana'] = 0x307D;\n t['pointingindexdownwhite'] = 0x261F;\n t['pointingindexleftwhite'] = 0x261C;\n t['pointingindexrightwhite'] = 0x261E;\n t['pointingindexupwhite'] = 0x261D;\n t['pokatakana'] = 0x30DD;\n t['poplathai'] = 0x0E1B;\n t['postalmark'] = 0x3012;\n t['postalmarkface'] = 0x3020;\n t['pparen'] = 0x24AB;\n t['precedes'] = 0x227A;\n t['prescription'] = 0x211E;\n t['primemod'] = 0x02B9;\n t['primereversed'] = 0x2035;\n t['product'] = 0x220F;\n t['projective'] = 0x2305;\n t['prolongedkana'] = 0x30FC;\n t['propellor'] = 0x2318;\n t['propersubset'] = 0x2282;\n t['propersuperset'] = 0x2283;\n t['proportion'] = 0x2237;\n t['proportional'] = 0x221D;\n t['psi'] = 0x03C8;\n t['psicyrillic'] = 0x0471;\n t['psilipneumatacyrilliccmb'] = 0x0486;\n t['pssquare'] = 0x33B0;\n t['puhiragana'] = 0x3077;\n t['pukatakana'] = 0x30D7;\n t['pvsquare'] = 0x33B4;\n t['pwsquare'] = 0x33BA;\n t['q'] = 0x0071;\n t['qadeva'] = 0x0958;\n t['qadmahebrew'] = 0x05A8;\n t['qafarabic'] = 0x0642;\n t['qaffinalarabic'] = 0xFED6;\n t['qafinitialarabic'] = 0xFED7;\n t['qafmedialarabic'] = 0xFED8;\n t['qamats'] = 0x05B8;\n t['qamats10'] = 0x05B8;\n t['qamats1a'] = 0x05B8;\n t['qamats1c'] = 0x05B8;\n t['qamats27'] = 0x05B8;\n t['qamats29'] = 0x05B8;\n t['qamats33'] = 0x05B8;\n t['qamatsde'] = 0x05B8;\n t['qamatshebrew'] = 0x05B8;\n t['qamatsnarrowhebrew'] = 0x05B8;\n t['qamatsqatanhebrew'] = 0x05B8;\n t['qamatsqatannarrowhebrew'] = 0x05B8;\n t['qamatsqatanquarterhebrew'] = 0x05B8;\n t['qamatsqatanwidehebrew'] = 0x05B8;\n t['qamatsquarterhebrew'] = 0x05B8;\n t['qamatswidehebrew'] = 0x05B8;\n t['qarneyparahebrew'] = 0x059F;\n t['qbopomofo'] = 0x3111;\n t['qcircle'] = 0x24E0;\n t['qhook'] = 0x02A0;\n t['qmonospace'] = 0xFF51;\n t['qof'] = 0x05E7;\n t['qofdagesh'] = 0xFB47;\n t['qofdageshhebrew'] = 0xFB47;\n t['qofhebrew'] = 0x05E7;\n t['qparen'] = 0x24AC;\n t['quarternote'] = 0x2669;\n t['qubuts'] = 0x05BB;\n t['qubuts18'] = 0x05BB;\n t['qubuts25'] = 0x05BB;\n t['qubuts31'] = 0x05BB;\n t['qubutshebrew'] = 0x05BB;\n t['qubutsnarrowhebrew'] = 0x05BB;\n t['qubutsquarterhebrew'] = 0x05BB;\n t['qubutswidehebrew'] = 0x05BB;\n t['question'] = 0x003F;\n t['questionarabic'] = 0x061F;\n t['questionarmenian'] = 0x055E;\n t['questiondown'] = 0x00BF;\n t['questiondownsmall'] = 0xF7BF;\n t['questiongreek'] = 0x037E;\n t['questionmonospace'] = 0xFF1F;\n t['questionsmall'] = 0xF73F;\n t['quotedbl'] = 0x0022;\n t['quotedblbase'] = 0x201E;\n t['quotedblleft'] = 0x201C;\n t['quotedblmonospace'] = 0xFF02;\n t['quotedblprime'] = 0x301E;\n t['quotedblprimereversed'] = 0x301D;\n t['quotedblright'] = 0x201D;\n t['quoteleft'] = 0x2018;\n t['quoteleftreversed'] = 0x201B;\n t['quotereversed'] = 0x201B;\n t['quoteright'] = 0x2019;\n t['quoterightn'] = 0x0149;\n t['quotesinglbase'] = 0x201A;\n t['quotesingle'] = 0x0027;\n t['quotesinglemonospace'] = 0xFF07;\n t['r'] = 0x0072;\n t['raarmenian'] = 0x057C;\n t['rabengali'] = 0x09B0;\n t['racute'] = 0x0155;\n t['radeva'] = 0x0930;\n t['radical'] = 0x221A;\n t['radicalex'] = 0xF8E5;\n t['radoverssquare'] = 0x33AE;\n t['radoverssquaredsquare'] = 0x33AF;\n t['radsquare'] = 0x33AD;\n t['rafe'] = 0x05BF;\n t['rafehebrew'] = 0x05BF;\n t['ragujarati'] = 0x0AB0;\n t['ragurmukhi'] = 0x0A30;\n t['rahiragana'] = 0x3089;\n t['rakatakana'] = 0x30E9;\n t['rakatakanahalfwidth'] = 0xFF97;\n t['ralowerdiagonalbengali'] = 0x09F1;\n t['ramiddlediagonalbengali'] = 0x09F0;\n t['ramshorn'] = 0x0264;\n t['ratio'] = 0x2236;\n t['rbopomofo'] = 0x3116;\n t['rcaron'] = 0x0159;\n t['rcedilla'] = 0x0157;\n t['rcircle'] = 0x24E1;\n t['rcommaaccent'] = 0x0157;\n t['rdblgrave'] = 0x0211;\n t['rdotaccent'] = 0x1E59;\n t['rdotbelow'] = 0x1E5B;\n t['rdotbelowmacron'] = 0x1E5D;\n t['referencemark'] = 0x203B;\n t['reflexsubset'] = 0x2286;\n t['reflexsuperset'] = 0x2287;\n t['registered'] = 0x00AE;\n t['registersans'] = 0xF8E8;\n t['registerserif'] = 0xF6DA;\n t['reharabic'] = 0x0631;\n t['reharmenian'] = 0x0580;\n t['rehfinalarabic'] = 0xFEAE;\n t['rehiragana'] = 0x308C;\n t['rekatakana'] = 0x30EC;\n t['rekatakanahalfwidth'] = 0xFF9A;\n t['resh'] = 0x05E8;\n t['reshdageshhebrew'] = 0xFB48;\n t['reshhebrew'] = 0x05E8;\n t['reversedtilde'] = 0x223D;\n t['reviahebrew'] = 0x0597;\n t['reviamugrashhebrew'] = 0x0597;\n t['revlogicalnot'] = 0x2310;\n t['rfishhook'] = 0x027E;\n t['rfishhookreversed'] = 0x027F;\n t['rhabengali'] = 0x09DD;\n t['rhadeva'] = 0x095D;\n t['rho'] = 0x03C1;\n t['rhook'] = 0x027D;\n t['rhookturned'] = 0x027B;\n t['rhookturnedsuperior'] = 0x02B5;\n t['rhosymbolgreek'] = 0x03F1;\n t['rhotichookmod'] = 0x02DE;\n t['rieulacirclekorean'] = 0x3271;\n t['rieulaparenkorean'] = 0x3211;\n t['rieulcirclekorean'] = 0x3263;\n t['rieulhieuhkorean'] = 0x3140;\n t['rieulkiyeokkorean'] = 0x313A;\n t['rieulkiyeoksioskorean'] = 0x3169;\n t['rieulkorean'] = 0x3139;\n t['rieulmieumkorean'] = 0x313B;\n t['rieulpansioskorean'] = 0x316C;\n t['rieulparenkorean'] = 0x3203;\n t['rieulphieuphkorean'] = 0x313F;\n t['rieulpieupkorean'] = 0x313C;\n t['rieulpieupsioskorean'] = 0x316B;\n t['rieulsioskorean'] = 0x313D;\n t['rieulthieuthkorean'] = 0x313E;\n t['rieultikeutkorean'] = 0x316A;\n t['rieulyeorinhieuhkorean'] = 0x316D;\n t['rightangle'] = 0x221F;\n t['righttackbelowcmb'] = 0x0319;\n t['righttriangle'] = 0x22BF;\n t['rihiragana'] = 0x308A;\n t['rikatakana'] = 0x30EA;\n t['rikatakanahalfwidth'] = 0xFF98;\n t['ring'] = 0x02DA;\n t['ringbelowcmb'] = 0x0325;\n t['ringcmb'] = 0x030A;\n t['ringhalfleft'] = 0x02BF;\n t['ringhalfleftarmenian'] = 0x0559;\n t['ringhalfleftbelowcmb'] = 0x031C;\n t['ringhalfleftcentered'] = 0x02D3;\n t['ringhalfright'] = 0x02BE;\n t['ringhalfrightbelowcmb'] = 0x0339;\n t['ringhalfrightcentered'] = 0x02D2;\n t['rinvertedbreve'] = 0x0213;\n t['rittorusquare'] = 0x3351;\n t['rlinebelow'] = 0x1E5F;\n t['rlongleg'] = 0x027C;\n t['rlonglegturned'] = 0x027A;\n t['rmonospace'] = 0xFF52;\n t['rohiragana'] = 0x308D;\n t['rokatakana'] = 0x30ED;\n t['rokatakanahalfwidth'] = 0xFF9B;\n t['roruathai'] = 0x0E23;\n t['rparen'] = 0x24AD;\n t['rrabengali'] = 0x09DC;\n t['rradeva'] = 0x0931;\n t['rragurmukhi'] = 0x0A5C;\n t['rreharabic'] = 0x0691;\n t['rrehfinalarabic'] = 0xFB8D;\n t['rrvocalicbengali'] = 0x09E0;\n t['rrvocalicdeva'] = 0x0960;\n t['rrvocalicgujarati'] = 0x0AE0;\n t['rrvocalicvowelsignbengali'] = 0x09C4;\n t['rrvocalicvowelsigndeva'] = 0x0944;\n t['rrvocalicvowelsigngujarati'] = 0x0AC4;\n t['rsuperior'] = 0xF6F1;\n t['rtblock'] = 0x2590;\n t['rturned'] = 0x0279;\n t['rturnedsuperior'] = 0x02B4;\n t['ruhiragana'] = 0x308B;\n t['rukatakana'] = 0x30EB;\n t['rukatakanahalfwidth'] = 0xFF99;\n t['rupeemarkbengali'] = 0x09F2;\n t['rupeesignbengali'] = 0x09F3;\n t['rupiah'] = 0xF6DD;\n t['ruthai'] = 0x0E24;\n t['rvocalicbengali'] = 0x098B;\n t['rvocalicdeva'] = 0x090B;\n t['rvocalicgujarati'] = 0x0A8B;\n t['rvocalicvowelsignbengali'] = 0x09C3;\n t['rvocalicvowelsigndeva'] = 0x0943;\n t['rvocalicvowelsigngujarati'] = 0x0AC3;\n t['s'] = 0x0073;\n t['sabengali'] = 0x09B8;\n t['sacute'] = 0x015B;\n t['sacutedotaccent'] = 0x1E65;\n t['sadarabic'] = 0x0635;\n t['sadeva'] = 0x0938;\n t['sadfinalarabic'] = 0xFEBA;\n t['sadinitialarabic'] = 0xFEBB;\n t['sadmedialarabic'] = 0xFEBC;\n t['sagujarati'] = 0x0AB8;\n t['sagurmukhi'] = 0x0A38;\n t['sahiragana'] = 0x3055;\n t['sakatakana'] = 0x30B5;\n t['sakatakanahalfwidth'] = 0xFF7B;\n t['sallallahoualayhewasallamarabic'] = 0xFDFA;\n t['samekh'] = 0x05E1;\n t['samekhdagesh'] = 0xFB41;\n t['samekhdageshhebrew'] = 0xFB41;\n t['samekhhebrew'] = 0x05E1;\n t['saraaathai'] = 0x0E32;\n t['saraaethai'] = 0x0E41;\n t['saraaimaimalaithai'] = 0x0E44;\n t['saraaimaimuanthai'] = 0x0E43;\n t['saraamthai'] = 0x0E33;\n t['saraathai'] = 0x0E30;\n t['saraethai'] = 0x0E40;\n t['saraiileftthai'] = 0xF886;\n t['saraiithai'] = 0x0E35;\n t['saraileftthai'] = 0xF885;\n t['saraithai'] = 0x0E34;\n t['saraothai'] = 0x0E42;\n t['saraueeleftthai'] = 0xF888;\n t['saraueethai'] = 0x0E37;\n t['saraueleftthai'] = 0xF887;\n t['sarauethai'] = 0x0E36;\n t['sarauthai'] = 0x0E38;\n t['sarauuthai'] = 0x0E39;\n t['sbopomofo'] = 0x3119;\n t['scaron'] = 0x0161;\n t['scarondotaccent'] = 0x1E67;\n t['scedilla'] = 0x015F;\n t['schwa'] = 0x0259;\n t['schwacyrillic'] = 0x04D9;\n t['schwadieresiscyrillic'] = 0x04DB;\n t['schwahook'] = 0x025A;\n t['scircle'] = 0x24E2;\n t['scircumflex'] = 0x015D;\n t['scommaaccent'] = 0x0219;\n t['sdotaccent'] = 0x1E61;\n t['sdotbelow'] = 0x1E63;\n t['sdotbelowdotaccent'] = 0x1E69;\n t['seagullbelowcmb'] = 0x033C;\n t['second'] = 0x2033;\n t['secondtonechinese'] = 0x02CA;\n t['section'] = 0x00A7;\n t['seenarabic'] = 0x0633;\n t['seenfinalarabic'] = 0xFEB2;\n t['seeninitialarabic'] = 0xFEB3;\n t['seenmedialarabic'] = 0xFEB4;\n t['segol'] = 0x05B6;\n t['segol13'] = 0x05B6;\n t['segol1f'] = 0x05B6;\n t['segol2c'] = 0x05B6;\n t['segolhebrew'] = 0x05B6;\n t['segolnarrowhebrew'] = 0x05B6;\n t['segolquarterhebrew'] = 0x05B6;\n t['segoltahebrew'] = 0x0592;\n t['segolwidehebrew'] = 0x05B6;\n t['seharmenian'] = 0x057D;\n t['sehiragana'] = 0x305B;\n t['sekatakana'] = 0x30BB;\n t['sekatakanahalfwidth'] = 0xFF7E;\n t['semicolon'] = 0x003B;\n t['semicolonarabic'] = 0x061B;\n t['semicolonmonospace'] = 0xFF1B;\n t['semicolonsmall'] = 0xFE54;\n t['semivoicedmarkkana'] = 0x309C;\n t['semivoicedmarkkanahalfwidth'] = 0xFF9F;\n t['sentisquare'] = 0x3322;\n t['sentosquare'] = 0x3323;\n t['seven'] = 0x0037;\n t['sevenarabic'] = 0x0667;\n t['sevenbengali'] = 0x09ED;\n t['sevencircle'] = 0x2466;\n t['sevencircleinversesansserif'] = 0x2790;\n t['sevendeva'] = 0x096D;\n t['seveneighths'] = 0x215E;\n t['sevengujarati'] = 0x0AED;\n t['sevengurmukhi'] = 0x0A6D;\n t['sevenhackarabic'] = 0x0667;\n t['sevenhangzhou'] = 0x3027;\n t['sevenideographicparen'] = 0x3226;\n t['seveninferior'] = 0x2087;\n t['sevenmonospace'] = 0xFF17;\n t['sevenoldstyle'] = 0xF737;\n t['sevenparen'] = 0x247A;\n t['sevenperiod'] = 0x248E;\n t['sevenpersian'] = 0x06F7;\n t['sevenroman'] = 0x2176;\n t['sevensuperior'] = 0x2077;\n t['seventeencircle'] = 0x2470;\n t['seventeenparen'] = 0x2484;\n t['seventeenperiod'] = 0x2498;\n t['seventhai'] = 0x0E57;\n t['sfthyphen'] = 0x00AD;\n t['shaarmenian'] = 0x0577;\n t['shabengali'] = 0x09B6;\n t['shacyrillic'] = 0x0448;\n t['shaddaarabic'] = 0x0651;\n t['shaddadammaarabic'] = 0xFC61;\n t['shaddadammatanarabic'] = 0xFC5E;\n t['shaddafathaarabic'] = 0xFC60;\n t['shaddakasraarabic'] = 0xFC62;\n t['shaddakasratanarabic'] = 0xFC5F;\n t['shade'] = 0x2592;\n t['shadedark'] = 0x2593;\n t['shadelight'] = 0x2591;\n t['shademedium'] = 0x2592;\n t['shadeva'] = 0x0936;\n t['shagujarati'] = 0x0AB6;\n t['shagurmukhi'] = 0x0A36;\n t['shalshelethebrew'] = 0x0593;\n t['shbopomofo'] = 0x3115;\n t['shchacyrillic'] = 0x0449;\n t['sheenarabic'] = 0x0634;\n t['sheenfinalarabic'] = 0xFEB6;\n t['sheeninitialarabic'] = 0xFEB7;\n t['sheenmedialarabic'] = 0xFEB8;\n t['sheicoptic'] = 0x03E3;\n t['sheqel'] = 0x20AA;\n t['sheqelhebrew'] = 0x20AA;\n t['sheva'] = 0x05B0;\n t['sheva115'] = 0x05B0;\n t['sheva15'] = 0x05B0;\n t['sheva22'] = 0x05B0;\n t['sheva2e'] = 0x05B0;\n t['shevahebrew'] = 0x05B0;\n t['shevanarrowhebrew'] = 0x05B0;\n t['shevaquarterhebrew'] = 0x05B0;\n t['shevawidehebrew'] = 0x05B0;\n t['shhacyrillic'] = 0x04BB;\n t['shimacoptic'] = 0x03ED;\n t['shin'] = 0x05E9;\n t['shindagesh'] = 0xFB49;\n t['shindageshhebrew'] = 0xFB49;\n t['shindageshshindot'] = 0xFB2C;\n t['shindageshshindothebrew'] = 0xFB2C;\n t['shindageshsindot'] = 0xFB2D;\n t['shindageshsindothebrew'] = 0xFB2D;\n t['shindothebrew'] = 0x05C1;\n t['shinhebrew'] = 0x05E9;\n t['shinshindot'] = 0xFB2A;\n t['shinshindothebrew'] = 0xFB2A;\n t['shinsindot'] = 0xFB2B;\n t['shinsindothebrew'] = 0xFB2B;\n t['shook'] = 0x0282;\n t['sigma'] = 0x03C3;\n t['sigma1'] = 0x03C2;\n t['sigmafinal'] = 0x03C2;\n t['sigmalunatesymbolgreek'] = 0x03F2;\n t['sihiragana'] = 0x3057;\n t['sikatakana'] = 0x30B7;\n t['sikatakanahalfwidth'] = 0xFF7C;\n t['siluqhebrew'] = 0x05BD;\n t['siluqlefthebrew'] = 0x05BD;\n t['similar'] = 0x223C;\n t['sindothebrew'] = 0x05C2;\n t['siosacirclekorean'] = 0x3274;\n t['siosaparenkorean'] = 0x3214;\n t['sioscieuckorean'] = 0x317E;\n t['sioscirclekorean'] = 0x3266;\n t['sioskiyeokkorean'] = 0x317A;\n t['sioskorean'] = 0x3145;\n t['siosnieunkorean'] = 0x317B;\n t['siosparenkorean'] = 0x3206;\n t['siospieupkorean'] = 0x317D;\n t['siostikeutkorean'] = 0x317C;\n t['six'] = 0x0036;\n t['sixarabic'] = 0x0666;\n t['sixbengali'] = 0x09EC;\n t['sixcircle'] = 0x2465;\n t['sixcircleinversesansserif'] = 0x278F;\n t['sixdeva'] = 0x096C;\n t['sixgujarati'] = 0x0AEC;\n t['sixgurmukhi'] = 0x0A6C;\n t['sixhackarabic'] = 0x0666;\n t['sixhangzhou'] = 0x3026;\n t['sixideographicparen'] = 0x3225;\n t['sixinferior'] = 0x2086;\n t['sixmonospace'] = 0xFF16;\n t['sixoldstyle'] = 0xF736;\n t['sixparen'] = 0x2479;\n t['sixperiod'] = 0x248D;\n t['sixpersian'] = 0x06F6;\n t['sixroman'] = 0x2175;\n t['sixsuperior'] = 0x2076;\n t['sixteencircle'] = 0x246F;\n t['sixteencurrencydenominatorbengali'] = 0x09F9;\n t['sixteenparen'] = 0x2483;\n t['sixteenperiod'] = 0x2497;\n t['sixthai'] = 0x0E56;\n t['slash'] = 0x002F;\n t['slashmonospace'] = 0xFF0F;\n t['slong'] = 0x017F;\n t['slongdotaccent'] = 0x1E9B;\n t['smileface'] = 0x263A;\n t['smonospace'] = 0xFF53;\n t['sofpasuqhebrew'] = 0x05C3;\n t['softhyphen'] = 0x00AD;\n t['softsigncyrillic'] = 0x044C;\n t['sohiragana'] = 0x305D;\n t['sokatakana'] = 0x30BD;\n t['sokatakanahalfwidth'] = 0xFF7F;\n t['soliduslongoverlaycmb'] = 0x0338;\n t['solidusshortoverlaycmb'] = 0x0337;\n t['sorusithai'] = 0x0E29;\n t['sosalathai'] = 0x0E28;\n t['sosothai'] = 0x0E0B;\n t['sosuathai'] = 0x0E2A;\n t['space'] = 0x0020;\n t['spacehackarabic'] = 0x0020;\n t['spade'] = 0x2660;\n t['spadesuitblack'] = 0x2660;\n t['spadesuitwhite'] = 0x2664;\n t['sparen'] = 0x24AE;\n t['squarebelowcmb'] = 0x033B;\n t['squarecc'] = 0x33C4;\n t['squarecm'] = 0x339D;\n t['squarediagonalcrosshatchfill'] = 0x25A9;\n t['squarehorizontalfill'] = 0x25A4;\n t['squarekg'] = 0x338F;\n t['squarekm'] = 0x339E;\n t['squarekmcapital'] = 0x33CE;\n t['squareln'] = 0x33D1;\n t['squarelog'] = 0x33D2;\n t['squaremg'] = 0x338E;\n t['squaremil'] = 0x33D5;\n t['squaremm'] = 0x339C;\n t['squaremsquared'] = 0x33A1;\n t['squareorthogonalcrosshatchfill'] = 0x25A6;\n t['squareupperlefttolowerrightfill'] = 0x25A7;\n t['squareupperrighttolowerleftfill'] = 0x25A8;\n t['squareverticalfill'] = 0x25A5;\n t['squarewhitewithsmallblack'] = 0x25A3;\n t['srsquare'] = 0x33DB;\n t['ssabengali'] = 0x09B7;\n t['ssadeva'] = 0x0937;\n t['ssagujarati'] = 0x0AB7;\n t['ssangcieuckorean'] = 0x3149;\n t['ssanghieuhkorean'] = 0x3185;\n t['ssangieungkorean'] = 0x3180;\n t['ssangkiyeokkorean'] = 0x3132;\n t['ssangnieunkorean'] = 0x3165;\n t['ssangpieupkorean'] = 0x3143;\n t['ssangsioskorean'] = 0x3146;\n t['ssangtikeutkorean'] = 0x3138;\n t['ssuperior'] = 0xF6F2;\n t['sterling'] = 0x00A3;\n t['sterlingmonospace'] = 0xFFE1;\n t['strokelongoverlaycmb'] = 0x0336;\n t['strokeshortoverlaycmb'] = 0x0335;\n t['subset'] = 0x2282;\n t['subsetnotequal'] = 0x228A;\n t['subsetorequal'] = 0x2286;\n t['succeeds'] = 0x227B;\n t['suchthat'] = 0x220B;\n t['suhiragana'] = 0x3059;\n t['sukatakana'] = 0x30B9;\n t['sukatakanahalfwidth'] = 0xFF7D;\n t['sukunarabic'] = 0x0652;\n t['summation'] = 0x2211;\n t['sun'] = 0x263C;\n t['superset'] = 0x2283;\n t['supersetnotequal'] = 0x228B;\n t['supersetorequal'] = 0x2287;\n t['svsquare'] = 0x33DC;\n t['syouwaerasquare'] = 0x337C;\n t['t'] = 0x0074;\n t['tabengali'] = 0x09A4;\n t['tackdown'] = 0x22A4;\n t['tackleft'] = 0x22A3;\n t['tadeva'] = 0x0924;\n t['tagujarati'] = 0x0AA4;\n t['tagurmukhi'] = 0x0A24;\n t['taharabic'] = 0x0637;\n t['tahfinalarabic'] = 0xFEC2;\n t['tahinitialarabic'] = 0xFEC3;\n t['tahiragana'] = 0x305F;\n t['tahmedialarabic'] = 0xFEC4;\n t['taisyouerasquare'] = 0x337D;\n t['takatakana'] = 0x30BF;\n t['takatakanahalfwidth'] = 0xFF80;\n t['tatweelarabic'] = 0x0640;\n t['tau'] = 0x03C4;\n t['tav'] = 0x05EA;\n t['tavdages'] = 0xFB4A;\n t['tavdagesh'] = 0xFB4A;\n t['tavdageshhebrew'] = 0xFB4A;\n t['tavhebrew'] = 0x05EA;\n t['tbar'] = 0x0167;\n t['tbopomofo'] = 0x310A;\n t['tcaron'] = 0x0165;\n t['tccurl'] = 0x02A8;\n t['tcedilla'] = 0x0163;\n t['tcheharabic'] = 0x0686;\n t['tchehfinalarabic'] = 0xFB7B;\n t['tchehinitialarabic'] = 0xFB7C;\n t['tchehmedialarabic'] = 0xFB7D;\n t['tcircle'] = 0x24E3;\n t['tcircumflexbelow'] = 0x1E71;\n t['tcommaaccent'] = 0x0163;\n t['tdieresis'] = 0x1E97;\n t['tdotaccent'] = 0x1E6B;\n t['tdotbelow'] = 0x1E6D;\n t['tecyrillic'] = 0x0442;\n t['tedescendercyrillic'] = 0x04AD;\n t['teharabic'] = 0x062A;\n t['tehfinalarabic'] = 0xFE96;\n t['tehhahinitialarabic'] = 0xFCA2;\n t['tehhahisolatedarabic'] = 0xFC0C;\n t['tehinitialarabic'] = 0xFE97;\n t['tehiragana'] = 0x3066;\n t['tehjeeminitialarabic'] = 0xFCA1;\n t['tehjeemisolatedarabic'] = 0xFC0B;\n t['tehmarbutaarabic'] = 0x0629;\n t['tehmarbutafinalarabic'] = 0xFE94;\n t['tehmedialarabic'] = 0xFE98;\n t['tehmeeminitialarabic'] = 0xFCA4;\n t['tehmeemisolatedarabic'] = 0xFC0E;\n t['tehnoonfinalarabic'] = 0xFC73;\n t['tekatakana'] = 0x30C6;\n t['tekatakanahalfwidth'] = 0xFF83;\n t['telephone'] = 0x2121;\n t['telephoneblack'] = 0x260E;\n t['telishagedolahebrew'] = 0x05A0;\n t['telishaqetanahebrew'] = 0x05A9;\n t['tencircle'] = 0x2469;\n t['tenideographicparen'] = 0x3229;\n t['tenparen'] = 0x247D;\n t['tenperiod'] = 0x2491;\n t['tenroman'] = 0x2179;\n t['tesh'] = 0x02A7;\n t['tet'] = 0x05D8;\n t['tetdagesh'] = 0xFB38;\n t['tetdageshhebrew'] = 0xFB38;\n t['tethebrew'] = 0x05D8;\n t['tetsecyrillic'] = 0x04B5;\n t['tevirhebrew'] = 0x059B;\n t['tevirlefthebrew'] = 0x059B;\n t['thabengali'] = 0x09A5;\n t['thadeva'] = 0x0925;\n t['thagujarati'] = 0x0AA5;\n t['thagurmukhi'] = 0x0A25;\n t['thalarabic'] = 0x0630;\n t['thalfinalarabic'] = 0xFEAC;\n t['thanthakhatlowleftthai'] = 0xF898;\n t['thanthakhatlowrightthai'] = 0xF897;\n t['thanthakhatthai'] = 0x0E4C;\n t['thanthakhatupperleftthai'] = 0xF896;\n t['theharabic'] = 0x062B;\n t['thehfinalarabic'] = 0xFE9A;\n t['thehinitialarabic'] = 0xFE9B;\n t['thehmedialarabic'] = 0xFE9C;\n t['thereexists'] = 0x2203;\n t['therefore'] = 0x2234;\n t['theta'] = 0x03B8;\n t['theta1'] = 0x03D1;\n t['thetasymbolgreek'] = 0x03D1;\n t['thieuthacirclekorean'] = 0x3279;\n t['thieuthaparenkorean'] = 0x3219;\n t['thieuthcirclekorean'] = 0x326B;\n t['thieuthkorean'] = 0x314C;\n t['thieuthparenkorean'] = 0x320B;\n t['thirteencircle'] = 0x246C;\n t['thirteenparen'] = 0x2480;\n t['thirteenperiod'] = 0x2494;\n t['thonangmonthothai'] = 0x0E11;\n t['thook'] = 0x01AD;\n t['thophuthaothai'] = 0x0E12;\n t['thorn'] = 0x00FE;\n t['thothahanthai'] = 0x0E17;\n t['thothanthai'] = 0x0E10;\n t['thothongthai'] = 0x0E18;\n t['thothungthai'] = 0x0E16;\n t['thousandcyrillic'] = 0x0482;\n t['thousandsseparatorarabic'] = 0x066C;\n t['thousandsseparatorpersian'] = 0x066C;\n t['three'] = 0x0033;\n t['threearabic'] = 0x0663;\n t['threebengali'] = 0x09E9;\n t['threecircle'] = 0x2462;\n t['threecircleinversesansserif'] = 0x278C;\n t['threedeva'] = 0x0969;\n t['threeeighths'] = 0x215C;\n t['threegujarati'] = 0x0AE9;\n t['threegurmukhi'] = 0x0A69;\n t['threehackarabic'] = 0x0663;\n t['threehangzhou'] = 0x3023;\n t['threeideographicparen'] = 0x3222;\n t['threeinferior'] = 0x2083;\n t['threemonospace'] = 0xFF13;\n t['threenumeratorbengali'] = 0x09F6;\n t['threeoldstyle'] = 0xF733;\n t['threeparen'] = 0x2476;\n t['threeperiod'] = 0x248A;\n t['threepersian'] = 0x06F3;\n t['threequarters'] = 0x00BE;\n t['threequartersemdash'] = 0xF6DE;\n t['threeroman'] = 0x2172;\n t['threesuperior'] = 0x00B3;\n t['threethai'] = 0x0E53;\n t['thzsquare'] = 0x3394;\n t['tihiragana'] = 0x3061;\n t['tikatakana'] = 0x30C1;\n t['tikatakanahalfwidth'] = 0xFF81;\n t['tikeutacirclekorean'] = 0x3270;\n t['tikeutaparenkorean'] = 0x3210;\n t['tikeutcirclekorean'] = 0x3262;\n t['tikeutkorean'] = 0x3137;\n t['tikeutparenkorean'] = 0x3202;\n t['tilde'] = 0x02DC;\n t['tildebelowcmb'] = 0x0330;\n t['tildecmb'] = 0x0303;\n t['tildecomb'] = 0x0303;\n t['tildedoublecmb'] = 0x0360;\n t['tildeoperator'] = 0x223C;\n t['tildeoverlaycmb'] = 0x0334;\n t['tildeverticalcmb'] = 0x033E;\n t['timescircle'] = 0x2297;\n t['tipehahebrew'] = 0x0596;\n t['tipehalefthebrew'] = 0x0596;\n t['tippigurmukhi'] = 0x0A70;\n t['titlocyrilliccmb'] = 0x0483;\n t['tiwnarmenian'] = 0x057F;\n t['tlinebelow'] = 0x1E6F;\n t['tmonospace'] = 0xFF54;\n t['toarmenian'] = 0x0569;\n t['tohiragana'] = 0x3068;\n t['tokatakana'] = 0x30C8;\n t['tokatakanahalfwidth'] = 0xFF84;\n t['tonebarextrahighmod'] = 0x02E5;\n t['tonebarextralowmod'] = 0x02E9;\n t['tonebarhighmod'] = 0x02E6;\n t['tonebarlowmod'] = 0x02E8;\n t['tonebarmidmod'] = 0x02E7;\n t['tonefive'] = 0x01BD;\n t['tonesix'] = 0x0185;\n t['tonetwo'] = 0x01A8;\n t['tonos'] = 0x0384;\n t['tonsquare'] = 0x3327;\n t['topatakthai'] = 0x0E0F;\n t['tortoiseshellbracketleft'] = 0x3014;\n t['tortoiseshellbracketleftsmall'] = 0xFE5D;\n t['tortoiseshellbracketleftvertical'] = 0xFE39;\n t['tortoiseshellbracketright'] = 0x3015;\n t['tortoiseshellbracketrightsmall'] = 0xFE5E;\n t['tortoiseshellbracketrightvertical'] = 0xFE3A;\n t['totaothai'] = 0x0E15;\n t['tpalatalhook'] = 0x01AB;\n t['tparen'] = 0x24AF;\n t['trademark'] = 0x2122;\n t['trademarksans'] = 0xF8EA;\n t['trademarkserif'] = 0xF6DB;\n t['tretroflexhook'] = 0x0288;\n t['triagdn'] = 0x25BC;\n t['triaglf'] = 0x25C4;\n t['triagrt'] = 0x25BA;\n t['triagup'] = 0x25B2;\n t['ts'] = 0x02A6;\n t['tsadi'] = 0x05E6;\n t['tsadidagesh'] = 0xFB46;\n t['tsadidageshhebrew'] = 0xFB46;\n t['tsadihebrew'] = 0x05E6;\n t['tsecyrillic'] = 0x0446;\n t['tsere'] = 0x05B5;\n t['tsere12'] = 0x05B5;\n t['tsere1e'] = 0x05B5;\n t['tsere2b'] = 0x05B5;\n t['tserehebrew'] = 0x05B5;\n t['tserenarrowhebrew'] = 0x05B5;\n t['tserequarterhebrew'] = 0x05B5;\n t['tserewidehebrew'] = 0x05B5;\n t['tshecyrillic'] = 0x045B;\n t['tsuperior'] = 0xF6F3;\n t['ttabengali'] = 0x099F;\n t['ttadeva'] = 0x091F;\n t['ttagujarati'] = 0x0A9F;\n t['ttagurmukhi'] = 0x0A1F;\n t['tteharabic'] = 0x0679;\n t['ttehfinalarabic'] = 0xFB67;\n t['ttehinitialarabic'] = 0xFB68;\n t['ttehmedialarabic'] = 0xFB69;\n t['tthabengali'] = 0x09A0;\n t['tthadeva'] = 0x0920;\n t['tthagujarati'] = 0x0AA0;\n t['tthagurmukhi'] = 0x0A20;\n t['tturned'] = 0x0287;\n t['tuhiragana'] = 0x3064;\n t['tukatakana'] = 0x30C4;\n t['tukatakanahalfwidth'] = 0xFF82;\n t['tusmallhiragana'] = 0x3063;\n t['tusmallkatakana'] = 0x30C3;\n t['tusmallkatakanahalfwidth'] = 0xFF6F;\n t['twelvecircle'] = 0x246B;\n t['twelveparen'] = 0x247F;\n t['twelveperiod'] = 0x2493;\n t['twelveroman'] = 0x217B;\n t['twentycircle'] = 0x2473;\n t['twentyhangzhou'] = 0x5344;\n t['twentyparen'] = 0x2487;\n t['twentyperiod'] = 0x249B;\n t['two'] = 0x0032;\n t['twoarabic'] = 0x0662;\n t['twobengali'] = 0x09E8;\n t['twocircle'] = 0x2461;\n t['twocircleinversesansserif'] = 0x278B;\n t['twodeva'] = 0x0968;\n t['twodotenleader'] = 0x2025;\n t['twodotleader'] = 0x2025;\n t['twodotleadervertical'] = 0xFE30;\n t['twogujarati'] = 0x0AE8;\n t['twogurmukhi'] = 0x0A68;\n t['twohackarabic'] = 0x0662;\n t['twohangzhou'] = 0x3022;\n t['twoideographicparen'] = 0x3221;\n t['twoinferior'] = 0x2082;\n t['twomonospace'] = 0xFF12;\n t['twonumeratorbengali'] = 0x09F5;\n t['twooldstyle'] = 0xF732;\n t['twoparen'] = 0x2475;\n t['twoperiod'] = 0x2489;\n t['twopersian'] = 0x06F2;\n t['tworoman'] = 0x2171;\n t['twostroke'] = 0x01BB;\n t['twosuperior'] = 0x00B2;\n t['twothai'] = 0x0E52;\n t['twothirds'] = 0x2154;\n t['u'] = 0x0075;\n t['uacute'] = 0x00FA;\n t['ubar'] = 0x0289;\n t['ubengali'] = 0x0989;\n t['ubopomofo'] = 0x3128;\n t['ubreve'] = 0x016D;\n t['ucaron'] = 0x01D4;\n t['ucircle'] = 0x24E4;\n t['ucircumflex'] = 0x00FB;\n t['ucircumflexbelow'] = 0x1E77;\n t['ucyrillic'] = 0x0443;\n t['udattadeva'] = 0x0951;\n t['udblacute'] = 0x0171;\n t['udblgrave'] = 0x0215;\n t['udeva'] = 0x0909;\n t['udieresis'] = 0x00FC;\n t['udieresisacute'] = 0x01D8;\n t['udieresisbelow'] = 0x1E73;\n t['udieresiscaron'] = 0x01DA;\n t['udieresiscyrillic'] = 0x04F1;\n t['udieresisgrave'] = 0x01DC;\n t['udieresismacron'] = 0x01D6;\n t['udotbelow'] = 0x1EE5;\n t['ugrave'] = 0x00F9;\n t['ugujarati'] = 0x0A89;\n t['ugurmukhi'] = 0x0A09;\n t['uhiragana'] = 0x3046;\n t['uhookabove'] = 0x1EE7;\n t['uhorn'] = 0x01B0;\n t['uhornacute'] = 0x1EE9;\n t['uhorndotbelow'] = 0x1EF1;\n t['uhorngrave'] = 0x1EEB;\n t['uhornhookabove'] = 0x1EED;\n t['uhorntilde'] = 0x1EEF;\n t['uhungarumlaut'] = 0x0171;\n t['uhungarumlautcyrillic'] = 0x04F3;\n t['uinvertedbreve'] = 0x0217;\n t['ukatakana'] = 0x30A6;\n t['ukatakanahalfwidth'] = 0xFF73;\n t['ukcyrillic'] = 0x0479;\n t['ukorean'] = 0x315C;\n t['umacron'] = 0x016B;\n t['umacroncyrillic'] = 0x04EF;\n t['umacrondieresis'] = 0x1E7B;\n t['umatragurmukhi'] = 0x0A41;\n t['umonospace'] = 0xFF55;\n t['underscore'] = 0x005F;\n t['underscoredbl'] = 0x2017;\n t['underscoremonospace'] = 0xFF3F;\n t['underscorevertical'] = 0xFE33;\n t['underscorewavy'] = 0xFE4F;\n t['union'] = 0x222A;\n t['universal'] = 0x2200;\n t['uogonek'] = 0x0173;\n t['uparen'] = 0x24B0;\n t['upblock'] = 0x2580;\n t['upperdothebrew'] = 0x05C4;\n t['upsilon'] = 0x03C5;\n t['upsilondieresis'] = 0x03CB;\n t['upsilondieresistonos'] = 0x03B0;\n t['upsilonlatin'] = 0x028A;\n t['upsilontonos'] = 0x03CD;\n t['uptackbelowcmb'] = 0x031D;\n t['uptackmod'] = 0x02D4;\n t['uragurmukhi'] = 0x0A73;\n t['uring'] = 0x016F;\n t['ushortcyrillic'] = 0x045E;\n t['usmallhiragana'] = 0x3045;\n t['usmallkatakana'] = 0x30A5;\n t['usmallkatakanahalfwidth'] = 0xFF69;\n t['ustraightcyrillic'] = 0x04AF;\n t['ustraightstrokecyrillic'] = 0x04B1;\n t['utilde'] = 0x0169;\n t['utildeacute'] = 0x1E79;\n t['utildebelow'] = 0x1E75;\n t['uubengali'] = 0x098A;\n t['uudeva'] = 0x090A;\n t['uugujarati'] = 0x0A8A;\n t['uugurmukhi'] = 0x0A0A;\n t['uumatragurmukhi'] = 0x0A42;\n t['uuvowelsignbengali'] = 0x09C2;\n t['uuvowelsigndeva'] = 0x0942;\n t['uuvowelsigngujarati'] = 0x0AC2;\n t['uvowelsignbengali'] = 0x09C1;\n t['uvowelsigndeva'] = 0x0941;\n t['uvowelsigngujarati'] = 0x0AC1;\n t['v'] = 0x0076;\n t['vadeva'] = 0x0935;\n t['vagujarati'] = 0x0AB5;\n t['vagurmukhi'] = 0x0A35;\n t['vakatakana'] = 0x30F7;\n t['vav'] = 0x05D5;\n t['vavdagesh'] = 0xFB35;\n t['vavdagesh65'] = 0xFB35;\n t['vavdageshhebrew'] = 0xFB35;\n t['vavhebrew'] = 0x05D5;\n t['vavholam'] = 0xFB4B;\n t['vavholamhebrew'] = 0xFB4B;\n t['vavvavhebrew'] = 0x05F0;\n t['vavyodhebrew'] = 0x05F1;\n t['vcircle'] = 0x24E5;\n t['vdotbelow'] = 0x1E7F;\n t['vecyrillic'] = 0x0432;\n t['veharabic'] = 0x06A4;\n t['vehfinalarabic'] = 0xFB6B;\n t['vehinitialarabic'] = 0xFB6C;\n t['vehmedialarabic'] = 0xFB6D;\n t['vekatakana'] = 0x30F9;\n t['venus'] = 0x2640;\n t['verticalbar'] = 0x007C;\n t['verticallineabovecmb'] = 0x030D;\n t['verticallinebelowcmb'] = 0x0329;\n t['verticallinelowmod'] = 0x02CC;\n t['verticallinemod'] = 0x02C8;\n t['vewarmenian'] = 0x057E;\n t['vhook'] = 0x028B;\n t['vikatakana'] = 0x30F8;\n t['viramabengali'] = 0x09CD;\n t['viramadeva'] = 0x094D;\n t['viramagujarati'] = 0x0ACD;\n t['visargabengali'] = 0x0983;\n t['visargadeva'] = 0x0903;\n t['visargagujarati'] = 0x0A83;\n t['vmonospace'] = 0xFF56;\n t['voarmenian'] = 0x0578;\n t['voicediterationhiragana'] = 0x309E;\n t['voicediterationkatakana'] = 0x30FE;\n t['voicedmarkkana'] = 0x309B;\n t['voicedmarkkanahalfwidth'] = 0xFF9E;\n t['vokatakana'] = 0x30FA;\n t['vparen'] = 0x24B1;\n t['vtilde'] = 0x1E7D;\n t['vturned'] = 0x028C;\n t['vuhiragana'] = 0x3094;\n t['vukatakana'] = 0x30F4;\n t['w'] = 0x0077;\n t['wacute'] = 0x1E83;\n t['waekorean'] = 0x3159;\n t['wahiragana'] = 0x308F;\n t['wakatakana'] = 0x30EF;\n t['wakatakanahalfwidth'] = 0xFF9C;\n t['wakorean'] = 0x3158;\n t['wasmallhiragana'] = 0x308E;\n t['wasmallkatakana'] = 0x30EE;\n t['wattosquare'] = 0x3357;\n t['wavedash'] = 0x301C;\n t['wavyunderscorevertical'] = 0xFE34;\n t['wawarabic'] = 0x0648;\n t['wawfinalarabic'] = 0xFEEE;\n t['wawhamzaabovearabic'] = 0x0624;\n t['wawhamzaabovefinalarabic'] = 0xFE86;\n t['wbsquare'] = 0x33DD;\n t['wcircle'] = 0x24E6;\n t['wcircumflex'] = 0x0175;\n t['wdieresis'] = 0x1E85;\n t['wdotaccent'] = 0x1E87;\n t['wdotbelow'] = 0x1E89;\n t['wehiragana'] = 0x3091;\n t['weierstrass'] = 0x2118;\n t['wekatakana'] = 0x30F1;\n t['wekorean'] = 0x315E;\n t['weokorean'] = 0x315D;\n t['wgrave'] = 0x1E81;\n t['whitebullet'] = 0x25E6;\n t['whitecircle'] = 0x25CB;\n t['whitecircleinverse'] = 0x25D9;\n t['whitecornerbracketleft'] = 0x300E;\n t['whitecornerbracketleftvertical'] = 0xFE43;\n t['whitecornerbracketright'] = 0x300F;\n t['whitecornerbracketrightvertical'] = 0xFE44;\n t['whitediamond'] = 0x25C7;\n t['whitediamondcontainingblacksmalldiamond'] = 0x25C8;\n t['whitedownpointingsmalltriangle'] = 0x25BF;\n t['whitedownpointingtriangle'] = 0x25BD;\n t['whiteleftpointingsmalltriangle'] = 0x25C3;\n t['whiteleftpointingtriangle'] = 0x25C1;\n t['whitelenticularbracketleft'] = 0x3016;\n t['whitelenticularbracketright'] = 0x3017;\n t['whiterightpointingsmalltriangle'] = 0x25B9;\n t['whiterightpointingtriangle'] = 0x25B7;\n t['whitesmallsquare'] = 0x25AB;\n t['whitesmilingface'] = 0x263A;\n t['whitesquare'] = 0x25A1;\n t['whitestar'] = 0x2606;\n t['whitetelephone'] = 0x260F;\n t['whitetortoiseshellbracketleft'] = 0x3018;\n t['whitetortoiseshellbracketright'] = 0x3019;\n t['whiteuppointingsmalltriangle'] = 0x25B5;\n t['whiteuppointingtriangle'] = 0x25B3;\n t['wihiragana'] = 0x3090;\n t['wikatakana'] = 0x30F0;\n t['wikorean'] = 0x315F;\n t['wmonospace'] = 0xFF57;\n t['wohiragana'] = 0x3092;\n t['wokatakana'] = 0x30F2;\n t['wokatakanahalfwidth'] = 0xFF66;\n t['won'] = 0x20A9;\n t['wonmonospace'] = 0xFFE6;\n t['wowaenthai'] = 0x0E27;\n t['wparen'] = 0x24B2;\n t['wring'] = 0x1E98;\n t['wsuperior'] = 0x02B7;\n t['wturned'] = 0x028D;\n t['wynn'] = 0x01BF;\n t['x'] = 0x0078;\n t['xabovecmb'] = 0x033D;\n t['xbopomofo'] = 0x3112;\n t['xcircle'] = 0x24E7;\n t['xdieresis'] = 0x1E8D;\n t['xdotaccent'] = 0x1E8B;\n t['xeharmenian'] = 0x056D;\n t['xi'] = 0x03BE;\n t['xmonospace'] = 0xFF58;\n t['xparen'] = 0x24B3;\n t['xsuperior'] = 0x02E3;\n t['y'] = 0x0079;\n t['yaadosquare'] = 0x334E;\n t['yabengali'] = 0x09AF;\n t['yacute'] = 0x00FD;\n t['yadeva'] = 0x092F;\n t['yaekorean'] = 0x3152;\n t['yagujarati'] = 0x0AAF;\n t['yagurmukhi'] = 0x0A2F;\n t['yahiragana'] = 0x3084;\n t['yakatakana'] = 0x30E4;\n t['yakatakanahalfwidth'] = 0xFF94;\n t['yakorean'] = 0x3151;\n t['yamakkanthai'] = 0x0E4E;\n t['yasmallhiragana'] = 0x3083;\n t['yasmallkatakana'] = 0x30E3;\n t['yasmallkatakanahalfwidth'] = 0xFF6C;\n t['yatcyrillic'] = 0x0463;\n t['ycircle'] = 0x24E8;\n t['ycircumflex'] = 0x0177;\n t['ydieresis'] = 0x00FF;\n t['ydotaccent'] = 0x1E8F;\n t['ydotbelow'] = 0x1EF5;\n t['yeharabic'] = 0x064A;\n t['yehbarreearabic'] = 0x06D2;\n t['yehbarreefinalarabic'] = 0xFBAF;\n t['yehfinalarabic'] = 0xFEF2;\n t['yehhamzaabovearabic'] = 0x0626;\n t['yehhamzaabovefinalarabic'] = 0xFE8A;\n t['yehhamzaaboveinitialarabic'] = 0xFE8B;\n t['yehhamzaabovemedialarabic'] = 0xFE8C;\n t['yehinitialarabic'] = 0xFEF3;\n t['yehmedialarabic'] = 0xFEF4;\n t['yehmeeminitialarabic'] = 0xFCDD;\n t['yehmeemisolatedarabic'] = 0xFC58;\n t['yehnoonfinalarabic'] = 0xFC94;\n t['yehthreedotsbelowarabic'] = 0x06D1;\n t['yekorean'] = 0x3156;\n t['yen'] = 0x00A5;\n t['yenmonospace'] = 0xFFE5;\n t['yeokorean'] = 0x3155;\n t['yeorinhieuhkorean'] = 0x3186;\n t['yerahbenyomohebrew'] = 0x05AA;\n t['yerahbenyomolefthebrew'] = 0x05AA;\n t['yericyrillic'] = 0x044B;\n t['yerudieresiscyrillic'] = 0x04F9;\n t['yesieungkorean'] = 0x3181;\n t['yesieungpansioskorean'] = 0x3183;\n t['yesieungsioskorean'] = 0x3182;\n t['yetivhebrew'] = 0x059A;\n t['ygrave'] = 0x1EF3;\n t['yhook'] = 0x01B4;\n t['yhookabove'] = 0x1EF7;\n t['yiarmenian'] = 0x0575;\n t['yicyrillic'] = 0x0457;\n t['yikorean'] = 0x3162;\n t['yinyang'] = 0x262F;\n t['yiwnarmenian'] = 0x0582;\n t['ymonospace'] = 0xFF59;\n t['yod'] = 0x05D9;\n t['yoddagesh'] = 0xFB39;\n t['yoddageshhebrew'] = 0xFB39;\n t['yodhebrew'] = 0x05D9;\n t['yodyodhebrew'] = 0x05F2;\n t['yodyodpatahhebrew'] = 0xFB1F;\n t['yohiragana'] = 0x3088;\n t['yoikorean'] = 0x3189;\n t['yokatakana'] = 0x30E8;\n t['yokatakanahalfwidth'] = 0xFF96;\n t['yokorean'] = 0x315B;\n t['yosmallhiragana'] = 0x3087;\n t['yosmallkatakana'] = 0x30E7;\n t['yosmallkatakanahalfwidth'] = 0xFF6E;\n t['yotgreek'] = 0x03F3;\n t['yoyaekorean'] = 0x3188;\n t['yoyakorean'] = 0x3187;\n t['yoyakthai'] = 0x0E22;\n t['yoyingthai'] = 0x0E0D;\n t['yparen'] = 0x24B4;\n t['ypogegrammeni'] = 0x037A;\n t['ypogegrammenigreekcmb'] = 0x0345;\n t['yr'] = 0x01A6;\n t['yring'] = 0x1E99;\n t['ysuperior'] = 0x02B8;\n t['ytilde'] = 0x1EF9;\n t['yturned'] = 0x028E;\n t['yuhiragana'] = 0x3086;\n t['yuikorean'] = 0x318C;\n t['yukatakana'] = 0x30E6;\n t['yukatakanahalfwidth'] = 0xFF95;\n t['yukorean'] = 0x3160;\n t['yusbigcyrillic'] = 0x046B;\n t['yusbigiotifiedcyrillic'] = 0x046D;\n t['yuslittlecyrillic'] = 0x0467;\n t['yuslittleiotifiedcyrillic'] = 0x0469;\n t['yusmallhiragana'] = 0x3085;\n t['yusmallkatakana'] = 0x30E5;\n t['yusmallkatakanahalfwidth'] = 0xFF6D;\n t['yuyekorean'] = 0x318B;\n t['yuyeokorean'] = 0x318A;\n t['yyabengali'] = 0x09DF;\n t['yyadeva'] = 0x095F;\n t['z'] = 0x007A;\n t['zaarmenian'] = 0x0566;\n t['zacute'] = 0x017A;\n t['zadeva'] = 0x095B;\n t['zagurmukhi'] = 0x0A5B;\n t['zaharabic'] = 0x0638;\n t['zahfinalarabic'] = 0xFEC6;\n t['zahinitialarabic'] = 0xFEC7;\n t['zahiragana'] = 0x3056;\n t['zahmedialarabic'] = 0xFEC8;\n t['zainarabic'] = 0x0632;\n t['zainfinalarabic'] = 0xFEB0;\n t['zakatakana'] = 0x30B6;\n t['zaqefgadolhebrew'] = 0x0595;\n t['zaqefqatanhebrew'] = 0x0594;\n t['zarqahebrew'] = 0x0598;\n t['zayin'] = 0x05D6;\n t['zayindagesh'] = 0xFB36;\n t['zayindageshhebrew'] = 0xFB36;\n t['zayinhebrew'] = 0x05D6;\n t['zbopomofo'] = 0x3117;\n t['zcaron'] = 0x017E;\n t['zcircle'] = 0x24E9;\n t['zcircumflex'] = 0x1E91;\n t['zcurl'] = 0x0291;\n t['zdot'] = 0x017C;\n t['zdotaccent'] = 0x017C;\n t['zdotbelow'] = 0x1E93;\n t['zecyrillic'] = 0x0437;\n t['zedescendercyrillic'] = 0x0499;\n t['zedieresiscyrillic'] = 0x04DF;\n t['zehiragana'] = 0x305C;\n t['zekatakana'] = 0x30BC;\n t['zero'] = 0x0030;\n t['zeroarabic'] = 0x0660;\n t['zerobengali'] = 0x09E6;\n t['zerodeva'] = 0x0966;\n t['zerogujarati'] = 0x0AE6;\n t['zerogurmukhi'] = 0x0A66;\n t['zerohackarabic'] = 0x0660;\n t['zeroinferior'] = 0x2080;\n t['zeromonospace'] = 0xFF10;\n t['zerooldstyle'] = 0xF730;\n t['zeropersian'] = 0x06F0;\n t['zerosuperior'] = 0x2070;\n t['zerothai'] = 0x0E50;\n t['zerowidthjoiner'] = 0xFEFF;\n t['zerowidthnonjoiner'] = 0x200C;\n t['zerowidthspace'] = 0x200B;\n t['zeta'] = 0x03B6;\n t['zhbopomofo'] = 0x3113;\n t['zhearmenian'] = 0x056A;\n t['zhebrevecyrillic'] = 0x04C2;\n t['zhecyrillic'] = 0x0436;\n t['zhedescendercyrillic'] = 0x0497;\n t['zhedieresiscyrillic'] = 0x04DD;\n t['zihiragana'] = 0x3058;\n t['zikatakana'] = 0x30B8;\n t['zinorhebrew'] = 0x05AE;\n t['zlinebelow'] = 0x1E95;\n t['zmonospace'] = 0xFF5A;\n t['zohiragana'] = 0x305E;\n t['zokatakana'] = 0x30BE;\n t['zparen'] = 0x24B5;\n t['zretroflexhook'] = 0x0290;\n t['zstroke'] = 0x01B6;\n t['zuhiragana'] = 0x305A;\n t['zukatakana'] = 0x30BA;\n t['.notdef'] = 0x0000;\n t['angbracketleftbig'] = 0x2329;\n t['angbracketleftBig'] = 0x2329;\n t['angbracketleftbigg'] = 0x2329;\n t['angbracketleftBigg'] = 0x2329;\n t['angbracketrightBig'] = 0x232A;\n t['angbracketrightbig'] = 0x232A;\n t['angbracketrightBigg'] = 0x232A;\n t['angbracketrightbigg'] = 0x232A;\n t['arrowhookleft'] = 0x21AA;\n t['arrowhookright'] = 0x21A9;\n t['arrowlefttophalf'] = 0x21BC;\n t['arrowleftbothalf'] = 0x21BD;\n t['arrownortheast'] = 0x2197;\n t['arrownorthwest'] = 0x2196;\n t['arrowrighttophalf'] = 0x21C0;\n t['arrowrightbothalf'] = 0x21C1;\n t['arrowsoutheast'] = 0x2198;\n t['arrowsouthwest'] = 0x2199;\n t['backslashbig'] = 0x2216;\n t['backslashBig'] = 0x2216;\n t['backslashBigg'] = 0x2216;\n t['backslashbigg'] = 0x2216;\n t['bardbl'] = 0x2016;\n t['bracehtipdownleft'] = 0xFE37;\n t['bracehtipdownright'] = 0xFE37;\n t['bracehtipupleft'] = 0xFE38;\n t['bracehtipupright'] = 0xFE38;\n t['braceleftBig'] = 0x007B;\n t['braceleftbig'] = 0x007B;\n t['braceleftbigg'] = 0x007B;\n t['braceleftBigg'] = 0x007B;\n t['bracerightBig'] = 0x007D;\n t['bracerightbig'] = 0x007D;\n t['bracerightbigg'] = 0x007D;\n t['bracerightBigg'] = 0x007D;\n t['bracketleftbig'] = 0x005B;\n t['bracketleftBig'] = 0x005B;\n t['bracketleftbigg'] = 0x005B;\n t['bracketleftBigg'] = 0x005B;\n t['bracketrightBig'] = 0x005D;\n t['bracketrightbig'] = 0x005D;\n t['bracketrightbigg'] = 0x005D;\n t['bracketrightBigg'] = 0x005D;\n t['ceilingleftbig'] = 0x2308;\n t['ceilingleftBig'] = 0x2308;\n t['ceilingleftBigg'] = 0x2308;\n t['ceilingleftbigg'] = 0x2308;\n t['ceilingrightbig'] = 0x2309;\n t['ceilingrightBig'] = 0x2309;\n t['ceilingrightbigg'] = 0x2309;\n t['ceilingrightBigg'] = 0x2309;\n t['circledotdisplay'] = 0x2299;\n t['circledottext'] = 0x2299;\n t['circlemultiplydisplay'] = 0x2297;\n t['circlemultiplytext'] = 0x2297;\n t['circleplusdisplay'] = 0x2295;\n t['circleplustext'] = 0x2295;\n t['contintegraldisplay'] = 0x222E;\n t['contintegraltext'] = 0x222E;\n t['coproductdisplay'] = 0x2210;\n t['coproducttext'] = 0x2210;\n t['floorleftBig'] = 0x230A;\n t['floorleftbig'] = 0x230A;\n t['floorleftbigg'] = 0x230A;\n t['floorleftBigg'] = 0x230A;\n t['floorrightbig'] = 0x230B;\n t['floorrightBig'] = 0x230B;\n t['floorrightBigg'] = 0x230B;\n t['floorrightbigg'] = 0x230B;\n t['hatwide'] = 0x0302;\n t['hatwider'] = 0x0302;\n t['hatwidest'] = 0x0302;\n t['intercal'] = 0x1D40;\n t['integraldisplay'] = 0x222B;\n t['integraltext'] = 0x222B;\n t['intersectiondisplay'] = 0x22C2;\n t['intersectiontext'] = 0x22C2;\n t['logicalanddisplay'] = 0x2227;\n t['logicalandtext'] = 0x2227;\n t['logicalordisplay'] = 0x2228;\n t['logicalortext'] = 0x2228;\n t['parenleftBig'] = 0x0028;\n t['parenleftbig'] = 0x0028;\n t['parenleftBigg'] = 0x0028;\n t['parenleftbigg'] = 0x0028;\n t['parenrightBig'] = 0x0029;\n t['parenrightbig'] = 0x0029;\n t['parenrightBigg'] = 0x0029;\n t['parenrightbigg'] = 0x0029;\n t['prime'] = 0x2032;\n t['productdisplay'] = 0x220F;\n t['producttext'] = 0x220F;\n t['radicalbig'] = 0x221A;\n t['radicalBig'] = 0x221A;\n t['radicalBigg'] = 0x221A;\n t['radicalbigg'] = 0x221A;\n t['radicalbt'] = 0x221A;\n t['radicaltp'] = 0x221A;\n t['radicalvertex'] = 0x221A;\n t['slashbig'] = 0x002F;\n t['slashBig'] = 0x002F;\n t['slashBigg'] = 0x002F;\n t['slashbigg'] = 0x002F;\n t['summationdisplay'] = 0x2211;\n t['summationtext'] = 0x2211;\n t['tildewide'] = 0x02DC;\n t['tildewider'] = 0x02DC;\n t['tildewidest'] = 0x02DC;\n t['uniondisplay'] = 0x22C3;\n t['unionmultidisplay'] = 0x228E;\n t['unionmultitext'] = 0x228E;\n t['unionsqdisplay'] = 0x2294;\n t['unionsqtext'] = 0x2294;\n t['uniontext'] = 0x22C3;\n t['vextenddouble'] = 0x2225;\n t['vextendsingle'] = 0x2223;\n});\nvar getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n t['space'] = 0x0020;\n t['a1'] = 0x2701;\n t['a2'] = 0x2702;\n t['a202'] = 0x2703;\n t['a3'] = 0x2704;\n t['a4'] = 0x260E;\n t['a5'] = 0x2706;\n t['a119'] = 0x2707;\n t['a118'] = 0x2708;\n t['a117'] = 0x2709;\n t['a11'] = 0x261B;\n t['a12'] = 0x261E;\n t['a13'] = 0x270C;\n t['a14'] = 0x270D;\n t['a15'] = 0x270E;\n t['a16'] = 0x270F;\n t['a105'] = 0x2710;\n t['a17'] = 0x2711;\n t['a18'] = 0x2712;\n t['a19'] = 0x2713;\n t['a20'] = 0x2714;\n t['a21'] = 0x2715;\n t['a22'] = 0x2716;\n t['a23'] = 0x2717;\n t['a24'] = 0x2718;\n t['a25'] = 0x2719;\n t['a26'] = 0x271A;\n t['a27'] = 0x271B;\n t['a28'] = 0x271C;\n t['a6'] = 0x271D;\n t['a7'] = 0x271E;\n t['a8'] = 0x271F;\n t['a9'] = 0x2720;\n t['a10'] = 0x2721;\n t['a29'] = 0x2722;\n t['a30'] = 0x2723;\n t['a31'] = 0x2724;\n t['a32'] = 0x2725;\n t['a33'] = 0x2726;\n t['a34'] = 0x2727;\n t['a35'] = 0x2605;\n t['a36'] = 0x2729;\n t['a37'] = 0x272A;\n t['a38'] = 0x272B;\n t['a39'] = 0x272C;\n t['a40'] = 0x272D;\n t['a41'] = 0x272E;\n t['a42'] = 0x272F;\n t['a43'] = 0x2730;\n t['a44'] = 0x2731;\n t['a45'] = 0x2732;\n t['a46'] = 0x2733;\n t['a47'] = 0x2734;\n t['a48'] = 0x2735;\n t['a49'] = 0x2736;\n t['a50'] = 0x2737;\n t['a51'] = 0x2738;\n t['a52'] = 0x2739;\n t['a53'] = 0x273A;\n t['a54'] = 0x273B;\n t['a55'] = 0x273C;\n t['a56'] = 0x273D;\n t['a57'] = 0x273E;\n t['a58'] = 0x273F;\n t['a59'] = 0x2740;\n t['a60'] = 0x2741;\n t['a61'] = 0x2742;\n t['a62'] = 0x2743;\n t['a63'] = 0x2744;\n t['a64'] = 0x2745;\n t['a65'] = 0x2746;\n t['a66'] = 0x2747;\n t['a67'] = 0x2748;\n t['a68'] = 0x2749;\n t['a69'] = 0x274A;\n t['a70'] = 0x274B;\n t['a71'] = 0x25CF;\n t['a72'] = 0x274D;\n t['a73'] = 0x25A0;\n t['a74'] = 0x274F;\n t['a203'] = 0x2750;\n t['a75'] = 0x2751;\n t['a204'] = 0x2752;\n t['a76'] = 0x25B2;\n t['a77'] = 0x25BC;\n t['a78'] = 0x25C6;\n t['a79'] = 0x2756;\n t['a81'] = 0x25D7;\n t['a82'] = 0x2758;\n t['a83'] = 0x2759;\n t['a84'] = 0x275A;\n t['a97'] = 0x275B;\n t['a98'] = 0x275C;\n t['a99'] = 0x275D;\n t['a100'] = 0x275E;\n t['a101'] = 0x2761;\n t['a102'] = 0x2762;\n t['a103'] = 0x2763;\n t['a104'] = 0x2764;\n t['a106'] = 0x2765;\n t['a107'] = 0x2766;\n t['a108'] = 0x2767;\n t['a112'] = 0x2663;\n t['a111'] = 0x2666;\n t['a110'] = 0x2665;\n t['a109'] = 0x2660;\n t['a120'] = 0x2460;\n t['a121'] = 0x2461;\n t['a122'] = 0x2462;\n t['a123'] = 0x2463;\n t['a124'] = 0x2464;\n t['a125'] = 0x2465;\n t['a126'] = 0x2466;\n t['a127'] = 0x2467;\n t['a128'] = 0x2468;\n t['a129'] = 0x2469;\n t['a130'] = 0x2776;\n t['a131'] = 0x2777;\n t['a132'] = 0x2778;\n t['a133'] = 0x2779;\n t['a134'] = 0x277A;\n t['a135'] = 0x277B;\n t['a136'] = 0x277C;\n t['a137'] = 0x277D;\n t['a138'] = 0x277E;\n t['a139'] = 0x277F;\n t['a140'] = 0x2780;\n t['a141'] = 0x2781;\n t['a142'] = 0x2782;\n t['a143'] = 0x2783;\n t['a144'] = 0x2784;\n t['a145'] = 0x2785;\n t['a146'] = 0x2786;\n t['a147'] = 0x2787;\n t['a148'] = 0x2788;\n t['a149'] = 0x2789;\n t['a150'] = 0x278A;\n t['a151'] = 0x278B;\n t['a152'] = 0x278C;\n t['a153'] = 0x278D;\n t['a154'] = 0x278E;\n t['a155'] = 0x278F;\n t['a156'] = 0x2790;\n t['a157'] = 0x2791;\n t['a158'] = 0x2792;\n t['a159'] = 0x2793;\n t['a160'] = 0x2794;\n t['a161'] = 0x2192;\n t['a163'] = 0x2194;\n t['a164'] = 0x2195;\n t['a196'] = 0x2798;\n t['a165'] = 0x2799;\n t['a192'] = 0x279A;\n t['a166'] = 0x279B;\n t['a167'] = 0x279C;\n t['a168'] = 0x279D;\n t['a169'] = 0x279E;\n t['a170'] = 0x279F;\n t['a171'] = 0x27A0;\n t['a172'] = 0x27A1;\n t['a173'] = 0x27A2;\n t['a162'] = 0x27A3;\n t['a174'] = 0x27A4;\n t['a175'] = 0x27A5;\n t['a176'] = 0x27A6;\n t['a177'] = 0x27A7;\n t['a178'] = 0x27A8;\n t['a179'] = 0x27A9;\n t['a193'] = 0x27AA;\n t['a180'] = 0x27AB;\n t['a199'] = 0x27AC;\n t['a181'] = 0x27AD;\n t['a200'] = 0x27AE;\n t['a182'] = 0x27AF;\n t['a201'] = 0x27B1;\n t['a183'] = 0x27B2;\n t['a184'] = 0x27B3;\n t['a197'] = 0x27B4;\n t['a185'] = 0x27B5;\n t['a194'] = 0x27B6;\n t['a198'] = 0x27B7;\n t['a186'] = 0x27B8;\n t['a195'] = 0x27B9;\n t['a187'] = 0x27BA;\n t['a188'] = 0x27BB;\n t['a189'] = 0x27BC;\n t['a190'] = 0x27BD;\n t['a191'] = 0x27BE;\n t['a89'] = 0x2768;\n t['a90'] = 0x2769;\n t['a93'] = 0x276A;\n t['a94'] = 0x276B;\n t['a91'] = 0x276C;\n t['a92'] = 0x276D;\n t['a205'] = 0x276E;\n t['a85'] = 0x276F;\n t['a206'] = 0x2770;\n t['a86'] = 0x2771;\n t['a87'] = 0x2772;\n t['a88'] = 0x2773;\n t['a95'] = 0x2774;\n t['a96'] = 0x2775;\n t['.notdef'] = 0x0000;\n});\nexports.getGlyphsUnicode = getGlyphsUnicode;\nexports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getGlyphMapForStandardFonts = exports.getSymbolsFonts = exports.getSerifFonts = exports.getNonStdFontMap = exports.getStdFontMap = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar getStdFontMap = (0, _util.getLookupTableFactory)(function (t) {\n  t['ArialNarrow'] = 'Helvetica';\n  t['ArialNarrow-Bold'] = 'Helvetica-Bold';\n  t['ArialNarrow-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['ArialNarrow-Italic'] = 'Helvetica-Oblique';\n  t['ArialBlack'] = 'Helvetica';\n  t['ArialBlack-Bold'] = 'Helvetica-Bold';\n  t['ArialBlack-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['ArialBlack-Italic'] = 'Helvetica-Oblique';\n  t['Arial-Black'] = 'Helvetica';\n  t['Arial-Black-Bold'] = 'Helvetica-Bold';\n  t['Arial-Black-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['Arial-Black-Italic'] = 'Helvetica-Oblique';\n  t['Arial'] = 'Helvetica';\n  t['Arial-Bold'] = 'Helvetica-Bold';\n  t['Arial-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['Arial-Italic'] = 'Helvetica-Oblique';\n  t['Arial-BoldItalicMT'] = 'Helvetica-BoldOblique';\n  t['Arial-BoldMT'] = 'Helvetica-Bold';\n  t['Arial-ItalicMT'] = 'Helvetica-Oblique';\n  t['ArialMT'] = 'Helvetica';\n  t['Courier-Bold'] = 'Courier-Bold';\n  t['Courier-BoldItalic'] = 'Courier-BoldOblique';\n  t['Courier-Italic'] = 'Courier-Oblique';\n  t['CourierNew'] = 'Courier';\n  t['CourierNew-Bold'] = 'Courier-Bold';\n  t['CourierNew-BoldItalic'] = 'Courier-BoldOblique';\n  t['CourierNew-Italic'] = 'Courier-Oblique';\n  t['CourierNewPS-BoldItalicMT'] = 'Courier-BoldOblique';\n  t['CourierNewPS-BoldMT'] = 'Courier-Bold';\n  t['CourierNewPS-ItalicMT'] = 'Courier-Oblique';\n  t['CourierNewPSMT'] = 'Courier';\n  t['Helvetica'] = 'Helvetica';\n  t['Helvetica-Bold'] = 'Helvetica-Bold';\n  t['Helvetica-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['Helvetica-BoldOblique'] = 'Helvetica-BoldOblique';\n  t['Helvetica-Italic'] = 'Helvetica-Oblique';\n  t['Helvetica-Oblique'] = 'Helvetica-Oblique';\n  t['SegoeUISymbol'] = 'Helvetica';\n  t['Symbol-Bold'] = 'Symbol';\n  t['Symbol-BoldItalic'] = 'Symbol';\n  t['Symbol-Italic'] = 'Symbol';\n  t['TimesNewRoman'] = 'Times-Roman';\n  t['TimesNewRoman-Bold'] = 'Times-Bold';\n  t['TimesNewRoman-BoldItalic'] = 'Times-BoldItalic';\n  t['TimesNewRoman-Italic'] = 'Times-Italic';\n  t['TimesNewRomanPS'] = 'Times-Roman';\n  t['TimesNewRomanPS-Bold'] = 'Times-Bold';\n  t['TimesNewRomanPS-BoldItalic'] = 'Times-BoldItalic';\n  t['TimesNewRomanPS-BoldItalicMT'] = 'Times-BoldItalic';\n  t['TimesNewRomanPS-BoldMT'] = 'Times-Bold';\n  t['TimesNewRomanPS-Italic'] = 'Times-Italic';\n  t['TimesNewRomanPS-ItalicMT'] = 'Times-Italic';\n  t['TimesNewRomanPSMT'] = 'Times-Roman';\n  t['TimesNewRomanPSMT-Bold'] = 'Times-Bold';\n  t['TimesNewRomanPSMT-BoldItalic'] = 'Times-BoldItalic';\n  t['TimesNewRomanPSMT-Italic'] = 'Times-Italic';\n});\nvar getNonStdFontMap = (0, _util.getLookupTableFactory)(function (t) {\n  t['Calibri'] = 'Helvetica';\n  t['Calibri-Bold'] = 'Helvetica-Bold';\n  t['Calibri-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['Calibri-Italic'] = 'Helvetica-Oblique';\n  t['CenturyGothic'] = 'Helvetica';\n  t['CenturyGothic-Bold'] = 'Helvetica-Bold';\n  t['CenturyGothic-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['CenturyGothic-Italic'] = 'Helvetica-Oblique';\n  t['ComicSansMS'] = 'Comic Sans MS';\n  t['ComicSansMS-Bold'] = 'Comic Sans MS-Bold';\n  t['ComicSansMS-BoldItalic'] = 'Comic Sans MS-BoldItalic';\n  t['ComicSansMS-Italic'] = 'Comic Sans MS-Italic';\n  t['LucidaConsole'] = 'Courier';\n  t['LucidaConsole-Bold'] = 'Courier-Bold';\n  t['LucidaConsole-BoldItalic'] = 'Courier-BoldOblique';\n  t['LucidaConsole-Italic'] = 'Courier-Oblique';\n  t['LucidaSans-Demi'] = 'Helvetica-Bold';\n  t['MS-Gothic'] = 'MS Gothic';\n  t['MS-Gothic-Bold'] = 'MS Gothic-Bold';\n  t['MS-Gothic-BoldItalic'] = 'MS Gothic-BoldItalic';\n  t['MS-Gothic-Italic'] = 'MS Gothic-Italic';\n  t['MS-Mincho'] = 'MS Mincho';\n  t['MS-Mincho-Bold'] = 'MS Mincho-Bold';\n  t['MS-Mincho-BoldItalic'] = 'MS Mincho-BoldItalic';\n  t['MS-Mincho-Italic'] = 'MS Mincho-Italic';\n  t['MS-PGothic'] = 'MS PGothic';\n  t['MS-PGothic-Bold'] = 'MS PGothic-Bold';\n  t['MS-PGothic-BoldItalic'] = 'MS PGothic-BoldItalic';\n  t['MS-PGothic-Italic'] = 'MS PGothic-Italic';\n  t['MS-PMincho'] = 'MS PMincho';\n  t['MS-PMincho-Bold'] = 'MS PMincho-Bold';\n  t['MS-PMincho-BoldItalic'] = 'MS PMincho-BoldItalic';\n  t['MS-PMincho-Italic'] = 'MS PMincho-Italic';\n  t['NuptialScript'] = 'Times-Italic';\n  t['Wingdings'] = 'ZapfDingbats';\n});\nvar getSerifFonts = (0, _util.getLookupTableFactory)(function (t) {\n  t['Adobe Jenson'] = true;\n  t['Adobe Text'] = true;\n  t['Albertus'] = true;\n  t['Aldus'] = true;\n  t['Alexandria'] = true;\n  t['Algerian'] = true;\n  t['American Typewriter'] = true;\n  t['Antiqua'] = true;\n  t['Apex'] = true;\n  t['Arno'] = true;\n  t['Aster'] = true;\n  t['Aurora'] = true;\n  t['Baskerville'] = true;\n  t['Bell'] = true;\n  t['Bembo'] = true;\n  t['Bembo Schoolbook'] = true;\n  t['Benguiat'] = true;\n  t['Berkeley Old Style'] = true;\n  t['Bernhard Modern'] = true;\n  t['Berthold City'] = true;\n  t['Bodoni'] = true;\n  t['Bauer Bodoni'] = true;\n  t['Book Antiqua'] = true;\n  t['Bookman'] = true;\n  t['Bordeaux Roman'] = true;\n  t['Californian FB'] = true;\n  t['Calisto'] = true;\n  t['Calvert'] = true;\n  t['Capitals'] = true;\n  t['Cambria'] = true;\n  t['Cartier'] = true;\n  t['Caslon'] = true;\n  t['Catull'] = true;\n  t['Centaur'] = true;\n  t['Century Old Style'] = true;\n  t['Century Schoolbook'] = true;\n  t['Chaparral'] = true;\n  t['Charis SIL'] = true;\n  t['Cheltenham'] = true;\n  t['Cholla Slab'] = true;\n  t['Clarendon'] = true;\n  t['Clearface'] = true;\n  t['Cochin'] = true;\n  t['Colonna'] = true;\n  t['Computer Modern'] = true;\n  t['Concrete Roman'] = true;\n  t['Constantia'] = true;\n  t['Cooper Black'] = true;\n  t['Corona'] = true;\n  t['Ecotype'] = true;\n  t['Egyptienne'] = true;\n  t['Elephant'] = true;\n  t['Excelsior'] = true;\n  t['Fairfield'] = true;\n  t['FF Scala'] = true;\n  t['Folkard'] = true;\n  t['Footlight'] = true;\n  t['FreeSerif'] = true;\n  t['Friz Quadrata'] = true;\n  t['Garamond'] = true;\n  t['Gentium'] = true;\n  t['Georgia'] = true;\n  t['Gloucester'] = true;\n  t['Goudy Old Style'] = true;\n  t['Goudy Schoolbook'] = true;\n  t['Goudy Pro Font'] = true;\n  t['Granjon'] = true;\n  t['Guardian Egyptian'] = true;\n  t['Heather'] = true;\n  t['Hercules'] = true;\n  t['High Tower Text'] = true;\n  t['Hiroshige'] = true;\n  t['Hoefler Text'] = true;\n  t['Humana Serif'] = true;\n  t['Imprint'] = true;\n  t['Ionic No. 5'] = true;\n  t['Janson'] = true;\n  t['Joanna'] = true;\n  t['Korinna'] = true;\n  t['Lexicon'] = true;\n  t['Liberation Serif'] = true;\n  t['Linux Libertine'] = true;\n  t['Literaturnaya'] = true;\n  t['Lucida'] = true;\n  t['Lucida Bright'] = true;\n  t['Melior'] = true;\n  t['Memphis'] = true;\n  t['Miller'] = true;\n  t['Minion'] = true;\n  t['Modern'] = true;\n  t['Mona Lisa'] = true;\n  t['Mrs Eaves'] = true;\n  t['MS Serif'] = true;\n  t['Museo Slab'] = true;\n  t['New York'] = true;\n  t['Nimbus Roman'] = true;\n  t['NPS Rawlinson Roadway'] = true;\n  t['NuptialScript'] = true;\n  t['Palatino'] = true;\n  t['Perpetua'] = true;\n  t['Plantin'] = true;\n  t['Plantin Schoolbook'] = true;\n  t['Playbill'] = true;\n  t['Poor Richard'] = true;\n  t['Rawlinson Roadway'] = true;\n  t['Renault'] = true;\n  t['Requiem'] = true;\n  t['Rockwell'] = true;\n  t['Roman'] = true;\n  t['Rotis Serif'] = true;\n  t['Sabon'] = true;\n  t['Scala'] = true;\n  t['Seagull'] = true;\n  t['Sistina'] = true;\n  t['Souvenir'] = true;\n  t['STIX'] = true;\n  t['Stone Informal'] = true;\n  t['Stone Serif'] = true;\n  t['Sylfaen'] = true;\n  t['Times'] = true;\n  t['Trajan'] = true;\n  t['Trinité'] = true;\n  t['Trump Mediaeval'] = true;\n  t['Utopia'] = true;\n  t['Vale Type'] = true;\n  t['Bitstream Vera'] = true;\n  t['Vera Serif'] = true;\n  t['Versailles'] = true;\n  t['Wanted'] = true;\n  t['Weiss'] = true;\n  t['Wide Latin'] = true;\n  t['Windsor'] = true;\n  t['XITS'] = true;\n});\nvar getSymbolsFonts = (0, _util.getLookupTableFactory)(function (t) {\n  t['Dingbats'] = true;\n  t['Symbol'] = true;\n  t['ZapfDingbats'] = true;\n});\nvar getGlyphMapForStandardFonts = (0, _util.getLookupTableFactory)(function (t) {\n  t[2] = 10;\n  t[3] = 32;\n  t[4] = 33;\n  t[5] = 34;\n  t[6] = 35;\n  t[7] = 36;\n  t[8] = 37;\n  t[9] = 38;\n  t[10] = 39;\n  t[11] = 40;\n  t[12] = 41;\n  t[13] = 42;\n  t[14] = 43;\n  t[15] = 44;\n  t[16] = 45;\n  t[17] = 46;\n  t[18] = 47;\n  t[19] = 48;\n  t[20] = 49;\n  t[21] = 50;\n  t[22] = 51;\n  t[23] = 52;\n  t[24] = 53;\n  t[25] = 54;\n  t[26] = 55;\n  t[27] = 56;\n  t[28] = 57;\n  t[29] = 58;\n  t[30] = 894;\n  t[31] = 60;\n  t[32] = 61;\n  t[33] = 62;\n  t[34] = 63;\n  t[35] = 64;\n  t[36] = 65;\n  t[37] = 66;\n  t[38] = 67;\n  t[39] = 68;\n  t[40] = 69;\n  t[41] = 70;\n  t[42] = 71;\n  t[43] = 72;\n  t[44] = 73;\n  t[45] = 74;\n  t[46] = 75;\n  t[47] = 76;\n  t[48] = 77;\n  t[49] = 78;\n  t[50] = 79;\n  t[51] = 80;\n  t[52] = 81;\n  t[53] = 82;\n  t[54] = 83;\n  t[55] = 84;\n  t[56] = 85;\n  t[57] = 86;\n  t[58] = 87;\n  t[59] = 88;\n  t[60] = 89;\n  t[61] = 90;\n  t[62] = 91;\n  t[63] = 92;\n  t[64] = 93;\n  t[65] = 94;\n  t[66] = 95;\n  t[67] = 96;\n  t[68] = 97;\n  t[69] = 98;\n  t[70] = 99;\n  t[71] = 100;\n  t[72] = 101;\n  t[73] = 102;\n  t[74] = 103;\n  t[75] = 104;\n  t[76] = 105;\n  t[77] = 106;\n  t[78] = 107;\n  t[79] = 108;\n  t[80] = 109;\n  t[81] = 110;\n  t[82] = 111;\n  t[83] = 112;\n  t[84] = 113;\n  t[85] = 114;\n  t[86] = 115;\n  t[87] = 116;\n  t[88] = 117;\n  t[89] = 118;\n  t[90] = 119;\n  t[91] = 120;\n  t[92] = 121;\n  t[93] = 122;\n  t[94] = 123;\n  t[95] = 124;\n  t[96] = 125;\n  t[97] = 126;\n  t[98] = 196;\n  t[99] = 197;\n  t[100] = 199;\n  t[101] = 201;\n  t[102] = 209;\n  t[103] = 214;\n  t[104] = 220;\n  t[105] = 225;\n  t[106] = 224;\n  t[107] = 226;\n  t[108] = 228;\n  t[109] = 227;\n  t[110] = 229;\n  t[111] = 231;\n  t[112] = 233;\n  t[113] = 232;\n  t[114] = 234;\n  t[115] = 235;\n  t[116] = 237;\n  t[117] = 236;\n  t[118] = 238;\n  t[119] = 239;\n  t[120] = 241;\n  t[121] = 243;\n  t[122] = 242;\n  t[123] = 244;\n  t[124] = 246;\n  t[125] = 245;\n  t[126] = 250;\n  t[127] = 249;\n  t[128] = 251;\n  t[129] = 252;\n  t[130] = 8224;\n  t[131] = 176;\n  t[132] = 162;\n  t[133] = 163;\n  t[134] = 167;\n  t[135] = 8226;\n  t[136] = 182;\n  t[137] = 223;\n  t[138] = 174;\n  t[139] = 169;\n  t[140] = 8482;\n  t[141] = 180;\n  t[142] = 168;\n  t[143] = 8800;\n  t[144] = 198;\n  t[145] = 216;\n  t[146] = 8734;\n  t[147] = 177;\n  t[148] = 8804;\n  t[149] = 8805;\n  t[150] = 165;\n  t[151] = 181;\n  t[152] = 8706;\n  t[153] = 8721;\n  t[154] = 8719;\n  t[156] = 8747;\n  t[157] = 170;\n  t[158] = 186;\n  t[159] = 8486;\n  t[160] = 230;\n  t[161] = 248;\n  t[162] = 191;\n  t[163] = 161;\n  t[164] = 172;\n  t[165] = 8730;\n  t[166] = 402;\n  t[167] = 8776;\n  t[168] = 8710;\n  t[169] = 171;\n  t[170] = 187;\n  t[171] = 8230;\n  t[210] = 218;\n  t[223] = 711;\n  t[224] = 321;\n  t[225] = 322;\n  t[227] = 353;\n  t[229] = 382;\n  t[234] = 253;\n  t[252] = 263;\n  t[253] = 268;\n  t[254] = 269;\n  t[258] = 258;\n  t[260] = 260;\n  t[261] = 261;\n  t[265] = 280;\n  t[266] = 281;\n  t[268] = 283;\n  t[269] = 313;\n  t[275] = 323;\n  t[276] = 324;\n  t[278] = 328;\n  t[284] = 345;\n  t[285] = 346;\n  t[286] = 347;\n  t[292] = 367;\n  t[295] = 377;\n  t[296] = 378;\n  t[298] = 380;\n  t[305] = 963;\n  t[306] = 964;\n  t[307] = 966;\n  t[308] = 8215;\n  t[309] = 8252;\n  t[310] = 8319;\n  t[311] = 8359;\n  t[312] = 8592;\n  t[313] = 8593;\n  t[337] = 9552;\n  t[493] = 1039;\n  t[494] = 1040;\n  t[705] = 1524;\n  t[706] = 8362;\n  t[710] = 64288;\n  t[711] = 64298;\n  t[759] = 1617;\n  t[761] = 1776;\n  t[763] = 1778;\n  t[775] = 1652;\n  t[777] = 1764;\n  t[778] = 1780;\n  t[779] = 1781;\n  t[780] = 1782;\n  t[782] = 771;\n  t[783] = 64726;\n  t[786] = 8363;\n  t[788] = 8532;\n  t[790] = 768;\n  t[791] = 769;\n  t[792] = 768;\n  t[795] = 803;\n  t[797] = 64336;\n  t[798] = 64337;\n  t[799] = 64342;\n  t[800] = 64343;\n  t[801] = 64344;\n  t[802] = 64345;\n  t[803] = 64362;\n  t[804] = 64363;\n  t[805] = 64364;\n  t[2424] = 7821;\n  t[2425] = 7822;\n  t[2426] = 7823;\n  t[2427] = 7824;\n  t[2428] = 7825;\n  t[2429] = 7826;\n  t[2430] = 7827;\n  t[2433] = 7682;\n  t[2678] = 8045;\n  t[2679] = 8046;\n  t[2830] = 1552;\n  t[2838] = 686;\n  t[2840] = 751;\n  t[2842] = 753;\n  t[2843] = 754;\n  t[2844] = 755;\n  t[2846] = 757;\n  t[2856] = 767;\n  t[2857] = 848;\n  t[2858] = 849;\n  t[2862] = 853;\n  t[2863] = 854;\n  t[2864] = 855;\n  t[2865] = 861;\n  t[2866] = 862;\n  t[2906] = 7460;\n  t[2908] = 7462;\n  t[2909] = 7463;\n  t[2910] = 7464;\n  t[2912] = 7466;\n  t[2913] = 7467;\n  t[2914] = 7468;\n  t[2916] = 7470;\n  t[2917] = 7471;\n  t[2918] = 7472;\n  t[2920] = 7474;\n  t[2921] = 7475;\n  t[2922] = 7476;\n  t[2924] = 7478;\n  t[2925] = 7479;\n  t[2926] = 7480;\n  t[2928] = 7482;\n  t[2929] = 7483;\n  t[2930] = 7484;\n  t[2932] = 7486;\n  t[2933] = 7487;\n  t[2934] = 7488;\n  t[2936] = 7490;\n  t[2937] = 7491;\n  t[2938] = 7492;\n  t[2940] = 7494;\n  t[2941] = 7495;\n  t[2942] = 7496;\n  t[2944] = 7498;\n  t[2946] = 7500;\n  t[2948] = 7502;\n  t[2950] = 7504;\n  t[2951] = 7505;\n  t[2952] = 7506;\n  t[2954] = 7508;\n  t[2955] = 7509;\n  t[2956] = 7510;\n  t[2958] = 7512;\n  t[2959] = 7513;\n  t[2960] = 7514;\n  t[2962] = 7516;\n  t[2963] = 7517;\n  t[2964] = 7518;\n  t[2966] = 7520;\n  t[2967] = 7521;\n  t[2968] = 7522;\n  t[2970] = 7524;\n  t[2971] = 7525;\n  t[2972] = 7526;\n  t[2974] = 7528;\n  t[2975] = 7529;\n  t[2976] = 7530;\n  t[2978] = 1537;\n  t[2979] = 1538;\n  t[2980] = 1539;\n  t[2982] = 1549;\n  t[2983] = 1551;\n  t[2984] = 1552;\n  t[2986] = 1554;\n  t[2987] = 1555;\n  t[2988] = 1556;\n  t[2990] = 1623;\n  t[2991] = 1624;\n  t[2995] = 1775;\n  t[2999] = 1791;\n  t[3002] = 64290;\n  t[3003] = 64291;\n  t[3004] = 64292;\n  t[3006] = 64294;\n  t[3007] = 64295;\n  t[3008] = 64296;\n  t[3011] = 1900;\n  t[3014] = 8223;\n  t[3015] = 8244;\n  t[3017] = 7532;\n  t[3018] = 7533;\n  t[3019] = 7534;\n  t[3075] = 7590;\n  t[3076] = 7591;\n  t[3079] = 7594;\n  t[3080] = 7595;\n  t[3083] = 7598;\n  t[3084] = 7599;\n  t[3087] = 7602;\n  t[3088] = 7603;\n  t[3091] = 7606;\n  t[3092] = 7607;\n  t[3095] = 7610;\n  t[3096] = 7611;\n  t[3099] = 7614;\n  t[3100] = 7615;\n  t[3103] = 7618;\n  t[3104] = 7619;\n  t[3107] = 8337;\n  t[3108] = 8338;\n  t[3116] = 1884;\n  t[3119] = 1885;\n  t[3120] = 1885;\n  t[3123] = 1886;\n  t[3124] = 1886;\n  t[3127] = 1887;\n  t[3128] = 1887;\n  t[3131] = 1888;\n  t[3132] = 1888;\n  t[3135] = 1889;\n  t[3136] = 1889;\n  t[3139] = 1890;\n  t[3140] = 1890;\n  t[3143] = 1891;\n  t[3144] = 1891;\n  t[3147] = 1892;\n  t[3148] = 1892;\n  t[3153] = 580;\n  t[3154] = 581;\n  t[3157] = 584;\n  t[3158] = 585;\n  t[3161] = 588;\n  t[3162] = 589;\n  t[3165] = 891;\n  t[3166] = 892;\n  t[3169] = 1274;\n  t[3170] = 1275;\n  t[3173] = 1278;\n  t[3174] = 1279;\n  t[3181] = 7622;\n  t[3182] = 7623;\n  t[3282] = 11799;\n  t[3316] = 578;\n  t[3379] = 42785;\n  t[3393] = 1159;\n  t[3416] = 8377;\n});\nvar getSupplementalGlyphMapForArialBlack = (0, _util.getLookupTableFactory)(function (t) {\n  t[227] = 322;\n  t[264] = 261;\n  t[291] = 346;\n});\nvar getSupplementalGlyphMapForCalibri = (0, _util.getLookupTableFactory)(function (t) {\n  t[1] = 32;\n  t[4] = 65;\n  t[17] = 66;\n  t[18] = 67;\n  t[24] = 68;\n  t[28] = 69;\n  t[38] = 70;\n  t[39] = 71;\n  t[44] = 72;\n  t[47] = 73;\n  t[58] = 74;\n  t[60] = 75;\n  t[62] = 76;\n  t[68] = 77;\n  t[69] = 78;\n  t[75] = 79;\n  t[87] = 80;\n  t[89] = 81;\n  t[90] = 82;\n  t[94] = 83;\n  t[100] = 84;\n  t[104] = 85;\n  t[115] = 86;\n  t[116] = 87;\n  t[121] = 88;\n  t[122] = 89;\n  t[127] = 90;\n  t[258] = 97;\n  t[268] = 261;\n  t[271] = 98;\n  t[272] = 99;\n  t[273] = 263;\n  t[282] = 100;\n  t[286] = 101;\n  t[295] = 281;\n  t[296] = 102;\n  t[336] = 103;\n  t[346] = 104;\n  t[349] = 105;\n  t[361] = 106;\n  t[364] = 107;\n  t[367] = 108;\n  t[371] = 322;\n  t[373] = 109;\n  t[374] = 110;\n  t[381] = 111;\n  t[383] = 243;\n  t[393] = 112;\n  t[395] = 113;\n  t[396] = 114;\n  t[400] = 115;\n  t[401] = 347;\n  t[410] = 116;\n  t[437] = 117;\n  t[448] = 118;\n  t[449] = 119;\n  t[454] = 120;\n  t[455] = 121;\n  t[460] = 122;\n  t[463] = 380;\n  t[853] = 44;\n  t[855] = 58;\n  t[856] = 46;\n  t[876] = 47;\n  t[878] = 45;\n  t[882] = 45;\n  t[894] = 40;\n  t[895] = 41;\n  t[896] = 91;\n  t[897] = 93;\n  t[923] = 64;\n  t[1004] = 48;\n  t[1005] = 49;\n  t[1006] = 50;\n  t[1007] = 51;\n  t[1008] = 52;\n  t[1009] = 53;\n  t[1010] = 54;\n  t[1011] = 55;\n  t[1012] = 56;\n  t[1013] = 57;\n  t[1081] = 37;\n  t[1085] = 43;\n  t[1086] = 45;\n});\nexports.getStdFontMap = getStdFontMap;\nexports.getNonStdFontMap = getNonStdFontMap;\nexports.getSerifFonts = getSerifFonts;\nexports.getSymbolsFonts = getSymbolsFonts;\nexports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts;\nexports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack;\nexports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri;\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nvar getLookupTableFactory = __w_pdfjs_require__(2).getLookupTableFactory;\nvar getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00A9;\n t[63193] = 0x00A9;\n t[63720] = 0x00AE;\n t[63194] = 0x00AE;\n t[63722] = 0x2122;\n t[63195] = 0x2122;\n t[63729] = 0x23A7;\n t[63730] = 0x23A8;\n t[63731] = 0x23A9;\n t[63740] = 0x23AB;\n t[63741] = 0x23AC;\n t[63742] = 0x23AD;\n t[63726] = 0x23A1;\n t[63727] = 0x23A2;\n t[63728] = 0x23A3;\n t[63737] = 0x23A4;\n t[63738] = 0x23A5;\n t[63739] = 0x23A6;\n t[63723] = 0x239B;\n t[63724] = 0x239C;\n t[63725] = 0x239D;\n t[63734] = 0x239E;\n t[63735] = 0x239F;\n t[63736] = 0x23A0;\n});\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xFFF0 && code <= 0xFFFF) {\n  return 0;\n } else if (code >= 0xF600 && code <= 0xF8FF) {\n  return getSpecialPUASymbols()[code] || code;\n } else if (code === 0x00AD) {\n  return 0x002D;\n }\n return code;\n}\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n var unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n  return unicode;\n }\n if (!name) {\n  return -1;\n }\n if (name[0] === 'u') {\n  var nameLen = name.length, hexStr;\n  if (nameLen === 7 && name[1] === 'n' && name[2] === 'i') {\n   hexStr = name.substring(3);\n  } else if (nameLen >= 5 && nameLen <= 7) {\n   hexStr = name.substring(1);\n  } else {\n   return -1;\n  }\n  if (hexStr === hexStr.toUpperCase()) {\n   unicode = parseInt(hexStr, 16);\n   if (unicode >= 0) {\n    return unicode;\n   }\n  }\n }\n return -1;\n}\nvar UnicodeRanges = [\n {\n  'begin': 0x0000,\n  'end': 0x007F\n },\n {\n  'begin': 0x0080,\n  'end': 0x00FF\n },\n {\n  'begin': 0x0100,\n  'end': 0x017F\n },\n {\n  'begin': 0x0180,\n  'end': 0x024F\n },\n {\n  'begin': 0x0250,\n  'end': 0x02AF\n },\n {\n  'begin': 0x02B0,\n  'end': 0x02FF\n },\n {\n  'begin': 0x0300,\n  'end': 0x036F\n },\n {\n  'begin': 0x0370,\n  'end': 0x03FF\n },\n {\n  'begin': 0x2C80,\n  'end': 0x2CFF\n },\n {\n  'begin': 0x0400,\n  'end': 0x04FF\n },\n {\n  'begin': 0x0530,\n  'end': 0x058F\n },\n {\n  'begin': 0x0590,\n  'end': 0x05FF\n },\n {\n  'begin': 0xA500,\n  'end': 0xA63F\n },\n {\n  'begin': 0x0600,\n  'end': 0x06FF\n },\n {\n  'begin': 0x07C0,\n  'end': 0x07FF\n },\n {\n  'begin': 0x0900,\n  'end': 0x097F\n },\n {\n  'begin': 0x0980,\n  'end': 0x09FF\n },\n {\n  'begin': 0x0A00,\n  'end': 0x0A7F\n },\n {\n  'begin': 0x0A80,\n  'end': 0x0AFF\n },\n {\n  'begin': 0x0B00,\n  'end': 0x0B7F\n },\n {\n  'begin': 0x0B80,\n  'end': 0x0BFF\n },\n {\n  'begin': 0x0C00,\n  'end': 0x0C7F\n },\n {\n  'begin': 0x0C80,\n  'end': 0x0CFF\n },\n {\n  'begin': 0x0D00,\n  'end': 0x0D7F\n },\n {\n  'begin': 0x0E00,\n  'end': 0x0E7F\n },\n {\n  'begin': 0x0E80,\n  'end': 0x0EFF\n },\n {\n  'begin': 0x10A0,\n  'end': 0x10FF\n },\n {\n  'begin': 0x1B00,\n  'end': 0x1B7F\n },\n {\n  'begin': 0x1100,\n  'end': 0x11FF\n },\n {\n  'begin': 0x1E00,\n  'end': 0x1EFF\n },\n {\n  'begin': 0x1F00,\n  'end': 0x1FFF\n },\n {\n  'begin': 0x2000,\n  'end': 0x206F\n },\n {\n  'begin': 0x2070,\n  'end': 0x209F\n },\n {\n  'begin': 0x20A0,\n  'end': 0x20CF\n },\n {\n  'begin': 0x20D0,\n  'end': 0x20FF\n },\n {\n  'begin': 0x2100,\n  'end': 0x214F\n },\n {\n  'begin': 0x2150,\n  'end': 0x218F\n },\n {\n  'begin': 0x2190,\n  'end': 0x21FF\n },\n {\n  'begin': 0x2200,\n  'end': 0x22FF\n },\n {\n  'begin': 0x2300,\n  'end': 0x23FF\n },\n {\n  'begin': 0x2400,\n  'end': 0x243F\n },\n {\n  'begin': 0x2440,\n  'end': 0x245F\n },\n {\n  'begin': 0x2460,\n  'end': 0x24FF\n },\n {\n  'begin': 0x2500,\n  'end': 0x257F\n },\n {\n  'begin': 0x2580,\n  'end': 0x259F\n },\n {\n  'begin': 0x25A0,\n  'end': 0x25FF\n },\n {\n  'begin': 0x2600,\n  'end': 0x26FF\n },\n {\n  'begin': 0x2700,\n  'end': 0x27BF\n },\n {\n  'begin': 0x3000,\n  'end': 0x303F\n },\n {\n  'begin': 0x3040,\n  'end': 0x309F\n },\n {\n  'begin': 0x30A0,\n  'end': 0x30FF\n },\n {\n  'begin': 0x3100,\n  'end': 0x312F\n },\n {\n  'begin': 0x3130,\n  'end': 0x318F\n },\n {\n  'begin': 0xA840,\n  'end': 0xA87F\n },\n {\n  'begin': 0x3200,\n  'end': 0x32FF\n },\n {\n  'begin': 0x3300,\n  'end': 0x33FF\n },\n {\n  'begin': 0xAC00,\n  'end': 0xD7AF\n },\n {\n  'begin': 0xD800,\n  'end': 0xDFFF\n },\n {\n  'begin': 0x10900,\n  'end': 0x1091F\n },\n {\n  'begin': 0x4E00,\n  'end': 0x9FFF\n },\n {\n  'begin': 0xE000,\n  'end': 0xF8FF\n },\n {\n  'begin': 0x31C0,\n  'end': 0x31EF\n },\n {\n  'begin': 0xFB00,\n  'end': 0xFB4F\n },\n {\n  'begin': 0xFB50,\n  'end': 0xFDFF\n },\n {\n  'begin': 0xFE20,\n  'end': 0xFE2F\n },\n {\n  'begin': 0xFE10,\n  'end': 0xFE1F\n },\n {\n  'begin': 0xFE50,\n  'end': 0xFE6F\n },\n {\n  'begin': 0xFE70,\n  'end': 0xFEFF\n },\n {\n  'begin': 0xFF00,\n  'end': 0xFFEF\n },\n {\n  'begin': 0xFFF0,\n  'end': 0xFFFF\n },\n {\n  'begin': 0x0F00,\n  'end': 0x0FFF\n },\n {\n  'begin': 0x0700,\n  'end': 0x074F\n },\n {\n  'begin': 0x0780,\n  'end': 0x07BF\n },\n {\n  'begin': 0x0D80,\n  'end': 0x0DFF\n },\n {\n  'begin': 0x1000,\n  'end': 0x109F\n },\n {\n  'begin': 0x1200,\n  'end': 0x137F\n },\n {\n  'begin': 0x13A0,\n  'end': 0x13FF\n },\n {\n  'begin': 0x1400,\n  'end': 0x167F\n },\n {\n  'begin': 0x1680,\n  'end': 0x169F\n },\n {\n  'begin': 0x16A0,\n  'end': 0x16FF\n },\n {\n  'begin': 0x1780,\n  'end': 0x17FF\n },\n {\n  'begin': 0x1800,\n  'end': 0x18AF\n },\n {\n  'begin': 0x2800,\n  'end': 0x28FF\n },\n {\n  'begin': 0xA000,\n  'end': 0xA48F\n },\n {\n  'begin': 0x1700,\n  'end': 0x171F\n },\n {\n  'begin': 0x10300,\n  'end': 0x1032F\n },\n {\n  'begin': 0x10330,\n  'end': 0x1034F\n },\n {\n  'begin': 0x10400,\n  'end': 0x1044F\n },\n {\n  'begin': 0x1D000,\n  'end': 0x1D0FF\n },\n {\n  'begin': 0x1D400,\n  'end': 0x1D7FF\n },\n {\n  'begin': 0xFF000,\n  'end': 0xFFFFD\n },\n {\n  'begin': 0xFE00,\n  'end': 0xFE0F\n },\n {\n  'begin': 0xE0000,\n  'end': 0xE007F\n },\n {\n  'begin': 0x1900,\n  'end': 0x194F\n },\n {\n  'begin': 0x1950,\n  'end': 0x197F\n },\n {\n  'begin': 0x1980,\n  'end': 0x19DF\n },\n {\n  'begin': 0x1A00,\n  'end': 0x1A1F\n },\n {\n  'begin': 0x2C00,\n  'end': 0x2C5F\n },\n {\n  'begin': 0x2D30,\n  'end': 0x2D7F\n },\n {\n  'begin': 0x4DC0,\n  'end': 0x4DFF\n },\n {\n  'begin': 0xA800,\n  'end': 0xA82F\n },\n {\n  'begin': 0x10000,\n  'end': 0x1007F\n },\n {\n  'begin': 0x10140,\n  'end': 0x1018F\n },\n {\n  'begin': 0x10380,\n  'end': 0x1039F\n },\n {\n  'begin': 0x103A0,\n  'end': 0x103DF\n },\n {\n  'begin': 0x10450,\n  'end': 0x1047F\n },\n {\n  'begin': 0x10480,\n  'end': 0x104AF\n },\n {\n  'begin': 0x10800,\n  'end': 0x1083F\n },\n {\n  'begin': 0x10A00,\n  'end': 0x10A5F\n },\n {\n  'begin': 0x1D300,\n  'end': 0x1D35F\n },\n {\n  'begin': 0x12000,\n  'end': 0x123FF\n },\n {\n  'begin': 0x1D360,\n  'end': 0x1D37F\n },\n {\n  'begin': 0x1B80,\n  'end': 0x1BBF\n },\n {\n  'begin': 0x1C00,\n  'end': 0x1C4F\n },\n {\n  'begin': 0x1C50,\n  'end': 0x1C7F\n },\n {\n  'begin': 0xA880,\n  'end': 0xA8DF\n },\n {\n  'begin': 0xA900,\n  'end': 0xA92F\n },\n {\n  'begin': 0xA930,\n  'end': 0xA95F\n },\n {\n  'begin': 0xAA00,\n  'end': 0xAA5F\n },\n {\n  'begin': 0x10190,\n  'end': 0x101CF\n },\n {\n  'begin': 0x101D0,\n  'end': 0x101FF\n },\n {\n  'begin': 0x102A0,\n  'end': 0x102DF\n },\n {\n  'begin': 0x1F030,\n  'end': 0x1F09F\n }\n];\nfunction getUnicodeRangeFor(value) {\n for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n  var range = UnicodeRanges[i];\n  if (value >= range.begin && value < range.end) {\n   return i;\n  }\n }\n return -1;\n}\nfunction isRTLRangeFor(value) {\n var range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n  return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n  return true;\n }\n return false;\n}\nvar getNormalizedUnicodes = getLookupTableFactory(function (t) {\n t['\\u00A8'] = '\\u0020\\u0308';\n t['\\u00AF'] = '\\u0020\\u0304';\n t['\\u00B4'] = '\\u0020\\u0301';\n t['\\u00B5'] = '\\u03BC';\n t['\\u00B8'] = '\\u0020\\u0327';\n t['\\u0132'] = '\\u0049\\u004A';\n t['\\u0133'] = '\\u0069\\u006A';\n t['\\u013F'] = '\\u004C\\u00B7';\n t['\\u0140'] = '\\u006C\\u00B7';\n t['\\u0149'] = '\\u02BC\\u006E';\n t['\\u017F'] = '\\u0073';\n t['\\u01C4'] = '\\u0044\\u017D';\n t['\\u01C5'] = '\\u0044\\u017E';\n t['\\u01C6'] = '\\u0064\\u017E';\n t['\\u01C7'] = '\\u004C\\u004A';\n t['\\u01C8'] = '\\u004C\\u006A';\n t['\\u01C9'] = '\\u006C\\u006A';\n t['\\u01CA'] = '\\u004E\\u004A';\n t['\\u01CB'] = '\\u004E\\u006A';\n t['\\u01CC'] = '\\u006E\\u006A';\n t['\\u01F1'] = '\\u0044\\u005A';\n t['\\u01F2'] = '\\u0044\\u007A';\n t['\\u01F3'] = '\\u0064\\u007A';\n t['\\u02D8'] = '\\u0020\\u0306';\n t['\\u02D9'] = '\\u0020\\u0307';\n t['\\u02DA'] = '\\u0020\\u030A';\n t['\\u02DB'] = '\\u0020\\u0328';\n t['\\u02DC'] = '\\u0020\\u0303';\n t['\\u02DD'] = '\\u0020\\u030B';\n t['\\u037A'] = '\\u0020\\u0345';\n t['\\u0384'] = '\\u0020\\u0301';\n t['\\u03D0'] = '\\u03B2';\n t['\\u03D1'] = '\\u03B8';\n t['\\u03D2'] = '\\u03A5';\n t['\\u03D5'] = '\\u03C6';\n t['\\u03D6'] = '\\u03C0';\n t['\\u03F0'] = '\\u03BA';\n t['\\u03F1'] = '\\u03C1';\n t['\\u03F2'] = '\\u03C2';\n t['\\u03F4'] = '\\u0398';\n t['\\u03F5'] = '\\u03B5';\n t['\\u03F9'] = '\\u03A3';\n t['\\u0587'] = '\\u0565\\u0582';\n t['\\u0675'] = '\\u0627\\u0674';\n t['\\u0676'] = '\\u0648\\u0674';\n t['\\u0677'] = '\\u06C7\\u0674';\n t['\\u0678'] = '\\u064A\\u0674';\n t['\\u0E33'] = '\\u0E4D\\u0E32';\n t['\\u0EB3'] = '\\u0ECD\\u0EB2';\n t['\\u0EDC'] = '\\u0EAB\\u0E99';\n t['\\u0EDD'] = '\\u0EAB\\u0EA1';\n t['\\u0F77'] = '\\u0FB2\\u0F81';\n t['\\u0F79'] = '\\u0FB3\\u0F81';\n t['\\u1E9A'] = '\\u0061\\u02BE';\n t['\\u1FBD'] = '\\u0020\\u0313';\n t['\\u1FBF'] = '\\u0020\\u0313';\n t['\\u1FC0'] = '\\u0020\\u0342';\n t['\\u1FFE'] = '\\u0020\\u0314';\n t['\\u2002'] = '\\u0020';\n t['\\u2003'] = '\\u0020';\n t['\\u2004'] = '\\u0020';\n t['\\u2005'] = '\\u0020';\n t['\\u2006'] = '\\u0020';\n t['\\u2008'] = '\\u0020';\n t['\\u2009'] = '\\u0020';\n t['\\u200A'] = '\\u0020';\n t['\\u2017'] = '\\u0020\\u0333';\n t['\\u2024'] = '\\u002E';\n t['\\u2025'] = '\\u002E\\u002E';\n t['\\u2026'] = '\\u002E\\u002E\\u002E';\n t['\\u2033'] = '\\u2032\\u2032';\n t['\\u2034'] = '\\u2032\\u2032\\u2032';\n t['\\u2036'] = '\\u2035\\u2035';\n t['\\u2037'] = '\\u2035\\u2035\\u2035';\n t['\\u203C'] = '\\u0021\\u0021';\n t['\\u203E'] = '\\u0020\\u0305';\n t['\\u2047'] = '\\u003F\\u003F';\n t['\\u2048'] = '\\u003F\\u0021';\n t['\\u2049'] = '\\u0021\\u003F';\n t['\\u2057'] = '\\u2032\\u2032\\u2032\\u2032';\n t['\\u205F'] = '\\u0020';\n t['\\u20A8'] = '\\u0052\\u0073';\n t['\\u2100'] = '\\u0061\\u002F\\u0063';\n t['\\u2101'] = '\\u0061\\u002F\\u0073';\n t['\\u2103'] = '\\u00B0\\u0043';\n t['\\u2105'] = '\\u0063\\u002F\\u006F';\n t['\\u2106'] = '\\u0063\\u002F\\u0075';\n t['\\u2107'] = '\\u0190';\n t['\\u2109'] = '\\u00B0\\u0046';\n t['\\u2116'] = '\\u004E\\u006F';\n t['\\u2121'] = '\\u0054\\u0045\\u004C';\n t['\\u2135'] = '\\u05D0';\n t['\\u2136'] = '\\u05D1';\n t['\\u2137'] = '\\u05D2';\n t['\\u2138'] = '\\u05D3';\n t['\\u213B'] = '\\u0046\\u0041\\u0058';\n t['\\u2160'] = '\\u0049';\n t['\\u2161'] = '\\u0049\\u0049';\n t['\\u2162'] = '\\u0049\\u0049\\u0049';\n t['\\u2163'] = '\\u0049\\u0056';\n t['\\u2164'] = '\\u0056';\n t['\\u2165'] = '\\u0056\\u0049';\n t['\\u2166'] = '\\u0056\\u0049\\u0049';\n t['\\u2167'] = '\\u0056\\u0049\\u0049\\u0049';\n t['\\u2168'] = '\\u0049\\u0058';\n t['\\u2169'] = '\\u0058';\n t['\\u216A'] = '\\u0058\\u0049';\n t['\\u216B'] = '\\u0058\\u0049\\u0049';\n t['\\u216C'] = '\\u004C';\n t['\\u216D'] = '\\u0043';\n t['\\u216E'] = '\\u0044';\n t['\\u216F'] = '\\u004D';\n t['\\u2170'] = '\\u0069';\n t['\\u2171'] = '\\u0069\\u0069';\n t['\\u2172'] = '\\u0069\\u0069\\u0069';\n t['\\u2173'] = '\\u0069\\u0076';\n t['\\u2174'] = '\\u0076';\n t['\\u2175'] = '\\u0076\\u0069';\n t['\\u2176'] = '\\u0076\\u0069\\u0069';\n t['\\u2177'] = '\\u0076\\u0069\\u0069\\u0069';\n t['\\u2178'] = '\\u0069\\u0078';\n t['\\u2179'] = '\\u0078';\n t['\\u217A'] = '\\u0078\\u0069';\n t['\\u217B'] = '\\u0078\\u0069\\u0069';\n t['\\u217C'] = '\\u006C';\n t['\\u217D'] = '\\u0063';\n t['\\u217E'] = '\\u0064';\n t['\\u217F'] = '\\u006D';\n t['\\u222C'] = '\\u222B\\u222B';\n t['\\u222D'] = '\\u222B\\u222B\\u222B';\n t['\\u222F'] = '\\u222E\\u222E';\n t['\\u2230'] = '\\u222E\\u222E\\u222E';\n t['\\u2474'] = '\\u0028\\u0031\\u0029';\n t['\\u2475'] = '\\u0028\\u0032\\u0029';\n t['\\u2476'] = '\\u0028\\u0033\\u0029';\n t['\\u2477'] = '\\u0028\\u0034\\u0029';\n t['\\u2478'] = '\\u0028\\u0035\\u0029';\n t['\\u2479'] = '\\u0028\\u0036\\u0029';\n t['\\u247A'] = '\\u0028\\u0037\\u0029';\n t['\\u247B'] = '\\u0028\\u0038\\u0029';\n t['\\u247C'] = '\\u0028\\u0039\\u0029';\n t['\\u247D'] = '\\u0028\\u0031\\u0030\\u0029';\n t['\\u247E'] = '\\u0028\\u0031\\u0031\\u0029';\n t['\\u247F'] = '\\u0028\\u0031\\u0032\\u0029';\n t['\\u2480'] = '\\u0028\\u0031\\u0033\\u0029';\n t['\\u2481'] = '\\u0028\\u0031\\u0034\\u0029';\n t['\\u2482'] = '\\u0028\\u0031\\u0035\\u0029';\n t['\\u2483'] = '\\u0028\\u0031\\u0036\\u0029';\n t['\\u2484'] = '\\u0028\\u0031\\u0037\\u0029';\n t['\\u2485'] = '\\u0028\\u0031\\u0038\\u0029';\n t['\\u2486'] = '\\u0028\\u0031\\u0039\\u0029';\n t['\\u2487'] = '\\u0028\\u0032\\u0030\\u0029';\n t['\\u2488'] = '\\u0031\\u002E';\n t['\\u2489'] = '\\u0032\\u002E';\n t['\\u248A'] = '\\u0033\\u002E';\n t['\\u248B'] = '\\u0034\\u002E';\n t['\\u248C'] = '\\u0035\\u002E';\n t['\\u248D'] = '\\u0036\\u002E';\n t['\\u248E'] = '\\u0037\\u002E';\n t['\\u248F'] = '\\u0038\\u002E';\n t['\\u2490'] = '\\u0039\\u002E';\n t['\\u2491'] = '\\u0031\\u0030\\u002E';\n t['\\u2492'] = '\\u0031\\u0031\\u002E';\n t['\\u2493'] = '\\u0031\\u0032\\u002E';\n t['\\u2494'] = '\\u0031\\u0033\\u002E';\n t['\\u2495'] = '\\u0031\\u0034\\u002E';\n t['\\u2496'] = '\\u0031\\u0035\\u002E';\n t['\\u2497'] = '\\u0031\\u0036\\u002E';\n t['\\u2498'] = '\\u0031\\u0037\\u002E';\n t['\\u2499'] = '\\u0031\\u0038\\u002E';\n t['\\u249A'] = '\\u0031\\u0039\\u002E';\n t['\\u249B'] = '\\u0032\\u0030\\u002E';\n t['\\u249C'] = '\\u0028\\u0061\\u0029';\n t['\\u249D'] = '\\u0028\\u0062\\u0029';\n t['\\u249E'] = '\\u0028\\u0063\\u0029';\n t['\\u249F'] = '\\u0028\\u0064\\u0029';\n t['\\u24A0'] = '\\u0028\\u0065\\u0029';\n t['\\u24A1'] = '\\u0028\\u0066\\u0029';\n t['\\u24A2'] = '\\u0028\\u0067\\u0029';\n t['\\u24A3'] = '\\u0028\\u0068\\u0029';\n t['\\u24A4'] = '\\u0028\\u0069\\u0029';\n t['\\u24A5'] = '\\u0028\\u006A\\u0029';\n t['\\u24A6'] = '\\u0028\\u006B\\u0029';\n t['\\u24A7'] = '\\u0028\\u006C\\u0029';\n t['\\u24A8'] = '\\u0028\\u006D\\u0029';\n t['\\u24A9'] = '\\u0028\\u006E\\u0029';\n t['\\u24AA'] = '\\u0028\\u006F\\u0029';\n t['\\u24AB'] = '\\u0028\\u0070\\u0029';\n t['\\u24AC'] = '\\u0028\\u0071\\u0029';\n t['\\u24AD'] = '\\u0028\\u0072\\u0029';\n t['\\u24AE'] = '\\u0028\\u0073\\u0029';\n t['\\u24AF'] = '\\u0028\\u0074\\u0029';\n t['\\u24B0'] = '\\u0028\\u0075\\u0029';\n t['\\u24B1'] = '\\u0028\\u0076\\u0029';\n t['\\u24B2'] = '\\u0028\\u0077\\u0029';\n t['\\u24B3'] = '\\u0028\\u0078\\u0029';\n t['\\u24B4'] = '\\u0028\\u0079\\u0029';\n t['\\u24B5'] = '\\u0028\\u007A\\u0029';\n t['\\u2A0C'] = '\\u222B\\u222B\\u222B\\u222B';\n t['\\u2A74'] = '\\u003A\\u003A\\u003D';\n t['\\u2A75'] = '\\u003D\\u003D';\n t['\\u2A76'] = '\\u003D\\u003D\\u003D';\n t['\\u2E9F'] = '\\u6BCD';\n t['\\u2EF3'] = '\\u9F9F';\n t['\\u2F00'] = '\\u4E00';\n t['\\u2F01'] = '\\u4E28';\n t['\\u2F02'] = '\\u4E36';\n t['\\u2F03'] = '\\u4E3F';\n t['\\u2F04'] = '\\u4E59';\n t['\\u2F05'] = '\\u4E85';\n t['\\u2F06'] = '\\u4E8C';\n t['\\u2F07'] = '\\u4EA0';\n t['\\u2F08'] = '\\u4EBA';\n t['\\u2F09'] = '\\u513F';\n t['\\u2F0A'] = '\\u5165';\n t['\\u2F0B'] = '\\u516B';\n t['\\u2F0C'] = '\\u5182';\n t['\\u2F0D'] = '\\u5196';\n t['\\u2F0E'] = '\\u51AB';\n t['\\u2F0F'] = '\\u51E0';\n t['\\u2F10'] = '\\u51F5';\n t['\\u2F11'] = '\\u5200';\n t['\\u2F12'] = '\\u529B';\n t['\\u2F13'] = '\\u52F9';\n t['\\u2F14'] = '\\u5315';\n t['\\u2F15'] = '\\u531A';\n t['\\u2F16'] = '\\u5338';\n t['\\u2F17'] = '\\u5341';\n t['\\u2F18'] = '\\u535C';\n t['\\u2F19'] = '\\u5369';\n t['\\u2F1A'] = '\\u5382';\n t['\\u2F1B'] = '\\u53B6';\n t['\\u2F1C'] = '\\u53C8';\n t['\\u2F1D'] = '\\u53E3';\n t['\\u2F1E'] = '\\u56D7';\n t['\\u2F1F'] = '\\u571F';\n t['\\u2F20'] = '\\u58EB';\n t['\\u2F21'] = '\\u5902';\n t['\\u2F22'] = '\\u590A';\n t['\\u2F23'] = '\\u5915';\n t['\\u2F24'] = '\\u5927';\n t['\\u2F25'] = '\\u5973';\n t['\\u2F26'] = '\\u5B50';\n t['\\u2F27'] = '\\u5B80';\n t['\\u2F28'] = '\\u5BF8';\n t['\\u2F29'] = '\\u5C0F';\n t['\\u2F2A'] = '\\u5C22';\n t['\\u2F2B'] = '\\u5C38';\n t['\\u2F2C'] = '\\u5C6E';\n t['\\u2F2D'] = '\\u5C71';\n t['\\u2F2E'] = '\\u5DDB';\n t['\\u2F2F'] = '\\u5DE5';\n t['\\u2F30'] = '\\u5DF1';\n t['\\u2F31'] = '\\u5DFE';\n t['\\u2F32'] = '\\u5E72';\n t['\\u2F33'] = '\\u5E7A';\n t['\\u2F34'] = '\\u5E7F';\n t['\\u2F35'] = '\\u5EF4';\n t['\\u2F36'] = '\\u5EFE';\n t['\\u2F37'] = '\\u5F0B';\n t['\\u2F38'] = '\\u5F13';\n t['\\u2F39'] = '\\u5F50';\n t['\\u2F3A'] = '\\u5F61';\n t['\\u2F3B'] = '\\u5F73';\n t['\\u2F3C'] = '\\u5FC3';\n t['\\u2F3D'] = '\\u6208';\n t['\\u2F3E'] = '\\u6236';\n t['\\u2F3F'] = '\\u624B';\n t['\\u2F40'] = '\\u652F';\n t['\\u2F41'] = '\\u6534';\n t['\\u2F42'] = '\\u6587';\n t['\\u2F43'] = '\\u6597';\n t['\\u2F44'] = '\\u65A4';\n t['\\u2F45'] = '\\u65B9';\n t['\\u2F46'] = '\\u65E0';\n t['\\u2F47'] = '\\u65E5';\n t['\\u2F48'] = '\\u66F0';\n t['\\u2F49'] = '\\u6708';\n t['\\u2F4A'] = '\\u6728';\n t['\\u2F4B'] = '\\u6B20';\n t['\\u2F4C'] = '\\u6B62';\n t['\\u2F4D'] = '\\u6B79';\n t['\\u2F4E'] = '\\u6BB3';\n t['\\u2F4F'] = '\\u6BCB';\n t['\\u2F50'] = '\\u6BD4';\n t['\\u2F51'] = '\\u6BDB';\n t['\\u2F52'] = '\\u6C0F';\n t['\\u2F53'] = '\\u6C14';\n t['\\u2F54'] = '\\u6C34';\n t['\\u2F55'] = '\\u706B';\n t['\\u2F56'] = '\\u722A';\n t['\\u2F57'] = '\\u7236';\n t['\\u2F58'] = '\\u723B';\n t['\\u2F59'] = '\\u723F';\n t['\\u2F5A'] = '\\u7247';\n t['\\u2F5B'] = '\\u7259';\n t['\\u2F5C'] = '\\u725B';\n t['\\u2F5D'] = '\\u72AC';\n t['\\u2F5E'] = '\\u7384';\n t['\\u2F5F'] = '\\u7389';\n t['\\u2F60'] = '\\u74DC';\n t['\\u2F61'] = '\\u74E6';\n t['\\u2F62'] = '\\u7518';\n t['\\u2F63'] = '\\u751F';\n t['\\u2F64'] = '\\u7528';\n t['\\u2F65'] = '\\u7530';\n t['\\u2F66'] = '\\u758B';\n t['\\u2F67'] = '\\u7592';\n t['\\u2F68'] = '\\u7676';\n t['\\u2F69'] = '\\u767D';\n t['\\u2F6A'] = '\\u76AE';\n t['\\u2F6B'] = '\\u76BF';\n t['\\u2F6C'] = '\\u76EE';\n t['\\u2F6D'] = '\\u77DB';\n t['\\u2F6E'] = '\\u77E2';\n t['\\u2F6F'] = '\\u77F3';\n t['\\u2F70'] = '\\u793A';\n t['\\u2F71'] = '\\u79B8';\n t['\\u2F72'] = '\\u79BE';\n t['\\u2F73'] = '\\u7A74';\n t['\\u2F74'] = '\\u7ACB';\n t['\\u2F75'] = '\\u7AF9';\n t['\\u2F76'] = '\\u7C73';\n t['\\u2F77'] = '\\u7CF8';\n t['\\u2F78'] = '\\u7F36';\n t['\\u2F79'] = '\\u7F51';\n t['\\u2F7A'] = '\\u7F8A';\n t['\\u2F7B'] = '\\u7FBD';\n t['\\u2F7C'] = '\\u8001';\n t['\\u2F7D'] = '\\u800C';\n t['\\u2F7E'] = '\\u8012';\n t['\\u2F7F'] = '\\u8033';\n t['\\u2F80'] = '\\u807F';\n t['\\u2F81'] = '\\u8089';\n t['\\u2F82'] = '\\u81E3';\n t['\\u2F83'] = '\\u81EA';\n t['\\u2F84'] = '\\u81F3';\n t['\\u2F85'] = '\\u81FC';\n t['\\u2F86'] = '\\u820C';\n t['\\u2F87'] = '\\u821B';\n t['\\u2F88'] = '\\u821F';\n t['\\u2F89'] = '\\u826E';\n t['\\u2F8A'] = '\\u8272';\n t['\\u2F8B'] = '\\u8278';\n t['\\u2F8C'] = '\\u864D';\n t['\\u2F8D'] = '\\u866B';\n t['\\u2F8E'] = '\\u8840';\n t['\\u2F8F'] = '\\u884C';\n t['\\u2F90'] = '\\u8863';\n t['\\u2F91'] = '\\u897E';\n t['\\u2F92'] = '\\u898B';\n t['\\u2F93'] = '\\u89D2';\n t['\\u2F94'] = '\\u8A00';\n t['\\u2F95'] = '\\u8C37';\n t['\\u2F96'] = '\\u8C46';\n t['\\u2F97'] = '\\u8C55';\n t['\\u2F98'] = '\\u8C78';\n t['\\u2F99'] = '\\u8C9D';\n t['\\u2F9A'] = '\\u8D64';\n t['\\u2F9B'] = '\\u8D70';\n t['\\u2F9C'] = '\\u8DB3';\n t['\\u2F9D'] = '\\u8EAB';\n t['\\u2F9E'] = '\\u8ECA';\n t['\\u2F9F'] = '\\u8F9B';\n t['\\u2FA0'] = '\\u8FB0';\n t['\\u2FA1'] = '\\u8FB5';\n t['\\u2FA2'] = '\\u9091';\n t['\\u2FA3'] = '\\u9149';\n t['\\u2FA4'] = '\\u91C6';\n t['\\u2FA5'] = '\\u91CC';\n t['\\u2FA6'] = '\\u91D1';\n t['\\u2FA7'] = '\\u9577';\n t['\\u2FA8'] = '\\u9580';\n t['\\u2FA9'] = '\\u961C';\n t['\\u2FAA'] = '\\u96B6';\n t['\\u2FAB'] = '\\u96B9';\n t['\\u2FAC'] = '\\u96E8';\n t['\\u2FAD'] = '\\u9751';\n t['\\u2FAE'] = '\\u975E';\n t['\\u2FAF'] = '\\u9762';\n t['\\u2FB0'] = '\\u9769';\n t['\\u2FB1'] = '\\u97CB';\n t['\\u2FB2'] = '\\u97ED';\n t['\\u2FB3'] = '\\u97F3';\n t['\\u2FB4'] = '\\u9801';\n t['\\u2FB5'] = '\\u98A8';\n t['\\u2FB6'] = '\\u98DB';\n t['\\u2FB7'] = '\\u98DF';\n t['\\u2FB8'] = '\\u9996';\n t['\\u2FB9'] = '\\u9999';\n t['\\u2FBA'] = '\\u99AC';\n t['\\u2FBB'] = '\\u9AA8';\n t['\\u2FBC'] = '\\u9AD8';\n t['\\u2FBD'] = '\\u9ADF';\n t['\\u2FBE'] = '\\u9B25';\n t['\\u2FBF'] = '\\u9B2F';\n t['\\u2FC0'] = '\\u9B32';\n t['\\u2FC1'] = '\\u9B3C';\n t['\\u2FC2'] = '\\u9B5A';\n t['\\u2FC3'] = '\\u9CE5';\n t['\\u2FC4'] = '\\u9E75';\n t['\\u2FC5'] = '\\u9E7F';\n t['\\u2FC6'] = '\\u9EA5';\n t['\\u2FC7'] = '\\u9EBB';\n t['\\u2FC8'] = '\\u9EC3';\n t['\\u2FC9'] = '\\u9ECD';\n t['\\u2FCA'] = '\\u9ED1';\n t['\\u2FCB'] = '\\u9EF9';\n t['\\u2FCC'] = '\\u9EFD';\n t['\\u2FCD'] = '\\u9F0E';\n t['\\u2FCE'] = '\\u9F13';\n t['\\u2FCF'] = '\\u9F20';\n t['\\u2FD0'] = '\\u9F3B';\n t['\\u2FD1'] = '\\u9F4A';\n t['\\u2FD2'] = '\\u9F52';\n t['\\u2FD3'] = '\\u9F8D';\n t['\\u2FD4'] = '\\u9F9C';\n t['\\u2FD5'] = '\\u9FA0';\n t['\\u3036'] = '\\u3012';\n t['\\u3038'] = '\\u5341';\n t['\\u3039'] = '\\u5344';\n t['\\u303A'] = '\\u5345';\n t['\\u309B'] = '\\u0020\\u3099';\n t['\\u309C'] = '\\u0020\\u309A';\n t['\\u3131'] = '\\u1100';\n t['\\u3132'] = '\\u1101';\n t['\\u3133'] = '\\u11AA';\n t['\\u3134'] = '\\u1102';\n t['\\u3135'] = '\\u11AC';\n t['\\u3136'] = '\\u11AD';\n t['\\u3137'] = '\\u1103';\n t['\\u3138'] = '\\u1104';\n t['\\u3139'] = '\\u1105';\n t['\\u313A'] = '\\u11B0';\n t['\\u313B'] = '\\u11B1';\n t['\\u313C'] = '\\u11B2';\n t['\\u313D'] = '\\u11B3';\n t['\\u313E'] = '\\u11B4';\n t['\\u313F'] = '\\u11B5';\n t['\\u3140'] = '\\u111A';\n t['\\u3141'] = '\\u1106';\n t['\\u3142'] = '\\u1107';\n t['\\u3143'] = '\\u1108';\n t['\\u3144'] = '\\u1121';\n t['\\u3145'] = '\\u1109';\n t['\\u3146'] = '\\u110A';\n t['\\u3147'] = '\\u110B';\n t['\\u3148'] = '\\u110C';\n t['\\u3149'] = '\\u110D';\n t['\\u314A'] = '\\u110E';\n t['\\u314B'] = '\\u110F';\n t['\\u314C'] = '\\u1110';\n t['\\u314D'] = '\\u1111';\n t['\\u314E'] = '\\u1112';\n t['\\u314F'] = '\\u1161';\n t['\\u3150'] = '\\u1162';\n t['\\u3151'] = '\\u1163';\n t['\\u3152'] = '\\u1164';\n t['\\u3153'] = '\\u1165';\n t['\\u3154'] = '\\u1166';\n t['\\u3155'] = '\\u1167';\n t['\\u3156'] = '\\u1168';\n t['\\u3157'] = '\\u1169';\n t['\\u3158'] = '\\u116A';\n t['\\u3159'] = '\\u116B';\n t['\\u315A'] = '\\u116C';\n t['\\u315B'] = '\\u116D';\n t['\\u315C'] = '\\u116E';\n t['\\u315D'] = '\\u116F';\n t['\\u315E'] = '\\u1170';\n t['\\u315F'] = '\\u1171';\n t['\\u3160'] = '\\u1172';\n t['\\u3161'] = '\\u1173';\n t['\\u3162'] = '\\u1174';\n t['\\u3163'] = '\\u1175';\n t['\\u3164'] = '\\u1160';\n t['\\u3165'] = '\\u1114';\n t['\\u3166'] = '\\u1115';\n t['\\u3167'] = '\\u11C7';\n t['\\u3168'] = '\\u11C8';\n t['\\u3169'] = '\\u11CC';\n t['\\u316A'] = '\\u11CE';\n t['\\u316B'] = '\\u11D3';\n t['\\u316C'] = '\\u11D7';\n t['\\u316D'] = '\\u11D9';\n t['\\u316E'] = '\\u111C';\n t['\\u316F'] = '\\u11DD';\n t['\\u3170'] = '\\u11DF';\n t['\\u3171'] = '\\u111D';\n t['\\u3172'] = '\\u111E';\n t['\\u3173'] = '\\u1120';\n t['\\u3174'] = '\\u1122';\n t['\\u3175'] = '\\u1123';\n t['\\u3176'] = '\\u1127';\n t['\\u3177'] = '\\u1129';\n t['\\u3178'] = '\\u112B';\n t['\\u3179'] = '\\u112C';\n t['\\u317A'] = '\\u112D';\n t['\\u317B'] = '\\u112E';\n t['\\u317C'] = '\\u112F';\n t['\\u317D'] = '\\u1132';\n t['\\u317E'] = '\\u1136';\n t['\\u317F'] = '\\u1140';\n t['\\u3180'] = '\\u1147';\n t['\\u3181'] = '\\u114C';\n t['\\u3182'] = '\\u11F1';\n t['\\u3183'] = '\\u11F2';\n t['\\u3184'] = '\\u1157';\n t['\\u3185'] = '\\u1158';\n t['\\u3186'] = '\\u1159';\n t['\\u3187'] = '\\u1184';\n t['\\u3188'] = '\\u1185';\n t['\\u3189'] = '\\u1188';\n t['\\u318A'] = '\\u1191';\n t['\\u318B'] = '\\u1192';\n t['\\u318C'] = '\\u1194';\n t['\\u318D'] = '\\u119E';\n t['\\u318E'] = '\\u11A1';\n t['\\u3200'] = '\\u0028\\u1100\\u0029';\n t['\\u3201'] = '\\u0028\\u1102\\u0029';\n t['\\u3202'] = '\\u0028\\u1103\\u0029';\n t['\\u3203'] = '\\u0028\\u1105\\u0029';\n t['\\u3204'] = '\\u0028\\u1106\\u0029';\n t['\\u3205'] = '\\u0028\\u1107\\u0029';\n t['\\u3206'] = '\\u0028\\u1109\\u0029';\n t['\\u3207'] = '\\u0028\\u110B\\u0029';\n t['\\u3208'] = '\\u0028\\u110C\\u0029';\n t['\\u3209'] = '\\u0028\\u110E\\u0029';\n t['\\u320A'] = '\\u0028\\u110F\\u0029';\n t['\\u320B'] = '\\u0028\\u1110\\u0029';\n t['\\u320C'] = '\\u0028\\u1111\\u0029';\n t['\\u320D'] = '\\u0028\\u1112\\u0029';\n t['\\u320E'] = '\\u0028\\u1100\\u1161\\u0029';\n t['\\u320F'] = '\\u0028\\u1102\\u1161\\u0029';\n t['\\u3210'] = '\\u0028\\u1103\\u1161\\u0029';\n t['\\u3211'] = '\\u0028\\u1105\\u1161\\u0029';\n t['\\u3212'] = '\\u0028\\u1106\\u1161\\u0029';\n t['\\u3213'] = '\\u0028\\u1107\\u1161\\u0029';\n t['\\u3214'] = '\\u0028\\u1109\\u1161\\u0029';\n t['\\u3215'] = '\\u0028\\u110B\\u1161\\u0029';\n t['\\u3216'] = '\\u0028\\u110C\\u1161\\u0029';\n t['\\u3217'] = '\\u0028\\u110E\\u1161\\u0029';\n t['\\u3218'] = '\\u0028\\u110F\\u1161\\u0029';\n t['\\u3219'] = '\\u0028\\u1110\\u1161\\u0029';\n t['\\u321A'] = '\\u0028\\u1111\\u1161\\u0029';\n t['\\u321B'] = '\\u0028\\u1112\\u1161\\u0029';\n t['\\u321C'] = '\\u0028\\u110C\\u116E\\u0029';\n t['\\u321D'] = '\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029';\n t['\\u321E'] = '\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029';\n t['\\u3220'] = '\\u0028\\u4E00\\u0029';\n t['\\u3221'] = '\\u0028\\u4E8C\\u0029';\n t['\\u3222'] = '\\u0028\\u4E09\\u0029';\n t['\\u3223'] = '\\u0028\\u56DB\\u0029';\n t['\\u3224'] = '\\u0028\\u4E94\\u0029';\n t['\\u3225'] = '\\u0028\\u516D\\u0029';\n t['\\u3226'] = '\\u0028\\u4E03\\u0029';\n t['\\u3227'] = '\\u0028\\u516B\\u0029';\n t['\\u3228'] = '\\u0028\\u4E5D\\u0029';\n t['\\u3229'] = '\\u0028\\u5341\\u0029';\n t['\\u322A'] = '\\u0028\\u6708\\u0029';\n t['\\u322B'] = '\\u0028\\u706B\\u0029';\n t['\\u322C'] = '\\u0028\\u6C34\\u0029';\n t['\\u322D'] = '\\u0028\\u6728\\u0029';\n t['\\u322E'] = '\\u0028\\u91D1\\u0029';\n t['\\u322F'] = '\\u0028\\u571F\\u0029';\n t['\\u3230'] = '\\u0028\\u65E5\\u0029';\n t['\\u3231'] = '\\u0028\\u682A\\u0029';\n t['\\u3232'] = '\\u0028\\u6709\\u0029';\n t['\\u3233'] = '\\u0028\\u793E\\u0029';\n t['\\u3234'] = '\\u0028\\u540D\\u0029';\n t['\\u3235'] = '\\u0028\\u7279\\u0029';\n t['\\u3236'] = '\\u0028\\u8CA1\\u0029';\n t['\\u3237'] = '\\u0028\\u795D\\u0029';\n t['\\u3238'] = '\\u0028\\u52B4\\u0029';\n t['\\u3239'] = '\\u0028\\u4EE3\\u0029';\n t['\\u323A'] = '\\u0028\\u547C\\u0029';\n t['\\u323B'] = '\\u0028\\u5B66\\u0029';\n t['\\u323C'] = '\\u0028\\u76E3\\u0029';\n t['\\u323D'] = '\\u0028\\u4F01\\u0029';\n t['\\u323E'] = '\\u0028\\u8CC7\\u0029';\n t['\\u323F'] = '\\u0028\\u5354\\u0029';\n t['\\u3240'] = '\\u0028\\u796D\\u0029';\n t['\\u3241'] = '\\u0028\\u4F11\\u0029';\n t['\\u3242'] = '\\u0028\\u81EA\\u0029';\n t['\\u3243'] = '\\u0028\\u81F3\\u0029';\n t['\\u32C0'] = '\\u0031\\u6708';\n t['\\u32C1'] = '\\u0032\\u6708';\n t['\\u32C2'] = '\\u0033\\u6708';\n t['\\u32C3'] = '\\u0034\\u6708';\n t['\\u32C4'] = '\\u0035\\u6708';\n t['\\u32C5'] = '\\u0036\\u6708';\n t['\\u32C6'] = '\\u0037\\u6708';\n t['\\u32C7'] = '\\u0038\\u6708';\n t['\\u32C8'] = '\\u0039\\u6708';\n t['\\u32C9'] = '\\u0031\\u0030\\u6708';\n t['\\u32CA'] = '\\u0031\\u0031\\u6708';\n t['\\u32CB'] = '\\u0031\\u0032\\u6708';\n t['\\u3358'] = '\\u0030\\u70B9';\n t['\\u3359'] = '\\u0031\\u70B9';\n t['\\u335A'] = '\\u0032\\u70B9';\n t['\\u335B'] = '\\u0033\\u70B9';\n t['\\u335C'] = '\\u0034\\u70B9';\n t['\\u335D'] = '\\u0035\\u70B9';\n t['\\u335E'] = '\\u0036\\u70B9';\n t['\\u335F'] = '\\u0037\\u70B9';\n t['\\u3360'] = '\\u0038\\u70B9';\n t['\\u3361'] = '\\u0039\\u70B9';\n t['\\u3362'] = '\\u0031\\u0030\\u70B9';\n t['\\u3363'] = '\\u0031\\u0031\\u70B9';\n t['\\u3364'] = '\\u0031\\u0032\\u70B9';\n t['\\u3365'] = '\\u0031\\u0033\\u70B9';\n t['\\u3366'] = '\\u0031\\u0034\\u70B9';\n t['\\u3367'] = '\\u0031\\u0035\\u70B9';\n t['\\u3368'] = '\\u0031\\u0036\\u70B9';\n t['\\u3369'] = '\\u0031\\u0037\\u70B9';\n t['\\u336A'] = '\\u0031\\u0038\\u70B9';\n t['\\u336B'] = '\\u0031\\u0039\\u70B9';\n t['\\u336C'] = '\\u0032\\u0030\\u70B9';\n t['\\u336D'] = '\\u0032\\u0031\\u70B9';\n t['\\u336E'] = '\\u0032\\u0032\\u70B9';\n t['\\u336F'] = '\\u0032\\u0033\\u70B9';\n t['\\u3370'] = '\\u0032\\u0034\\u70B9';\n t['\\u33E0'] = '\\u0031\\u65E5';\n t['\\u33E1'] = '\\u0032\\u65E5';\n t['\\u33E2'] = '\\u0033\\u65E5';\n t['\\u33E3'] = '\\u0034\\u65E5';\n t['\\u33E4'] = '\\u0035\\u65E5';\n t['\\u33E5'] = '\\u0036\\u65E5';\n t['\\u33E6'] = '\\u0037\\u65E5';\n t['\\u33E7'] = '\\u0038\\u65E5';\n t['\\u33E8'] = '\\u0039\\u65E5';\n t['\\u33E9'] = '\\u0031\\u0030\\u65E5';\n t['\\u33EA'] = '\\u0031\\u0031\\u65E5';\n t['\\u33EB'] = '\\u0031\\u0032\\u65E5';\n t['\\u33EC'] = '\\u0031\\u0033\\u65E5';\n t['\\u33ED'] = '\\u0031\\u0034\\u65E5';\n t['\\u33EE'] = '\\u0031\\u0035\\u65E5';\n t['\\u33EF'] = '\\u0031\\u0036\\u65E5';\n t['\\u33F0'] = '\\u0031\\u0037\\u65E5';\n t['\\u33F1'] = '\\u0031\\u0038\\u65E5';\n t['\\u33F2'] = '\\u0031\\u0039\\u65E5';\n t['\\u33F3'] = '\\u0032\\u0030\\u65E5';\n t['\\u33F4'] = '\\u0032\\u0031\\u65E5';\n t['\\u33F5'] = '\\u0032\\u0032\\u65E5';\n t['\\u33F6'] = '\\u0032\\u0033\\u65E5';\n t['\\u33F7'] = '\\u0032\\u0034\\u65E5';\n t['\\u33F8'] = '\\u0032\\u0035\\u65E5';\n t['\\u33F9'] = '\\u0032\\u0036\\u65E5';\n t['\\u33FA'] = '\\u0032\\u0037\\u65E5';\n t['\\u33FB'] = '\\u0032\\u0038\\u65E5';\n t['\\u33FC'] = '\\u0032\\u0039\\u65E5';\n t['\\u33FD'] = '\\u0033\\u0030\\u65E5';\n t['\\u33FE'] = '\\u0033\\u0031\\u65E5';\n t['\\uFB00'] = '\\u0066\\u0066';\n t['\\uFB01'] = '\\u0066\\u0069';\n t['\\uFB02'] = '\\u0066\\u006C';\n t['\\uFB03'] = '\\u0066\\u0066\\u0069';\n t['\\uFB04'] = '\\u0066\\u0066\\u006C';\n t['\\uFB05'] = '\\u017F\\u0074';\n t['\\uFB06'] = '\\u0073\\u0074';\n t['\\uFB13'] = '\\u0574\\u0576';\n t['\\uFB14'] = '\\u0574\\u0565';\n t['\\uFB15'] = '\\u0574\\u056B';\n t['\\uFB16'] = '\\u057E\\u0576';\n t['\\uFB17'] = '\\u0574\\u056D';\n t['\\uFB4F'] = '\\u05D0\\u05DC';\n t['\\uFB50'] = '\\u0671';\n t['\\uFB51'] = '\\u0671';\n t['\\uFB52'] = '\\u067B';\n t['\\uFB53'] = '\\u067B';\n t['\\uFB54'] = '\\u067B';\n t['\\uFB55'] = '\\u067B';\n t['\\uFB56'] = '\\u067E';\n t['\\uFB57'] = '\\u067E';\n t['\\uFB58'] = '\\u067E';\n t['\\uFB59'] = '\\u067E';\n t['\\uFB5A'] = '\\u0680';\n t['\\uFB5B'] = '\\u0680';\n t['\\uFB5C'] = '\\u0680';\n t['\\uFB5D'] = '\\u0680';\n t['\\uFB5E'] = '\\u067A';\n t['\\uFB5F'] = '\\u067A';\n t['\\uFB60'] = '\\u067A';\n t['\\uFB61'] = '\\u067A';\n t['\\uFB62'] = '\\u067F';\n t['\\uFB63'] = '\\u067F';\n t['\\uFB64'] = '\\u067F';\n t['\\uFB65'] = '\\u067F';\n t['\\uFB66'] = '\\u0679';\n t['\\uFB67'] = '\\u0679';\n t['\\uFB68'] = '\\u0679';\n t['\\uFB69'] = '\\u0679';\n t['\\uFB6A'] = '\\u06A4';\n t['\\uFB6B'] = '\\u06A4';\n t['\\uFB6C'] = '\\u06A4';\n t['\\uFB6D'] = '\\u06A4';\n t['\\uFB6E'] = '\\u06A6';\n t['\\uFB6F'] = '\\u06A6';\n t['\\uFB70'] = '\\u06A6';\n t['\\uFB71'] = '\\u06A6';\n t['\\uFB72'] = '\\u0684';\n t['\\uFB73'] = '\\u0684';\n t['\\uFB74'] = '\\u0684';\n t['\\uFB75'] = '\\u0684';\n t['\\uFB76'] = '\\u0683';\n t['\\uFB77'] = '\\u0683';\n t['\\uFB78'] = '\\u0683';\n t['\\uFB79'] = '\\u0683';\n t['\\uFB7A'] = '\\u0686';\n t['\\uFB7B'] = '\\u0686';\n t['\\uFB7C'] = '\\u0686';\n t['\\uFB7D'] = '\\u0686';\n t['\\uFB7E'] = '\\u0687';\n t['\\uFB7F'] = '\\u0687';\n t['\\uFB80'] = '\\u0687';\n t['\\uFB81'] = '\\u0687';\n t['\\uFB82'] = '\\u068D';\n t['\\uFB83'] = '\\u068D';\n t['\\uFB84'] = '\\u068C';\n t['\\uFB85'] = '\\u068C';\n t['\\uFB86'] = '\\u068E';\n t['\\uFB87'] = '\\u068E';\n t['\\uFB88'] = '\\u0688';\n t['\\uFB89'] = '\\u0688';\n t['\\uFB8A'] = '\\u0698';\n t['\\uFB8B'] = '\\u0698';\n t['\\uFB8C'] = '\\u0691';\n t['\\uFB8D'] = '\\u0691';\n t['\\uFB8E'] = '\\u06A9';\n t['\\uFB8F'] = '\\u06A9';\n t['\\uFB90'] = '\\u06A9';\n t['\\uFB91'] = '\\u06A9';\n t['\\uFB92'] = '\\u06AF';\n t['\\uFB93'] = '\\u06AF';\n t['\\uFB94'] = '\\u06AF';\n t['\\uFB95'] = '\\u06AF';\n t['\\uFB96'] = '\\u06B3';\n t['\\uFB97'] = '\\u06B3';\n t['\\uFB98'] = '\\u06B3';\n t['\\uFB99'] = '\\u06B3';\n t['\\uFB9A'] = '\\u06B1';\n t['\\uFB9B'] = '\\u06B1';\n t['\\uFB9C'] = '\\u06B1';\n t['\\uFB9D'] = '\\u06B1';\n t['\\uFB9E'] = '\\u06BA';\n t['\\uFB9F'] = '\\u06BA';\n t['\\uFBA0'] = '\\u06BB';\n t['\\uFBA1'] = '\\u06BB';\n t['\\uFBA2'] = '\\u06BB';\n t['\\uFBA3'] = '\\u06BB';\n t['\\uFBA4'] = '\\u06C0';\n t['\\uFBA5'] = '\\u06C0';\n t['\\uFBA6'] = '\\u06C1';\n t['\\uFBA7'] = '\\u06C1';\n t['\\uFBA8'] = '\\u06C1';\n t['\\uFBA9'] = '\\u06C1';\n t['\\uFBAA'] = '\\u06BE';\n t['\\uFBAB'] = '\\u06BE';\n t['\\uFBAC'] = '\\u06BE';\n t['\\uFBAD'] = '\\u06BE';\n t['\\uFBAE'] = '\\u06D2';\n t['\\uFBAF'] = '\\u06D2';\n t['\\uFBB0'] = '\\u06D3';\n t['\\uFBB1'] = '\\u06D3';\n t['\\uFBD3'] = '\\u06AD';\n t['\\uFBD4'] = '\\u06AD';\n t['\\uFBD5'] = '\\u06AD';\n t['\\uFBD6'] = '\\u06AD';\n t['\\uFBD7'] = '\\u06C7';\n t['\\uFBD8'] = '\\u06C7';\n t['\\uFBD9'] = '\\u06C6';\n t['\\uFBDA'] = '\\u06C6';\n t['\\uFBDB'] = '\\u06C8';\n t['\\uFBDC'] = '\\u06C8';\n t['\\uFBDD'] = '\\u0677';\n t['\\uFBDE'] = '\\u06CB';\n t['\\uFBDF'] = '\\u06CB';\n t['\\uFBE0'] = '\\u06C5';\n t['\\uFBE1'] = '\\u06C5';\n t['\\uFBE2'] = '\\u06C9';\n t['\\uFBE3'] = '\\u06C9';\n t['\\uFBE4'] = '\\u06D0';\n t['\\uFBE5'] = '\\u06D0';\n t['\\uFBE6'] = '\\u06D0';\n t['\\uFBE7'] = '\\u06D0';\n t['\\uFBE8'] = '\\u0649';\n t['\\uFBE9'] = '\\u0649';\n t['\\uFBEA'] = '\\u0626\\u0627';\n t['\\uFBEB'] = '\\u0626\\u0627';\n t['\\uFBEC'] = '\\u0626\\u06D5';\n t['\\uFBED'] = '\\u0626\\u06D5';\n t['\\uFBEE'] = '\\u0626\\u0648';\n t['\\uFBEF'] = '\\u0626\\u0648';\n t['\\uFBF0'] = '\\u0626\\u06C7';\n t['\\uFBF1'] = '\\u0626\\u06C7';\n t['\\uFBF2'] = '\\u0626\\u06C6';\n t['\\uFBF3'] = '\\u0626\\u06C6';\n t['\\uFBF4'] = '\\u0626\\u06C8';\n t['\\uFBF5'] = '\\u0626\\u06C8';\n t['\\uFBF6'] = '\\u0626\\u06D0';\n t['\\uFBF7'] = '\\u0626\\u06D0';\n t['\\uFBF8'] = '\\u0626\\u06D0';\n t['\\uFBF9'] = '\\u0626\\u0649';\n t['\\uFBFA'] = '\\u0626\\u0649';\n t['\\uFBFB'] = '\\u0626\\u0649';\n t['\\uFBFC'] = '\\u06CC';\n t['\\uFBFD'] = '\\u06CC';\n t['\\uFBFE'] = '\\u06CC';\n t['\\uFBFF'] = '\\u06CC';\n t['\\uFC00'] = '\\u0626\\u062C';\n t['\\uFC01'] = '\\u0626\\u062D';\n t['\\uFC02'] = '\\u0626\\u0645';\n t['\\uFC03'] = '\\u0626\\u0649';\n t['\\uFC04'] = '\\u0626\\u064A';\n t['\\uFC05'] = '\\u0628\\u062C';\n t['\\uFC06'] = '\\u0628\\u062D';\n t['\\uFC07'] = '\\u0628\\u062E';\n t['\\uFC08'] = '\\u0628\\u0645';\n t['\\uFC09'] = '\\u0628\\u0649';\n t['\\uFC0A'] = '\\u0628\\u064A';\n t['\\uFC0B'] = '\\u062A\\u062C';\n t['\\uFC0C'] = '\\u062A\\u062D';\n t['\\uFC0D'] = '\\u062A\\u062E';\n t['\\uFC0E'] = '\\u062A\\u0645';\n t['\\uFC0F'] = '\\u062A\\u0649';\n t['\\uFC10'] = '\\u062A\\u064A';\n t['\\uFC11'] = '\\u062B\\u062C';\n t['\\uFC12'] = '\\u062B\\u0645';\n t['\\uFC13'] = '\\u062B\\u0649';\n t['\\uFC14'] = '\\u062B\\u064A';\n t['\\uFC15'] = '\\u062C\\u062D';\n t['\\uFC16'] = '\\u062C\\u0645';\n t['\\uFC17'] = '\\u062D\\u062C';\n t['\\uFC18'] = '\\u062D\\u0645';\n t['\\uFC19'] = '\\u062E\\u062C';\n t['\\uFC1A'] = '\\u062E\\u062D';\n t['\\uFC1B'] = '\\u062E\\u0645';\n t['\\uFC1C'] = '\\u0633\\u062C';\n t['\\uFC1D'] = '\\u0633\\u062D';\n t['\\uFC1E'] = '\\u0633\\u062E';\n t['\\uFC1F'] = '\\u0633\\u0645';\n t['\\uFC20'] = '\\u0635\\u062D';\n t['\\uFC21'] = '\\u0635\\u0645';\n t['\\uFC22'] = '\\u0636\\u062C';\n t['\\uFC23'] = '\\u0636\\u062D';\n t['\\uFC24'] = '\\u0636\\u062E';\n t['\\uFC25'] = '\\u0636\\u0645';\n t['\\uFC26'] = '\\u0637\\u062D';\n t['\\uFC27'] = '\\u0637\\u0645';\n t['\\uFC28'] = '\\u0638\\u0645';\n t['\\uFC29'] = '\\u0639\\u062C';\n t['\\uFC2A'] = '\\u0639\\u0645';\n t['\\uFC2B'] = '\\u063A\\u062C';\n t['\\uFC2C'] = '\\u063A\\u0645';\n t['\\uFC2D'] = '\\u0641\\u062C';\n t['\\uFC2E'] = '\\u0641\\u062D';\n t['\\uFC2F'] = '\\u0641\\u062E';\n t['\\uFC30'] = '\\u0641\\u0645';\n t['\\uFC31'] = '\\u0641\\u0649';\n t['\\uFC32'] = '\\u0641\\u064A';\n t['\\uFC33'] = '\\u0642\\u062D';\n t['\\uFC34'] = '\\u0642\\u0645';\n t['\\uFC35'] = '\\u0642\\u0649';\n t['\\uFC36'] = '\\u0642\\u064A';\n t['\\uFC37'] = '\\u0643\\u0627';\n t['\\uFC38'] = '\\u0643\\u062C';\n t['\\uFC39'] = '\\u0643\\u062D';\n t['\\uFC3A'] = '\\u0643\\u062E';\n t['\\uFC3B'] = '\\u0643\\u0644';\n t['\\uFC3C'] = '\\u0643\\u0645';\n t['\\uFC3D'] = '\\u0643\\u0649';\n t['\\uFC3E'] = '\\u0643\\u064A';\n t['\\uFC3F'] = '\\u0644\\u062C';\n t['\\uFC40'] = '\\u0644\\u062D';\n t['\\uFC41'] = '\\u0644\\u062E';\n t['\\uFC42'] = '\\u0644\\u0645';\n t['\\uFC43'] = '\\u0644\\u0649';\n t['\\uFC44'] = '\\u0644\\u064A';\n t['\\uFC45'] = '\\u0645\\u062C';\n t['\\uFC46'] = '\\u0645\\u062D';\n t['\\uFC47'] = '\\u0645\\u062E';\n t['\\uFC48'] = '\\u0645\\u0645';\n t['\\uFC49'] = '\\u0645\\u0649';\n t['\\uFC4A'] = '\\u0645\\u064A';\n t['\\uFC4B'] = '\\u0646\\u062C';\n t['\\uFC4C'] = '\\u0646\\u062D';\n t['\\uFC4D'] = '\\u0646\\u062E';\n t['\\uFC4E'] = '\\u0646\\u0645';\n t['\\uFC4F'] = '\\u0646\\u0649';\n t['\\uFC50'] = '\\u0646\\u064A';\n t['\\uFC51'] = '\\u0647\\u062C';\n t['\\uFC52'] = '\\u0647\\u0645';\n t['\\uFC53'] = '\\u0647\\u0649';\n t['\\uFC54'] = '\\u0647\\u064A';\n t['\\uFC55'] = '\\u064A\\u062C';\n t['\\uFC56'] = '\\u064A\\u062D';\n t['\\uFC57'] = '\\u064A\\u062E';\n t['\\uFC58'] = '\\u064A\\u0645';\n t['\\uFC59'] = '\\u064A\\u0649';\n t['\\uFC5A'] = '\\u064A\\u064A';\n t['\\uFC5B'] = '\\u0630\\u0670';\n t['\\uFC5C'] = '\\u0631\\u0670';\n t['\\uFC5D'] = '\\u0649\\u0670';\n t['\\uFC5E'] = '\\u0020\\u064C\\u0651';\n t['\\uFC5F'] = '\\u0020\\u064D\\u0651';\n t['\\uFC60'] = '\\u0020\\u064E\\u0651';\n t['\\uFC61'] = '\\u0020\\u064F\\u0651';\n t['\\uFC62'] = '\\u0020\\u0650\\u0651';\n t['\\uFC63'] = '\\u0020\\u0651\\u0670';\n t['\\uFC64'] = '\\u0626\\u0631';\n t['\\uFC65'] = '\\u0626\\u0632';\n t['\\uFC66'] = '\\u0626\\u0645';\n t['\\uFC67'] = '\\u0626\\u0646';\n t['\\uFC68'] = '\\u0626\\u0649';\n t['\\uFC69'] = '\\u0626\\u064A';\n t['\\uFC6A'] = '\\u0628\\u0631';\n t['\\uFC6B'] = '\\u0628\\u0632';\n t['\\uFC6C'] = '\\u0628\\u0645';\n t['\\uFC6D'] = '\\u0628\\u0646';\n t['\\uFC6E'] = '\\u0628\\u0649';\n t['\\uFC6F'] = '\\u0628\\u064A';\n t['\\uFC70'] = '\\u062A\\u0631';\n t['\\uFC71'] = '\\u062A\\u0632';\n t['\\uFC72'] = '\\u062A\\u0645';\n t['\\uFC73'] = '\\u062A\\u0646';\n t['\\uFC74'] = '\\u062A\\u0649';\n t['\\uFC75'] = '\\u062A\\u064A';\n t['\\uFC76'] = '\\u062B\\u0631';\n t['\\uFC77'] = '\\u062B\\u0632';\n t['\\uFC78'] = '\\u062B\\u0645';\n t['\\uFC79'] = '\\u062B\\u0646';\n t['\\uFC7A'] = '\\u062B\\u0649';\n t['\\uFC7B'] = '\\u062B\\u064A';\n t['\\uFC7C'] = '\\u0641\\u0649';\n t['\\uFC7D'] = '\\u0641\\u064A';\n t['\\uFC7E'] = '\\u0642\\u0649';\n t['\\uFC7F'] = '\\u0642\\u064A';\n t['\\uFC80'] = '\\u0643\\u0627';\n t['\\uFC81'] = '\\u0643\\u0644';\n t['\\uFC82'] = '\\u0643\\u0645';\n t['\\uFC83'] = '\\u0643\\u0649';\n t['\\uFC84'] = '\\u0643\\u064A';\n t['\\uFC85'] = '\\u0644\\u0645';\n t['\\uFC86'] = '\\u0644\\u0649';\n t['\\uFC87'] = '\\u0644\\u064A';\n t['\\uFC88'] = '\\u0645\\u0627';\n t['\\uFC89'] = '\\u0645\\u0645';\n t['\\uFC8A'] = '\\u0646\\u0631';\n t['\\uFC8B'] = '\\u0646\\u0632';\n t['\\uFC8C'] = '\\u0646\\u0645';\n t['\\uFC8D'] = '\\u0646\\u0646';\n t['\\uFC8E'] = '\\u0646\\u0649';\n t['\\uFC8F'] = '\\u0646\\u064A';\n t['\\uFC90'] = '\\u0649\\u0670';\n t['\\uFC91'] = '\\u064A\\u0631';\n t['\\uFC92'] = '\\u064A\\u0632';\n t['\\uFC93'] = '\\u064A\\u0645';\n t['\\uFC94'] = '\\u064A\\u0646';\n t['\\uFC95'] = '\\u064A\\u0649';\n t['\\uFC96'] = '\\u064A\\u064A';\n t['\\uFC97'] = '\\u0626\\u062C';\n t['\\uFC98'] = '\\u0626\\u062D';\n t['\\uFC99'] = '\\u0626\\u062E';\n t['\\uFC9A'] = '\\u0626\\u0645';\n t['\\uFC9B'] = '\\u0626\\u0647';\n t['\\uFC9C'] = '\\u0628\\u062C';\n t['\\uFC9D'] = '\\u0628\\u062D';\n t['\\uFC9E'] = '\\u0628\\u062E';\n t['\\uFC9F'] = '\\u0628\\u0645';\n t['\\uFCA0'] = '\\u0628\\u0647';\n t['\\uFCA1'] = '\\u062A\\u062C';\n t['\\uFCA2'] = '\\u062A\\u062D';\n t['\\uFCA3'] = '\\u062A\\u062E';\n t['\\uFCA4'] = '\\u062A\\u0645';\n t['\\uFCA5'] = '\\u062A\\u0647';\n t['\\uFCA6'] = '\\u062B\\u0645';\n t['\\uFCA7'] = '\\u062C\\u062D';\n t['\\uFCA8'] = '\\u062C\\u0645';\n t['\\uFCA9'] = '\\u062D\\u062C';\n t['\\uFCAA'] = '\\u062D\\u0645';\n t['\\uFCAB'] = '\\u062E\\u062C';\n t['\\uFCAC'] = '\\u062E\\u0645';\n t['\\uFCAD'] = '\\u0633\\u062C';\n t['\\uFCAE'] = '\\u0633\\u062D';\n t['\\uFCAF'] = '\\u0633\\u062E';\n t['\\uFCB0'] = '\\u0633\\u0645';\n t['\\uFCB1'] = '\\u0635\\u062D';\n t['\\uFCB2'] = '\\u0635\\u062E';\n t['\\uFCB3'] = '\\u0635\\u0645';\n t['\\uFCB4'] = '\\u0636\\u062C';\n t['\\uFCB5'] = '\\u0636\\u062D';\n t['\\uFCB6'] = '\\u0636\\u062E';\n t['\\uFCB7'] = '\\u0636\\u0645';\n t['\\uFCB8'] = '\\u0637\\u062D';\n t['\\uFCB9'] = '\\u0638\\u0645';\n t['\\uFCBA'] = '\\u0639\\u062C';\n t['\\uFCBB'] = '\\u0639\\u0645';\n t['\\uFCBC'] = '\\u063A\\u062C';\n t['\\uFCBD'] = '\\u063A\\u0645';\n t['\\uFCBE'] = '\\u0641\\u062C';\n t['\\uFCBF'] = '\\u0641\\u062D';\n t['\\uFCC0'] = '\\u0641\\u062E';\n t['\\uFCC1'] = '\\u0641\\u0645';\n t['\\uFCC2'] = '\\u0642\\u062D';\n t['\\uFCC3'] = '\\u0642\\u0645';\n t['\\uFCC4'] = '\\u0643\\u062C';\n t['\\uFCC5'] = '\\u0643\\u062D';\n t['\\uFCC6'] = '\\u0643\\u062E';\n t['\\uFCC7'] = '\\u0643\\u0644';\n t['\\uFCC8'] = '\\u0643\\u0645';\n t['\\uFCC9'] = '\\u0644\\u062C';\n t['\\uFCCA'] = '\\u0644\\u062D';\n t['\\uFCCB'] = '\\u0644\\u062E';\n t['\\uFCCC'] = '\\u0644\\u0645';\n t['\\uFCCD'] = '\\u0644\\u0647';\n t['\\uFCCE'] = '\\u0645\\u062C';\n t['\\uFCCF'] = '\\u0645\\u062D';\n t['\\uFCD0'] = '\\u0645\\u062E';\n t['\\uFCD1'] = '\\u0645\\u0645';\n t['\\uFCD2'] = '\\u0646\\u062C';\n t['\\uFCD3'] = '\\u0646\\u062D';\n t['\\uFCD4'] = '\\u0646\\u062E';\n t['\\uFCD5'] = '\\u0646\\u0645';\n t['\\uFCD6'] = '\\u0646\\u0647';\n t['\\uFCD7'] = '\\u0647\\u062C';\n t['\\uFCD8'] = '\\u0647\\u0645';\n t['\\uFCD9'] = '\\u0647\\u0670';\n t['\\uFCDA'] = '\\u064A\\u062C';\n t['\\uFCDB'] = '\\u064A\\u062D';\n t['\\uFCDC'] = '\\u064A\\u062E';\n t['\\uFCDD'] = '\\u064A\\u0645';\n t['\\uFCDE'] = '\\u064A\\u0647';\n t['\\uFCDF'] = '\\u0626\\u0645';\n t['\\uFCE0'] = '\\u0626\\u0647';\n t['\\uFCE1'] = '\\u0628\\u0645';\n t['\\uFCE2'] = '\\u0628\\u0647';\n t['\\uFCE3'] = '\\u062A\\u0645';\n t['\\uFCE4'] = '\\u062A\\u0647';\n t['\\uFCE5'] = '\\u062B\\u0645';\n t['\\uFCE6'] = '\\u062B\\u0647';\n t['\\uFCE7'] = '\\u0633\\u0645';\n t['\\uFCE8'] = '\\u0633\\u0647';\n t['\\uFCE9'] = '\\u0634\\u0645';\n t['\\uFCEA'] = '\\u0634\\u0647';\n t['\\uFCEB'] = '\\u0643\\u0644';\n t['\\uFCEC'] = '\\u0643\\u0645';\n t['\\uFCED'] = '\\u0644\\u0645';\n t['\\uFCEE'] = '\\u0646\\u0645';\n t['\\uFCEF'] = '\\u0646\\u0647';\n t['\\uFCF0'] = '\\u064A\\u0645';\n t['\\uFCF1'] = '\\u064A\\u0647';\n t['\\uFCF2'] = '\\u0640\\u064E\\u0651';\n t['\\uFCF3'] = '\\u0640\\u064F\\u0651';\n t['\\uFCF4'] = '\\u0640\\u0650\\u0651';\n t['\\uFCF5'] = '\\u0637\\u0649';\n t['\\uFCF6'] = '\\u0637\\u064A';\n t['\\uFCF7'] = '\\u0639\\u0649';\n t['\\uFCF8'] = '\\u0639\\u064A';\n t['\\uFCF9'] = '\\u063A\\u0649';\n t['\\uFCFA'] = '\\u063A\\u064A';\n t['\\uFCFB'] = '\\u0633\\u0649';\n t['\\uFCFC'] = '\\u0633\\u064A';\n t['\\uFCFD'] = '\\u0634\\u0649';\n t['\\uFCFE'] = '\\u0634\\u064A';\n t['\\uFCFF'] = '\\u062D\\u0649';\n t['\\uFD00'] = '\\u062D\\u064A';\n t['\\uFD01'] = '\\u062C\\u0649';\n t['\\uFD02'] = '\\u062C\\u064A';\n t['\\uFD03'] = '\\u062E\\u0649';\n t['\\uFD04'] = '\\u062E\\u064A';\n t['\\uFD05'] = '\\u0635\\u0649';\n t['\\uFD06'] = '\\u0635\\u064A';\n t['\\uFD07'] = '\\u0636\\u0649';\n t['\\uFD08'] = '\\u0636\\u064A';\n t['\\uFD09'] = '\\u0634\\u062C';\n t['\\uFD0A'] = '\\u0634\\u062D';\n t['\\uFD0B'] = '\\u0634\\u062E';\n t['\\uFD0C'] = '\\u0634\\u0645';\n t['\\uFD0D'] = '\\u0634\\u0631';\n t['\\uFD0E'] = '\\u0633\\u0631';\n t['\\uFD0F'] = '\\u0635\\u0631';\n t['\\uFD10'] = '\\u0636\\u0631';\n t['\\uFD11'] = '\\u0637\\u0649';\n t['\\uFD12'] = '\\u0637\\u064A';\n t['\\uFD13'] = '\\u0639\\u0649';\n t['\\uFD14'] = '\\u0639\\u064A';\n t['\\uFD15'] = '\\u063A\\u0649';\n t['\\uFD16'] = '\\u063A\\u064A';\n t['\\uFD17'] = '\\u0633\\u0649';\n t['\\uFD18'] = '\\u0633\\u064A';\n t['\\uFD19'] = '\\u0634\\u0649';\n t['\\uFD1A'] = '\\u0634\\u064A';\n t['\\uFD1B'] = '\\u062D\\u0649';\n t['\\uFD1C'] = '\\u062D\\u064A';\n t['\\uFD1D'] = '\\u062C\\u0649';\n t['\\uFD1E'] = '\\u062C\\u064A';\n t['\\uFD1F'] = '\\u062E\\u0649';\n t['\\uFD20'] = '\\u062E\\u064A';\n t['\\uFD21'] = '\\u0635\\u0649';\n t['\\uFD22'] = '\\u0635\\u064A';\n t['\\uFD23'] = '\\u0636\\u0649';\n t['\\uFD24'] = '\\u0636\\u064A';\n t['\\uFD25'] = '\\u0634\\u062C';\n t['\\uFD26'] = '\\u0634\\u062D';\n t['\\uFD27'] = '\\u0634\\u062E';\n t['\\uFD28'] = '\\u0634\\u0645';\n t['\\uFD29'] = '\\u0634\\u0631';\n t['\\uFD2A'] = '\\u0633\\u0631';\n t['\\uFD2B'] = '\\u0635\\u0631';\n t['\\uFD2C'] = '\\u0636\\u0631';\n t['\\uFD2D'] = '\\u0634\\u062C';\n t['\\uFD2E'] = '\\u0634\\u062D';\n t['\\uFD2F'] = '\\u0634\\u062E';\n t['\\uFD30'] = '\\u0634\\u0645';\n t['\\uFD31'] = '\\u0633\\u0647';\n t['\\uFD32'] = '\\u0634\\u0647';\n t['\\uFD33'] = '\\u0637\\u0645';\n t['\\uFD34'] = '\\u0633\\u062C';\n t['\\uFD35'] = '\\u0633\\u062D';\n t['\\uFD36'] = '\\u0633\\u062E';\n t['\\uFD37'] = '\\u0634\\u062C';\n t['\\uFD38'] = '\\u0634\\u062D';\n t['\\uFD39'] = '\\u0634\\u062E';\n t['\\uFD3A'] = '\\u0637\\u0645';\n t['\\uFD3B'] = '\\u0638\\u0645';\n t['\\uFD3C'] = '\\u0627\\u064B';\n t['\\uFD3D'] = '\\u0627\\u064B';\n t['\\uFD50'] = '\\u062A\\u062C\\u0645';\n t['\\uFD51'] = '\\u062A\\u062D\\u062C';\n t['\\uFD52'] = '\\u062A\\u062D\\u062C';\n t['\\uFD53'] = '\\u062A\\u062D\\u0645';\n t['\\uFD54'] = '\\u062A\\u062E\\u0645';\n t['\\uFD55'] = '\\u062A\\u0645\\u062C';\n t['\\uFD56'] = '\\u062A\\u0645\\u062D';\n t['\\uFD57'] = '\\u062A\\u0645\\u062E';\n t['\\uFD58'] = '\\u062C\\u0645\\u062D';\n t['\\uFD59'] = '\\u062C\\u0645\\u062D';\n t['\\uFD5A'] = '\\u062D\\u0645\\u064A';\n t['\\uFD5B'] = '\\u062D\\u0645\\u0649';\n t['\\uFD5C'] = '\\u0633\\u062D\\u062C';\n t['\\uFD5D'] = '\\u0633\\u062C\\u062D';\n t['\\uFD5E'] = '\\u0633\\u062C\\u0649';\n t['\\uFD5F'] = '\\u0633\\u0645\\u062D';\n t['\\uFD60'] = '\\u0633\\u0645\\u062D';\n t['\\uFD61'] = '\\u0633\\u0645\\u062C';\n t['\\uFD62'] = '\\u0633\\u0645\\u0645';\n t['\\uFD63'] = '\\u0633\\u0645\\u0645';\n t['\\uFD64'] = '\\u0635\\u062D\\u062D';\n t['\\uFD65'] = '\\u0635\\u062D\\u062D';\n t['\\uFD66'] = '\\u0635\\u0645\\u0645';\n t['\\uFD67'] = '\\u0634\\u062D\\u0645';\n t['\\uFD68'] = '\\u0634\\u062D\\u0645';\n t['\\uFD69'] = '\\u0634\\u062C\\u064A';\n t['\\uFD6A'] = '\\u0634\\u0645\\u062E';\n t['\\uFD6B'] = '\\u0634\\u0645\\u062E';\n t['\\uFD6C'] = '\\u0634\\u0645\\u0645';\n t['\\uFD6D'] = '\\u0634\\u0645\\u0645';\n t['\\uFD6E'] = '\\u0636\\u062D\\u0649';\n t['\\uFD6F'] = '\\u0636\\u062E\\u0645';\n t['\\uFD70'] = '\\u0636\\u062E\\u0645';\n t['\\uFD71'] = '\\u0637\\u0645\\u062D';\n t['\\uFD72'] = '\\u0637\\u0645\\u062D';\n t['\\uFD73'] = '\\u0637\\u0645\\u0645';\n t['\\uFD74'] = '\\u0637\\u0645\\u064A';\n t['\\uFD75'] = '\\u0639\\u062C\\u0645';\n t['\\uFD76'] = '\\u0639\\u0645\\u0645';\n t['\\uFD77'] = '\\u0639\\u0645\\u0645';\n t['\\uFD78'] = '\\u0639\\u0645\\u0649';\n t['\\uFD79'] = '\\u063A\\u0645\\u0645';\n t['\\uFD7A'] = '\\u063A\\u0645\\u064A';\n t['\\uFD7B'] = '\\u063A\\u0645\\u0649';\n t['\\uFD7C'] = '\\u0641\\u062E\\u0645';\n t['\\uFD7D'] = '\\u0641\\u062E\\u0645';\n t['\\uFD7E'] = '\\u0642\\u0645\\u062D';\n t['\\uFD7F'] = '\\u0642\\u0645\\u0645';\n t['\\uFD80'] = '\\u0644\\u062D\\u0645';\n t['\\uFD81'] = '\\u0644\\u062D\\u064A';\n t['\\uFD82'] = '\\u0644\\u062D\\u0649';\n t['\\uFD83'] = '\\u0644\\u062C\\u062C';\n t['\\uFD84'] = '\\u0644\\u062C\\u062C';\n t['\\uFD85'] = '\\u0644\\u062E\\u0645';\n t['\\uFD86'] = '\\u0644\\u062E\\u0645';\n t['\\uFD87'] = '\\u0644\\u0645\\u062D';\n t['\\uFD88'] = '\\u0644\\u0645\\u062D';\n t['\\uFD89'] = '\\u0645\\u062D\\u062C';\n t['\\uFD8A'] = '\\u0645\\u062D\\u0645';\n t['\\uFD8B'] = '\\u0645\\u062D\\u064A';\n t['\\uFD8C'] = '\\u0645\\u062C\\u062D';\n t['\\uFD8D'] = '\\u0645\\u062C\\u0645';\n t['\\uFD8E'] = '\\u0645\\u062E\\u062C';\n t['\\uFD8F'] = '\\u0645\\u062E\\u0645';\n t['\\uFD92'] = '\\u0645\\u062C\\u062E';\n t['\\uFD93'] = '\\u0647\\u0645\\u062C';\n t['\\uFD94'] = '\\u0647\\u0645\\u0645';\n t['\\uFD95'] = '\\u0646\\u062D\\u0645';\n t['\\uFD96'] = '\\u0646\\u062D\\u0649';\n t['\\uFD97'] = '\\u0646\\u062C\\u0645';\n t['\\uFD98'] = '\\u0646\\u062C\\u0645';\n t['\\uFD99'] = '\\u0646\\u062C\\u0649';\n t['\\uFD9A'] = '\\u0646\\u0645\\u064A';\n t['\\uFD9B'] = '\\u0646\\u0645\\u0649';\n t['\\uFD9C'] = '\\u064A\\u0645\\u0645';\n t['\\uFD9D'] = '\\u064A\\u0645\\u0645';\n t['\\uFD9E'] = '\\u0628\\u062E\\u064A';\n t['\\uFD9F'] = '\\u062A\\u062C\\u064A';\n t['\\uFDA0'] = '\\u062A\\u062C\\u0649';\n t['\\uFDA1'] = '\\u062A\\u062E\\u064A';\n t['\\uFDA2'] = '\\u062A\\u062E\\u0649';\n t['\\uFDA3'] = '\\u062A\\u0645\\u064A';\n t['\\uFDA4'] = '\\u062A\\u0645\\u0649';\n t['\\uFDA5'] = '\\u062C\\u0645\\u064A';\n t['\\uFDA6'] = '\\u062C\\u062D\\u0649';\n t['\\uFDA7'] = '\\u062C\\u0645\\u0649';\n t['\\uFDA8'] = '\\u0633\\u062E\\u0649';\n t['\\uFDA9'] = '\\u0635\\u062D\\u064A';\n t['\\uFDAA'] = '\\u0634\\u062D\\u064A';\n t['\\uFDAB'] = '\\u0636\\u062D\\u064A';\n t['\\uFDAC'] = '\\u0644\\u062C\\u064A';\n t['\\uFDAD'] = '\\u0644\\u0645\\u064A';\n t['\\uFDAE'] = '\\u064A\\u062D\\u064A';\n t['\\uFDAF'] = '\\u064A\\u062C\\u064A';\n t['\\uFDB0'] = '\\u064A\\u0645\\u064A';\n t['\\uFDB1'] = '\\u0645\\u0645\\u064A';\n t['\\uFDB2'] = '\\u0642\\u0645\\u064A';\n t['\\uFDB3'] = '\\u0646\\u062D\\u064A';\n t['\\uFDB4'] = '\\u0642\\u0645\\u062D';\n t['\\uFDB5'] = '\\u0644\\u062D\\u0645';\n t['\\uFDB6'] = '\\u0639\\u0645\\u064A';\n t['\\uFDB7'] = '\\u0643\\u0645\\u064A';\n t['\\uFDB8'] = '\\u0646\\u062C\\u062D';\n t['\\uFDB9'] = '\\u0645\\u062E\\u064A';\n t['\\uFDBA'] = '\\u0644\\u062C\\u0645';\n t['\\uFDBB'] = '\\u0643\\u0645\\u0645';\n t['\\uFDBC'] = '\\u0644\\u062C\\u0645';\n t['\\uFDBD'] = '\\u0646\\u062C\\u062D';\n t['\\uFDBE'] = '\\u062C\\u062D\\u064A';\n t['\\uFDBF'] = '\\u062D\\u062C\\u064A';\n t['\\uFDC0'] = '\\u0645\\u062C\\u064A';\n t['\\uFDC1'] = '\\u0641\\u0645\\u064A';\n t['\\uFDC2'] = '\\u0628\\u062D\\u064A';\n t['\\uFDC3'] = '\\u0643\\u0645\\u0645';\n t['\\uFDC4'] = '\\u0639\\u062C\\u0645';\n t['\\uFDC5'] = '\\u0635\\u0645\\u0645';\n t['\\uFDC6'] = '\\u0633\\u062E\\u064A';\n t['\\uFDC7'] = '\\u0646\\u062C\\u064A';\n t['\\uFE49'] = '\\u203E';\n t['\\uFE4A'] = '\\u203E';\n t['\\uFE4B'] = '\\u203E';\n t['\\uFE4C'] = '\\u203E';\n t['\\uFE4D'] = '\\u005F';\n t['\\uFE4E'] = '\\u005F';\n t['\\uFE4F'] = '\\u005F';\n t['\\uFE80'] = '\\u0621';\n t['\\uFE81'] = '\\u0622';\n t['\\uFE82'] = '\\u0622';\n t['\\uFE83'] = '\\u0623';\n t['\\uFE84'] = '\\u0623';\n t['\\uFE85'] = '\\u0624';\n t['\\uFE86'] = '\\u0624';\n t['\\uFE87'] = '\\u0625';\n t['\\uFE88'] = '\\u0625';\n t['\\uFE89'] = '\\u0626';\n t['\\uFE8A'] = '\\u0626';\n t['\\uFE8B'] = '\\u0626';\n t['\\uFE8C'] = '\\u0626';\n t['\\uFE8D'] = '\\u0627';\n t['\\uFE8E'] = '\\u0627';\n t['\\uFE8F'] = '\\u0628';\n t['\\uFE90'] = '\\u0628';\n t['\\uFE91'] = '\\u0628';\n t['\\uFE92'] = '\\u0628';\n t['\\uFE93'] = '\\u0629';\n t['\\uFE94'] = '\\u0629';\n t['\\uFE95'] = '\\u062A';\n t['\\uFE96'] = '\\u062A';\n t['\\uFE97'] = '\\u062A';\n t['\\uFE98'] = '\\u062A';\n t['\\uFE99'] = '\\u062B';\n t['\\uFE9A'] = '\\u062B';\n t['\\uFE9B'] = '\\u062B';\n t['\\uFE9C'] = '\\u062B';\n t['\\uFE9D'] = '\\u062C';\n t['\\uFE9E'] = '\\u062C';\n t['\\uFE9F'] = '\\u062C';\n t['\\uFEA0'] = '\\u062C';\n t['\\uFEA1'] = '\\u062D';\n t['\\uFEA2'] = '\\u062D';\n t['\\uFEA3'] = '\\u062D';\n t['\\uFEA4'] = '\\u062D';\n t['\\uFEA5'] = '\\u062E';\n t['\\uFEA6'] = '\\u062E';\n t['\\uFEA7'] = '\\u062E';\n t['\\uFEA8'] = '\\u062E';\n t['\\uFEA9'] = '\\u062F';\n t['\\uFEAA'] = '\\u062F';\n t['\\uFEAB'] = '\\u0630';\n t['\\uFEAC'] = '\\u0630';\n t['\\uFEAD'] = '\\u0631';\n t['\\uFEAE'] = '\\u0631';\n t['\\uFEAF'] = '\\u0632';\n t['\\uFEB0'] = '\\u0632';\n t['\\uFEB1'] = '\\u0633';\n t['\\uFEB2'] = '\\u0633';\n t['\\uFEB3'] = '\\u0633';\n t['\\uFEB4'] = '\\u0633';\n t['\\uFEB5'] = '\\u0634';\n t['\\uFEB6'] = '\\u0634';\n t['\\uFEB7'] = '\\u0634';\n t['\\uFEB8'] = '\\u0634';\n t['\\uFEB9'] = '\\u0635';\n t['\\uFEBA'] = '\\u0635';\n t['\\uFEBB'] = '\\u0635';\n t['\\uFEBC'] = '\\u0635';\n t['\\uFEBD'] = '\\u0636';\n t['\\uFEBE'] = '\\u0636';\n t['\\uFEBF'] = '\\u0636';\n t['\\uFEC0'] = '\\u0636';\n t['\\uFEC1'] = '\\u0637';\n t['\\uFEC2'] = '\\u0637';\n t['\\uFEC3'] = '\\u0637';\n t['\\uFEC4'] = '\\u0637';\n t['\\uFEC5'] = '\\u0638';\n t['\\uFEC6'] = '\\u0638';\n t['\\uFEC7'] = '\\u0638';\n t['\\uFEC8'] = '\\u0638';\n t['\\uFEC9'] = '\\u0639';\n t['\\uFECA'] = '\\u0639';\n t['\\uFECB'] = '\\u0639';\n t['\\uFECC'] = '\\u0639';\n t['\\uFECD'] = '\\u063A';\n t['\\uFECE'] = '\\u063A';\n t['\\uFECF'] = '\\u063A';\n t['\\uFED0'] = '\\u063A';\n t['\\uFED1'] = '\\u0641';\n t['\\uFED2'] = '\\u0641';\n t['\\uFED3'] = '\\u0641';\n t['\\uFED4'] = '\\u0641';\n t['\\uFED5'] = '\\u0642';\n t['\\uFED6'] = '\\u0642';\n t['\\uFED7'] = '\\u0642';\n t['\\uFED8'] = '\\u0642';\n t['\\uFED9'] = '\\u0643';\n t['\\uFEDA'] = '\\u0643';\n t['\\uFEDB'] = '\\u0643';\n t['\\uFEDC'] = '\\u0643';\n t['\\uFEDD'] = '\\u0644';\n t['\\uFEDE'] = '\\u0644';\n t['\\uFEDF'] = '\\u0644';\n t['\\uFEE0'] = '\\u0644';\n t['\\uFEE1'] = '\\u0645';\n t['\\uFEE2'] = '\\u0645';\n t['\\uFEE3'] = '\\u0645';\n t['\\uFEE4'] = '\\u0645';\n t['\\uFEE5'] = '\\u0646';\n t['\\uFEE6'] = '\\u0646';\n t['\\uFEE7'] = '\\u0646';\n t['\\uFEE8'] = '\\u0646';\n t['\\uFEE9'] = '\\u0647';\n t['\\uFEEA'] = '\\u0647';\n t['\\uFEEB'] = '\\u0647';\n t['\\uFEEC'] = '\\u0647';\n t['\\uFEED'] = '\\u0648';\n t['\\uFEEE'] = '\\u0648';\n t['\\uFEEF'] = '\\u0649';\n t['\\uFEF0'] = '\\u0649';\n t['\\uFEF1'] = '\\u064A';\n t['\\uFEF2'] = '\\u064A';\n t['\\uFEF3'] = '\\u064A';\n t['\\uFEF4'] = '\\u064A';\n t['\\uFEF5'] = '\\u0644\\u0622';\n t['\\uFEF6'] = '\\u0644\\u0622';\n t['\\uFEF7'] = '\\u0644\\u0623';\n t['\\uFEF8'] = '\\u0644\\u0623';\n t['\\uFEF9'] = '\\u0644\\u0625';\n t['\\uFEFA'] = '\\u0644\\u0625';\n t['\\uFEFB'] = '\\u0644\\u0627';\n t['\\uFEFC'] = '\\u0644\\u0627';\n});\nfunction reverseIfRtl(chars) {\n var charsLength = chars.length;\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n  return chars;\n }\n var s = '';\n for (var ii = charsLength - 1; ii >= 0; ii--) {\n  s += chars[ii];\n }\n return s;\n}\nexports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;\nexports.reverseIfRtl = reverseIfRtl;\nexports.getUnicodeRangeFor = getUnicodeRangeFor;\nexports.getNormalizedUnicodes = getNormalizedUnicodes;\nexports.getUnicodeForGlyph = getUnicodeForGlyph;\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.FontRendererFactory = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _cff_parser = __w_pdfjs_require__(157);\n\nvar _glyphlist = __w_pdfjs_require__(160);\n\nvar _encodings = __w_pdfjs_require__(159);\n\nvar _stream = __w_pdfjs_require__(140);\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FontRendererFactory = function FontRendererFactoryClosure() {\n  function getLong(data, offset) {\n    return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n  }\n  function getUshort(data, offset) {\n    return data[offset] << 8 | data[offset + 1];\n  }\n  function parseCmap(data, start, end) {\n    var offset = getUshort(data, start + 2) === 1 ? getLong(data, start + 8) : getLong(data, start + 16);\n    var format = getUshort(data, start + offset);\n    var ranges, p, i;\n    if (format === 4) {\n      getUshort(data, start + offset + 2);\n      var segCount = getUshort(data, start + offset + 6) >> 1;\n      p = start + offset + 14;\n      ranges = [];\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i] = { end: getUshort(data, p) };\n      }\n      p += 2;\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].start = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].idDelta = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        var idOffset = getUshort(data, p);\n        if (idOffset === 0) {\n          continue;\n        }\n        ranges[i].ids = [];\n        for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n          ranges[i].ids[j] = getUshort(data, p + idOffset);\n          idOffset += 2;\n        }\n      }\n      return ranges;\n    } else if (format === 12) {\n      getLong(data, start + offset + 4);\n      var groups = getLong(data, start + offset + 12);\n      p = start + offset + 16;\n      ranges = [];\n      for (i = 0; i < groups; i++) {\n        ranges.push({\n          start: getLong(data, p),\n          end: getLong(data, p + 4),\n          idDelta: getLong(data, p + 8) - getLong(data, p)\n        });\n        p += 12;\n      }\n      return ranges;\n    }\n    throw new _util.FormatError('unsupported cmap: ' + format);\n  }\n  function parseCff(data, start, end, seacAnalysisEnabled) {\n    var properties = {};\n    var parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled);\n    var cff = parser.parse();\n    return {\n      glyphs: cff.charStrings.objects,\n      subrs: cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && cff.topDict.privateDict.subrsIndex.objects,\n      gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n      isCFFCIDFont: cff.isCIDFont,\n      fdSelect: cff.fdSelect,\n      fdArray: cff.fdArray\n    };\n  }\n  function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n    var itemSize, itemDecode;\n    if (isGlyphLocationsLong) {\n      itemSize = 4;\n      itemDecode = function fontItemDecodeLong(data, offset) {\n        return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n      };\n    } else {\n      itemSize = 2;\n      itemDecode = function fontItemDecode(data, offset) {\n        return data[offset] << 9 | data[offset + 1] << 1;\n      };\n    }\n    var glyphs = [];\n    var startOffset = itemDecode(loca, 0);\n    for (var j = itemSize; j < loca.length; j += itemSize) {\n      var endOffset = itemDecode(loca, j);\n      glyphs.push(glyf.subarray(startOffset, endOffset));\n      startOffset = endOffset;\n    }\n    return glyphs;\n  }\n  function lookupCmap(ranges, unicode) {\n    var code = unicode.codePointAt(0),\n        gid = 0;\n    var l = 0,\n        r = ranges.length - 1;\n    while (l < r) {\n      var c = l + r + 1 >> 1;\n      if (code < ranges[c].start) {\n        r = c - 1;\n      } else {\n        l = c;\n      }\n    }\n    if (ranges[l].start <= code && code <= ranges[l].end) {\n      gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xFFFF;\n    }\n    return {\n      charCode: code,\n      glyphId: gid\n    };\n  }\n  function compileGlyf(code, cmds, font) {\n    function moveTo(x, y) {\n      cmds.push({\n        cmd: 'moveTo',\n        args: [x, y]\n      });\n    }\n    function lineTo(x, y) {\n      cmds.push({\n        cmd: 'lineTo',\n        args: [x, y]\n      });\n    }\n    function quadraticCurveTo(xa, ya, x, y) {\n      cmds.push({\n        cmd: 'quadraticCurveTo',\n        args: [xa, ya, x, y]\n      });\n    }\n    var i = 0;\n    var numberOfContours = (code[i] << 24 | code[i + 1] << 16) >> 16;\n    var flags;\n    var x = 0,\n        y = 0;\n    i += 10;\n    if (numberOfContours < 0) {\n      do {\n        flags = code[i] << 8 | code[i + 1];\n        var glyphIndex = code[i + 2] << 8 | code[i + 3];\n        i += 4;\n        var arg1, arg2;\n        if (flags & 0x01) {\n          arg1 = (code[i] << 24 | code[i + 1] << 16) >> 16;\n          arg2 = (code[i + 2] << 24 | code[i + 3] << 16) >> 16;\n          i += 4;\n        } else {\n          arg1 = code[i++];\n          arg2 = code[i++];\n        }\n        if (flags & 0x02) {\n          x = arg1;\n          y = arg2;\n        } else {\n          x = 0;\n          y = 0;\n        }\n        var scaleX = 1,\n            scaleY = 1,\n            scale01 = 0,\n            scale10 = 0;\n        if (flags & 0x08) {\n          scaleX = scaleY = (code[i] << 24 | code[i + 1] << 16) / 1073741824;\n          i += 2;\n        } else if (flags & 0x40) {\n          scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824;\n          scaleY = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824;\n          i += 4;\n        } else if (flags & 0x80) {\n          scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824;\n          scale01 = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824;\n          scale10 = (code[i + 4] << 24 | code[i + 5] << 16) / 1073741824;\n          scaleY = (code[i + 6] << 24 | code[i + 7] << 16) / 1073741824;\n          i += 8;\n        }\n        var subglyph = font.glyphs[glyphIndex];\n        if (subglyph) {\n          cmds.push({ cmd: 'save' });\n          cmds.push({\n            cmd: 'transform',\n            args: [scaleX, scale01, scale10, scaleY, x, y]\n          });\n          compileGlyf(subglyph, cmds, font);\n          cmds.push({ cmd: 'restore' });\n        }\n      } while (flags & 0x20);\n    } else {\n      var endPtsOfContours = [];\n      var j, jj;\n      for (j = 0; j < numberOfContours; j++) {\n        endPtsOfContours.push(code[i] << 8 | code[i + 1]);\n        i += 2;\n      }\n      var instructionLength = code[i] << 8 | code[i + 1];\n      i += 2 + instructionLength;\n      var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n      var points = [];\n      while (points.length < numberOfPoints) {\n        flags = code[i++];\n        var repeat = 1;\n        if (flags & 0x08) {\n          repeat += code[i++];\n        }\n        while (repeat-- > 0) {\n          points.push({ flags: flags });\n        }\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x12) {\n          case 0x00:\n            x += (code[i] << 24 | code[i + 1] << 16) >> 16;\n            i += 2;\n            break;\n          case 0x02:\n            x -= code[i++];\n            break;\n          case 0x12:\n            x += code[i++];\n            break;\n        }\n        points[j].x = x;\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x24) {\n          case 0x00:\n            y += (code[i] << 24 | code[i + 1] << 16) >> 16;\n            i += 2;\n            break;\n          case 0x04:\n            y -= code[i++];\n            break;\n          case 0x24:\n            y += code[i++];\n            break;\n        }\n        points[j].y = y;\n      }\n      var startPoint = 0;\n      for (i = 0; i < numberOfContours; i++) {\n        var endPoint = endPtsOfContours[i];\n        var contour = points.slice(startPoint, endPoint + 1);\n        if (contour[0].flags & 1) {\n          contour.push(contour[0]);\n        } else if (contour[contour.length - 1].flags & 1) {\n          contour.unshift(contour[contour.length - 1]);\n        } else {\n          var p = {\n            flags: 1,\n            x: (contour[0].x + contour[contour.length - 1].x) / 2,\n            y: (contour[0].y + contour[contour.length - 1].y) / 2\n          };\n          contour.unshift(p);\n          contour.push(p);\n        }\n        moveTo(contour[0].x, contour[0].y);\n        for (j = 1, jj = contour.length; j < jj; j++) {\n          if (contour[j].flags & 1) {\n            lineTo(contour[j].x, contour[j].y);\n          } else if (contour[j + 1].flags & 1) {\n            quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y);\n            j++;\n          } else {\n            quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2);\n          }\n        }\n        startPoint = endPoint + 1;\n      }\n    }\n  }\n  function compileCharString(code, cmds, font, glyphId) {\n    var stack = [];\n    var x = 0,\n        y = 0;\n    var stems = 0;\n    function moveTo(x, y) {\n      cmds.push({\n        cmd: 'moveTo',\n        args: [x, y]\n      });\n    }\n    function lineTo(x, y) {\n      cmds.push({\n        cmd: 'lineTo',\n        args: [x, y]\n      });\n    }\n    function bezierCurveTo(x1, y1, x2, y2, x, y) {\n      cmds.push({\n        cmd: 'bezierCurveTo',\n        args: [x1, y1, x2, y2, x, y]\n      });\n    }\n    function parse(code) {\n      var i = 0;\n      while (i < code.length) {\n        var stackClean = false;\n        var v = code[i++];\n        var xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n        switch (v) {\n          case 1:\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 3:\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 4:\n            y += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 5:\n            while (stack.length > 0) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 6:\n            while (stack.length > 0) {\n              x += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 7:\n            while (stack.length > 0) {\n              y += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              x += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 8:\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 10:\n            n = stack.pop();\n            subrCode = null;\n            if (font.isCFFCIDFont) {\n              var fdIndex = font.fdSelect.getFDIndex(glyphId);\n              if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n                var fontDict = font.fdArray[fdIndex],\n                    subrs = void 0;\n                if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n                  subrs = fontDict.privateDict.subrsIndex.objects;\n                }\n                if (subrs) {\n                  var numSubrs = subrs.length;\n                  n += numSubrs < 1240 ? 107 : numSubrs < 33900 ? 1131 : 32768;\n                  subrCode = subrs[n];\n                }\n              } else {\n                (0, _util.warn)('Invalid fd index for glyph index.');\n              }\n            } else {\n              subrCode = font.subrs[n + font.subrsBias];\n            }\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 11:\n            return;\n          case 12:\n            v = code[i++];\n            switch (v) {\n              case 34:\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                y1 = y + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y, xb, y1, x, y1);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y, x, y);\n                break;\n              case 35:\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                stack.pop();\n                break;\n              case 36:\n                xa = x + stack.shift();\n                y1 = y + stack.shift();\n                xb = xa + stack.shift();\n                y2 = y1 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y2, x, y2);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                y3 = y2 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y2, xb, y3, x, y);\n                break;\n              case 37:\n                var x0 = x,\n                    y0 = y;\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb + stack.shift();\n                y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift();\n                ya = y + stack.shift();\n                xb = xa + stack.shift();\n                yb = ya + stack.shift();\n                x = xb;\n                y = yb;\n                if (Math.abs(x - x0) > Math.abs(y - y0)) {\n                  x += stack.shift();\n                } else {\n                  y += stack.shift();\n                }\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                break;\n              default:\n                throw new _util.FormatError('unknown operator: 12 ' + v);\n            }\n            break;\n          case 14:\n            if (stack.length >= 4) {\n              var achar = stack.pop();\n              var bchar = stack.pop();\n              y = stack.pop();\n              x = stack.pop();\n              cmds.push({ cmd: 'save' });\n              cmds.push({\n                cmd: 'translate',\n                args: [x, y]\n              });\n              var cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]]));\n              compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n              cmds.push({ cmd: 'restore' });\n              cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]]));\n              compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n            }\n            return;\n          case 18:\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 19:\n            stems += stack.length >> 1;\n            i += stems + 7 >> 3;\n            stackClean = true;\n            break;\n          case 20:\n            stems += stack.length >> 1;\n            i += stems + 7 >> 3;\n            stackClean = true;\n            break;\n          case 21:\n            y += stack.pop();\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 22:\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 23:\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 24:\n            while (stack.length > 2) {\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n            break;\n          case 25:\n            while (stack.length > 6) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            break;\n          case 26:\n            if (stack.length % 2) {\n              x += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb;\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 27:\n            if (stack.length % 2) {\n              y += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb;\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 28:\n            stack.push((code[i] << 24 | code[i + 1] << 16) >> 16);\n            i += 2;\n            break;\n          case 29:\n            n = stack.pop() + font.gsubrsBias;\n            subrCode = font.gsubrs[n];\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 30:\n            while (stack.length > 0) {\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 31:\n            while (stack.length > 0) {\n              xa = x + stack.shift();\n              ya = y;\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              xa = x;\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          default:\n            if (v < 32) {\n              throw new _util.FormatError('unknown operator: ' + v);\n            }\n            if (v < 247) {\n              stack.push(v - 139);\n            } else if (v < 251) {\n              stack.push((v - 247) * 256 + code[i++] + 108);\n            } else if (v < 255) {\n              stack.push(-(v - 251) * 256 - code[i++] - 108);\n            } else {\n              stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536);\n              i += 4;\n            }\n            break;\n        }\n        if (stackClean) {\n          stack.length = 0;\n        }\n      }\n    }\n    parse(code);\n  }\n  var NOOP = [];\n\n  var CompiledFont = function () {\n    function CompiledFont(fontMatrix) {\n      _classCallCheck(this, CompiledFont);\n\n      if (this.constructor === CompiledFont) {\n        (0, _util.unreachable)('Cannot initialize CompiledFont.');\n      }\n      this.fontMatrix = fontMatrix;\n      this.compiledGlyphs = Object.create(null);\n      this.compiledCharCodeToGlyphId = Object.create(null);\n    }\n\n    _createClass(CompiledFont, [{\n      key: 'getPathJs',\n      value: function getPathJs(unicode) {\n        var cmap = lookupCmap(this.cmap, unicode);\n        var fn = this.compiledGlyphs[cmap.glyphId];\n        if (!fn) {\n          fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId);\n          this.compiledGlyphs[cmap.glyphId] = fn;\n        }\n        if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {\n          this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;\n        }\n        return fn;\n      }\n    }, {\n      key: 'compileGlyph',\n      value: function compileGlyph(code, glyphId) {\n        if (!code || code.length === 0 || code[0] === 14) {\n          return NOOP;\n        }\n        var fontMatrix = this.fontMatrix;\n        if (this.isCFFCIDFont) {\n          var fdIndex = this.fdSelect.getFDIndex(glyphId);\n          if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n            var fontDict = this.fdArray[fdIndex];\n            fontMatrix = fontDict.getByName('FontMatrix') || _util.FONT_IDENTITY_MATRIX;\n          } else {\n            (0, _util.warn)('Invalid fd index for glyph index.');\n          }\n        }\n        var cmds = [];\n        cmds.push({ cmd: 'save' });\n        cmds.push({\n          cmd: 'transform',\n          args: fontMatrix.slice()\n        });\n        cmds.push({\n          cmd: 'scale',\n          args: ['size', '-size']\n        });\n        this.compileGlyphImpl(code, cmds, glyphId);\n        cmds.push({ cmd: 'restore' });\n        return cmds;\n      }\n    }, {\n      key: 'compileGlyphImpl',\n      value: function compileGlyphImpl() {\n        (0, _util.unreachable)('Children classes should implement this.');\n      }\n    }, {\n      key: 'hasBuiltPath',\n      value: function hasBuiltPath(unicode) {\n        var cmap = lookupCmap(this.cmap, unicode);\n        return this.compiledGlyphs[cmap.glyphId] !== undefined && this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined;\n      }\n    }]);\n\n    return CompiledFont;\n  }();\n\n  var TrueTypeCompiled = function (_CompiledFont) {\n    _inherits(TrueTypeCompiled, _CompiledFont);\n\n    function TrueTypeCompiled(glyphs, cmap, fontMatrix) {\n      _classCallCheck(this, TrueTypeCompiled);\n\n      var _this = _possibleConstructorReturn(this, (TrueTypeCompiled.__proto__ || Object.getPrototypeOf(TrueTypeCompiled)).call(this, fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]));\n\n      _this.glyphs = glyphs;\n      _this.cmap = cmap;\n      return _this;\n    }\n\n    _createClass(TrueTypeCompiled, [{\n      key: 'compileGlyphImpl',\n      value: function compileGlyphImpl(code, cmds) {\n        compileGlyf(code, cmds, this);\n      }\n    }]);\n\n    return TrueTypeCompiled;\n  }(CompiledFont);\n\n  var Type2Compiled = function (_CompiledFont2) {\n    _inherits(Type2Compiled, _CompiledFont2);\n\n    function Type2Compiled(cffInfo, cmap, fontMatrix, glyphNameMap) {\n      _classCallCheck(this, Type2Compiled);\n\n      var _this2 = _possibleConstructorReturn(this, (Type2Compiled.__proto__ || Object.getPrototypeOf(Type2Compiled)).call(this, fontMatrix || [0.001, 0, 0, 0.001, 0, 0]));\n\n      _this2.glyphs = cffInfo.glyphs;\n      _this2.gsubrs = cffInfo.gsubrs || [];\n      _this2.subrs = cffInfo.subrs || [];\n      _this2.cmap = cmap;\n      _this2.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)();\n      _this2.gsubrsBias = _this2.gsubrs.length < 1240 ? 107 : _this2.gsubrs.length < 33900 ? 1131 : 32768;\n      _this2.subrsBias = _this2.subrs.length < 1240 ? 107 : _this2.subrs.length < 33900 ? 1131 : 32768;\n      _this2.isCFFCIDFont = cffInfo.isCFFCIDFont;\n      _this2.fdSelect = cffInfo.fdSelect;\n      _this2.fdArray = cffInfo.fdArray;\n      return _this2;\n    }\n\n    _createClass(Type2Compiled, [{\n      key: 'compileGlyphImpl',\n      value: function compileGlyphImpl(code, cmds, glyphId) {\n        compileCharString(code, cmds, this, glyphId);\n      }\n    }]);\n\n    return Type2Compiled;\n  }(CompiledFont);\n\n  return {\n    create: function FontRendererFactory_create(font, seacAnalysisEnabled) {\n      var data = new Uint8Array(font.data);\n      var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n      var numTables = getUshort(data, 4);\n      for (var i = 0, p = 12; i < numTables; i++, p += 16) {\n        var tag = (0, _util.bytesToString)(data.subarray(p, p + 4));\n        var offset = getLong(data, p + 8);\n        var length = getLong(data, p + 12);\n        switch (tag) {\n          case 'cmap':\n            cmap = parseCmap(data, offset, offset + length);\n            break;\n          case 'glyf':\n            glyf = data.subarray(offset, offset + length);\n            break;\n          case 'loca':\n            loca = data.subarray(offset, offset + length);\n            break;\n          case 'head':\n            unitsPerEm = getUshort(data, offset + 18);\n            indexToLocFormat = getUshort(data, offset + 50);\n            break;\n          case 'CFF ':\n            cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n            break;\n        }\n      }\n      if (glyf) {\n        var fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n        return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n      }\n      return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n    }\n  };\n}();\nexports.FontRendererFactory = FontRendererFactory;\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Type1Parser = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _encodings = __w_pdfjs_require__(159);\n\nvar _stream = __w_pdfjs_require__(140);\n\nvar HINTING_ENABLED = false;\nvar Type1CharString = function Type1CharStringClosure() {\n  var COMMAND_MAP = {\n    'hstem': [1],\n    'vstem': [3],\n    'vmoveto': [4],\n    'rlineto': [5],\n    'hlineto': [6],\n    'vlineto': [7],\n    'rrcurveto': [8],\n    'callsubr': [10],\n    'flex': [12, 35],\n    'drop': [12, 18],\n    'endchar': [14],\n    'rmoveto': [21],\n    'hmoveto': [22],\n    'vhcurveto': [30],\n    'hvcurveto': [31]\n  };\n  function Type1CharString() {\n    this.width = 0;\n    this.lsb = 0;\n    this.flexing = false;\n    this.output = [];\n    this.stack = [];\n  }\n  Type1CharString.prototype = {\n    convert: function Type1CharString_convert(encoded, subrs, seacAnalysisEnabled) {\n      var count = encoded.length;\n      var error = false;\n      var wx, sbx, subrNumber;\n      for (var i = 0; i < count; i++) {\n        var value = encoded[i];\n        if (value < 32) {\n          if (value === 12) {\n            value = (value << 8) + encoded[++i];\n          }\n          switch (value) {\n            case 1:\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case 3:\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case 4:\n              if (this.flexing) {\n                if (this.stack.length < 1) {\n                  error = true;\n                  break;\n                }\n                var dy = this.stack.pop();\n                this.stack.push(0, dy);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n              break;\n            case 5:\n              error = this.executeCommand(2, COMMAND_MAP.rlineto);\n              break;\n            case 6:\n              error = this.executeCommand(1, COMMAND_MAP.hlineto);\n              break;\n            case 7:\n              error = this.executeCommand(1, COMMAND_MAP.vlineto);\n              break;\n            case 8:\n              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n              break;\n            case 9:\n              this.stack = [];\n              break;\n            case 10:\n              if (this.stack.length < 1) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              if (!subrs[subrNumber]) {\n                error = true;\n                break;\n              }\n              error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);\n              break;\n            case 11:\n              return error;\n            case 13:\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              wx = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx);\n              error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n              break;\n            case 14:\n              this.output.push(COMMAND_MAP.endchar[0]);\n              break;\n            case 21:\n              if (this.flexing) {\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n              break;\n            case 22:\n              if (this.flexing) {\n                this.stack.push(0);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n              break;\n            case 30:\n              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n              break;\n            case 31:\n              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n              break;\n            case (12 << 8) + 0:\n              this.stack = [];\n              break;\n            case (12 << 8) + 1:\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case (12 << 8) + 2:\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case (12 << 8) + 6:\n              if (seacAnalysisEnabled) {\n                this.seac = this.stack.splice(-4, 4);\n                error = this.executeCommand(0, COMMAND_MAP.endchar);\n              } else {\n                error = this.executeCommand(4, COMMAND_MAP.endchar);\n              }\n              break;\n            case (12 << 8) + 7:\n              if (this.stack.length < 4) {\n                error = true;\n                break;\n              }\n              this.stack.pop();\n              wx = this.stack.pop();\n              var sby = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx, sby);\n              error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n              break;\n            case (12 << 8) + 12:\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              var num2 = this.stack.pop();\n              var num1 = this.stack.pop();\n              this.stack.push(num1 / num2);\n              break;\n            case (12 << 8) + 16:\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              var numArgs = this.stack.pop();\n              if (subrNumber === 0 && numArgs === 3) {\n                var flexArgs = this.stack.splice(this.stack.length - 17, 17);\n                this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]);\n                error = this.executeCommand(13, COMMAND_MAP.flex, true);\n                this.flexing = false;\n                this.stack.push(flexArgs[15], flexArgs[16]);\n              } else if (subrNumber === 1 && numArgs === 0) {\n                this.flexing = true;\n              }\n              break;\n            case (12 << 8) + 17:\n              break;\n            case (12 << 8) + 33:\n              this.stack = [];\n              break;\n            default:\n              (0, _util.warn)('Unknown type 1 charstring command of \"' + value + '\"');\n              break;\n          }\n          if (error) {\n            break;\n          }\n          continue;\n        } else if (value <= 246) {\n          value = value - 139;\n        } else if (value <= 250) {\n          value = (value - 247) * 256 + encoded[++i] + 108;\n        } else if (value <= 254) {\n          value = -((value - 251) * 256) - encoded[++i] - 108;\n        } else {\n          value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;\n        }\n        this.stack.push(value);\n      }\n      return error;\n    },\n    executeCommand: function executeCommand(howManyArgs, command, keepStack) {\n      var stackLength = this.stack.length;\n      if (howManyArgs > stackLength) {\n        return true;\n      }\n      var start = stackLength - howManyArgs;\n      for (var i = start; i < stackLength; i++) {\n        var value = this.stack[i];\n        if (Number.isInteger(value)) {\n          this.output.push(28, value >> 8 & 0xff, value & 0xff);\n        } else {\n          value = 65536 * value | 0;\n          this.output.push(255, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF);\n        }\n      }\n      this.output.push.apply(this.output, command);\n      if (keepStack) {\n        this.stack.splice(start, howManyArgs);\n      } else {\n        this.stack.length = 0;\n      }\n      return false;\n    }\n  };\n  return Type1CharString;\n}();\nvar Type1Parser = function Type1ParserClosure() {\n  var EEXEC_ENCRYPT_KEY = 55665;\n  var CHAR_STRS_ENCRYPT_KEY = 4330;\n  function isHexDigit(code) {\n    return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102;\n  }\n  function decrypt(data, key, discardNumber) {\n    if (discardNumber >= data.length) {\n      return new Uint8Array(0);\n    }\n    var r = key | 0,\n        c1 = 52845,\n        c2 = 22719,\n        i,\n        j;\n    for (i = 0; i < discardNumber; i++) {\n      r = (data[i] + r) * c1 + c2 & (1 << 16) - 1;\n    }\n    var count = data.length - discardNumber;\n    var decrypted = new Uint8Array(count);\n    for (i = discardNumber, j = 0; j < count; i++, j++) {\n      var value = data[i];\n      decrypted[j] = value ^ r >> 8;\n      r = (value + r) * c1 + c2 & (1 << 16) - 1;\n    }\n    return decrypted;\n  }\n  function decryptAscii(data, key, discardNumber) {\n    var r = key | 0,\n        c1 = 52845,\n        c2 = 22719;\n    var count = data.length,\n        maybeLength = count >>> 1;\n    var decrypted = new Uint8Array(maybeLength);\n    var i, j;\n    for (i = 0, j = 0; i < count; i++) {\n      var digit1 = data[i];\n      if (!isHexDigit(digit1)) {\n        continue;\n      }\n      i++;\n      var digit2;\n      while (i < count && !isHexDigit(digit2 = data[i])) {\n        i++;\n      }\n      if (i < count) {\n        var value = parseInt(String.fromCharCode(digit1, digit2), 16);\n        decrypted[j++] = value ^ r >> 8;\n        r = (value + r) * c1 + c2 & (1 << 16) - 1;\n      }\n    }\n    return Array.prototype.slice.call(decrypted, discardNumber, j);\n  }\n  function isSpecial(c) {\n    return c === 0x2F || c === 0x5B || c === 0x5D || c === 0x7B || c === 0x7D || c === 0x28 || c === 0x29;\n  }\n  function Type1Parser(stream, encrypted, seacAnalysisEnabled) {\n    if (encrypted) {\n      var data = stream.getBytes();\n      var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]));\n      stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));\n    }\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n    this.stream = stream;\n    this.nextChar();\n  }\n  Type1Parser.prototype = {\n    readNumberArray: function Type1Parser_readNumberArray() {\n      this.getToken();\n      var array = [];\n      while (true) {\n        var token = this.getToken();\n        if (token === null || token === ']' || token === '}') {\n          break;\n        }\n        array.push(parseFloat(token || 0));\n      }\n      return array;\n    },\n    readNumber: function Type1Parser_readNumber() {\n      var token = this.getToken();\n      return parseFloat(token || 0);\n    },\n    readInt: function Type1Parser_readInt() {\n      var token = this.getToken();\n      return parseInt(token || 0, 10) | 0;\n    },\n    readBoolean: function Type1Parser_readBoolean() {\n      var token = this.getToken();\n      return token === 'true' ? 1 : 0;\n    },\n    nextChar: function Type1_nextChar() {\n      return this.currentChar = this.stream.getByte();\n    },\n    getToken: function Type1Parser_getToken() {\n      var comment = false;\n      var ch = this.currentChar;\n      while (true) {\n        if (ch === -1) {\n          return null;\n        }\n        if (comment) {\n          if (ch === 0x0A || ch === 0x0D) {\n            comment = false;\n          }\n        } else if (ch === 0x25) {\n          comment = true;\n        } else if (!(0, _util.isSpace)(ch)) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      if (isSpecial(ch)) {\n        this.nextChar();\n        return String.fromCharCode(ch);\n      }\n      var token = '';\n      do {\n        token += String.fromCharCode(ch);\n        ch = this.nextChar();\n      } while (ch >= 0 && !(0, _util.isSpace)(ch) && !isSpecial(ch));\n      return token;\n    },\n    readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {\n      if (lenIV === -1) {\n        return bytes;\n      }\n      return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n    },\n    extractFontProgram: function Type1Parser_extractFontProgram() {\n      var stream = this.stream;\n      var subrs = [],\n          charstrings = [];\n      var privateData = Object.create(null);\n      privateData['lenIV'] = 4;\n      var program = {\n        subrs: [],\n        charstrings: [],\n        properties: { 'privateData': privateData }\n      };\n      var token, length, data, lenIV, encoded;\n      while ((token = this.getToken()) !== null) {\n        if (token !== '/') {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case 'CharStrings':\n            this.getToken();\n            this.getToken();\n            this.getToken();\n            this.getToken();\n            while (true) {\n              token = this.getToken();\n              if (token === null || token === 'end') {\n                break;\n              }\n              if (token !== '/') {\n                continue;\n              }\n              var glyph = this.getToken();\n              length = this.readInt();\n              this.getToken();\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData['lenIV'];\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken();\n              if (token === 'noaccess') {\n                this.getToken();\n              }\n              charstrings.push({\n                glyph: glyph,\n                encoded: encoded\n              });\n            }\n            break;\n          case 'Subrs':\n            this.readInt();\n            this.getToken();\n            while (this.getToken() === 'dup') {\n              var index = this.readInt();\n              length = this.readInt();\n              this.getToken();\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData['lenIV'];\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken();\n              if (token === 'noaccess') {\n                this.getToken();\n              }\n              subrs[index] = encoded;\n            }\n            break;\n          case 'BlueValues':\n          case 'OtherBlues':\n          case 'FamilyBlues':\n          case 'FamilyOtherBlues':\n            var blueArray = this.readNumberArray();\n            if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) {\n              program.properties.privateData[token] = blueArray;\n            }\n            break;\n          case 'StemSnapH':\n          case 'StemSnapV':\n            program.properties.privateData[token] = this.readNumberArray();\n            break;\n          case 'StdHW':\n          case 'StdVW':\n            program.properties.privateData[token] = this.readNumberArray()[0];\n            break;\n          case 'BlueShift':\n          case 'lenIV':\n          case 'BlueFuzz':\n          case 'BlueScale':\n          case 'LanguageGroup':\n          case 'ExpansionFactor':\n            program.properties.privateData[token] = this.readNumber();\n            break;\n          case 'ForceBold':\n            program.properties.privateData[token] = this.readBoolean();\n            break;\n        }\n      }\n      for (var i = 0; i < charstrings.length; i++) {\n        glyph = charstrings[i].glyph;\n        encoded = charstrings[i].encoded;\n        var charString = new Type1CharString();\n        var error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);\n        var output = charString.output;\n        if (error) {\n          output = [14];\n        }\n        program.charstrings.push({\n          glyphName: glyph,\n          charstring: output,\n          width: charString.width,\n          lsb: charString.lsb,\n          seac: charString.seac\n        });\n      }\n      return program;\n    },\n    extractFontHeader: function Type1Parser_extractFontHeader(properties) {\n      var token;\n      while ((token = this.getToken()) !== null) {\n        if (token !== '/') {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case 'FontMatrix':\n            var matrix = this.readNumberArray();\n            properties.fontMatrix = matrix;\n            break;\n          case 'Encoding':\n            var encodingArg = this.getToken();\n            var encoding;\n            if (!/^\\d+$/.test(encodingArg)) {\n              encoding = (0, _encodings.getEncoding)(encodingArg);\n            } else {\n              encoding = [];\n              var size = parseInt(encodingArg, 10) | 0;\n              this.getToken();\n              for (var j = 0; j < size; j++) {\n                token = this.getToken();\n                while (token !== 'dup' && token !== 'def') {\n                  token = this.getToken();\n                  if (token === null) {\n                    return;\n                  }\n                }\n                if (token === 'def') {\n                  break;\n                }\n                var index = this.readInt();\n                this.getToken();\n                var glyph = this.getToken();\n                encoding[index] = glyph;\n                this.getToken();\n              }\n            }\n            properties.builtInEncoding = encoding;\n            break;\n          case 'FontBBox':\n            var fontBBox = this.readNumberArray();\n            properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n            properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n            properties.ascentScaled = true;\n            break;\n        }\n      }\n    }\n  };\n  return Type1Parser;\n}();\nexports.Type1Parser = Type1Parser;\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getTilingPatternIR = exports.Pattern = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _colorspace = __w_pdfjs_require__(151);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar ShadingType = {\n  FUNCTION_BASED: 1,\n  AXIAL: 2,\n  RADIAL: 3,\n  FREE_FORM_MESH: 4,\n  LATTICE_FORM_MESH: 5,\n  COONS_PATCH_MESH: 6,\n  TENSOR_PATCH_MESH: 7\n};\nvar Pattern = function PatternClosure() {\n  function Pattern() {\n    (0, _util.unreachable)('should not call Pattern constructor');\n  }\n  Pattern.prototype = {\n    getPattern: function Pattern_getPattern(ctx) {\n      (0, _util.unreachable)('Should not call Pattern.getStyle: ' + ctx);\n    }\n  };\n  Pattern.parseShading = function (shading, matrix, xref, res, handler, pdfFunctionFactory) {\n    var dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;\n    var type = dict.get('ShadingType');\n    try {\n      switch (type) {\n        case ShadingType.AXIAL:\n        case ShadingType.RADIAL:\n          return new Shadings.RadialAxial(dict, matrix, xref, res, pdfFunctionFactory);\n        case ShadingType.FREE_FORM_MESH:\n        case ShadingType.LATTICE_FORM_MESH:\n        case ShadingType.COONS_PATCH_MESH:\n        case ShadingType.TENSOR_PATCH_MESH:\n          return new Shadings.Mesh(shading, matrix, xref, res, pdfFunctionFactory);\n        default:\n          throw new _util.FormatError('Unsupported ShadingType: ' + type);\n      }\n    } catch (ex) {\n      if (ex instanceof _util.MissingDataException) {\n        throw ex;\n      }\n      handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.shadingPattern });\n      (0, _util.warn)(ex);\n      return new Shadings.Dummy();\n    }\n  };\n  return Pattern;\n}();\nvar Shadings = {};\nShadings.SMALL_NUMBER = 1e-6;\nShadings.RadialAxial = function RadialAxialClosure() {\n  function RadialAxial(dict, matrix, xref, res, pdfFunctionFactory) {\n    this.matrix = matrix;\n    this.coordsArr = dict.getArray('Coords');\n    this.shadingType = dict.get('ShadingType');\n    this.type = 'Pattern';\n    var cs = dict.get('ColorSpace', 'CS');\n    cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory);\n    this.cs = cs;\n    var t0 = 0.0,\n        t1 = 1.0;\n    if (dict.has('Domain')) {\n      var domainArr = dict.getArray('Domain');\n      t0 = domainArr[0];\n      t1 = domainArr[1];\n    }\n    var extendStart = false,\n        extendEnd = false;\n    if (dict.has('Extend')) {\n      var extendArr = dict.getArray('Extend');\n      extendStart = extendArr[0];\n      extendEnd = extendArr[1];\n    }\n    if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) {\n      var x1 = this.coordsArr[0];\n      var y1 = this.coordsArr[1];\n      var r1 = this.coordsArr[2];\n      var x2 = this.coordsArr[3];\n      var y2 = this.coordsArr[4];\n      var r2 = this.coordsArr[5];\n      var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n      if (r1 <= r2 + distance && r2 <= r1 + distance) {\n        (0, _util.warn)('Unsupported radial gradient.');\n      }\n    }\n    this.extendStart = extendStart;\n    this.extendEnd = extendEnd;\n    var fnObj = dict.get('Function');\n    var fn = pdfFunctionFactory.createFromArray(fnObj);\n    var diff = t1 - t0;\n    var step = diff / 10;\n    var colorStops = this.colorStops = [];\n    if (t0 >= t1 || step <= 0) {\n      (0, _util.info)('Bad shading domain.');\n      return;\n    }\n    var color = new Float32Array(cs.numComps),\n        ratio = new Float32Array(1);\n    var rgbColor;\n    for (var i = t0; i <= t1; i += step) {\n      ratio[0] = i;\n      fn(ratio, 0, color, 0);\n      rgbColor = cs.getRgb(color, 0);\n      var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n      colorStops.push([(i - t0) / diff, cssColor]);\n    }\n    var background = 'transparent';\n    if (dict.has('Background')) {\n      rgbColor = cs.getRgb(dict.get('Background'), 0);\n      background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n    }\n    if (!extendStart) {\n      colorStops.unshift([0, background]);\n      colorStops[1][0] += Shadings.SMALL_NUMBER;\n    }\n    if (!extendEnd) {\n      colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;\n      colorStops.push([1, background]);\n    }\n    this.colorStops = colorStops;\n  }\n  RadialAxial.prototype = {\n    getIR: function RadialAxial_getIR() {\n      var coordsArr = this.coordsArr;\n      var shadingType = this.shadingType;\n      var type, p0, p1, r0, r1;\n      if (shadingType === ShadingType.AXIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[2], coordsArr[3]];\n        r0 = null;\n        r1 = null;\n        type = 'axial';\n      } else if (shadingType === ShadingType.RADIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[3], coordsArr[4]];\n        r0 = coordsArr[2];\n        r1 = coordsArr[5];\n        type = 'radial';\n      } else {\n        (0, _util.unreachable)('getPattern type unknown: ' + shadingType);\n      }\n      var matrix = this.matrix;\n      if (matrix) {\n        p0 = _util.Util.applyTransform(p0, matrix);\n        p1 = _util.Util.applyTransform(p1, matrix);\n        if (shadingType === ShadingType.RADIAL) {\n          var scale = _util.Util.singularValueDecompose2dScale(matrix);\n          r0 *= scale[0];\n          r1 *= scale[1];\n        }\n      }\n      return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1];\n    }\n  };\n  return RadialAxial;\n}();\nShadings.Mesh = function MeshClosure() {\n  function MeshStreamReader(stream, context) {\n    this.stream = stream;\n    this.context = context;\n    this.buffer = 0;\n    this.bufferLength = 0;\n    var numComps = context.numComps;\n    this.tmpCompsBuf = new Float32Array(numComps);\n    var csNumComps = context.colorSpace.numComps;\n    this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;\n  }\n  MeshStreamReader.prototype = {\n    get hasData() {\n      if (this.stream.end) {\n        return this.stream.pos < this.stream.end;\n      }\n      if (this.bufferLength > 0) {\n        return true;\n      }\n      var nextByte = this.stream.getByte();\n      if (nextByte < 0) {\n        return false;\n      }\n      this.buffer = nextByte;\n      this.bufferLength = 8;\n      return true;\n    },\n    readBits: function MeshStreamReader_readBits(n) {\n      var buffer = this.buffer;\n      var bufferLength = this.bufferLength;\n      if (n === 32) {\n        if (bufferLength === 0) {\n          return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0;\n        }\n        buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte();\n        var nextByte = this.stream.getByte();\n        this.buffer = nextByte & (1 << bufferLength) - 1;\n        return (buffer << 8 - bufferLength | (nextByte & 0xFF) >> bufferLength) >>> 0;\n      }\n      if (n === 8 && bufferLength === 0) {\n        return this.stream.getByte();\n      }\n      while (bufferLength < n) {\n        buffer = buffer << 8 | this.stream.getByte();\n        bufferLength += 8;\n      }\n      bufferLength -= n;\n      this.bufferLength = bufferLength;\n      this.buffer = buffer & (1 << bufferLength) - 1;\n      return buffer >> bufferLength;\n    },\n    align: function MeshStreamReader_align() {\n      this.buffer = 0;\n      this.bufferLength = 0;\n    },\n    readFlag: function MeshStreamReader_readFlag() {\n      return this.readBits(this.context.bitsPerFlag);\n    },\n    readCoordinate: function MeshStreamReader_readCoordinate() {\n      var bitsPerCoordinate = this.context.bitsPerCoordinate;\n      var xi = this.readBits(bitsPerCoordinate);\n      var yi = this.readBits(bitsPerCoordinate);\n      var decode = this.context.decode;\n      var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;\n      return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];\n    },\n    readComponents: function MeshStreamReader_readComponents() {\n      var numComps = this.context.numComps;\n      var bitsPerComponent = this.context.bitsPerComponent;\n      var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;\n      var decode = this.context.decode;\n      var components = this.tmpCompsBuf;\n      for (var i = 0, j = 4; i < numComps; i++, j += 2) {\n        var ci = this.readBits(bitsPerComponent);\n        components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n      }\n      var color = this.tmpCsCompsBuf;\n      if (this.context.colorFn) {\n        this.context.colorFn(components, 0, color, 0);\n      }\n      return this.context.colorSpace.getRgb(color, 0);\n    }\n  };\n  function decodeType4Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var operators = [];\n    var ps = [];\n    var verticesLeft = 0;\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      if (verticesLeft === 0) {\n        if (!(0 <= f && f <= 2)) {\n          throw new _util.FormatError('Unknown type4 flag');\n        }\n        switch (f) {\n          case 0:\n            verticesLeft = 3;\n            break;\n          case 1:\n            ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n          case 2:\n            ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n        }\n        operators.push(f);\n      }\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n      verticesLeft--;\n      reader.align();\n    }\n    mesh.figures.push({\n      type: 'triangles',\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps)\n    });\n  }\n  function decodeType5Shading(mesh, reader, verticesPerRow) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = [];\n    while (reader.hasData) {\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n    }\n    mesh.figures.push({\n      type: 'lattice',\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n      verticesPerRow: verticesPerRow\n    });\n  }\n  var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n  var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n  var TRIANGLE_DENSITY = 20;\n  var getB = function getBClosure() {\n    function buildB(count) {\n      var lut = [];\n      for (var i = 0; i <= count; i++) {\n        var t = i / count,\n            t_ = 1 - t;\n        lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t]));\n      }\n      return lut;\n    }\n    var cache = [];\n    return function getB(count) {\n      if (!cache[count]) {\n        cache[count] = buildB(count);\n      }\n      return cache[count];\n    };\n  }();\n  function buildFigureFromPatch(mesh, index) {\n    var figure = mesh.figures[index];\n    (0, _util.assert)(figure.type === 'patch', 'Unexpected patch mesh figure');\n    var coords = mesh.coords,\n        colors = mesh.colors;\n    var pi = figure.coords;\n    var ci = figure.colors;\n    var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n    var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n    var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n    var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n    var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY / (mesh.bounds[2] - mesh.bounds[0]));\n    splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));\n    var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY / (mesh.bounds[3] - mesh.bounds[1]));\n    splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));\n    var verticesPerRow = splitXBy + 1;\n    var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var k = 0;\n    var cl = new Uint8Array(3),\n        cr = new Uint8Array(3);\n    var c0 = colors[ci[0]],\n        c1 = colors[ci[1]],\n        c2 = colors[ci[2]],\n        c3 = colors[ci[3]];\n    var bRow = getB(splitYBy),\n        bCol = getB(splitXBy);\n    for (var row = 0; row <= splitYBy; row++) {\n      cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0;\n      cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0;\n      cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0;\n      cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0;\n      cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;\n      cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;\n      for (var col = 0; col <= splitXBy; col++, k++) {\n        if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {\n          continue;\n        }\n        var x = 0,\n            y = 0;\n        var q = 0;\n        for (var i = 0; i <= 3; i++) {\n          for (var j = 0; j <= 3; j++, q++) {\n            var m = bRow[row][i] * bCol[col][j];\n            x += coords[pi[q]][0] * m;\n            y += coords[pi[q]][1] * m;\n          }\n        }\n        figureCoords[k] = coords.length;\n        coords.push([x, y]);\n        figureColors[k] = colors.length;\n        var newColor = new Uint8Array(3);\n        newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0;\n        newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0;\n        newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0;\n        colors.push(newColor);\n      }\n    }\n    figureCoords[0] = pi[0];\n    figureColors[0] = ci[0];\n    figureCoords[splitXBy] = pi[3];\n    figureColors[splitXBy] = ci[1];\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\n    figureColors[verticesPerRow * splitYBy] = ci[2];\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n    mesh.figures[index] = {\n      type: 'lattice',\n      coords: figureCoords,\n      colors: figureColors,\n      verticesPerRow: verticesPerRow\n    };\n  }\n  function decodeType6Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16);\n    var cs = new Int32Array(4);\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new _util.FormatError('Unknown type6 flag');\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        case 0:\n          ps[12] = pi + 3;\n          ps[13] = pi + 4;\n          ps[14] = pi + 5;\n          ps[15] = pi + 6;\n          ps[8] = pi + 2;\n          ps[11] = pi + 7;\n          ps[4] = pi + 1;\n          ps[7] = pi + 8;\n          ps[0] = pi;\n          ps[1] = pi + 11;\n          ps[2] = pi + 10;\n          ps[3] = pi + 9;\n          cs[2] = ci + 1;\n          cs[3] = ci + 2;\n          cs[0] = ci;\n          cs[1] = ci + 3;\n          break;\n        case 1:\n          tmp1 = ps[12];\n          tmp2 = ps[13];\n          tmp3 = ps[14];\n          tmp4 = ps[15];\n          ps[12] = tmp4;\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = tmp3;\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[2];\n          tmp2 = cs[3];\n          cs[2] = tmp2;\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[7];\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1];\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n        case 3:\n          ps[12] = ps[0];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[1];\n          ps[11] = pi + 3;\n          ps[4] = ps[2];\n          ps[7] = pi + 4;\n          ps[0] = ps[3];\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          cs[2] = cs[0];\n          cs[3] = ci;\n          cs[0] = cs[1];\n          cs[1] = ci + 1;\n          break;\n      }\n      ps[5] = coords.length;\n      coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);\n      ps[6] = coords.length;\n      coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]);\n      ps[9] = coords.length;\n      coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]);\n      ps[10] = coords.length;\n      coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);\n      mesh.figures.push({\n        type: 'patch',\n        coords: new Int32Array(ps),\n        colors: new Int32Array(cs)\n      });\n    }\n  }\n  function decodeType7Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16);\n    var cs = new Int32Array(4);\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new _util.FormatError('Unknown type7 flag');\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        case 0:\n          ps[12] = pi + 3;\n          ps[13] = pi + 4;\n          ps[14] = pi + 5;\n          ps[15] = pi + 6;\n          ps[8] = pi + 2;\n          ps[9] = pi + 13;\n          ps[10] = pi + 14;\n          ps[11] = pi + 7;\n          ps[4] = pi + 1;\n          ps[5] = pi + 12;\n          ps[6] = pi + 15;\n          ps[7] = pi + 8;\n          ps[0] = pi;\n          ps[1] = pi + 11;\n          ps[2] = pi + 10;\n          ps[3] = pi + 9;\n          cs[2] = ci + 1;\n          cs[3] = ci + 2;\n          cs[0] = ci;\n          cs[1] = ci + 3;\n          break;\n        case 1:\n          tmp1 = ps[12];\n          tmp2 = ps[13];\n          tmp3 = ps[14];\n          tmp4 = ps[15];\n          ps[12] = tmp4;\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = tmp3;\n          ps[9] = pi + 9;\n          ps[10] = pi + 10;\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[5] = pi + 8;\n          ps[6] = pi + 11;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[2];\n          tmp2 = cs[3];\n          cs[2] = tmp2;\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[7];\n          ps[9] = pi + 9;\n          ps[10] = pi + 10;\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[5] = pi + 8;\n          ps[6] = pi + 11;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1];\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n        case 3:\n          ps[12] = ps[0];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[1];\n          ps[9] = pi + 9;\n          ps[10] = pi + 10;\n          ps[11] = pi + 3;\n          ps[4] = ps[2];\n          ps[5] = pi + 8;\n          ps[6] = pi + 11;\n          ps[7] = pi + 4;\n          ps[0] = ps[3];\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          cs[2] = cs[0];\n          cs[3] = ci;\n          cs[0] = cs[1];\n          cs[1] = ci + 1;\n          break;\n      }\n      mesh.figures.push({\n        type: 'patch',\n        coords: new Int32Array(ps),\n        colors: new Int32Array(cs)\n      });\n    }\n  }\n  function updateBounds(mesh) {\n    var minX = mesh.coords[0][0],\n        minY = mesh.coords[0][1],\n        maxX = minX,\n        maxY = minY;\n    for (var i = 1, ii = mesh.coords.length; i < ii; i++) {\n      var x = mesh.coords[i][0],\n          y = mesh.coords[i][1];\n      minX = minX > x ? x : minX;\n      minY = minY > y ? y : minY;\n      maxX = maxX < x ? x : maxX;\n      maxY = maxY < y ? y : maxY;\n    }\n    mesh.bounds = [minX, minY, maxX, maxY];\n  }\n  function packData(mesh) {\n    var i, ii, j, jj;\n    var coords = mesh.coords;\n    var coordsPacked = new Float32Array(coords.length * 2);\n    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n      var xy = coords[i];\n      coordsPacked[j++] = xy[0];\n      coordsPacked[j++] = xy[1];\n    }\n    mesh.coords = coordsPacked;\n    var colors = mesh.colors;\n    var colorsPacked = new Uint8Array(colors.length * 3);\n    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n      var c = colors[i];\n      colorsPacked[j++] = c[0];\n      colorsPacked[j++] = c[1];\n      colorsPacked[j++] = c[2];\n    }\n    mesh.colors = colorsPacked;\n    var figures = mesh.figures;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      var figure = figures[i],\n          ps = figure.coords,\n          cs = figure.colors;\n      for (j = 0, jj = ps.length; j < jj; j++) {\n        ps[j] *= 2;\n        cs[j] *= 3;\n      }\n    }\n  }\n  function Mesh(stream, matrix, xref, res, pdfFunctionFactory) {\n    if (!(0, _primitives.isStream)(stream)) {\n      throw new _util.FormatError('Mesh data is not a stream');\n    }\n    var dict = stream.dict;\n    this.matrix = matrix;\n    this.shadingType = dict.get('ShadingType');\n    this.type = 'Pattern';\n    this.bbox = dict.getArray('BBox');\n    var cs = dict.get('ColorSpace', 'CS');\n    cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory);\n    this.cs = cs;\n    this.background = dict.has('Background') ? cs.getRgb(dict.get('Background'), 0) : null;\n    var fnObj = dict.get('Function');\n    var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n    this.coords = [];\n    this.colors = [];\n    this.figures = [];\n    var decodeContext = {\n      bitsPerCoordinate: dict.get('BitsPerCoordinate'),\n      bitsPerComponent: dict.get('BitsPerComponent'),\n      bitsPerFlag: dict.get('BitsPerFlag'),\n      decode: dict.getArray('Decode'),\n      colorFn: fn,\n      colorSpace: cs,\n      numComps: fn ? 1 : cs.numComps\n    };\n    var reader = new MeshStreamReader(stream, decodeContext);\n    var patchMesh = false;\n    switch (this.shadingType) {\n      case ShadingType.FREE_FORM_MESH:\n        decodeType4Shading(this, reader);\n        break;\n      case ShadingType.LATTICE_FORM_MESH:\n        var verticesPerRow = dict.get('VerticesPerRow') | 0;\n        if (verticesPerRow < 2) {\n          throw new _util.FormatError('Invalid VerticesPerRow');\n        }\n        decodeType5Shading(this, reader, verticesPerRow);\n        break;\n      case ShadingType.COONS_PATCH_MESH:\n        decodeType6Shading(this, reader);\n        patchMesh = true;\n        break;\n      case ShadingType.TENSOR_PATCH_MESH:\n        decodeType7Shading(this, reader);\n        patchMesh = true;\n        break;\n      default:\n        (0, _util.unreachable)('Unsupported mesh type.');\n        break;\n    }\n    if (patchMesh) {\n      updateBounds(this);\n      for (var i = 0, ii = this.figures.length; i < ii; i++) {\n        buildFigureFromPatch(this, i);\n      }\n    }\n    updateBounds(this);\n    packData(this);\n  }\n  Mesh.prototype = {\n    getIR: function Mesh_getIR() {\n      return ['Mesh', this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, this.bbox, this.background];\n    }\n  };\n  return Mesh;\n}();\nShadings.Dummy = function DummyClosure() {\n  function Dummy() {\n    this.type = 'Pattern';\n  }\n  Dummy.prototype = {\n    getIR: function Dummy_getIR() {\n      return ['Dummy'];\n    }\n  };\n  return Dummy;\n}();\nfunction getTilingPatternIR(operatorList, dict, args) {\n  var matrix = dict.getArray('Matrix');\n  var bbox = _util.Util.normalizeRect(dict.getArray('BBox'));\n  var xstep = dict.get('XStep');\n  var ystep = dict.get('YStep');\n  var paintType = dict.get('PaintType');\n  var tilingType = dict.get('TilingType');\n  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n    throw new _util.FormatError('Invalid getTilingPatternIR /BBox array: [' + bbox + '].');\n  }\n  return ['TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];\n}\nexports.Pattern = Pattern;\nexports.getTilingPatternIR = getTilingPatternIR;\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.bidi = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar baseTypes = ['BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S', 'WS', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'ON', 'ES', 'CS', 'ES', 'CS', 'CS', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'CS', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'CS', 'ON', 'ET', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'BN', 'ON', 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON', 'EN', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'];\nvar arabicTypes = ['AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ON', 'ON', 'AL', 'ET', 'ET', 'AL', 'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', '', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'NSM', 'NSM', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL'];\nfunction isOdd(i) {\n  return (i & 1) !== 0;\n}\nfunction isEven(i) {\n  return (i & 1) === 0;\n}\nfunction findUnequal(arr, start, value) {\n  for (var j = start, jj = arr.length; j < jj; ++j) {\n    if (arr[j] !== value) {\n      return j;\n    }\n  }\n  return j;\n}\nfunction setValues(arr, start, end, value) {\n  for (var j = start; j < end; ++j) {\n    arr[j] = value;\n  }\n}\nfunction reverseValues(arr, start, end) {\n  for (var i = start, j = end - 1; i < j; ++i, --j) {\n    var temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n  }\n}\nfunction createBidiText(str, isLTR, vertical) {\n  return {\n    str: str,\n    dir: vertical ? 'ttb' : isLTR ? 'ltr' : 'rtl'\n  };\n}\nvar chars = [];\nvar types = [];\nfunction bidi(str, startLevel, vertical) {\n  var isLTR = true;\n  var strLength = str.length;\n  if (strLength === 0 || vertical) {\n    return createBidiText(str, isLTR, vertical);\n  }\n  chars.length = strLength;\n  types.length = strLength;\n  var numBidi = 0;\n  var i, ii;\n  for (i = 0; i < strLength; ++i) {\n    chars[i] = str.charAt(i);\n    var charCode = str.charCodeAt(i);\n    var charType = 'L';\n    if (charCode <= 0x00ff) {\n      charType = baseTypes[charCode];\n    } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n      charType = 'R';\n    } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n      charType = arabicTypes[charCode & 0xff];\n      if (!charType) {\n        (0, _util.warn)('Bidi: invalid Unicode character ' + charCode.toString(16));\n      }\n    } else if (0x0700 <= charCode && charCode <= 0x08AC) {\n      charType = 'AL';\n    }\n    if (charType === 'R' || charType === 'AL' || charType === 'AN') {\n      numBidi++;\n    }\n    types[i] = charType;\n  }\n  if (numBidi === 0) {\n    isLTR = true;\n    return createBidiText(str, isLTR);\n  }\n  if (startLevel === -1) {\n    if (numBidi / strLength < 0.3) {\n      isLTR = true;\n      startLevel = 0;\n    } else {\n      isLTR = false;\n      startLevel = 1;\n    }\n  }\n  var levels = [];\n  for (i = 0; i < strLength; ++i) {\n    levels[i] = startLevel;\n  }\n  var e = isOdd(startLevel) ? 'R' : 'L';\n  var sor = e;\n  var eor = sor;\n  var lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === 'NSM') {\n      types[i] = lastType;\n    } else {\n      lastType = types[i];\n    }\n  }\n  lastType = sor;\n  var t;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === 'EN') {\n      types[i] = lastType === 'AL' ? 'AN' : 'EN';\n    } else if (t === 'R' || t === 'L' || t === 'AL') {\n      lastType = t;\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === 'AL') {\n      types[i] = 'R';\n    }\n  }\n  for (i = 1; i < strLength - 1; ++i) {\n    if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') {\n      types[i] = 'EN';\n    }\n    if (types[i] === 'CS' && (types[i - 1] === 'EN' || types[i - 1] === 'AN') && types[i + 1] === types[i - 1]) {\n      types[i] = types[i - 1];\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === 'EN') {\n      var j;\n      for (j = i - 1; j >= 0; --j) {\n        if (types[j] !== 'ET') {\n          break;\n        }\n        types[j] = 'EN';\n      }\n      for (j = i + 1; j < strLength; ++j) {\n        if (types[j] !== 'ET') {\n          break;\n        }\n        types[j] = 'EN';\n      }\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') {\n      types[i] = 'ON';\n    }\n  }\n  lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === 'EN') {\n      types[i] = lastType === 'L' ? 'L' : 'EN';\n    } else if (t === 'R' || t === 'L') {\n      lastType = t;\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === 'ON') {\n      var end = findUnequal(types, i + 1, 'ON');\n      var before = sor;\n      if (i > 0) {\n        before = types[i - 1];\n      }\n      var after = eor;\n      if (end + 1 < strLength) {\n        after = types[end + 1];\n      }\n      if (before !== 'L') {\n        before = 'R';\n      }\n      if (after !== 'L') {\n        after = 'R';\n      }\n      if (before === after) {\n        setValues(types, i, end, before);\n      }\n      i = end - 1;\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === 'ON') {\n      types[i] = e;\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (isEven(levels[i])) {\n      if (t === 'R') {\n        levels[i] += 1;\n      } else if (t === 'AN' || t === 'EN') {\n        levels[i] += 2;\n      }\n    } else {\n      if (t === 'L' || t === 'AN' || t === 'EN') {\n        levels[i] += 1;\n      }\n    }\n  }\n  var highestLevel = -1;\n  var lowestOddLevel = 99;\n  var level;\n  for (i = 0, ii = levels.length; i < ii; ++i) {\n    level = levels[i];\n    if (highestLevel < level) {\n      highestLevel = level;\n    }\n    if (lowestOddLevel > level && isOdd(level)) {\n      lowestOddLevel = level;\n    }\n  }\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\n    var start = -1;\n    for (i = 0, ii = levels.length; i < ii; ++i) {\n      if (levels[i] < level) {\n        if (start >= 0) {\n          reverseValues(chars, start, i);\n          start = -1;\n        }\n      } else if (start < 0) {\n        start = i;\n      }\n    }\n    if (start >= 0) {\n      reverseValues(chars, start, levels.length);\n    }\n  }\n  for (i = 0, ii = chars.length; i < ii; ++i) {\n    var ch = chars[i];\n    if (ch === '<' || ch === '>') {\n      chars[i] = '';\n    }\n  }\n  return createBidiText(chars.join(''), isLTR);\n}\nexports.bidi = bidi;\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getMetrics = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar getMetrics = (0, _util.getLookupTableFactory)(function (t) {\n  t['Courier'] = 600;\n  t['Courier-Bold'] = 600;\n  t['Courier-BoldOblique'] = 600;\n  t['Courier-Oblique'] = 600;\n  t['Helvetica'] = (0, _util.getLookupTableFactory)(function (t) {\n    t['space'] = 278;\n    t['exclam'] = 278;\n    t['quotedbl'] = 355;\n    t['numbersign'] = 556;\n    t['dollar'] = 556;\n    t['percent'] = 889;\n    t['ampersand'] = 667;\n    t['quoteright'] = 222;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 389;\n    t['plus'] = 584;\n    t['comma'] = 278;\n    t['hyphen'] = 333;\n    t['period'] = 278;\n    t['slash'] = 278;\n    t['zero'] = 556;\n    t['one'] = 556;\n    t['two'] = 556;\n    t['three'] = 556;\n    t['four'] = 556;\n    t['five'] = 556;\n    t['six'] = 556;\n    t['seven'] = 556;\n    t['eight'] = 556;\n    t['nine'] = 556;\n    t['colon'] = 278;\n    t['semicolon'] = 278;\n    t['less'] = 584;\n    t['equal'] = 584;\n    t['greater'] = 584;\n    t['question'] = 556;\n    t['at'] = 1015;\n    t['A'] = 667;\n    t['B'] = 667;\n    t['C'] = 722;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 611;\n    t['G'] = 778;\n    t['H'] = 722;\n    t['I'] = 278;\n    t['J'] = 500;\n    t['K'] = 667;\n    t['L'] = 556;\n    t['M'] = 833;\n    t['N'] = 722;\n    t['O'] = 778;\n    t['P'] = 667;\n    t['Q'] = 778;\n    t['R'] = 722;\n    t['S'] = 667;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 667;\n    t['W'] = 944;\n    t['X'] = 667;\n    t['Y'] = 667;\n    t['Z'] = 611;\n    t['bracketleft'] = 278;\n    t['backslash'] = 278;\n    t['bracketright'] = 278;\n    t['asciicircum'] = 469;\n    t['underscore'] = 556;\n    t['quoteleft'] = 222;\n    t['a'] = 556;\n    t['b'] = 556;\n    t['c'] = 500;\n    t['d'] = 556;\n    t['e'] = 556;\n    t['f'] = 278;\n    t['g'] = 556;\n    t['h'] = 556;\n    t['i'] = 222;\n    t['j'] = 222;\n    t['k'] = 500;\n    t['l'] = 222;\n    t['m'] = 833;\n    t['n'] = 556;\n    t['o'] = 556;\n    t['p'] = 556;\n    t['q'] = 556;\n    t['r'] = 333;\n    t['s'] = 500;\n    t['t'] = 278;\n    t['u'] = 556;\n    t['v'] = 500;\n    t['w'] = 722;\n    t['x'] = 500;\n    t['y'] = 500;\n    t['z'] = 500;\n    t['braceleft'] = 334;\n    t['bar'] = 260;\n    t['braceright'] = 334;\n    t['asciitilde'] = 584;\n    t['exclamdown'] = 333;\n    t['cent'] = 556;\n    t['sterling'] = 556;\n    t['fraction'] = 167;\n    t['yen'] = 556;\n    t['florin'] = 556;\n    t['section'] = 556;\n    t['currency'] = 556;\n    t['quotesingle'] = 191;\n    t['quotedblleft'] = 333;\n    t['guillemotleft'] = 556;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 500;\n    t['fl'] = 500;\n    t['endash'] = 556;\n    t['dagger'] = 556;\n    t['daggerdbl'] = 556;\n    t['periodcentered'] = 278;\n    t['paragraph'] = 537;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 222;\n    t['quotedblbase'] = 333;\n    t['quotedblright'] = 333;\n    t['guillemotright'] = 556;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 611;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 1000;\n    t['ordfeminine'] = 370;\n    t['Lslash'] = 556;\n    t['Oslash'] = 778;\n    t['OE'] = 1000;\n    t['ordmasculine'] = 365;\n    t['ae'] = 889;\n    t['dotlessi'] = 278;\n    t['lslash'] = 222;\n    t['oslash'] = 611;\n    t['oe'] = 944;\n    t['germandbls'] = 611;\n    t['Idieresis'] = 278;\n    t['eacute'] = 556;\n    t['abreve'] = 556;\n    t['uhungarumlaut'] = 556;\n    t['ecaron'] = 556;\n    t['Ydieresis'] = 667;\n    t['divide'] = 584;\n    t['Yacute'] = 667;\n    t['Acircumflex'] = 667;\n    t['aacute'] = 556;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 500;\n    t['scommaaccent'] = 500;\n    t['ecircumflex'] = 556;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 556;\n    t['Uacute'] = 722;\n    t['uogonek'] = 556;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 737;\n    t['Emacron'] = 667;\n    t['ccaron'] = 500;\n    t['aring'] = 556;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 222;\n    t['agrave'] = 556;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 722;\n    t['atilde'] = 556;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 500;\n    t['scedilla'] = 500;\n    t['iacute'] = 278;\n    t['lozenge'] = 471;\n    t['Rcaron'] = 722;\n    t['Gcommaaccent'] = 778;\n    t['ucircumflex'] = 556;\n    t['acircumflex'] = 556;\n    t['Amacron'] = 667;\n    t['rcaron'] = 333;\n    t['ccedilla'] = 500;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 667;\n    t['Omacron'] = 778;\n    t['Racute'] = 722;\n    t['Sacute'] = 667;\n    t['dcaron'] = 643;\n    t['Umacron'] = 722;\n    t['uring'] = 556;\n    t['threesuperior'] = 333;\n    t['Ograve'] = 778;\n    t['Agrave'] = 667;\n    t['Abreve'] = 667;\n    t['multiply'] = 584;\n    t['uacute'] = 556;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 476;\n    t['ydieresis'] = 500;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 556;\n    t['edieresis'] = 556;\n    t['cacute'] = 500;\n    t['nacute'] = 556;\n    t['umacron'] = 556;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 278;\n    t['plusminus'] = 584;\n    t['brokenbar'] = 260;\n    t['registered'] = 737;\n    t['Gbreve'] = 778;\n    t['Idotaccent'] = 278;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 333;\n    t['omacron'] = 556;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 722;\n    t['lcommaaccent'] = 222;\n    t['tcaron'] = 317;\n    t['eogonek'] = 556;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 667;\n    t['Adieresis'] = 667;\n    t['egrave'] = 556;\n    t['zacute'] = 500;\n    t['iogonek'] = 222;\n    t['Oacute'] = 778;\n    t['oacute'] = 556;\n    t['amacron'] = 556;\n    t['sacute'] = 500;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 778;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 556;\n    t['twosuperior'] = 333;\n    t['Odieresis'] = 778;\n    t['mu'] = 556;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 556;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 556;\n    t['threequarters'] = 834;\n    t['Scedilla'] = 667;\n    t['lcaron'] = 299;\n    t['Kcommaaccent'] = 667;\n    t['Lacute'] = 556;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 556;\n    t['Igrave'] = 278;\n    t['Imacron'] = 278;\n    t['Lcaron'] = 556;\n    t['onehalf'] = 834;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 556;\n    t['ntilde'] = 556;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 556;\n    t['gbreve'] = 556;\n    t['onequarter'] = 834;\n    t['Scaron'] = 667;\n    t['Scommaaccent'] = 667;\n    t['Ohungarumlaut'] = 778;\n    t['degree'] = 400;\n    t['ograve'] = 556;\n    t['Ccaron'] = 722;\n    t['ugrave'] = 556;\n    t['radical'] = 453;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 333;\n    t['Ntilde'] = 722;\n    t['otilde'] = 556;\n    t['Rcommaaccent'] = 722;\n    t['Lcommaaccent'] = 556;\n    t['Atilde'] = 667;\n    t['Aogonek'] = 667;\n    t['Aring'] = 667;\n    t['Otilde'] = 778;\n    t['zdotaccent'] = 500;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 278;\n    t['kcommaaccent'] = 500;\n    t['minus'] = 584;\n    t['Icircumflex'] = 278;\n    t['ncaron'] = 556;\n    t['tcommaaccent'] = 278;\n    t['logicalnot'] = 584;\n    t['odieresis'] = 556;\n    t['udieresis'] = 556;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 556;\n    t['eth'] = 556;\n    t['zcaron'] = 500;\n    t['ncommaaccent'] = 556;\n    t['onesuperior'] = 333;\n    t['imacron'] = 278;\n    t['Euro'] = 556;\n  });\n  t['Helvetica-Bold'] = (0, _util.getLookupTableFactory)(function (t) {\n    t['space'] = 278;\n    t['exclam'] = 333;\n    t['quotedbl'] = 474;\n    t['numbersign'] = 556;\n    t['dollar'] = 556;\n    t['percent'] = 889;\n    t['ampersand'] = 722;\n    t['quoteright'] = 278;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 389;\n    t['plus'] = 584;\n    t['comma'] = 278;\n    t['hyphen'] = 333;\n    t['period'] = 278;\n    t['slash'] = 278;\n    t['zero'] = 556;\n    t['one'] = 556;\n    t['two'] = 556;\n    t['three'] = 556;\n    t['four'] = 556;\n    t['five'] = 556;\n    t['six'] = 556;\n    t['seven'] = 556;\n    t['eight'] = 556;\n    t['nine'] = 556;\n    t['colon'] = 333;\n    t['semicolon'] = 333;\n    t['less'] = 584;\n    t['equal'] = 584;\n    t['greater'] = 584;\n    t['question'] = 611;\n    t['at'] = 975;\n    t['A'] = 722;\n    t['B'] = 722;\n    t['C'] = 722;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 611;\n    t['G'] = 778;\n    t['H'] = 722;\n    t['I'] = 278;\n    t['J'] = 556;\n    t['K'] = 722;\n    t['L'] = 611;\n    t['M'] = 833;\n    t['N'] = 722;\n    t['O'] = 778;\n    t['P'] = 667;\n    t['Q'] = 778;\n    t['R'] = 722;\n    t['S'] = 667;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 667;\n    t['W'] = 944;\n    t['X'] = 667;\n    t['Y'] = 667;\n    t['Z'] = 611;\n    t['bracketleft'] = 333;\n    t['backslash'] = 278;\n    t['bracketright'] = 333;\n    t['asciicircum'] = 584;\n    t['underscore'] = 556;\n    t['quoteleft'] = 278;\n    t['a'] = 556;\n    t['b'] = 611;\n    t['c'] = 556;\n    t['d'] = 611;\n    t['e'] = 556;\n    t['f'] = 333;\n    t['g'] = 611;\n    t['h'] = 611;\n    t['i'] = 278;\n    t['j'] = 278;\n    t['k'] = 556;\n    t['l'] = 278;\n    t['m'] = 889;\n    t['n'] = 611;\n    t['o'] = 611;\n    t['p'] = 611;\n    t['q'] = 611;\n    t['r'] = 389;\n    t['s'] = 556;\n    t['t'] = 333;\n    t['u'] = 611;\n    t['v'] = 556;\n    t['w'] = 778;\n    t['x'] = 556;\n    t['y'] = 556;\n    t['z'] = 500;\n    t['braceleft'] = 389;\n    t['bar'] = 280;\n    t['braceright'] = 389;\n    t['asciitilde'] = 584;\n    t['exclamdown'] = 333;\n    t['cent'] = 556;\n    t['sterling'] = 556;\n    t['fraction'] = 167;\n    t['yen'] = 556;\n    t['florin'] = 556;\n    t['section'] = 556;\n    t['currency'] = 556;\n    t['quotesingle'] = 238;\n    t['quotedblleft'] = 500;\n    t['guillemotleft'] = 556;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 611;\n    t['fl'] = 611;\n    t['endash'] = 556;\n    t['dagger'] = 556;\n    t['daggerdbl'] = 556;\n    t['periodcentered'] = 278;\n    t['paragraph'] = 556;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 278;\n    t['quotedblbase'] = 500;\n    t['quotedblright'] = 500;\n    t['guillemotright'] = 556;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 611;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 1000;\n    t['ordfeminine'] = 370;\n    t['Lslash'] = 611;\n    t['Oslash'] = 778;\n    t['OE'] = 1000;\n    t['ordmasculine'] = 365;\n    t['ae'] = 889;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 611;\n    t['oe'] = 944;\n    t['germandbls'] = 611;\n    t['Idieresis'] = 278;\n    t['eacute'] = 556;\n    t['abreve'] = 556;\n    t['uhungarumlaut'] = 611;\n    t['ecaron'] = 556;\n    t['Ydieresis'] = 667;\n    t['divide'] = 584;\n    t['Yacute'] = 667;\n    t['Acircumflex'] = 722;\n    t['aacute'] = 556;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 556;\n    t['scommaaccent'] = 556;\n    t['ecircumflex'] = 556;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 556;\n    t['Uacute'] = 722;\n    t['uogonek'] = 611;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 737;\n    t['Emacron'] = 667;\n    t['ccaron'] = 556;\n    t['aring'] = 556;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 278;\n    t['agrave'] = 556;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 722;\n    t['atilde'] = 556;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 556;\n    t['scedilla'] = 556;\n    t['iacute'] = 278;\n    t['lozenge'] = 494;\n    t['Rcaron'] = 722;\n    t['Gcommaaccent'] = 778;\n    t['ucircumflex'] = 611;\n    t['acircumflex'] = 556;\n    t['Amacron'] = 722;\n    t['rcaron'] = 389;\n    t['ccedilla'] = 556;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 667;\n    t['Omacron'] = 778;\n    t['Racute'] = 722;\n    t['Sacute'] = 667;\n    t['dcaron'] = 743;\n    t['Umacron'] = 722;\n    t['uring'] = 611;\n    t['threesuperior'] = 333;\n    t['Ograve'] = 778;\n    t['Agrave'] = 722;\n    t['Abreve'] = 722;\n    t['multiply'] = 584;\n    t['uacute'] = 611;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 494;\n    t['ydieresis'] = 556;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 556;\n    t['edieresis'] = 556;\n    t['cacute'] = 556;\n    t['nacute'] = 611;\n    t['umacron'] = 611;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 278;\n    t['plusminus'] = 584;\n    t['brokenbar'] = 280;\n    t['registered'] = 737;\n    t['Gbreve'] = 778;\n    t['Idotaccent'] = 278;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 389;\n    t['omacron'] = 611;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 722;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 389;\n    t['eogonek'] = 556;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 722;\n    t['Adieresis'] = 722;\n    t['egrave'] = 556;\n    t['zacute'] = 500;\n    t['iogonek'] = 278;\n    t['Oacute'] = 778;\n    t['oacute'] = 611;\n    t['amacron'] = 556;\n    t['sacute'] = 556;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 778;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 611;\n    t['twosuperior'] = 333;\n    t['Odieresis'] = 778;\n    t['mu'] = 611;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 611;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 611;\n    t['threequarters'] = 834;\n    t['Scedilla'] = 667;\n    t['lcaron'] = 400;\n    t['Kcommaaccent'] = 722;\n    t['Lacute'] = 611;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 556;\n    t['Igrave'] = 278;\n    t['Imacron'] = 278;\n    t['Lcaron'] = 611;\n    t['onehalf'] = 834;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 611;\n    t['ntilde'] = 611;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 556;\n    t['gbreve'] = 611;\n    t['onequarter'] = 834;\n    t['Scaron'] = 667;\n    t['Scommaaccent'] = 667;\n    t['Ohungarumlaut'] = 778;\n    t['degree'] = 400;\n    t['ograve'] = 611;\n    t['Ccaron'] = 722;\n    t['ugrave'] = 611;\n    t['radical'] = 549;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 389;\n    t['Ntilde'] = 722;\n    t['otilde'] = 611;\n    t['Rcommaaccent'] = 722;\n    t['Lcommaaccent'] = 611;\n    t['Atilde'] = 722;\n    t['Aogonek'] = 722;\n    t['Aring'] = 722;\n    t['Otilde'] = 778;\n    t['zdotaccent'] = 500;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 278;\n    t['kcommaaccent'] = 556;\n    t['minus'] = 584;\n    t['Icircumflex'] = 278;\n    t['ncaron'] = 611;\n    t['tcommaaccent'] = 333;\n    t['logicalnot'] = 584;\n    t['odieresis'] = 611;\n    t['udieresis'] = 611;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 611;\n    t['eth'] = 611;\n    t['zcaron'] = 500;\n    t['ncommaaccent'] = 611;\n    t['onesuperior'] = 333;\n    t['imacron'] = 278;\n    t['Euro'] = 556;\n  });\n  t['Helvetica-BoldOblique'] = (0, _util.getLookupTableFactory)(function (t) {\n    t['space'] = 278;\n    t['exclam'] = 333;\n    t['quotedbl'] = 474;\n    t['numbersign'] = 556;\n    t['dollar'] = 556;\n    t['percent'] = 889;\n    t['ampersand'] = 722;\n    t['quoteright'] = 278;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 389;\n    t['plus'] = 584;\n    t['comma'] = 278;\n    t['hyphen'] = 333;\n    t['period'] = 278;\n    t['slash'] = 278;\n    t['zero'] = 556;\n    t['one'] = 556;\n    t['two'] = 556;\n    t['three'] = 556;\n    t['four'] = 556;\n    t['five'] = 556;\n    t['six'] = 556;\n    t['seven'] = 556;\n    t['eight'] = 556;\n    t['nine'] = 556;\n    t['colon'] = 333;\n    t['semicolon'] = 333;\n    t['less'] = 584;\n    t['equal'] = 584;\n    t['greater'] = 584;\n    t['question'] = 611;\n    t['at'] = 975;\n    t['A'] = 722;\n    t['B'] = 722;\n    t['C'] = 722;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 611;\n    t['G'] = 778;\n    t['H'] = 722;\n    t['I'] = 278;\n    t['J'] = 556;\n    t['K'] = 722;\n    t['L'] = 611;\n    t['M'] = 833;\n    t['N'] = 722;\n    t['O'] = 778;\n    t['P'] = 667;\n    t['Q'] = 778;\n    t['R'] = 722;\n    t['S'] = 667;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 667;\n    t['W'] = 944;\n    t['X'] = 667;\n    t['Y'] = 667;\n    t['Z'] = 611;\n    t['bracketleft'] = 333;\n    t['backslash'] = 278;\n    t['bracketright'] = 333;\n    t['asciicircum'] = 584;\n    t['underscore'] = 556;\n    t['quoteleft'] = 278;\n    t['a'] = 556;\n    t['b'] = 611;\n    t['c'] = 556;\n    t['d'] = 611;\n    t['e'] = 556;\n    t['f'] = 333;\n    t['g'] = 611;\n    t['h'] = 611;\n    t['i'] = 278;\n    t['j'] = 278;\n    t['k'] = 556;\n    t['l'] = 278;\n    t['m'] = 889;\n    t['n'] = 611;\n    t['o'] = 611;\n    t['p'] = 611;\n    t['q'] = 611;\n    t['r'] = 389;\n    t['s'] = 556;\n    t['t'] = 333;\n    t['u'] = 611;\n    t['v'] = 556;\n    t['w'] = 778;\n    t['x'] = 556;\n    t['y'] = 556;\n    t['z'] = 500;\n    t['braceleft'] = 389;\n    t['bar'] = 280;\n    t['braceright'] = 389;\n    t['asciitilde'] = 584;\n    t['exclamdown'] = 333;\n    t['cent'] = 556;\n    t['sterling'] = 556;\n    t['fraction'] = 167;\n    t['yen'] = 556;\n    t['florin'] = 556;\n    t['section'] = 556;\n    t['currency'] = 556;\n    t['quotesingle'] = 238;\n    t['quotedblleft'] = 500;\n    t['guillemotleft'] = 556;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 611;\n    t['fl'] = 611;\n    t['endash'] = 556;\n    t['dagger'] = 556;\n    t['daggerdbl'] = 556;\n    t['periodcentered'] = 278;\n    t['paragraph'] = 556;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 278;\n    t['quotedblbase'] = 500;\n    t['quotedblright'] = 500;\n    t['guillemotright'] = 556;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 611;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 1000;\n    t['ordfeminine'] = 370;\n    t['Lslash'] = 611;\n    t['Oslash'] = 778;\n    t['OE'] = 1000;\n    t['ordmasculine'] = 365;\n    t['ae'] = 889;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 611;\n    t['oe'] = 944;\n    t['germandbls'] = 611;\n    t['Idieresis'] = 278;\n    t['eacute'] = 556;\n    t['abreve'] = 556;\n    t['uhungarumlaut'] = 611;\n    t['ecaron'] = 556;\n    t['Ydieresis'] = 667;\n    t['divide'] = 584;\n    t['Yacute'] = 667;\n    t['Acircumflex'] = 722;\n    t['aacute'] = 556;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 556;\n    t['scommaaccent'] = 556;\n    t['ecircumflex'] = 556;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 556;\n    t['Uacute'] = 722;\n    t['uogonek'] = 611;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 737;\n    t['Emacron'] = 667;\n    t['ccaron'] = 556;\n    t['aring'] = 556;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 278;\n    t['agrave'] = 556;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 722;\n    t['atilde'] = 556;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 556;\n    t['scedilla'] = 556;\n    t['iacute'] = 278;\n    t['lozenge'] = 494;\n    t['Rcaron'] = 722;\n    t['Gcommaaccent'] = 778;\n    t['ucircumflex'] = 611;\n    t['acircumflex'] = 556;\n    t['Amacron'] = 722;\n    t['rcaron'] = 389;\n    t['ccedilla'] = 556;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 667;\n    t['Omacron'] = 778;\n    t['Racute'] = 722;\n    t['Sacute'] = 667;\n    t['dcaron'] = 743;\n    t['Umacron'] = 722;\n    t['uring'] = 611;\n    t['threesuperior'] = 333;\n    t['Ograve'] = 778;\n    t['Agrave'] = 722;\n    t['Abreve'] = 722;\n    t['multiply'] = 584;\n    t['uacute'] = 611;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 494;\n    t['ydieresis'] = 556;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 556;\n    t['edieresis'] = 556;\n    t['cacute'] = 556;\n    t['nacute'] = 611;\n    t['umacron'] = 611;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 278;\n    t['plusminus'] = 584;\n    t['brokenbar'] = 280;\n    t['registered'] = 737;\n    t['Gbreve'] = 778;\n    t['Idotaccent'] = 278;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 389;\n    t['omacron'] = 611;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 722;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 389;\n    t['eogonek'] = 556;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 722;\n    t['Adieresis'] = 722;\n    t['egrave'] = 556;\n    t['zacute'] = 500;\n    t['iogonek'] = 278;\n    t['Oacute'] = 778;\n    t['oacute'] = 611;\n    t['amacron'] = 556;\n    t['sacute'] = 556;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 778;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 611;\n    t['twosuperior'] = 333;\n    t['Odieresis'] = 778;\n    t['mu'] = 611;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 611;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 611;\n    t['threequarters'] = 834;\n    t['Scedilla'] = 667;\n    t['lcaron'] = 400;\n    t['Kcommaaccent'] = 722;\n    t['Lacute'] = 611;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 556;\n    t['Igrave'] = 278;\n    t['Imacron'] = 278;\n    t['Lcaron'] = 611;\n    t['onehalf'] = 834;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 611;\n    t['ntilde'] = 611;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 556;\n    t['gbreve'] = 611;\n    t['onequarter'] = 834;\n    t['Scaron'] = 667;\n    t['Scommaaccent'] = 667;\n    t['Ohungarumlaut'] = 778;\n    t['degree'] = 400;\n    t['ograve'] = 611;\n    t['Ccaron'] = 722;\n    t['ugrave'] = 611;\n    t['radical'] = 549;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 389;\n    t['Ntilde'] = 722;\n    t['otilde'] = 611;\n    t['Rcommaaccent'] = 722;\n    t['Lcommaaccent'] = 611;\n    t['Atilde'] = 722;\n    t['Aogonek'] = 722;\n    t['Aring'] = 722;\n    t['Otilde'] = 778;\n    t['zdotaccent'] = 500;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 278;\n    t['kcommaaccent'] = 556;\n    t['minus'] = 584;\n    t['Icircumflex'] = 278;\n    t['ncaron'] = 611;\n    t['tcommaaccent'] = 333;\n    t['logicalnot'] = 584;\n    t['odieresis'] = 611;\n    t['udieresis'] = 611;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 611;\n    t['eth'] = 611;\n    t['zcaron'] = 500;\n    t['ncommaaccent'] = 611;\n    t['onesuperior'] = 333;\n    t['imacron'] = 278;\n    t['Euro'] = 556;\n  });\n  t['Helvetica-Oblique'] = (0, _util.getLookupTableFactory)(function (t) {\n    t['space'] = 278;\n    t['exclam'] = 278;\n    t['quotedbl'] = 355;\n    t['numbersign'] = 556;\n    t['dollar'] = 556;\n    t['percent'] = 889;\n    t['ampersand'] = 667;\n    t['quoteright'] = 222;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 389;\n    t['plus'] = 584;\n    t['comma'] = 278;\n    t['hyphen'] = 333;\n    t['period'] = 278;\n    t['slash'] = 278;\n    t['zero'] = 556;\n    t['one'] = 556;\n    t['two'] = 556;\n    t['three'] = 556;\n    t['four'] = 556;\n    t['five'] = 556;\n    t['six'] = 556;\n    t['seven'] = 556;\n    t['eight'] = 556;\n    t['nine'] = 556;\n    t['colon'] = 278;\n    t['semicolon'] = 278;\n    t['less'] = 584;\n    t['equal'] = 584;\n    t['greater'] = 584;\n    t['question'] = 556;\n    t['at'] = 1015;\n    t['A'] = 667;\n    t['B'] = 667;\n    t['C'] = 722;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 611;\n    t['G'] = 778;\n    t['H'] = 722;\n    t['I'] = 278;\n    t['J'] = 500;\n    t['K'] = 667;\n    t['L'] = 556;\n    t['M'] = 833;\n    t['N'] = 722;\n    t['O'] = 778;\n    t['P'] = 667;\n    t['Q'] = 778;\n    t['R'] = 722;\n    t['S'] = 667;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 667;\n    t['W'] = 944;\n    t['X'] = 667;\n    t['Y'] = 667;\n    t['Z'] = 611;\n    t['bracketleft'] = 278;\n    t['backslash'] = 278;\n    t['bracketright'] = 278;\n    t['asciicircum'] = 469;\n    t['underscore'] = 556;\n    t['quoteleft'] = 222;\n    t['a'] = 556;\n    t['b'] = 556;\n    t['c'] = 500;\n    t['d'] = 556;\n    t['e'] = 556;\n    t['f'] = 278;\n    t['g'] = 556;\n    t['h'] = 556;\n    t['i'] = 222;\n    t['j'] = 222;\n    t['k'] = 500;\n    t['l'] = 222;\n    t['m'] = 833;\n    t['n'] = 556;\n    t['o'] = 556;\n    t['p'] = 556;\n    t['q'] = 556;\n    t['r'] = 333;\n    t['s'] = 500;\n    t['t'] = 278;\n    t['u'] = 556;\n    t['v'] = 500;\n    t['w'] = 722;\n    t['x'] = 500;\n    t['y'] = 500;\n    t['z'] = 500;\n    t['braceleft'] = 334;\n    t['bar'] = 260;\n    t['braceright'] = 334;\n    t['asciitilde'] = 584;\n    t['exclamdown'] = 333;\n    t['cent'] = 556;\n    t['sterling'] = 556;\n    t['fraction'] = 167;\n    t['yen'] = 556;\n    t['florin'] = 556;\n    t['section'] = 556;\n    t['currency'] = 556;\n    t['quotesingle'] = 191;\n    t['quotedblleft'] = 333;\n    t['guillemotleft'] = 556;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 500;\n    t['fl'] = 500;\n    t['endash'] = 556;\n    t['dagger'] = 556;\n    t['daggerdbl'] = 556;\n    t['periodcentered'] = 278;\n    t['paragraph'] = 537;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 222;\n    t['quotedblbase'] = 333;\n    t['quotedblright'] = 333;\n    t['guillemotright'] = 556;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 611;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 1000;\n    t['ordfeminine'] = 370;\n    t['Lslash'] = 556;\n    t['Oslash'] = 778;\n    t['OE'] = 1000;\n    t['ordmasculine'] = 365;\n    t['ae'] = 889;\n    t['dotlessi'] = 278;\n    t['lslash'] = 222;\n    t['oslash'] = 611;\n    t['oe'] = 944;\n    t['germandbls'] = 611;\n    t['Idieresis'] = 278;\n    t['eacute'] = 556;\n    t['abreve'] = 556;\n    t['uhungarumlaut'] = 556;\n    t['ecaron'] = 556;\n    t['Ydieresis'] = 667;\n    t['divide'] = 584;\n    t['Yacute'] = 667;\n    t['Acircumflex'] = 667;\n    t['aacute'] = 556;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 500;\n    t['scommaaccent'] = 500;\n    t['ecircumflex'] = 556;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 556;\n    t['Uacute'] = 722;\n    t['uogonek'] = 556;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 737;\n    t['Emacron'] = 667;\n    t['ccaron'] = 500;\n    t['aring'] = 556;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 222;\n    t['agrave'] = 556;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 722;\n    t['atilde'] = 556;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 500;\n    t['scedilla'] = 500;\n    t['iacute'] = 278;\n    t['lozenge'] = 471;\n    t['Rcaron'] = 722;\n    t['Gcommaaccent'] = 778;\n    t['ucircumflex'] = 556;\n    t['acircumflex'] = 556;\n    t['Amacron'] = 667;\n    t['rcaron'] = 333;\n    t['ccedilla'] = 500;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 667;\n    t['Omacron'] = 778;\n    t['Racute'] = 722;\n    t['Sacute'] = 667;\n    t['dcaron'] = 643;\n    t['Umacron'] = 722;\n    t['uring'] = 556;\n    t['threesuperior'] = 333;\n    t['Ograve'] = 778;\n    t['Agrave'] = 667;\n    t['Abreve'] = 667;\n    t['multiply'] = 584;\n    t['uacute'] = 556;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 476;\n    t['ydieresis'] = 500;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 556;\n    t['edieresis'] = 556;\n    t['cacute'] = 500;\n    t['nacute'] = 556;\n    t['umacron'] = 556;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 278;\n    t['plusminus'] = 584;\n    t['brokenbar'] = 260;\n    t['registered'] = 737;\n    t['Gbreve'] = 778;\n    t['Idotaccent'] = 278;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 333;\n    t['omacron'] = 556;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 722;\n    t['lcommaaccent'] = 222;\n    t['tcaron'] = 317;\n    t['eogonek'] = 556;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 667;\n    t['Adieresis'] = 667;\n    t['egrave'] = 556;\n    t['zacute'] = 500;\n    t['iogonek'] = 222;\n    t['Oacute'] = 778;\n    t['oacute'] = 556;\n    t['amacron'] = 556;\n    t['sacute'] = 500;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 778;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 556;\n    t['twosuperior'] = 333;\n    t['Odieresis'] = 778;\n    t['mu'] = 556;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 556;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 556;\n    t['threequarters'] = 834;\n    t['Scedilla'] = 667;\n    t['lcaron'] = 299;\n    t['Kcommaaccent'] = 667;\n    t['Lacute'] = 556;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 556;\n    t['Igrave'] = 278;\n    t['Imacron'] = 278;\n    t['Lcaron'] = 556;\n    t['onehalf'] = 834;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 556;\n    t['ntilde'] = 556;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 556;\n    t['gbreve'] = 556;\n    t['onequarter'] = 834;\n    t['Scaron'] = 667;\n    t['Scommaaccent'] = 667;\n    t['Ohungarumlaut'] = 778;\n    t['degree'] = 400;\n    t['ograve'] = 556;\n    t['Ccaron'] = 722;\n    t['ugrave'] = 556;\n    t['radical'] = 453;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 333;\n    t['Ntilde'] = 722;\n    t['otilde'] = 556;\n    t['Rcommaaccent'] = 722;\n    t['Lcommaaccent'] = 556;\n    t['Atilde'] = 667;\n    t['Aogonek'] = 667;\n    t['Aring'] = 667;\n    t['Otilde'] = 778;\n    t['zdotaccent'] = 500;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 278;\n    t['kcommaaccent'] = 500;\n    t['minus'] = 584;\n    t['Icircumflex'] = 278;\n    t['ncaron'] = 556;\n    t['tcommaaccent'] = 278;\n    t['logicalnot'] = 584;\n    t['odieresis'] = 556;\n    t['udieresis'] = 556;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 556;\n    t['eth'] = 556;\n    t['zcaron'] = 500;\n    t['ncommaaccent'] = 556;\n    t['onesuperior'] = 333;\n    t['imacron'] = 278;\n    t['Euro'] = 556;\n  });\n  t['Symbol'] = (0, _util.getLookupTableFactory)(function (t) {\n    t['space'] = 250;\n    t['exclam'] = 333;\n    t['universal'] = 713;\n    t['numbersign'] = 500;\n    t['existential'] = 549;\n    t['percent'] = 833;\n    t['ampersand'] = 778;\n    t['suchthat'] = 439;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asteriskmath'] = 500;\n    t['plus'] = 549;\n    t['comma'] = 250;\n    t['minus'] = 549;\n    t['period'] = 250;\n    t['slash'] = 278;\n    t['zero'] = 500;\n    t['one'] = 500;\n    t['two'] = 500;\n    t['three'] = 500;\n    t['four'] = 500;\n    t['five'] = 500;\n    t['six'] = 500;\n    t['seven'] = 500;\n    t['eight'] = 500;\n    t['nine'] = 500;\n    t['colon'] = 278;\n    t['semicolon'] = 278;\n    t['less'] = 549;\n    t['equal'] = 549;\n    t['greater'] = 549;\n    t['question'] = 444;\n    t['congruent'] = 549;\n    t['Alpha'] = 722;\n    t['Beta'] = 667;\n    t['Chi'] = 722;\n    t['Delta'] = 612;\n    t['Epsilon'] = 611;\n    t['Phi'] = 763;\n    t['Gamma'] = 603;\n    t['Eta'] = 722;\n    t['Iota'] = 333;\n    t['theta1'] = 631;\n    t['Kappa'] = 722;\n    t['Lambda'] = 686;\n    t['Mu'] = 889;\n    t['Nu'] = 722;\n    t['Omicron'] = 722;\n    t['Pi'] = 768;\n    t['Theta'] = 741;\n    t['Rho'] = 556;\n    t['Sigma'] = 592;\n    t['Tau'] = 611;\n    t['Upsilon'] = 690;\n    t['sigma1'] = 439;\n    t['Omega'] = 768;\n    t['Xi'] = 645;\n    t['Psi'] = 795;\n    t['Zeta'] = 611;\n    t['bracketleft'] = 333;\n    t['therefore'] = 863;\n    t['bracketright'] = 333;\n    t['perpendicular'] = 658;\n    t['underscore'] = 500;\n    t['radicalex'] = 500;\n    t['alpha'] = 631;\n    t['beta'] = 549;\n    t['chi'] = 549;\n    t['delta'] = 494;\n    t['epsilon'] = 439;\n    t['phi'] = 521;\n    t['gamma'] = 411;\n    t['eta'] = 603;\n    t['iota'] = 329;\n    t['phi1'] = 603;\n    t['kappa'] = 549;\n    t['lambda'] = 549;\n    t['mu'] = 576;\n    t['nu'] = 521;\n    t['omicron'] = 549;\n    t['pi'] = 549;\n    t['theta'] = 521;\n    t['rho'] = 549;\n    t['sigma'] = 603;\n    t['tau'] = 439;\n    t['upsilon'] = 576;\n    t['omega1'] = 713;\n    t['omega'] = 686;\n    t['xi'] = 493;\n    t['psi'] = 686;\n    t['zeta'] = 494;\n    t['braceleft'] = 480;\n    t['bar'] = 200;\n    t['braceright'] = 480;\n    t['similar'] = 549;\n    t['Euro'] = 750;\n    t['Upsilon1'] = 620;\n    t['minute'] = 247;\n    t['lessequal'] = 549;\n    t['fraction'] = 167;\n    t['infinity'] = 713;\n    t['florin'] = 500;\n    t['club'] = 753;\n    t['diamond'] = 753;\n    t['heart'] = 753;\n    t['spade'] = 753;\n    t['arrowboth'] = 1042;\n    t['arrowleft'] = 987;\n    t['arrowup'] = 603;\n    t['arrowright'] = 987;\n    t['arrowdown'] = 603;\n    t['degree'] = 400;\n    t['plusminus'] = 549;\n    t['second'] = 411;\n    t['greaterequal'] = 549;\n    t['multiply'] = 549;\n    t['proportional'] = 713;\n    t['partialdiff'] = 494;\n    t['bullet'] = 460;\n    t['divide'] = 549;\n    t['notequal'] = 549;\n    t['equivalence'] = 549;\n    t['approxequal'] = 549;\n    t['ellipsis'] = 1000;\n    t['arrowvertex'] = 603;\n    t['arrowhorizex'] = 1000;\n    t['carriagereturn'] = 658;\n    t['aleph'] = 823;\n    t['Ifraktur'] = 686;\n    t['Rfraktur'] = 795;\n    t['weierstrass'] = 987;\n    t['circlemultiply'] = 768;\n    t['circleplus'] = 768;\n    t['emptyset'] = 823;\n    t['intersection'] = 768;\n    t['union'] = 768;\n    t['propersuperset'] = 713;\n    t['reflexsuperset'] = 713;\n    t['notsubset'] = 713;\n    t['propersubset'] = 713;\n    t['reflexsubset'] = 713;\n    t['element'] = 713;\n    t['notelement'] = 713;\n    t['angle'] = 768;\n    t['gradient'] = 713;\n    t['registerserif'] = 790;\n    t['copyrightserif'] = 790;\n    t['trademarkserif'] = 890;\n    t['product'] = 823;\n    t['radical'] = 549;\n    t['dotmath'] = 250;\n    t['logicalnot'] = 713;\n    t['logicaland'] = 603;\n    t['logicalor'] = 603;\n    t['arrowdblboth'] = 1042;\n    t['arrowdblleft'] = 987;\n    t['arrowdblup'] = 603;\n    t['arrowdblright'] = 987;\n    t['arrowdbldown'] = 603;\n    t['lozenge'] = 494;\n    t['angleleft'] = 329;\n    t['registersans'] = 790;\n    t['copyrightsans'] = 790;\n    t['trademarksans'] = 786;\n    t['summation'] = 713;\n    t['parenlefttp'] = 384;\n    t['parenleftex'] = 384;\n    t['parenleftbt'] = 384;\n    t['bracketlefttp'] = 384;\n    t['bracketleftex'] = 384;\n    t['bracketleftbt'] = 384;\n    t['bracelefttp'] = 494;\n    t['braceleftmid'] = 494;\n    t['braceleftbt'] = 494;\n    t['braceex'] = 494;\n    t['angleright'] = 329;\n    t['integral'] = 274;\n    t['integraltp'] = 686;\n    t['integralex'] = 686;\n    t['integralbt'] = 686;\n    t['parenrighttp'] = 384;\n    t['parenrightex'] = 384;\n    t['parenrightbt'] = 384;\n    t['bracketrighttp'] = 384;\n    t['bracketrightex'] = 384;\n    t['bracketrightbt'] = 384;\n    t['bracerighttp'] = 494;\n    t['bracerightmid'] = 494;\n    t['bracerightbt'] = 494;\n    t['apple'] = 790;\n  });\n  t['Times-Roman'] = (0, _util.getLookupTableFactory)(function (t) {\n    t['space'] = 250;\n    t['exclam'] = 333;\n    t['quotedbl'] = 408;\n    t['numbersign'] = 500;\n    t['dollar'] = 500;\n    t['percent'] = 833;\n    t['ampersand'] = 778;\n    t['quoteright'] = 333;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 500;\n    t['plus'] = 564;\n    t['comma'] = 250;\n    t['hyphen'] = 333;\n    t['period'] = 250;\n    t['slash'] = 278;\n    t['zero'] = 500;\n    t['one'] = 500;\n    t['two'] = 500;\n    t['three'] = 500;\n    t['four'] = 500;\n    t['five'] = 500;\n    t['six'] = 500;\n    t['seven'] = 500;\n    t['eight'] = 500;\n    t['nine'] = 500;\n    t['colon'] = 278;\n    t['semicolon'] = 278;\n    t['less'] = 564;\n    t['equal'] = 564;\n    t['greater'] = 564;\n    t['question'] = 444;\n    t['at'] = 921;\n    t['A'] = 722;\n    t['B'] = 667;\n    t['C'] = 667;\n    t['D'] = 722;\n    t['E'] = 611;\n    t['F'] = 556;\n    t['G'] = 722;\n    t['H'] = 722;\n    t['I'] = 333;\n    t['J'] = 389;\n    t['K'] = 722;\n    t['L'] = 611;\n    t['M'] = 889;\n    t['N'] = 722;\n    t['O'] = 722;\n    t['P'] = 556;\n    t['Q'] = 722;\n    t['R'] = 667;\n    t['S'] = 556;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 722;\n    t['W'] = 944;\n    t['X'] = 722;\n    t['Y'] = 722;\n    t['Z'] = 611;\n    t['bracketleft'] = 333;\n    t['backslash'] = 278;\n    t['bracketright'] = 333;\n    t['asciicircum'] = 469;\n    t['underscore'] = 500;\n    t['quoteleft'] = 333;\n    t['a'] = 444;\n    t['b'] = 500;\n    t['c'] = 444;\n    t['d'] = 500;\n    t['e'] = 444;\n    t['f'] = 333;\n    t['g'] = 500;\n    t['h'] = 500;\n    t['i'] = 278;\n    t['j'] = 278;\n    t['k'] = 500;\n    t['l'] = 278;\n    t['m'] = 778;\n    t['n'] = 500;\n    t['o'] = 500;\n    t['p'] = 500;\n    t['q'] = 500;\n    t['r'] = 333;\n    t['s'] = 389;\n    t['t'] = 278;\n    t['u'] = 500;\n    t['v'] = 500;\n    t['w'] = 722;\n    t['x'] = 500;\n    t['y'] = 500;\n    t['z'] = 444;\n    t['braceleft'] = 480;\n    t['bar'] = 200;\n    t['braceright'] = 480;\n    t['asciitilde'] = 541;\n    t['exclamdown'] = 333;\n    t['cent'] = 500;\n    t['sterling'] = 500;\n    t['fraction'] = 167;\n    t['yen'] = 500;\n    t['florin'] = 500;\n    t['section'] = 500;\n    t['currency'] = 500;\n    t['quotesingle'] = 180;\n    t['quotedblleft'] = 444;\n    t['guillemotleft'] = 500;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 556;\n    t['fl'] = 556;\n    t['endash'] = 500;\n    t['dagger'] = 500;\n    t['daggerdbl'] = 500;\n    t['periodcentered'] = 250;\n    t['paragraph'] = 453;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 333;\n    t['quotedblbase'] = 444;\n    t['quotedblright'] = 444;\n    t['guillemotright'] = 500;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 444;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 889;\n    t['ordfeminine'] = 276;\n    t['Lslash'] = 611;\n    t['Oslash'] = 722;\n    t['OE'] = 889;\n    t['ordmasculine'] = 310;\n    t['ae'] = 667;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 500;\n    t['oe'] = 722;\n    t['germandbls'] = 500;\n    t['Idieresis'] = 333;\n    t['eacute'] = 444;\n    t['abreve'] = 444;\n    t['uhungarumlaut'] = 500;\n    t['ecaron'] = 444;\n    t['Ydieresis'] = 722;\n    t['divide'] = 564;\n    t['Yacute'] = 722;\n    t['Acircumflex'] = 722;\n    t['aacute'] = 444;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 500;\n    t['scommaaccent'] = 389;\n    t['ecircumflex'] = 444;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 444;\n    t['Uacute'] = 722;\n    t['uogonek'] = 500;\n    t['Edieresis'] = 611;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 760;\n    t['Emacron'] = 611;\n    t['ccaron'] = 444;\n    t['aring'] = 444;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 278;\n    t['agrave'] = 444;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 667;\n    t['atilde'] = 444;\n    t['Edotaccent'] = 611;\n    t['scaron'] = 389;\n    t['scedilla'] = 389;\n    t['iacute'] = 278;\n    t['lozenge'] = 471;\n    t['Rcaron'] = 667;\n    t['Gcommaaccent'] = 722;\n    t['ucircumflex'] = 500;\n    t['acircumflex'] = 444;\n    t['Amacron'] = 722;\n    t['rcaron'] = 333;\n    t['ccedilla'] = 444;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 556;\n    t['Omacron'] = 722;\n    t['Racute'] = 667;\n    t['Sacute'] = 556;\n    t['dcaron'] = 588;\n    t['Umacron'] = 722;\n    t['uring'] = 500;\n    t['threesuperior'] = 300;\n    t['Ograve'] = 722;\n    t['Agrave'] = 722;\n    t['Abreve'] = 722;\n    t['multiply'] = 564;\n    t['uacute'] = 500;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 476;\n    t['ydieresis'] = 500;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 611;\n    t['adieresis'] = 444;\n    t['edieresis'] = 444;\n    t['cacute'] = 444;\n    t['nacute'] = 500;\n    t['umacron'] = 500;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 333;\n    t['plusminus'] = 564;\n    t['brokenbar'] = 200;\n    t['registered'] = 760;\n    t['Gbreve'] = 722;\n    t['Idotaccent'] = 333;\n    t['summation'] = 600;\n    t['Egrave'] = 611;\n    t['racute'] = 333;\n    t['omacron'] = 500;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 667;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 326;\n    t['eogonek'] = 444;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 722;\n    t['Adieresis'] = 722;\n    t['egrave'] = 444;\n    t['zacute'] = 444;\n    t['iogonek'] = 278;\n    t['Oacute'] = 722;\n    t['oacute'] = 500;\n    t['amacron'] = 444;\n    t['sacute'] = 389;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 722;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 500;\n    t['twosuperior'] = 300;\n    t['Odieresis'] = 722;\n    t['mu'] = 500;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 500;\n    t['Eogonek'] = 611;\n    t['dcroat'] = 500;\n    t['threequarters'] = 750;\n    t['Scedilla'] = 556;\n    t['lcaron'] = 344;\n    t['Kcommaaccent'] = 722;\n    t['Lacute'] = 611;\n    t['trademark'] = 980;\n    t['edotaccent'] = 444;\n    t['Igrave'] = 333;\n    t['Imacron'] = 333;\n    t['Lcaron'] = 611;\n    t['onehalf'] = 750;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 500;\n    t['ntilde'] = 500;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 611;\n    t['emacron'] = 444;\n    t['gbreve'] = 500;\n    t['onequarter'] = 750;\n    t['Scaron'] = 556;\n    t['Scommaaccent'] = 556;\n    t['Ohungarumlaut'] = 722;\n    t['degree'] = 400;\n    t['ograve'] = 500;\n    t['Ccaron'] = 667;\n    t['ugrave'] = 500;\n    t['radical'] = 453;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 333;\n    t['Ntilde'] = 722;\n    t['otilde'] = 500;\n    t['Rcommaaccent'] = 667;\n    t['Lcommaaccent'] = 611;\n    t['Atilde'] = 722;\n    t['Aogonek'] = 722;\n    t['Aring'] = 722;\n    t['Otilde'] = 722;\n    t['zdotaccent'] = 444;\n    t['Ecaron'] = 611;\n    t['Iogonek'] = 333;\n    t['kcommaaccent'] = 500;\n    t['minus'] = 564;\n    t['Icircumflex'] = 333;\n    t['ncaron'] = 500;\n    t['tcommaaccent'] = 278;\n    t['logicalnot'] = 564;\n    t['odieresis'] = 500;\n    t['udieresis'] = 500;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 500;\n    t['eth'] = 500;\n    t['zcaron'] = 444;\n    t['ncommaaccent'] = 500;\n    t['onesuperior'] = 300;\n    t['imacron'] = 278;\n    t['Euro'] = 500;\n  });\n  t['Times-Bold'] = (0, _util.getLookupTableFactory)(function (t) {\n    t['space'] = 250;\n    t['exclam'] = 333;\n    t['quotedbl'] = 555;\n    t['numbersign'] = 500;\n    t['dollar'] = 500;\n    t['percent'] = 1000;\n    t['ampersand'] = 833;\n    t['quoteright'] = 333;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 500;\n    t['plus'] = 570;\n    t['comma'] = 250;\n    t['hyphen'] = 333;\n    t['period'] = 250;\n    t['slash'] = 278;\n    t['zero'] = 500;\n    t['one'] = 500;\n    t['two'] = 500;\n    t['three'] = 500;\n    t['four'] = 500;\n    t['five'] = 500;\n    t['six'] = 500;\n    t['seven'] = 500;\n    t['eight'] = 500;\n    t['nine'] = 500;\n    t['colon'] = 333;\n    t['semicolon'] = 333;\n    t['less'] = 570;\n    t['equal'] = 570;\n    t['greater'] = 570;\n    t['question'] = 500;\n    t['at'] = 930;\n    t['A'] = 722;\n    t['B'] = 667;\n    t['C'] = 722;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 611;\n    t['G'] = 778;\n    t['H'] = 778;\n    t['I'] = 389;\n    t['J'] = 500;\n    t['K'] = 778;\n    t['L'] = 667;\n    t['M'] = 944;\n    t['N'] = 722;\n    t['O'] = 778;\n    t['P'] = 611;\n    t['Q'] = 778;\n    t['R'] = 722;\n    t['S'] = 556;\n    t['T'] = 667;\n    t['U'] = 722;\n    t['V'] = 722;\n    t['W'] = 1000;\n    t['X'] = 722;\n    t['Y'] = 722;\n    t['Z'] = 667;\n    t['bracketleft'] = 333;\n    t['backslash'] = 278;\n    t['bracketright'] = 333;\n    t['asciicircum'] = 581;\n    t['underscore'] = 500;\n    t['quoteleft'] = 333;\n    t['a'] = 500;\n    t['b'] = 556;\n    t['c'] = 444;\n    t['d'] = 556;\n    t['e'] = 444;\n    t['f'] = 333;\n    t['g'] = 500;\n    t['h'] = 556;\n    t['i'] = 278;\n    t['j'] = 333;\n    t['k'] = 556;\n    t['l'] = 278;\n    t['m'] = 833;\n    t['n'] = 556;\n    t['o'] = 500;\n    t['p'] = 556;\n    t['q'] = 556;\n    t['r'] = 444;\n    t['s'] = 389;\n    t['t'] = 333;\n    t['u'] = 556;\n    t['v'] = 500;\n    t['w'] = 722;\n    t['x'] = 500;\n    t['y'] = 500;\n    t['z'] = 444;\n    t['braceleft'] = 394;\n    t['bar'] = 220;\n    t['braceright'] = 394;\n    t['asciitilde'] = 520;\n    t['exclamdown'] = 333;\n    t['cent'] = 500;\n    t['sterling'] = 500;\n    t['fraction'] = 167;\n    t['yen'] = 500;\n    t['florin'] = 500;\n    t['section'] = 500;\n    t['currency'] = 500;\n    t['quotesingle'] = 278;\n    t['quotedblleft'] = 500;\n    t['guillemotleft'] = 500;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 556;\n    t['fl'] = 556;\n    t['endash'] = 500;\n    t['dagger'] = 500;\n    t['daggerdbl'] = 500;\n    t['periodcentered'] = 250;\n    t['paragraph'] = 540;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 333;\n    t['quotedblbase'] = 500;\n    t['quotedblright'] = 500;\n    t['guillemotright'] = 500;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 500;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 1000;\n    t['ordfeminine'] = 300;\n    t['Lslash'] = 667;\n    t['Oslash'] = 778;\n    t['OE'] = 1000;\n    t['ordmasculine'] = 330;\n    t['ae'] = 722;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 500;\n    t['oe'] = 722;\n    t['germandbls'] = 556;\n    t['Idieresis'] = 389;\n    t['eacute'] = 444;\n    t['abreve'] = 500;\n    t['uhungarumlaut'] = 556;\n    t['ecaron'] = 444;\n    t['Ydieresis'] = 722;\n    t['divide'] = 570;\n    t['Yacute'] = 722;\n    t['Acircumflex'] = 722;\n    t['aacute'] = 500;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 500;\n    t['scommaaccent'] = 389;\n    t['ecircumflex'] = 444;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 500;\n    t['Uacute'] = 722;\n    t['uogonek'] = 556;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 747;\n    t['Emacron'] = 667;\n    t['ccaron'] = 444;\n    t['aring'] = 500;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 278;\n    t['agrave'] = 500;\n    t['Tcommaaccent'] = 667;\n    t['Cacute'] = 722;\n    t['atilde'] = 500;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 389;\n    t['scedilla'] = 389;\n    t['iacute'] = 278;\n    t['lozenge'] = 494;\n    t['Rcaron'] = 722;\n    t['Gcommaaccent'] = 778;\n    t['ucircumflex'] = 556;\n    t['acircumflex'] = 500;\n    t['Amacron'] = 722;\n    t['rcaron'] = 444;\n    t['ccedilla'] = 444;\n    t['Zdotaccent'] = 667;\n    t['Thorn'] = 611;\n    t['Omacron'] = 778;\n    t['Racute'] = 722;\n    t['Sacute'] = 556;\n    t['dcaron'] = 672;\n    t['Umacron'] = 722;\n    t['uring'] = 556;\n    t['threesuperior'] = 300;\n    t['Ograve'] = 778;\n    t['Agrave'] = 722;\n    t['Abreve'] = 722;\n    t['multiply'] = 570;\n    t['uacute'] = 556;\n    t['Tcaron'] = 667;\n    t['partialdiff'] = 494;\n    t['ydieresis'] = 500;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 500;\n    t['edieresis'] = 444;\n    t['cacute'] = 444;\n    t['nacute'] = 556;\n    t['umacron'] = 556;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 389;\n    t['plusminus'] = 570;\n    t['brokenbar'] = 220;\n    t['registered'] = 747;\n    t['Gbreve'] = 778;\n    t['Idotaccent'] = 389;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 444;\n    t['omacron'] = 500;\n    t['Zacute'] = 667;\n    t['Zcaron'] = 667;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 722;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 416;\n    t['eogonek'] = 444;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 722;\n    t['Adieresis'] = 722;\n    t['egrave'] = 444;\n    t['zacute'] = 444;\n    t['iogonek'] = 278;\n    t['Oacute'] = 778;\n    t['oacute'] = 500;\n    t['amacron'] = 500;\n    t['sacute'] = 389;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 778;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 556;\n    t['twosuperior'] = 300;\n    t['Odieresis'] = 778;\n    t['mu'] = 556;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 500;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 556;\n    t['threequarters'] = 750;\n    t['Scedilla'] = 556;\n    t['lcaron'] = 394;\n    t['Kcommaaccent'] = 778;\n    t['Lacute'] = 667;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 444;\n    t['Igrave'] = 389;\n    t['Imacron'] = 389;\n    t['Lcaron'] = 667;\n    t['onehalf'] = 750;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 500;\n    t['ntilde'] = 556;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 444;\n    t['gbreve'] = 500;\n    t['onequarter'] = 750;\n    t['Scaron'] = 556;\n    t['Scommaaccent'] = 556;\n    t['Ohungarumlaut'] = 778;\n    t['degree'] = 400;\n    t['ograve'] = 500;\n    t['Ccaron'] = 722;\n    t['ugrave'] = 556;\n    t['radical'] = 549;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 444;\n    t['Ntilde'] = 722;\n    t['otilde'] = 500;\n    t['Rcommaaccent'] = 722;\n    t['Lcommaaccent'] = 667;\n    t['Atilde'] = 722;\n    t['Aogonek'] = 722;\n    t['Aring'] = 722;\n    t['Otilde'] = 778;\n    t['zdotaccent'] = 444;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 389;\n    t['kcommaaccent'] = 556;\n    t['minus'] = 570;\n    t['Icircumflex'] = 389;\n    t['ncaron'] = 556;\n    t['tcommaaccent'] = 333;\n    t['logicalnot'] = 570;\n    t['odieresis'] = 500;\n    t['udieresis'] = 556;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 500;\n    t['eth'] = 500;\n    t['zcaron'] = 444;\n    t['ncommaaccent'] = 556;\n    t['onesuperior'] = 300;\n    t['imacron'] = 278;\n    t['Euro'] = 500;\n  });\n  t['Times-BoldItalic'] = (0, _util.getLookupTableFactory)(function (t) {\n    t['space'] = 250;\n    t['exclam'] = 389;\n    t['quotedbl'] = 555;\n    t['numbersign'] = 500;\n    t['dollar'] = 500;\n    t['percent'] = 833;\n    t['ampersand'] = 778;\n    t['quoteright'] = 333;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 500;\n    t['plus'] = 570;\n    t['comma'] = 250;\n    t['hyphen'] = 333;\n    t['period'] = 250;\n    t['slash'] = 278;\n    t['zero'] = 500;\n    t['one'] = 500;\n    t['two'] = 500;\n    t['three'] = 500;\n    t['four'] = 500;\n    t['five'] = 500;\n    t['six'] = 500;\n    t['seven'] = 500;\n    t['eight'] = 500;\n    t['nine'] = 500;\n    t['colon'] = 333;\n    t['semicolon'] = 333;\n    t['less'] = 570;\n    t['equal'] = 570;\n    t['greater'] = 570;\n    t['question'] = 500;\n    t['at'] = 832;\n    t['A'] = 667;\n    t['B'] = 667;\n    t['C'] = 667;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 667;\n    t['G'] = 722;\n    t['H'] = 778;\n    t['I'] = 389;\n    t['J'] = 500;\n    t['K'] = 667;\n    t['L'] = 611;\n    t['M'] = 889;\n    t['N'] = 722;\n    t['O'] = 722;\n    t['P'] = 611;\n    t['Q'] = 722;\n    t['R'] = 667;\n    t['S'] = 556;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 667;\n    t['W'] = 889;\n    t['X'] = 667;\n    t['Y'] = 611;\n    t['Z'] = 611;\n    t['bracketleft'] = 333;\n    t['backslash'] = 278;\n    t['bracketright'] = 333;\n    t['asciicircum'] = 570;\n    t['underscore'] = 500;\n    t['quoteleft'] = 333;\n    t['a'] = 500;\n    t['b'] = 500;\n    t['c'] = 444;\n    t['d'] = 500;\n    t['e'] = 444;\n    t['f'] = 333;\n    t['g'] = 500;\n    t['h'] = 556;\n    t['i'] = 278;\n    t['j'] = 278;\n    t['k'] = 500;\n    t['l'] = 278;\n    t['m'] = 778;\n    t['n'] = 556;\n    t['o'] = 500;\n    t['p'] = 500;\n    t['q'] = 500;\n    t['r'] = 389;\n    t['s'] = 389;\n    t['t'] = 278;\n    t['u'] = 556;\n    t['v'] = 444;\n    t['w'] = 667;\n    t['x'] = 500;\n    t['y'] = 444;\n    t['z'] = 389;\n    t['braceleft'] = 348;\n    t['bar'] = 220;\n    t['braceright'] = 348;\n    t['asciitilde'] = 570;\n    t['exclamdown'] = 389;\n    t['cent'] = 500;\n    t['sterling'] = 500;\n    t['fraction'] = 167;\n    t['yen'] = 500;\n    t['florin'] = 500;\n    t['section'] = 500;\n    t['currency'] = 500;\n    t['quotesingle'] = 278;\n    t['quotedblleft'] = 500;\n    t['guillemotleft'] = 500;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 556;\n    t['fl'] = 556;\n    t['endash'] = 500;\n    t['dagger'] = 500;\n    t['daggerdbl'] = 500;\n    t['periodcentered'] = 250;\n    t['paragraph'] = 500;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 333;\n    t['quotedblbase'] = 500;\n    t['quotedblright'] = 500;\n    t['guillemotright'] = 500;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 500;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 944;\n    t['ordfeminine'] = 266;\n    t['Lslash'] = 611;\n    t['Oslash'] = 722;\n    t['OE'] = 944;\n    t['ordmasculine'] = 300;\n    t['ae'] = 722;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 500;\n    t['oe'] = 722;\n    t['germandbls'] = 500;\n    t['Idieresis'] = 389;\n    t['eacute'] = 444;\n    t['abreve'] = 500;\n    t['uhungarumlaut'] = 556;\n    t['ecaron'] = 444;\n    t['Ydieresis'] = 611;\n    t['divide'] = 570;\n    t['Yacute'] = 611;\n    t['Acircumflex'] = 667;\n    t['aacute'] = 500;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 444;\n    t['scommaaccent'] = 389;\n    t['ecircumflex'] = 444;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 500;\n    t['Uacute'] = 722;\n    t['uogonek'] = 556;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 747;\n    t['Emacron'] = 667;\n    t['ccaron'] = 444;\n    t['aring'] = 500;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 278;\n    t['agrave'] = 500;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 667;\n    t['atilde'] = 500;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 389;\n    t['scedilla'] = 389;\n    t['iacute'] = 278;\n    t['lozenge'] = 494;\n    t['Rcaron'] = 667;\n    t['Gcommaaccent'] = 722;\n    t['ucircumflex'] = 556;\n    t['acircumflex'] = 500;\n    t['Amacron'] = 667;\n    t['rcaron'] = 389;\n    t['ccedilla'] = 444;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 611;\n    t['Omacron'] = 722;\n    t['Racute'] = 667;\n    t['Sacute'] = 556;\n    t['dcaron'] = 608;\n    t['Umacron'] = 722;\n    t['uring'] = 556;\n    t['threesuperior'] = 300;\n    t['Ograve'] = 722;\n    t['Agrave'] = 667;\n    t['Abreve'] = 667;\n    t['multiply'] = 570;\n    t['uacute'] = 556;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 494;\n    t['ydieresis'] = 444;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 500;\n    t['edieresis'] = 444;\n    t['cacute'] = 444;\n    t['nacute'] = 556;\n    t['umacron'] = 556;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 389;\n    t['plusminus'] = 570;\n    t['brokenbar'] = 220;\n    t['registered'] = 747;\n    t['Gbreve'] = 722;\n    t['Idotaccent'] = 389;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 389;\n    t['omacron'] = 500;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 667;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 366;\n    t['eogonek'] = 444;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 667;\n    t['Adieresis'] = 667;\n    t['egrave'] = 444;\n    t['zacute'] = 389;\n    t['iogonek'] = 278;\n    t['Oacute'] = 722;\n    t['oacute'] = 500;\n    t['amacron'] = 500;\n    t['sacute'] = 389;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 722;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 500;\n    t['twosuperior'] = 300;\n    t['Odieresis'] = 722;\n    t['mu'] = 576;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 500;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 500;\n    t['threequarters'] = 750;\n    t['Scedilla'] = 556;\n    t['lcaron'] = 382;\n    t['Kcommaaccent'] = 667;\n    t['Lacute'] = 611;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 444;\n    t['Igrave'] = 389;\n    t['Imacron'] = 389;\n    t['Lcaron'] = 611;\n    t['onehalf'] = 750;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 500;\n    t['ntilde'] = 556;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 444;\n    t['gbreve'] = 500;\n    t['onequarter'] = 750;\n    t['Scaron'] = 556;\n    t['Scommaaccent'] = 556;\n    t['Ohungarumlaut'] = 722;\n    t['degree'] = 400;\n    t['ograve'] = 500;\n    t['Ccaron'] = 667;\n    t['ugrave'] = 556;\n    t['radical'] = 549;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 389;\n    t['Ntilde'] = 722;\n    t['otilde'] = 500;\n    t['Rcommaaccent'] = 667;\n    t['Lcommaaccent'] = 611;\n    t['Atilde'] = 667;\n    t['Aogonek'] = 667;\n    t['Aring'] = 667;\n    t['Otilde'] = 722;\n    t['zdotaccent'] = 389;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 389;\n    t['kcommaaccent'] = 500;\n    t['minus'] = 606;\n    t['Icircumflex'] = 389;\n    t['ncaron'] = 556;\n    t['tcommaaccent'] = 278;\n    t['logicalnot'] = 606;\n    t['odieresis'] = 500;\n    t['udieresis'] = 556;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 500;\n    t['eth'] = 500;\n    t['zcaron'] = 389;\n    t['ncommaaccent'] = 556;\n    t['onesuperior'] = 300;\n    t['imacron'] = 278;\n    t['Euro'] = 500;\n  });\n  t['Times-Italic'] = (0, _util.getLookupTableFactory)(function (t) {\n    t['space'] = 250;\n    t['exclam'] = 333;\n    t['quotedbl'] = 420;\n    t['numbersign'] = 500;\n    t['dollar'] = 500;\n    t['percent'] = 833;\n    t['ampersand'] = 778;\n    t['quoteright'] = 333;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 500;\n    t['plus'] = 675;\n    t['comma'] = 250;\n    t['hyphen'] = 333;\n    t['period'] = 250;\n    t['slash'] = 278;\n    t['zero'] = 500;\n    t['one'] = 500;\n    t['two'] = 500;\n    t['three'] = 500;\n    t['four'] = 500;\n    t['five'] = 500;\n    t['six'] = 500;\n    t['seven'] = 500;\n    t['eight'] = 500;\n    t['nine'] = 500;\n    t['colon'] = 333;\n    t['semicolon'] = 333;\n    t['less'] = 675;\n    t['equal'] = 675;\n    t['greater'] = 675;\n    t['question'] = 500;\n    t['at'] = 920;\n    t['A'] = 611;\n    t['B'] = 611;\n    t['C'] = 667;\n    t['D'] = 722;\n    t['E'] = 611;\n    t['F'] = 611;\n    t['G'] = 722;\n    t['H'] = 722;\n    t['I'] = 333;\n    t['J'] = 444;\n    t['K'] = 667;\n    t['L'] = 556;\n    t['M'] = 833;\n    t['N'] = 667;\n    t['O'] = 722;\n    t['P'] = 611;\n    t['Q'] = 722;\n    t['R'] = 611;\n    t['S'] = 500;\n    t['T'] = 556;\n    t['U'] = 722;\n    t['V'] = 611;\n    t['W'] = 833;\n    t['X'] = 611;\n    t['Y'] = 556;\n    t['Z'] = 556;\n    t['bracketleft'] = 389;\n    t['backslash'] = 278;\n    t['bracketright'] = 389;\n    t['asciicircum'] = 422;\n    t['underscore'] = 500;\n    t['quoteleft'] = 333;\n    t['a'] = 500;\n    t['b'] = 500;\n    t['c'] = 444;\n    t['d'] = 500;\n    t['e'] = 444;\n    t['f'] = 278;\n    t['g'] = 500;\n    t['h'] = 500;\n    t['i'] = 278;\n    t['j'] = 278;\n    t['k'] = 444;\n    t['l'] = 278;\n    t['m'] = 722;\n    t['n'] = 500;\n    t['o'] = 500;\n    t['p'] = 500;\n    t['q'] = 500;\n    t['r'] = 389;\n    t['s'] = 389;\n    t['t'] = 278;\n    t['u'] = 500;\n    t['v'] = 444;\n    t['w'] = 667;\n    t['x'] = 444;\n    t['y'] = 444;\n    t['z'] = 389;\n    t['braceleft'] = 400;\n    t['bar'] = 275;\n    t['braceright'] = 400;\n    t['asciitilde'] = 541;\n    t['exclamdown'] = 389;\n    t['cent'] = 500;\n    t['sterling'] = 500;\n    t['fraction'] = 167;\n    t['yen'] = 500;\n    t['florin'] = 500;\n    t['section'] = 500;\n    t['currency'] = 500;\n    t['quotesingle'] = 214;\n    t['quotedblleft'] = 556;\n    t['guillemotleft'] = 500;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 500;\n    t['fl'] = 500;\n    t['endash'] = 500;\n    t['dagger'] = 500;\n    t['daggerdbl'] = 500;\n    t['periodcentered'] = 250;\n    t['paragraph'] = 523;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 333;\n    t['quotedblbase'] = 556;\n    t['quotedblright'] = 556;\n    t['guillemotright'] = 500;\n    t['ellipsis'] = 889;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 500;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 889;\n    t['AE'] = 889;\n    t['ordfeminine'] = 276;\n    t['Lslash'] = 556;\n    t['Oslash'] = 722;\n    t['OE'] = 944;\n    t['ordmasculine'] = 310;\n    t['ae'] = 667;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 500;\n    t['oe'] = 667;\n    t['germandbls'] = 500;\n    t['Idieresis'] = 333;\n    t['eacute'] = 444;\n    t['abreve'] = 500;\n    t['uhungarumlaut'] = 500;\n    t['ecaron'] = 444;\n    t['Ydieresis'] = 556;\n    t['divide'] = 675;\n    t['Yacute'] = 556;\n    t['Acircumflex'] = 611;\n    t['aacute'] = 500;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 444;\n    t['scommaaccent'] = 389;\n    t['ecircumflex'] = 444;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 500;\n    t['Uacute'] = 722;\n    t['uogonek'] = 500;\n    t['Edieresis'] = 611;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 760;\n    t['Emacron'] = 611;\n    t['ccaron'] = 444;\n    t['aring'] = 500;\n    t['Ncommaaccent'] = 667;\n    t['lacute'] = 278;\n    t['agrave'] = 500;\n    t['Tcommaaccent'] = 556;\n    t['Cacute'] = 667;\n    t['atilde'] = 500;\n    t['Edotaccent'] = 611;\n    t['scaron'] = 389;\n    t['scedilla'] = 389;\n    t['iacute'] = 278;\n    t['lozenge'] = 471;\n    t['Rcaron'] = 611;\n    t['Gcommaaccent'] = 722;\n    t['ucircumflex'] = 500;\n    t['acircumflex'] = 500;\n    t['Amacron'] = 611;\n    t['rcaron'] = 389;\n    t['ccedilla'] = 444;\n    t['Zdotaccent'] = 556;\n    t['Thorn'] = 611;\n    t['Omacron'] = 722;\n    t['Racute'] = 611;\n    t['Sacute'] = 500;\n    t['dcaron'] = 544;\n    t['Umacron'] = 722;\n    t['uring'] = 500;\n    t['threesuperior'] = 300;\n    t['Ograve'] = 722;\n    t['Agrave'] = 611;\n    t['Abreve'] = 611;\n    t['multiply'] = 675;\n    t['uacute'] = 500;\n    t['Tcaron'] = 556;\n    t['partialdiff'] = 476;\n    t['ydieresis'] = 444;\n    t['Nacute'] = 667;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 611;\n    t['adieresis'] = 500;\n    t['edieresis'] = 444;\n    t['cacute'] = 444;\n    t['nacute'] = 500;\n    t['umacron'] = 500;\n    t['Ncaron'] = 667;\n    t['Iacute'] = 333;\n    t['plusminus'] = 675;\n    t['brokenbar'] = 275;\n    t['registered'] = 760;\n    t['Gbreve'] = 722;\n    t['Idotaccent'] = 333;\n    t['summation'] = 600;\n    t['Egrave'] = 611;\n    t['racute'] = 389;\n    t['omacron'] = 500;\n    t['Zacute'] = 556;\n    t['Zcaron'] = 556;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 667;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 300;\n    t['eogonek'] = 444;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 611;\n    t['Adieresis'] = 611;\n    t['egrave'] = 444;\n    t['zacute'] = 389;\n    t['iogonek'] = 278;\n    t['Oacute'] = 722;\n    t['oacute'] = 500;\n    t['amacron'] = 500;\n    t['sacute'] = 389;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 722;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 500;\n    t['twosuperior'] = 300;\n    t['Odieresis'] = 722;\n    t['mu'] = 500;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 500;\n    t['Eogonek'] = 611;\n    t['dcroat'] = 500;\n    t['threequarters'] = 750;\n    t['Scedilla'] = 500;\n    t['lcaron'] = 300;\n    t['Kcommaaccent'] = 667;\n    t['Lacute'] = 556;\n    t['trademark'] = 980;\n    t['edotaccent'] = 444;\n    t['Igrave'] = 333;\n    t['Imacron'] = 333;\n    t['Lcaron'] = 611;\n    t['onehalf'] = 750;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 500;\n    t['ntilde'] = 500;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 611;\n    t['emacron'] = 444;\n    t['gbreve'] = 500;\n    t['onequarter'] = 750;\n    t['Scaron'] = 500;\n    t['Scommaaccent'] = 500;\n    t['Ohungarumlaut'] = 722;\n    t['degree'] = 400;\n    t['ograve'] = 500;\n    t['Ccaron'] = 667;\n    t['ugrave'] = 500;\n    t['radical'] = 453;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 389;\n    t['Ntilde'] = 667;\n    t['otilde'] = 500;\n    t['Rcommaaccent'] = 611;\n    t['Lcommaaccent'] = 556;\n    t['Atilde'] = 611;\n    t['Aogonek'] = 611;\n    t['Aring'] = 611;\n    t['Otilde'] = 722;\n    t['zdotaccent'] = 389;\n    t['Ecaron'] = 611;\n    t['Iogonek'] = 333;\n    t['kcommaaccent'] = 444;\n    t['minus'] = 675;\n    t['Icircumflex'] = 333;\n    t['ncaron'] = 500;\n    t['tcommaaccent'] = 278;\n    t['logicalnot'] = 675;\n    t['odieresis'] = 500;\n    t['udieresis'] = 500;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 500;\n    t['eth'] = 500;\n    t['zcaron'] = 389;\n    t['ncommaaccent'] = 500;\n    t['onesuperior'] = 300;\n    t['imacron'] = 278;\n    t['Euro'] = 500;\n  });\n  t['ZapfDingbats'] = (0, _util.getLookupTableFactory)(function (t) {\n    t['space'] = 278;\n    t['a1'] = 974;\n    t['a2'] = 961;\n    t['a202'] = 974;\n    t['a3'] = 980;\n    t['a4'] = 719;\n    t['a5'] = 789;\n    t['a119'] = 790;\n    t['a118'] = 791;\n    t['a117'] = 690;\n    t['a11'] = 960;\n    t['a12'] = 939;\n    t['a13'] = 549;\n    t['a14'] = 855;\n    t['a15'] = 911;\n    t['a16'] = 933;\n    t['a105'] = 911;\n    t['a17'] = 945;\n    t['a18'] = 974;\n    t['a19'] = 755;\n    t['a20'] = 846;\n    t['a21'] = 762;\n    t['a22'] = 761;\n    t['a23'] = 571;\n    t['a24'] = 677;\n    t['a25'] = 763;\n    t['a26'] = 760;\n    t['a27'] = 759;\n    t['a28'] = 754;\n    t['a6'] = 494;\n    t['a7'] = 552;\n    t['a8'] = 537;\n    t['a9'] = 577;\n    t['a10'] = 692;\n    t['a29'] = 786;\n    t['a30'] = 788;\n    t['a31'] = 788;\n    t['a32'] = 790;\n    t['a33'] = 793;\n    t['a34'] = 794;\n    t['a35'] = 816;\n    t['a36'] = 823;\n    t['a37'] = 789;\n    t['a38'] = 841;\n    t['a39'] = 823;\n    t['a40'] = 833;\n    t['a41'] = 816;\n    t['a42'] = 831;\n    t['a43'] = 923;\n    t['a44'] = 744;\n    t['a45'] = 723;\n    t['a46'] = 749;\n    t['a47'] = 790;\n    t['a48'] = 792;\n    t['a49'] = 695;\n    t['a50'] = 776;\n    t['a51'] = 768;\n    t['a52'] = 792;\n    t['a53'] = 759;\n    t['a54'] = 707;\n    t['a55'] = 708;\n    t['a56'] = 682;\n    t['a57'] = 701;\n    t['a58'] = 826;\n    t['a59'] = 815;\n    t['a60'] = 789;\n    t['a61'] = 789;\n    t['a62'] = 707;\n    t['a63'] = 687;\n    t['a64'] = 696;\n    t['a65'] = 689;\n    t['a66'] = 786;\n    t['a67'] = 787;\n    t['a68'] = 713;\n    t['a69'] = 791;\n    t['a70'] = 785;\n    t['a71'] = 791;\n    t['a72'] = 873;\n    t['a73'] = 761;\n    t['a74'] = 762;\n    t['a203'] = 762;\n    t['a75'] = 759;\n    t['a204'] = 759;\n    t['a76'] = 892;\n    t['a77'] = 892;\n    t['a78'] = 788;\n    t['a79'] = 784;\n    t['a81'] = 438;\n    t['a82'] = 138;\n    t['a83'] = 277;\n    t['a84'] = 415;\n    t['a97'] = 392;\n    t['a98'] = 392;\n    t['a99'] = 668;\n    t['a100'] = 668;\n    t['a89'] = 390;\n    t['a90'] = 390;\n    t['a93'] = 317;\n    t['a94'] = 317;\n    t['a91'] = 276;\n    t['a92'] = 276;\n    t['a205'] = 509;\n    t['a85'] = 509;\n    t['a206'] = 410;\n    t['a86'] = 410;\n    t['a87'] = 234;\n    t['a88'] = 234;\n    t['a95'] = 334;\n    t['a96'] = 334;\n    t['a101'] = 732;\n    t['a102'] = 544;\n    t['a103'] = 544;\n    t['a104'] = 910;\n    t['a106'] = 667;\n    t['a107'] = 760;\n    t['a108'] = 760;\n    t['a112'] = 776;\n    t['a111'] = 595;\n    t['a110'] = 694;\n    t['a109'] = 626;\n    t['a120'] = 788;\n    t['a121'] = 788;\n    t['a122'] = 788;\n    t['a123'] = 788;\n    t['a124'] = 788;\n    t['a125'] = 788;\n    t['a126'] = 788;\n    t['a127'] = 788;\n    t['a128'] = 788;\n    t['a129'] = 788;\n    t['a130'] = 788;\n    t['a131'] = 788;\n    t['a132'] = 788;\n    t['a133'] = 788;\n    t['a134'] = 788;\n    t['a135'] = 788;\n    t['a136'] = 788;\n    t['a137'] = 788;\n    t['a138'] = 788;\n    t['a139'] = 788;\n    t['a140'] = 788;\n    t['a141'] = 788;\n    t['a142'] = 788;\n    t['a143'] = 788;\n    t['a144'] = 788;\n    t['a145'] = 788;\n    t['a146'] = 788;\n    t['a147'] = 788;\n    t['a148'] = 788;\n    t['a149'] = 788;\n    t['a150'] = 788;\n    t['a151'] = 788;\n    t['a152'] = 788;\n    t['a153'] = 788;\n    t['a154'] = 788;\n    t['a155'] = 788;\n    t['a156'] = 788;\n    t['a157'] = 788;\n    t['a158'] = 788;\n    t['a159'] = 788;\n    t['a160'] = 894;\n    t['a161'] = 838;\n    t['a163'] = 1016;\n    t['a164'] = 458;\n    t['a196'] = 748;\n    t['a165'] = 924;\n    t['a192'] = 748;\n    t['a166'] = 918;\n    t['a167'] = 927;\n    t['a168'] = 928;\n    t['a169'] = 928;\n    t['a170'] = 834;\n    t['a171'] = 873;\n    t['a172'] = 828;\n    t['a173'] = 924;\n    t['a162'] = 924;\n    t['a174'] = 917;\n    t['a175'] = 930;\n    t['a176'] = 931;\n    t['a177'] = 463;\n    t['a178'] = 883;\n    t['a179'] = 836;\n    t['a193'] = 836;\n    t['a180'] = 867;\n    t['a199'] = 867;\n    t['a181'] = 696;\n    t['a200'] = 696;\n    t['a182'] = 874;\n    t['a201'] = 874;\n    t['a183'] = 760;\n    t['a184'] = 946;\n    t['a197'] = 771;\n    t['a185'] = 865;\n    t['a194'] = 771;\n    t['a198'] = 888;\n    t['a186'] = 967;\n    t['a195'] = 888;\n    t['a187'] = 831;\n    t['a188'] = 873;\n    t['a189'] = 927;\n    t['a190'] = 970;\n    t['a191'] = 918;\n  });\n});\nexports.getMetrics = getMetrics;\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PostScriptCompiler = exports.PostScriptEvaluator = exports.PDFFunctionFactory = exports.isPDFFunction = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _ps_parser = __w_pdfjs_require__(169);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar IsEvalSupportedCached = {\n  get value() {\n    return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());\n  }\n};\n\nvar PDFFunctionFactory = function () {\n  function PDFFunctionFactory(_ref) {\n    var xref = _ref.xref,\n        _ref$isEvalSupported = _ref.isEvalSupported,\n        isEvalSupported = _ref$isEvalSupported === undefined ? true : _ref$isEvalSupported;\n\n    _classCallCheck(this, PDFFunctionFactory);\n\n    this.xref = xref;\n    this.isEvalSupported = isEvalSupported !== false;\n  }\n\n  _createClass(PDFFunctionFactory, [{\n    key: 'create',\n    value: function create(fn) {\n      return PDFFunction.parse({\n        xref: this.xref,\n        isEvalSupported: this.isEvalSupported,\n        fn: fn\n      });\n    }\n  }, {\n    key: 'createFromArray',\n    value: function createFromArray(fnObj) {\n      return PDFFunction.parseArray({\n        xref: this.xref,\n        isEvalSupported: this.isEvalSupported,\n        fnObj: fnObj\n      });\n    }\n  }]);\n\n  return PDFFunctionFactory;\n}();\n\nfunction toNumberArray(arr) {\n  if (!Array.isArray(arr)) {\n    return null;\n  }\n  var length = arr.length;\n  for (var i = 0; i < length; i++) {\n    if (typeof arr[i] !== 'number') {\n      var result = new Array(length);\n      for (var _i = 0; _i < length; _i++) {\n        result[_i] = +arr[_i];\n      }\n      return result;\n    }\n  }\n  return arr;\n}\nvar PDFFunction = function PDFFunctionClosure() {\n  var CONSTRUCT_SAMPLED = 0;\n  var CONSTRUCT_INTERPOLATED = 2;\n  var CONSTRUCT_STICHED = 3;\n  var CONSTRUCT_POSTSCRIPT = 4;\n  return {\n    getSampleArray: function getSampleArray(size, outputSize, bps, stream) {\n      var i, ii;\n      var length = 1;\n      for (i = 0, ii = size.length; i < ii; i++) {\n        length *= size[i];\n      }\n      length *= outputSize;\n      var array = new Array(length);\n      var codeSize = 0;\n      var codeBuf = 0;\n      var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1);\n      var strBytes = stream.getBytes((length * bps + 7) / 8);\n      var strIdx = 0;\n      for (i = 0; i < length; i++) {\n        while (codeSize < bps) {\n          codeBuf <<= 8;\n          codeBuf |= strBytes[strIdx++];\n          codeSize += 8;\n        }\n        codeSize -= bps;\n        array[i] = (codeBuf >> codeSize) * sampleMul;\n        codeBuf &= (1 << codeSize) - 1;\n      }\n      return array;\n    },\n    getIR: function getIR(_ref2) {\n      var xref = _ref2.xref,\n          isEvalSupported = _ref2.isEvalSupported,\n          fn = _ref2.fn;\n\n      var dict = fn.dict;\n      if (!dict) {\n        dict = fn;\n      }\n      var types = [this.constructSampled, null, this.constructInterpolated, this.constructStiched, this.constructPostScript];\n      var typeNum = dict.get('FunctionType');\n      var typeFn = types[typeNum];\n      if (!typeFn) {\n        throw new _util.FormatError('Unknown type of function');\n      }\n      return typeFn.call(this, {\n        xref: xref,\n        isEvalSupported: isEvalSupported,\n        fn: fn,\n        dict: dict\n      });\n    },\n    fromIR: function fromIR(_ref3) {\n      var xref = _ref3.xref,\n          isEvalSupported = _ref3.isEvalSupported,\n          IR = _ref3.IR;\n\n      var type = IR[0];\n      switch (type) {\n        case CONSTRUCT_SAMPLED:\n          return this.constructSampledFromIR({\n            xref: xref,\n            isEvalSupported: isEvalSupported,\n            IR: IR\n          });\n        case CONSTRUCT_INTERPOLATED:\n          return this.constructInterpolatedFromIR({\n            xref: xref,\n            isEvalSupported: isEvalSupported,\n            IR: IR\n          });\n        case CONSTRUCT_STICHED:\n          return this.constructStichedFromIR({\n            xref: xref,\n            isEvalSupported: isEvalSupported,\n            IR: IR\n          });\n        default:\n          return this.constructPostScriptFromIR({\n            xref: xref,\n            isEvalSupported: isEvalSupported,\n            IR: IR\n          });\n      }\n    },\n    parse: function parse(_ref4) {\n      var xref = _ref4.xref,\n          isEvalSupported = _ref4.isEvalSupported,\n          fn = _ref4.fn;\n\n      var IR = this.getIR({\n        xref: xref,\n        isEvalSupported: isEvalSupported,\n        fn: fn\n      });\n      return this.fromIR({\n        xref: xref,\n        isEvalSupported: isEvalSupported,\n        IR: IR\n      });\n    },\n    parseArray: function parseArray(_ref5) {\n      var xref = _ref5.xref,\n          isEvalSupported = _ref5.isEvalSupported,\n          fnObj = _ref5.fnObj;\n\n      if (!Array.isArray(fnObj)) {\n        return this.parse({\n          xref: xref,\n          isEvalSupported: isEvalSupported,\n          fn: fnObj\n        });\n      }\n      var fnArray = [];\n      for (var j = 0, jj = fnObj.length; j < jj; j++) {\n        fnArray.push(this.parse({\n          xref: xref,\n          isEvalSupported: isEvalSupported,\n          fn: xref.fetchIfRef(fnObj[j])\n        }));\n      }\n      return function (src, srcOffset, dest, destOffset) {\n        for (var i = 0, ii = fnArray.length; i < ii; i++) {\n          fnArray[i](src, srcOffset, dest, destOffset + i);\n        }\n      };\n    },\n    constructSampled: function constructSampled(_ref6) {\n      var xref = _ref6.xref,\n          isEvalSupported = _ref6.isEvalSupported,\n          fn = _ref6.fn,\n          dict = _ref6.dict;\n\n      function toMultiArray(arr) {\n        var inputLength = arr.length;\n        var out = [];\n        var index = 0;\n        for (var i = 0; i < inputLength; i += 2) {\n          out[index] = [arr[i], arr[i + 1]];\n          ++index;\n        }\n        return out;\n      }\n      var domain = toNumberArray(dict.getArray('Domain'));\n      var range = toNumberArray(dict.getArray('Range'));\n      if (!domain || !range) {\n        throw new _util.FormatError('No domain or range');\n      }\n      var inputSize = domain.length / 2;\n      var outputSize = range.length / 2;\n      domain = toMultiArray(domain);\n      range = toMultiArray(range);\n      var size = toNumberArray(dict.getArray('Size'));\n      var bps = dict.get('BitsPerSample');\n      var order = dict.get('Order') || 1;\n      if (order !== 1) {\n        (0, _util.info)('No support for cubic spline interpolation: ' + order);\n      }\n      var encode = toNumberArray(dict.getArray('Encode'));\n      if (!encode) {\n        encode = [];\n        for (var i = 0; i < inputSize; ++i) {\n          encode.push([0, size[i] - 1]);\n        }\n      } else {\n        encode = toMultiArray(encode);\n      }\n      var decode = toNumberArray(dict.getArray('Decode'));\n      if (!decode) {\n        decode = range;\n      } else {\n        decode = toMultiArray(decode);\n      }\n      var samples = this.getSampleArray(size, outputSize, bps, fn);\n      return [CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size, outputSize, Math.pow(2, bps) - 1, range];\n    },\n    constructSampledFromIR: function constructSampledFromIR(_ref7) {\n      var xref = _ref7.xref,\n          isEvalSupported = _ref7.isEvalSupported,\n          IR = _ref7.IR;\n\n      function interpolate(x, xmin, xmax, ymin, ymax) {\n        return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n      }\n      return function constructSampledFromIRResult(src, srcOffset, dest, destOffset) {\n        var m = IR[1];\n        var domain = IR[2];\n        var encode = IR[3];\n        var decode = IR[4];\n        var samples = IR[5];\n        var size = IR[6];\n        var n = IR[7];\n        var range = IR[9];\n        var cubeVertices = 1 << m;\n        var cubeN = new Float64Array(cubeVertices);\n        var cubeVertex = new Uint32Array(cubeVertices);\n        var i, j;\n        for (j = 0; j < cubeVertices; j++) {\n          cubeN[j] = 1;\n        }\n        var k = n,\n            pos = 1;\n        for (i = 0; i < m; ++i) {\n          var domain_2i = domain[i][0];\n          var domain_2i_1 = domain[i][1];\n          var xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);\n          var e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);\n          var size_i = size[i];\n          e = Math.min(Math.max(e, 0), size_i - 1);\n          var e0 = e < size_i - 1 ? Math.floor(e) : e - 1;\n          var n0 = e0 + 1 - e;\n          var n1 = e - e0;\n          var offset0 = e0 * k;\n          var offset1 = offset0 + k;\n          for (j = 0; j < cubeVertices; j++) {\n            if (j & pos) {\n              cubeN[j] *= n1;\n              cubeVertex[j] += offset1;\n            } else {\n              cubeN[j] *= n0;\n              cubeVertex[j] += offset0;\n            }\n          }\n          k *= size_i;\n          pos <<= 1;\n        }\n        for (j = 0; j < n; ++j) {\n          var rj = 0;\n          for (i = 0; i < cubeVertices; i++) {\n            rj += samples[cubeVertex[i] + j] * cubeN[i];\n          }\n          rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n          dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n        }\n      };\n    },\n    constructInterpolated: function constructInterpolated(_ref8) {\n      var xref = _ref8.xref,\n          isEvalSupported = _ref8.isEvalSupported,\n          fn = _ref8.fn,\n          dict = _ref8.dict;\n\n      var c0 = toNumberArray(dict.getArray('C0')) || [0];\n      var c1 = toNumberArray(dict.getArray('C1')) || [1];\n      var n = dict.get('N');\n      var length = c0.length;\n      var diff = [];\n      for (var i = 0; i < length; ++i) {\n        diff.push(c1[i] - c0[i]);\n      }\n      return [CONSTRUCT_INTERPOLATED, c0, diff, n];\n    },\n    constructInterpolatedFromIR: function constructInterpolatedFromIR(_ref9) {\n      var xref = _ref9.xref,\n          isEvalSupported = _ref9.isEvalSupported,\n          IR = _ref9.IR;\n\n      var c0 = IR[1];\n      var diff = IR[2];\n      var n = IR[3];\n      var length = diff.length;\n      return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) {\n        var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n);\n        for (var j = 0; j < length; ++j) {\n          dest[destOffset + j] = c0[j] + x * diff[j];\n        }\n      };\n    },\n    constructStiched: function constructStiched(_ref10) {\n      var xref = _ref10.xref,\n          isEvalSupported = _ref10.isEvalSupported,\n          fn = _ref10.fn,\n          dict = _ref10.dict;\n\n      var domain = toNumberArray(dict.getArray('Domain'));\n      if (!domain) {\n        throw new _util.FormatError('No domain');\n      }\n      var inputSize = domain.length / 2;\n      if (inputSize !== 1) {\n        throw new _util.FormatError('Bad domain for stiched function');\n      }\n      var fnRefs = dict.get('Functions');\n      var fns = [];\n      for (var i = 0, ii = fnRefs.length; i < ii; ++i) {\n        fns.push(this.parse({\n          xref: xref,\n          isEvalSupported: isEvalSupported,\n          fn: xref.fetchIfRef(fnRefs[i])\n        }));\n      }\n      var bounds = toNumberArray(dict.getArray('Bounds'));\n      var encode = toNumberArray(dict.getArray('Encode'));\n      return [CONSTRUCT_STICHED, domain, bounds, encode, fns];\n    },\n    constructStichedFromIR: function constructStichedFromIR(_ref11) {\n      var xref = _ref11.xref,\n          isEvalSupported = _ref11.isEvalSupported,\n          IR = _ref11.IR;\n\n      var domain = IR[1];\n      var bounds = IR[2];\n      var encode = IR[3];\n      var fns = IR[4];\n      var tmpBuf = new Float32Array(1);\n      return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) {\n        var clip = function constructStichedFromIRClip(v, min, max) {\n          if (v > max) {\n            v = max;\n          } else if (v < min) {\n            v = min;\n          }\n          return v;\n        };\n        var v = clip(src[srcOffset], domain[0], domain[1]);\n        for (var i = 0, ii = bounds.length; i < ii; ++i) {\n          if (v < bounds[i]) {\n            break;\n          }\n        }\n        var dmin = domain[0];\n        if (i > 0) {\n          dmin = bounds[i - 1];\n        }\n        var dmax = domain[1];\n        if (i < bounds.length) {\n          dmax = bounds[i];\n        }\n        var rmin = encode[2 * i];\n        var rmax = encode[2 * i + 1];\n        tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);\n        fns[i](tmpBuf, 0, dest, destOffset);\n      };\n    },\n    constructPostScript: function constructPostScript(_ref12) {\n      var xref = _ref12.xref,\n          isEvalSupported = _ref12.isEvalSupported,\n          fn = _ref12.fn,\n          dict = _ref12.dict;\n\n      var domain = toNumberArray(dict.getArray('Domain'));\n      var range = toNumberArray(dict.getArray('Range'));\n      if (!domain) {\n        throw new _util.FormatError('No domain.');\n      }\n      if (!range) {\n        throw new _util.FormatError('No range.');\n      }\n      var lexer = new _ps_parser.PostScriptLexer(fn);\n      var parser = new _ps_parser.PostScriptParser(lexer);\n      var code = parser.parse();\n      return [CONSTRUCT_POSTSCRIPT, domain, range, code];\n    },\n    constructPostScriptFromIR: function constructPostScriptFromIR(_ref13) {\n      var xref = _ref13.xref,\n          isEvalSupported = _ref13.isEvalSupported,\n          IR = _ref13.IR;\n\n      var domain = IR[1];\n      var range = IR[2];\n      var code = IR[3];\n      if (isEvalSupported && IsEvalSupportedCached.value) {\n        var compiled = new PostScriptCompiler().compile(code, domain, range);\n        if (compiled) {\n          return new Function('src', 'srcOffset', 'dest', 'destOffset', compiled);\n        }\n      }\n      (0, _util.info)('Unable to compile PS function');\n      var numOutputs = range.length >> 1;\n      var numInputs = domain.length >> 1;\n      var evaluator = new PostScriptEvaluator(code);\n      var cache = Object.create(null);\n      var MAX_CACHE_SIZE = 2048 * 4;\n      var cache_available = MAX_CACHE_SIZE;\n      var tmpBuf = new Float32Array(numInputs);\n      return function constructPostScriptFromIRResult(src, srcOffset, dest, destOffset) {\n        var i, value;\n        var key = '';\n        var input = tmpBuf;\n        for (i = 0; i < numInputs; i++) {\n          value = src[srcOffset + i];\n          input[i] = value;\n          key += value + '_';\n        }\n        var cachedValue = cache[key];\n        if (cachedValue !== undefined) {\n          dest.set(cachedValue, destOffset);\n          return;\n        }\n        var output = new Float32Array(numOutputs);\n        var stack = evaluator.execute(input);\n        var stackIndex = stack.length - numOutputs;\n        for (i = 0; i < numOutputs; i++) {\n          value = stack[stackIndex + i];\n          var bound = range[i * 2];\n          if (value < bound) {\n            value = bound;\n          } else {\n            bound = range[i * 2 + 1];\n            if (value > bound) {\n              value = bound;\n            }\n          }\n          output[i] = value;\n        }\n        if (cache_available > 0) {\n          cache_available--;\n          cache[key] = output;\n        }\n        dest.set(output, destOffset);\n      };\n    }\n  };\n}();\nfunction isPDFFunction(v) {\n  var fnDict;\n  if ((typeof v === 'undefined' ? 'undefined' : _typeof(v)) !== 'object') {\n    return false;\n  } else if ((0, _primitives.isDict)(v)) {\n    fnDict = v;\n  } else if ((0, _primitives.isStream)(v)) {\n    fnDict = v.dict;\n  } else {\n    return false;\n  }\n  return fnDict.has('FunctionType');\n}\nvar PostScriptStack = function PostScriptStackClosure() {\n  var MAX_STACK_SIZE = 100;\n  function PostScriptStack(initialStack) {\n    this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0);\n  }\n  PostScriptStack.prototype = {\n    push: function PostScriptStack_push(value) {\n      if (this.stack.length >= MAX_STACK_SIZE) {\n        throw new Error('PostScript function stack overflow.');\n      }\n      this.stack.push(value);\n    },\n    pop: function PostScriptStack_pop() {\n      if (this.stack.length <= 0) {\n        throw new Error('PostScript function stack underflow.');\n      }\n      return this.stack.pop();\n    },\n    copy: function PostScriptStack_copy(n) {\n      if (this.stack.length + n >= MAX_STACK_SIZE) {\n        throw new Error('PostScript function stack overflow.');\n      }\n      var stack = this.stack;\n      for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n        stack.push(stack[i]);\n      }\n    },\n    index: function PostScriptStack_index(n) {\n      this.push(this.stack[this.stack.length - n - 1]);\n    },\n    roll: function PostScriptStack_roll(n, p) {\n      var stack = this.stack;\n      var l = stack.length - n;\n      var r = stack.length - 1,\n          c = l + (p - Math.floor(p / n) * n),\n          i,\n          j,\n          t;\n      for (i = l, j = r; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n      for (i = l, j = c - 1; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n      for (i = c, j = r; i < j; i++, j--) {\n        t = stack[i];\n        stack[i] = stack[j];\n        stack[j] = t;\n      }\n    }\n  };\n  return PostScriptStack;\n}();\nvar PostScriptEvaluator = function PostScriptEvaluatorClosure() {\n  function PostScriptEvaluator(operators) {\n    this.operators = operators;\n  }\n  PostScriptEvaluator.prototype = {\n    execute: function PostScriptEvaluator_execute(initialStack) {\n      var stack = new PostScriptStack(initialStack);\n      var counter = 0;\n      var operators = this.operators;\n      var length = operators.length;\n      var operator, a, b;\n      while (counter < length) {\n        operator = operators[counter++];\n        if (typeof operator === 'number') {\n          stack.push(operator);\n          continue;\n        }\n        switch (operator) {\n          case 'jz':\n            b = stack.pop();\n            a = stack.pop();\n            if (!a) {\n              counter = b;\n            }\n            break;\n          case 'j':\n            a = stack.pop();\n            counter = a;\n            break;\n          case 'abs':\n            a = stack.pop();\n            stack.push(Math.abs(a));\n            break;\n          case 'add':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a + b);\n            break;\n          case 'and':\n            b = stack.pop();\n            a = stack.pop();\n            if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {\n              stack.push(a && b);\n            } else {\n              stack.push(a & b);\n            }\n            break;\n          case 'atan':\n            a = stack.pop();\n            stack.push(Math.atan(a));\n            break;\n          case 'bitshift':\n            b = stack.pop();\n            a = stack.pop();\n            if (a > 0) {\n              stack.push(a << b);\n            } else {\n              stack.push(a >> b);\n            }\n            break;\n          case 'ceiling':\n            a = stack.pop();\n            stack.push(Math.ceil(a));\n            break;\n          case 'copy':\n            a = stack.pop();\n            stack.copy(a);\n            break;\n          case 'cos':\n            a = stack.pop();\n            stack.push(Math.cos(a));\n            break;\n          case 'cvi':\n            a = stack.pop() | 0;\n            stack.push(a);\n            break;\n          case 'cvr':\n            break;\n          case 'div':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a / b);\n            break;\n          case 'dup':\n            stack.copy(1);\n            break;\n          case 'eq':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a === b);\n            break;\n          case 'exch':\n            stack.roll(2, 1);\n            break;\n          case 'exp':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(Math.pow(a, b));\n            break;\n          case 'false':\n            stack.push(false);\n            break;\n          case 'floor':\n            a = stack.pop();\n            stack.push(Math.floor(a));\n            break;\n          case 'ge':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a >= b);\n            break;\n          case 'gt':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a > b);\n            break;\n          case 'idiv':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a / b | 0);\n            break;\n          case 'index':\n            a = stack.pop();\n            stack.index(a);\n            break;\n          case 'le':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a <= b);\n            break;\n          case 'ln':\n            a = stack.pop();\n            stack.push(Math.log(a));\n            break;\n          case 'log':\n            a = stack.pop();\n            stack.push(Math.log(a) / Math.LN10);\n            break;\n          case 'lt':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a < b);\n            break;\n          case 'mod':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a % b);\n            break;\n          case 'mul':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a * b);\n            break;\n          case 'ne':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a !== b);\n            break;\n          case 'neg':\n            a = stack.pop();\n            stack.push(-a);\n            break;\n          case 'not':\n            a = stack.pop();\n            if ((0, _util.isBool)(a)) {\n              stack.push(!a);\n            } else {\n              stack.push(~a);\n            }\n            break;\n          case 'or':\n            b = stack.pop();\n            a = stack.pop();\n            if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {\n              stack.push(a || b);\n            } else {\n              stack.push(a | b);\n            }\n            break;\n          case 'pop':\n            stack.pop();\n            break;\n          case 'roll':\n            b = stack.pop();\n            a = stack.pop();\n            stack.roll(a, b);\n            break;\n          case 'round':\n            a = stack.pop();\n            stack.push(Math.round(a));\n            break;\n          case 'sin':\n            a = stack.pop();\n            stack.push(Math.sin(a));\n            break;\n          case 'sqrt':\n            a = stack.pop();\n            stack.push(Math.sqrt(a));\n            break;\n          case 'sub':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a - b);\n            break;\n          case 'true':\n            stack.push(true);\n            break;\n          case 'truncate':\n            a = stack.pop();\n            a = a < 0 ? Math.ceil(a) : Math.floor(a);\n            stack.push(a);\n            break;\n          case 'xor':\n            b = stack.pop();\n            a = stack.pop();\n            if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {\n              stack.push(a !== b);\n            } else {\n              stack.push(a ^ b);\n            }\n            break;\n          default:\n            throw new _util.FormatError('Unknown operator ' + operator);\n        }\n      }\n      return stack.stack;\n    }\n  };\n  return PostScriptEvaluator;\n}();\nvar PostScriptCompiler = function PostScriptCompilerClosure() {\n  function AstNode(type) {\n    this.type = type;\n  }\n  AstNode.prototype.visit = function (visitor) {\n    (0, _util.unreachable)('abstract method');\n  };\n  function AstArgument(index, min, max) {\n    AstNode.call(this, 'args');\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstArgument.prototype = Object.create(AstNode.prototype);\n  AstArgument.prototype.visit = function (visitor) {\n    visitor.visitArgument(this);\n  };\n  function AstLiteral(number) {\n    AstNode.call(this, 'literal');\n    this.number = number;\n    this.min = number;\n    this.max = number;\n  }\n  AstLiteral.prototype = Object.create(AstNode.prototype);\n  AstLiteral.prototype.visit = function (visitor) {\n    visitor.visitLiteral(this);\n  };\n  function AstBinaryOperation(op, arg1, arg2, min, max) {\n    AstNode.call(this, 'binary');\n    this.op = op;\n    this.arg1 = arg1;\n    this.arg2 = arg2;\n    this.min = min;\n    this.max = max;\n  }\n  AstBinaryOperation.prototype = Object.create(AstNode.prototype);\n  AstBinaryOperation.prototype.visit = function (visitor) {\n    visitor.visitBinaryOperation(this);\n  };\n  function AstMin(arg, max) {\n    AstNode.call(this, 'max');\n    this.arg = arg;\n    this.min = arg.min;\n    this.max = max;\n  }\n  AstMin.prototype = Object.create(AstNode.prototype);\n  AstMin.prototype.visit = function (visitor) {\n    visitor.visitMin(this);\n  };\n  function AstVariable(index, min, max) {\n    AstNode.call(this, 'var');\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstVariable.prototype = Object.create(AstNode.prototype);\n  AstVariable.prototype.visit = function (visitor) {\n    visitor.visitVariable(this);\n  };\n  function AstVariableDefinition(variable, arg) {\n    AstNode.call(this, 'definition');\n    this.variable = variable;\n    this.arg = arg;\n  }\n  AstVariableDefinition.prototype = Object.create(AstNode.prototype);\n  AstVariableDefinition.prototype.visit = function (visitor) {\n    visitor.visitVariableDefinition(this);\n  };\n  function ExpressionBuilderVisitor() {\n    this.parts = [];\n  }\n  ExpressionBuilderVisitor.prototype = {\n    visitArgument: function visitArgument(arg) {\n      this.parts.push('Math.max(', arg.min, ', Math.min(', arg.max, ', src[srcOffset + ', arg.index, ']))');\n    },\n    visitVariable: function visitVariable(variable) {\n      this.parts.push('v', variable.index);\n    },\n    visitLiteral: function visitLiteral(literal) {\n      this.parts.push(literal.number);\n    },\n    visitBinaryOperation: function visitBinaryOperation(operation) {\n      this.parts.push('(');\n      operation.arg1.visit(this);\n      this.parts.push(' ', operation.op, ' ');\n      operation.arg2.visit(this);\n      this.parts.push(')');\n    },\n    visitVariableDefinition: function visitVariableDefinition(definition) {\n      this.parts.push('var ');\n      definition.variable.visit(this);\n      this.parts.push(' = ');\n      definition.arg.visit(this);\n      this.parts.push(';');\n    },\n    visitMin: function visitMin(max) {\n      this.parts.push('Math.min(');\n      max.arg.visit(this);\n      this.parts.push(', ', max.max, ')');\n    },\n    toString: function toString() {\n      return this.parts.join('');\n    }\n  };\n  function buildAddOperation(num1, num2) {\n    if (num2.type === 'literal' && num2.number === 0) {\n      return num1;\n    }\n    if (num1.type === 'literal' && num1.number === 0) {\n      return num2;\n    }\n    if (num2.type === 'literal' && num1.type === 'literal') {\n      return new AstLiteral(num1.number + num2.number);\n    }\n    return new AstBinaryOperation('+', num1, num2, num1.min + num2.min, num1.max + num2.max);\n  }\n  function buildMulOperation(num1, num2) {\n    if (num2.type === 'literal') {\n      if (num2.number === 0) {\n        return new AstLiteral(0);\n      } else if (num2.number === 1) {\n        return num1;\n      } else if (num1.type === 'literal') {\n        return new AstLiteral(num1.number * num2.number);\n      }\n    }\n    if (num1.type === 'literal') {\n      if (num1.number === 0) {\n        return new AstLiteral(0);\n      } else if (num1.number === 1) {\n        return num2;\n      }\n    }\n    var min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n    var max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n    return new AstBinaryOperation('*', num1, num2, min, max);\n  }\n  function buildSubOperation(num1, num2) {\n    if (num2.type === 'literal') {\n      if (num2.number === 0) {\n        return num1;\n      } else if (num1.type === 'literal') {\n        return new AstLiteral(num1.number - num2.number);\n      }\n    }\n    if (num2.type === 'binary' && num2.op === '-' && num1.type === 'literal' && num1.number === 1 && num2.arg1.type === 'literal' && num2.arg1.number === 1) {\n      return num2.arg2;\n    }\n    return new AstBinaryOperation('-', num1, num2, num1.min - num2.max, num1.max - num2.min);\n  }\n  function buildMinOperation(num1, max) {\n    if (num1.min >= max) {\n      return new AstLiteral(max);\n    } else if (num1.max <= max) {\n      return num1;\n    }\n    return new AstMin(num1, max);\n  }\n  function PostScriptCompiler() {}\n  PostScriptCompiler.prototype = {\n    compile: function PostScriptCompiler_compile(code, domain, range) {\n      var stack = [];\n      var i, ii;\n      var instructions = [];\n      var inputSize = domain.length >> 1,\n          outputSize = range.length >> 1;\n      var lastRegister = 0;\n      var n, j;\n      var num1, num2, ast1, ast2, tmpVar, item;\n      for (i = 0; i < inputSize; i++) {\n        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n      }\n      for (i = 0, ii = code.length; i < ii; i++) {\n        item = code[i];\n        if (typeof item === 'number') {\n          stack.push(new AstLiteral(item));\n          continue;\n        }\n        switch (item) {\n          case 'add':\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildAddOperation(num1, num2));\n            break;\n          case 'cvr':\n            if (stack.length < 1) {\n              return null;\n            }\n            break;\n          case 'mul':\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildMulOperation(num1, num2));\n            break;\n          case 'sub':\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildSubOperation(num1, num2));\n            break;\n          case 'exch':\n            if (stack.length < 2) {\n              return null;\n            }\n            ast1 = stack.pop();\n            ast2 = stack.pop();\n            stack.push(ast1, ast2);\n            break;\n          case 'pop':\n            if (stack.length < 1) {\n              return null;\n            }\n            stack.pop();\n            break;\n          case 'index':\n            if (stack.length < 1) {\n              return null;\n            }\n            num1 = stack.pop();\n            if (num1.type !== 'literal') {\n              return null;\n            }\n            n = num1.number;\n            if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n              return null;\n            }\n            ast1 = stack[stack.length - n - 1];\n            if (ast1.type === 'literal' || ast1.type === 'var') {\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - n - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case 'dup':\n            if (stack.length < 1) {\n              return null;\n            }\n            if (typeof code[i + 1] === 'number' && code[i + 2] === 'gt' && code[i + 3] === i + 7 && code[i + 4] === 'jz' && code[i + 5] === 'pop' && code[i + 6] === code[i + 1]) {\n              num1 = stack.pop();\n              stack.push(buildMinOperation(num1, code[i + 1]));\n              i += 6;\n              break;\n            }\n            ast1 = stack[stack.length - 1];\n            if (ast1.type === 'literal' || ast1.type === 'var') {\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case 'roll':\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            if (num2.type !== 'literal' || num1.type !== 'literal') {\n              return null;\n            }\n            j = num2.number;\n            n = num1.number;\n            if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) {\n              return null;\n            }\n            j = (j % n + n) % n;\n            if (j === 0) {\n              break;\n            }\n            Array.prototype.push.apply(stack, stack.splice(stack.length - n, n - j));\n            break;\n          default:\n            return null;\n        }\n      }\n      if (stack.length !== outputSize) {\n        return null;\n      }\n      var result = [];\n      instructions.forEach(function (instruction) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        instruction.visit(statementBuilder);\n        result.push(statementBuilder.toString());\n      });\n      stack.forEach(function (expr, i) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        expr.visit(statementBuilder);\n        var min = range[i * 2],\n            max = range[i * 2 + 1];\n        var out = [statementBuilder.toString()];\n        if (min > expr.min) {\n          out.unshift('Math.max(', min, ', ');\n          out.push(')');\n        }\n        if (max < expr.max) {\n          out.unshift('Math.min(', max, ', ');\n          out.push(')');\n        }\n        out.unshift('dest[destOffset + ', i, '] = ');\n        out.push(';');\n        result.push(out.join(''));\n      });\n      return result.join('\\n');\n    }\n  };\n  return PostScriptCompiler;\n}();\nexports.isPDFFunction = isPDFFunction;\nexports.PDFFunctionFactory = PDFFunctionFactory;\nexports.PostScriptEvaluator = PostScriptEvaluator;\nexports.PostScriptCompiler = PostScriptCompiler;\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PostScriptParser = exports.PostScriptLexer = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar PostScriptParser = function PostScriptParserClosure() {\n  function PostScriptParser(lexer) {\n    this.lexer = lexer;\n    this.operators = [];\n    this.token = null;\n    this.prev = null;\n  }\n  PostScriptParser.prototype = {\n    nextToken: function PostScriptParser_nextToken() {\n      this.prev = this.token;\n      this.token = this.lexer.getToken();\n    },\n    accept: function PostScriptParser_accept(type) {\n      if (this.token.type === type) {\n        this.nextToken();\n        return true;\n      }\n      return false;\n    },\n    expect: function PostScriptParser_expect(type) {\n      if (this.accept(type)) {\n        return true;\n      }\n      throw new _util.FormatError('Unexpected symbol: found ' + this.token.type + ' expected ' + type + '.');\n    },\n    parse: function PostScriptParser_parse() {\n      this.nextToken();\n      this.expect(PostScriptTokenTypes.LBRACE);\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      return this.operators;\n    },\n    parseBlock: function PostScriptParser_parseBlock() {\n      while (true) {\n        if (this.accept(PostScriptTokenTypes.NUMBER)) {\n          this.operators.push(this.prev.value);\n        } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n          this.operators.push(this.prev.value);\n        } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n          this.parseCondition();\n        } else {\n          return;\n        }\n      }\n    },\n    parseCondition: function PostScriptParser_parseCondition() {\n      var conditionLocation = this.operators.length;\n      this.operators.push(null, null);\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      if (this.accept(PostScriptTokenTypes.IF)) {\n        this.operators[conditionLocation] = this.operators.length;\n        this.operators[conditionLocation + 1] = 'jz';\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n        var jumpLocation = this.operators.length;\n        this.operators.push(null, null);\n        var endOfTrue = this.operators.length;\n        this.parseBlock();\n        this.expect(PostScriptTokenTypes.RBRACE);\n        this.expect(PostScriptTokenTypes.IFELSE);\n        this.operators[jumpLocation] = this.operators.length;\n        this.operators[jumpLocation + 1] = 'j';\n        this.operators[conditionLocation] = endOfTrue;\n        this.operators[conditionLocation + 1] = 'jz';\n      } else {\n        throw new _util.FormatError('PS Function: error parsing conditional.');\n      }\n    }\n  };\n  return PostScriptParser;\n}();\nvar PostScriptTokenTypes = {\n  LBRACE: 0,\n  RBRACE: 1,\n  NUMBER: 2,\n  OPERATOR: 3,\n  IF: 4,\n  IFELSE: 5\n};\nvar PostScriptToken = function PostScriptTokenClosure() {\n  function PostScriptToken(type, value) {\n    this.type = type;\n    this.value = value;\n  }\n  var opCache = Object.create(null);\n  PostScriptToken.getOperator = function PostScriptToken_getOperator(op) {\n    var opValue = opCache[op];\n    if (opValue) {\n      return opValue;\n    }\n    return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);\n  };\n  PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE, '{');\n  PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE, '}');\n  PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF');\n  PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE, 'IFELSE');\n  return PostScriptToken;\n}();\nvar PostScriptLexer = function PostScriptLexerClosure() {\n  function PostScriptLexer(stream) {\n    this.stream = stream;\n    this.nextChar();\n    this.strBuf = [];\n  }\n  PostScriptLexer.prototype = {\n    nextChar: function PostScriptLexer_nextChar() {\n      return this.currentChar = this.stream.getByte();\n    },\n    getToken: function PostScriptLexer_getToken() {\n      var comment = false;\n      var ch = this.currentChar;\n      while (true) {\n        if (ch < 0) {\n          return _primitives.EOF;\n        }\n        if (comment) {\n          if (ch === 0x0A || ch === 0x0D) {\n            comment = false;\n          }\n        } else if (ch === 0x25) {\n          comment = true;\n        } else if (!(0, _util.isSpace)(ch)) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      switch (ch | 0) {\n        case 0x30:\n        case 0x31:\n        case 0x32:\n        case 0x33:\n        case 0x34:\n        case 0x35:\n        case 0x36:\n        case 0x37:\n        case 0x38:\n        case 0x39:\n        case 0x2B:\n        case 0x2D:\n        case 0x2E:\n          return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber());\n        case 0x7B:\n          this.nextChar();\n          return PostScriptToken.LBRACE;\n        case 0x7D:\n          this.nextChar();\n          return PostScriptToken.RBRACE;\n      }\n      var strBuf = this.strBuf;\n      strBuf.length = 0;\n      strBuf[0] = String.fromCharCode(ch);\n      while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A)) {\n        strBuf.push(String.fromCharCode(ch));\n      }\n      var str = strBuf.join('');\n      switch (str.toLowerCase()) {\n        case 'if':\n          return PostScriptToken.IF;\n        case 'ifelse':\n          return PostScriptToken.IFELSE;\n        default:\n          return PostScriptToken.getOperator(str);\n      }\n    },\n    getNumber: function PostScriptLexer_getNumber() {\n      var ch = this.currentChar;\n      var strBuf = this.strBuf;\n      strBuf.length = 0;\n      strBuf[0] = String.fromCharCode(ch);\n      while ((ch = this.nextChar()) >= 0) {\n        if (ch >= 0x30 && ch <= 0x39 || ch === 0x2D || ch === 0x2E) {\n          strBuf.push(String.fromCharCode(ch));\n        } else {\n          break;\n        }\n      }\n      var value = parseFloat(strBuf.join(''));\n      if (isNaN(value)) {\n        throw new _util.FormatError('Invalid floating point number: ' + value);\n      }\n      return value;\n    }\n  };\n  return PostScriptLexer;\n}();\nexports.PostScriptLexer = PostScriptLexer;\nexports.PostScriptParser = PostScriptParser;\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MurmurHash3_64 = undefined;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar MurmurHash3_64 = function MurmurHash3_64Closure(seed) {\n  var MASK_HIGH = 0xffff0000;\n  var MASK_LOW = 0xffff;\n  function MurmurHash3_64(seed) {\n    var SEED = 0xc3d2e1f0;\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n  MurmurHash3_64.prototype = {\n    update: function MurmurHash3_64_update(input) {\n      var data = void 0,\n          length = void 0;\n      if ((0, _util.isString)(input)) {\n        data = new Uint8Array(input.length * 2);\n        length = 0;\n        for (var i = 0, ii = input.length; i < ii; i++) {\n          var code = input.charCodeAt(i);\n          if (code <= 0xff) {\n            data[length++] = code;\n          } else {\n            data[length++] = code >>> 8;\n            data[length++] = code & 0xff;\n          }\n        }\n      } else if ((0, _util.isArrayBuffer)(input)) {\n        data = input;\n        length = data.byteLength;\n      } else {\n        throw new Error('Wrong data format in MurmurHash3_64_update. ' + 'Input must be a string or array.');\n      }\n      var blockCounts = length >> 2;\n      var tailLength = length - blockCounts * 4;\n      var dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n      var k1 = 0;\n      var k2 = 0;\n      var h1 = this.h1;\n      var h2 = this.h2;\n      var C1 = 0xcc9e2d51;\n      var C2 = 0x1b873593;\n      var C1_LOW = C1 & MASK_LOW;\n      var C2_LOW = C2 & MASK_LOW;\n      for (var _i = 0; _i < blockCounts; _i++) {\n        if (_i & 1) {\n          k1 = dataUint32[_i];\n          k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n          k1 = k1 << 15 | k1 >>> 17;\n          k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n          h1 ^= k1;\n          h1 = h1 << 13 | h1 >>> 19;\n          h1 = h1 * 5 + 0xe6546b64;\n        } else {\n          k2 = dataUint32[_i];\n          k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n          k2 = k2 << 15 | k2 >>> 17;\n          k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n          h2 ^= k2;\n          h2 = h2 << 13 | h2 >>> 19;\n          h2 = h2 * 5 + 0xe6546b64;\n        }\n      }\n      k1 = 0;\n      switch (tailLength) {\n        case 3:\n          k1 ^= data[blockCounts * 4 + 2] << 16;\n        case 2:\n          k1 ^= data[blockCounts * 4 + 1] << 8;\n        case 1:\n          k1 ^= data[blockCounts * 4];\n          k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n          k1 = k1 << 15 | k1 >>> 17;\n          k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n          if (blockCounts & 1) {\n            h1 ^= k1;\n          } else {\n            h2 ^= k1;\n          }\n      }\n      this.h1 = h1;\n      this.h2 = h2;\n      return this;\n    },\n    hexdigest: function MurmurHash3_64_hexdigest() {\n      var h1 = this.h1;\n      var h2 = this.h2;\n      h1 ^= h2 >>> 1;\n      h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n      h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n      h1 ^= h2 >>> 1;\n      h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n      h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n      h1 ^= h2 >>> 1;\n      for (var i = 0, arr = [h1, h2], str = ''; i < arr.length; i++) {\n        var hex = (arr[i] >>> 0).toString(16);\n        while (hex.length < 8) {\n          hex = '0' + hex;\n        }\n        str += hex;\n      }\n      return str;\n    }\n  };\n  return MurmurHash3_64;\n}();\nexports.MurmurHash3_64 = MurmurHash3_64;\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFImage = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(138);\n\nvar _colorspace = __w_pdfjs_require__(151);\n\nvar _stream = __w_pdfjs_require__(140);\n\nvar _jpeg_stream = __w_pdfjs_require__(146);\n\nvar _jpx = __w_pdfjs_require__(149);\n\nvar PDFImage = function PDFImageClosure() {\n  function handleImageData(image, nativeDecoder) {\n    if (nativeDecoder && nativeDecoder.canDecode(image)) {\n      return nativeDecoder.decode(image).catch(function (reason) {\n        (0, _util.warn)('Native image decoding failed -- trying to recover: ' + (reason && reason.message));\n        return image;\n      });\n    }\n    return Promise.resolve(image);\n  }\n  function decodeAndClamp(value, addend, coefficient, max) {\n    value = addend + value * coefficient;\n    return value < 0 ? 0 : value > max ? max : value;\n  }\n  function resizeImageMask(src, bpc, w1, h1, w2, h2) {\n    var length = w2 * h2;\n    var dest = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);\n    var xRatio = w1 / w2;\n    var yRatio = h1 / h2;\n    var i,\n        j,\n        py,\n        newIndex = 0,\n        oldIndex;\n    var xScaled = new Uint16Array(w2);\n    var w1Scanline = w1;\n    for (i = 0; i < w2; i++) {\n      xScaled[i] = Math.floor(i * xRatio);\n    }\n    for (i = 0; i < h2; i++) {\n      py = Math.floor(i * yRatio) * w1Scanline;\n      for (j = 0; j < w2; j++) {\n        oldIndex = py + xScaled[j];\n        dest[newIndex++] = src[oldIndex];\n      }\n    }\n    return dest;\n  }\n  function PDFImage(_ref) {\n    var xref = _ref.xref,\n        res = _ref.res,\n        image = _ref.image,\n        _ref$isInline = _ref.isInline,\n        isInline = _ref$isInline === undefined ? false : _ref$isInline,\n        _ref$smask = _ref.smask,\n        smask = _ref$smask === undefined ? null : _ref$smask,\n        _ref$mask = _ref.mask,\n        mask = _ref$mask === undefined ? null : _ref$mask,\n        _ref$isMask = _ref.isMask,\n        isMask = _ref$isMask === undefined ? false : _ref$isMask,\n        pdfFunctionFactory = _ref.pdfFunctionFactory;\n\n    this.image = image;\n    var dict = image.dict;\n    var filter = dict.get('Filter');\n    if ((0, _primitives.isName)(filter)) {\n      switch (filter.name) {\n        case 'JPXDecode':\n          var jpxImage = new _jpx.JpxImage();\n          jpxImage.parseImageProperties(image.stream);\n          image.stream.reset();\n          image.width = jpxImage.width;\n          image.height = jpxImage.height;\n          image.bitsPerComponent = jpxImage.bitsPerComponent;\n          image.numComps = jpxImage.componentsCount;\n          break;\n        case 'JBIG2Decode':\n          image.bitsPerComponent = 1;\n          image.numComps = 1;\n          break;\n      }\n    }\n    var width = dict.get('Width', 'W');\n    var height = dict.get('Height', 'H');\n    if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {\n      (0, _util.warn)('PDFImage - using the Width/Height of the image data, ' + 'rather than the image dictionary.');\n      width = image.width;\n      height = image.height;\n    }\n    if (width < 1 || height < 1) {\n      throw new _util.FormatError('Invalid image width: ' + width + ' or ' + ('height: ' + height));\n    }\n    this.width = width;\n    this.height = height;\n    this.interpolate = dict.get('Interpolate', 'I') || false;\n    this.imageMask = dict.get('ImageMask', 'IM') || false;\n    this.matte = dict.get('Matte') || false;\n    var bitsPerComponent = image.bitsPerComponent;\n    if (!bitsPerComponent) {\n      bitsPerComponent = dict.get('BitsPerComponent', 'BPC');\n      if (!bitsPerComponent) {\n        if (this.imageMask) {\n          bitsPerComponent = 1;\n        } else {\n          throw new _util.FormatError('Bits per component missing in image: ' + this.imageMask);\n        }\n      }\n    }\n    this.bpc = bitsPerComponent;\n    if (!this.imageMask) {\n      var colorSpace = dict.get('ColorSpace', 'CS');\n      if (!colorSpace) {\n        (0, _util.info)('JPX images (which do not require color spaces)');\n        switch (image.numComps) {\n          case 1:\n            colorSpace = _primitives.Name.get('DeviceGray');\n            break;\n          case 3:\n            colorSpace = _primitives.Name.get('DeviceRGB');\n            break;\n          case 4:\n            colorSpace = _primitives.Name.get('DeviceCMYK');\n            break;\n          default:\n            throw new Error('JPX images with ' + image.numComps + ' ' + 'color components not supported.');\n        }\n      }\n      var resources = isInline ? res : null;\n      this.colorSpace = _colorspace.ColorSpace.parse(colorSpace, xref, resources, pdfFunctionFactory);\n      this.numComps = this.colorSpace.numComps;\n    }\n    this.decode = dict.getArray('Decode', 'D');\n    this.needsDecode = false;\n    if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {\n      this.needsDecode = true;\n      var max = (1 << bitsPerComponent) - 1;\n      this.decodeCoefficients = [];\n      this.decodeAddends = [];\n      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n        var dmin = this.decode[i];\n        var dmax = this.decode[i + 1];\n        this.decodeCoefficients[j] = dmax - dmin;\n        this.decodeAddends[j] = max * dmin;\n      }\n    }\n    if (smask) {\n      this.smask = new PDFImage({\n        xref: xref,\n        res: res,\n        image: smask,\n        isInline: isInline,\n        pdfFunctionFactory: pdfFunctionFactory\n      });\n    } else if (mask) {\n      if ((0, _primitives.isStream)(mask)) {\n        var maskDict = mask.dict,\n            imageMask = maskDict.get('ImageMask', 'IM');\n        if (!imageMask) {\n          (0, _util.warn)('Ignoring /Mask in image without /ImageMask.');\n        } else {\n          this.mask = new PDFImage({\n            xref: xref,\n            res: res,\n            image: mask,\n            isInline: isInline,\n            isMask: true,\n            pdfFunctionFactory: pdfFunctionFactory\n          });\n        }\n      } else {\n        this.mask = mask;\n      }\n    }\n  }\n  PDFImage.buildImage = function (_ref2) {\n    var handler = _ref2.handler,\n        xref = _ref2.xref,\n        res = _ref2.res,\n        image = _ref2.image,\n        _ref2$isInline = _ref2.isInline,\n        isInline = _ref2$isInline === undefined ? false : _ref2$isInline,\n        _ref2$nativeDecoder = _ref2.nativeDecoder,\n        nativeDecoder = _ref2$nativeDecoder === undefined ? null : _ref2$nativeDecoder,\n        pdfFunctionFactory = _ref2.pdfFunctionFactory;\n\n    var imagePromise = handleImageData(image, nativeDecoder);\n    var smaskPromise;\n    var maskPromise;\n    var smask = image.dict.get('SMask');\n    var mask = image.dict.get('Mask');\n    if (smask) {\n      smaskPromise = handleImageData(smask, nativeDecoder);\n      maskPromise = Promise.resolve(null);\n    } else {\n      smaskPromise = Promise.resolve(null);\n      if (mask) {\n        if ((0, _primitives.isStream)(mask)) {\n          maskPromise = handleImageData(mask, nativeDecoder);\n        } else if (Array.isArray(mask)) {\n          maskPromise = Promise.resolve(mask);\n        } else {\n          (0, _util.warn)('Unsupported mask format.');\n          maskPromise = Promise.resolve(null);\n        }\n      } else {\n        maskPromise = Promise.resolve(null);\n      }\n    }\n    return Promise.all([imagePromise, smaskPromise, maskPromise]).then(function (_ref3) {\n      var _ref4 = _slicedToArray(_ref3, 3),\n          imageData = _ref4[0],\n          smaskData = _ref4[1],\n          maskData = _ref4[2];\n\n      return new PDFImage({\n        xref: xref,\n        res: res,\n        image: imageData,\n        isInline: isInline,\n        smask: smaskData,\n        mask: maskData,\n        pdfFunctionFactory: pdfFunctionFactory\n      });\n    });\n  };\n  PDFImage.createMask = function (_ref5) {\n    var imgArray = _ref5.imgArray,\n        width = _ref5.width,\n        height = _ref5.height,\n        imageIsFromDecodeStream = _ref5.imageIsFromDecodeStream,\n        inverseDecode = _ref5.inverseDecode;\n\n    var computedLength = (width + 7 >> 3) * height;\n    var actualLength = imgArray.byteLength;\n    var haveFullData = computedLength === actualLength;\n    var data, i;\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n      data = imgArray;\n    } else if (!inverseDecode) {\n      data = new Uint8ClampedArray(actualLength);\n      data.set(imgArray);\n    } else {\n      data = new Uint8ClampedArray(computedLength);\n      data.set(imgArray);\n      for (i = actualLength; i < computedLength; i++) {\n        data[i] = 0xff;\n      }\n    }\n    if (inverseDecode) {\n      for (i = 0; i < actualLength; i++) {\n        data[i] ^= 0xFF;\n      }\n    }\n    return {\n      data: data,\n      width: width,\n      height: height\n    };\n  };\n  PDFImage.prototype = {\n    get drawWidth() {\n      return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);\n    },\n    get drawHeight() {\n      return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);\n    },\n    decodeBuffer: function decodeBuffer(buffer) {\n      var bpc = this.bpc;\n      var numComps = this.numComps;\n      var decodeAddends = this.decodeAddends;\n      var decodeCoefficients = this.decodeCoefficients;\n      var max = (1 << bpc) - 1;\n      var i, ii;\n      if (bpc === 1) {\n        for (i = 0, ii = buffer.length; i < ii; i++) {\n          buffer[i] = +!buffer[i];\n        }\n        return;\n      }\n      var index = 0;\n      for (i = 0, ii = this.width * this.height; i < ii; i++) {\n        for (var j = 0; j < numComps; j++) {\n          buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);\n          index++;\n        }\n      }\n    },\n    getComponents: function getComponents(buffer) {\n      var bpc = this.bpc;\n      if (bpc === 8) {\n        return buffer;\n      }\n      var width = this.width;\n      var height = this.height;\n      var numComps = this.numComps;\n      var length = width * height * numComps;\n      var bufferPos = 0;\n      var output = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);\n      var rowComps = width * numComps;\n      var max = (1 << bpc) - 1;\n      var i = 0,\n          ii,\n          buf;\n      if (bpc === 1) {\n        var mask, loop1End, loop2End;\n        for (var j = 0; j < height; j++) {\n          loop1End = i + (rowComps & ~7);\n          loop2End = i + rowComps;\n          while (i < loop1End) {\n            buf = buffer[bufferPos++];\n            output[i] = buf >> 7 & 1;\n            output[i + 1] = buf >> 6 & 1;\n            output[i + 2] = buf >> 5 & 1;\n            output[i + 3] = buf >> 4 & 1;\n            output[i + 4] = buf >> 3 & 1;\n            output[i + 5] = buf >> 2 & 1;\n            output[i + 6] = buf >> 1 & 1;\n            output[i + 7] = buf & 1;\n            i += 8;\n          }\n          if (i < loop2End) {\n            buf = buffer[bufferPos++];\n            mask = 128;\n            while (i < loop2End) {\n              output[i++] = +!!(buf & mask);\n              mask >>= 1;\n            }\n          }\n        }\n      } else {\n        var bits = 0;\n        buf = 0;\n        for (i = 0, ii = length; i < ii; ++i) {\n          if (i % rowComps === 0) {\n            buf = 0;\n            bits = 0;\n          }\n          while (bits < bpc) {\n            buf = buf << 8 | buffer[bufferPos++];\n            bits += 8;\n          }\n          var remainingBits = bits - bpc;\n          var value = buf >> remainingBits;\n          output[i] = value < 0 ? 0 : value > max ? max : value;\n          buf = buf & (1 << remainingBits) - 1;\n          bits = remainingBits;\n        }\n      }\n      return output;\n    },\n    fillOpacity: function fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n      var smask = this.smask;\n      var mask = this.mask;\n      var alphaBuf, sw, sh, i, ii, j;\n      if (smask) {\n        sw = smask.width;\n        sh = smask.height;\n        alphaBuf = new Uint8ClampedArray(sw * sh);\n        smask.fillGrayBuffer(alphaBuf);\n        if (sw !== width || sh !== height) {\n          alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n        }\n      } else if (mask) {\n        if (mask instanceof PDFImage) {\n          sw = mask.width;\n          sh = mask.height;\n          alphaBuf = new Uint8ClampedArray(sw * sh);\n          mask.numComps = 1;\n          mask.fillGrayBuffer(alphaBuf);\n          for (i = 0, ii = sw * sh; i < ii; ++i) {\n            alphaBuf[i] = 255 - alphaBuf[i];\n          }\n          if (sw !== width || sh !== height) {\n            alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n          }\n        } else if (Array.isArray(mask)) {\n          alphaBuf = new Uint8ClampedArray(width * height);\n          var numComps = this.numComps;\n          for (i = 0, ii = width * height; i < ii; ++i) {\n            var opacity = 0;\n            var imageOffset = i * numComps;\n            for (j = 0; j < numComps; ++j) {\n              var color = image[imageOffset + j];\n              var maskOffset = j * 2;\n              if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n                opacity = 255;\n                break;\n              }\n            }\n            alphaBuf[i] = opacity;\n          }\n        } else {\n          throw new _util.FormatError('Unknown mask format.');\n        }\n      }\n      if (alphaBuf) {\n        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n          rgbaBuf[j] = alphaBuf[i];\n        }\n      } else {\n        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n          rgbaBuf[j] = 255;\n        }\n      }\n    },\n    undoPreblend: function undoPreblend(buffer, width, height) {\n      var matte = this.smask && this.smask.matte;\n      if (!matte) {\n        return;\n      }\n      var matteRgb = this.colorSpace.getRgb(matte, 0);\n      var matteR = matteRgb[0];\n      var matteG = matteRgb[1];\n      var matteB = matteRgb[2];\n      var length = width * height * 4;\n      for (var i = 0; i < length; i += 4) {\n        var alpha = buffer[i + 3];\n        if (alpha === 0) {\n          buffer[i] = 255;\n          buffer[i + 1] = 255;\n          buffer[i + 2] = 255;\n          continue;\n        }\n        var k = 255 / alpha;\n        buffer[i] = (buffer[i] - matteR) * k + matteR;\n        buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n        buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n      }\n    },\n    createImageData: function createImageData() {\n      var forceRGBA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      var drawWidth = this.drawWidth;\n      var drawHeight = this.drawHeight;\n      var imgData = {\n        width: drawWidth,\n        height: drawHeight,\n        kind: 0,\n        data: null\n      };\n      var numComps = this.numComps;\n      var originalWidth = this.width;\n      var originalHeight = this.height;\n      var bpc = this.bpc;\n      var rowBytes = originalWidth * numComps * bpc + 7 >> 3;\n      var imgArray;\n      if (!forceRGBA) {\n        var kind;\n        if (this.colorSpace.name === 'DeviceGray' && bpc === 1) {\n          kind = _util.ImageKind.GRAYSCALE_1BPP;\n        } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 && !this.needsDecode) {\n          kind = _util.ImageKind.RGB_24BPP;\n        }\n        if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {\n          imgData.kind = kind;\n          imgArray = this.getImageBytes(originalHeight * rowBytes);\n          if (this.image instanceof _stream.DecodeStream) {\n            imgData.data = imgArray;\n          } else {\n            var newArray = new Uint8ClampedArray(imgArray.length);\n            newArray.set(imgArray);\n            imgData.data = newArray;\n          }\n          if (this.needsDecode) {\n            (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, 'PDFImage.createImageData: The image must be grayscale.');\n            var buffer = imgData.data;\n            for (var i = 0, ii = buffer.length; i < ii; i++) {\n              buffer[i] ^= 0xff;\n            }\n          }\n          return imgData;\n        }\n        if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {\n          var imageLength = originalHeight * rowBytes;\n          switch (this.colorSpace.name) {\n            case 'DeviceGray':\n              imageLength *= 3;\n            case 'DeviceRGB':\n            case 'DeviceCMYK':\n              imgData.kind = _util.ImageKind.RGB_24BPP;\n              imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);\n              return imgData;\n          }\n        }\n      }\n      imgArray = this.getImageBytes(originalHeight * rowBytes);\n      var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;\n      var comps = this.getComponents(imgArray);\n      var alpha01, maybeUndoPreblend;\n      if (!forceRGBA && !this.smask && !this.mask) {\n        imgData.kind = _util.ImageKind.RGB_24BPP;\n        imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n        alpha01 = 0;\n        maybeUndoPreblend = false;\n      } else {\n        imgData.kind = _util.ImageKind.RGBA_32BPP;\n        imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n        alpha01 = 1;\n        maybeUndoPreblend = true;\n        this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);\n      }\n      if (this.needsDecode) {\n        this.decodeBuffer(comps);\n      }\n      this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);\n      if (maybeUndoPreblend) {\n        this.undoPreblend(imgData.data, drawWidth, actualHeight);\n      }\n      return imgData;\n    },\n    fillGrayBuffer: function fillGrayBuffer(buffer) {\n      var numComps = this.numComps;\n      if (numComps !== 1) {\n        throw new _util.FormatError('Reading gray scale from a color image: ' + numComps);\n      }\n      var width = this.width;\n      var height = this.height;\n      var bpc = this.bpc;\n      var rowBytes = width * numComps * bpc + 7 >> 3;\n      var imgArray = this.getImageBytes(height * rowBytes);\n      var comps = this.getComponents(imgArray);\n      var i, length;\n      if (bpc === 1) {\n        length = width * height;\n        if (this.needsDecode) {\n          for (i = 0; i < length; ++i) {\n            buffer[i] = comps[i] - 1 & 255;\n          }\n        } else {\n          for (i = 0; i < length; ++i) {\n            buffer[i] = -comps[i] & 255;\n          }\n        }\n        return;\n      }\n      if (this.needsDecode) {\n        this.decodeBuffer(comps);\n      }\n      length = width * height;\n      var scale = 255 / ((1 << bpc) - 1);\n      for (i = 0; i < length; ++i) {\n        buffer[i] = scale * comps[i];\n      }\n    },\n    getImageBytes: function getImageBytes(length, drawWidth, drawHeight) {\n      var forceRGB = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n      this.image.reset();\n      this.image.drawWidth = drawWidth || this.width;\n      this.image.drawHeight = drawHeight || this.height;\n      this.image.forceRGB = !!forceRGB;\n      return this.image.getBytes(length, true);\n    }\n  };\n  return PDFImage;\n}();\nexports.PDFImage = PDFImage;\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MessageHandler = undefined;\n\nvar _regenerator = __w_pdfjs_require__(131);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar resolveCall = function () {\n  var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(fn, args) {\n    var thisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n    return _regenerator2.default.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            if (fn) {\n              _context.next = 2;\n              break;\n            }\n\n            return _context.abrupt('return');\n\n          case 2:\n            return _context.abrupt('return', fn.apply(thisArg, args));\n\n          case 3:\n          case 'end':\n            return _context.stop();\n        }\n      }\n    }, _callee, this);\n  }));\n\n  return function resolveCall(_x2, _x3) {\n    return _ref.apply(this, arguments);\n  };\n}();\n\nvar _util = __w_pdfjs_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction wrapReason(reason) {\n  if ((typeof reason === 'undefined' ? 'undefined' : _typeof(reason)) !== 'object') {\n    return reason;\n  }\n  switch (reason.name) {\n    case 'AbortException':\n      return new _util.AbortException(reason.message);\n    case 'MissingPDFException':\n      return new _util.MissingPDFException(reason.message);\n    case 'UnexpectedResponseException':\n      return new _util.UnexpectedResponseException(reason.message, reason.status);\n    default:\n      return new _util.UnknownErrorException(reason.message, reason.details);\n  }\n}\nfunction makeReasonSerializable(reason) {\n  if (!(reason instanceof Error) || reason instanceof _util.AbortException || reason instanceof _util.MissingPDFException || reason instanceof _util.UnexpectedResponseException || reason instanceof _util.UnknownErrorException) {\n    return reason;\n  }\n  return new _util.UnknownErrorException(reason.message, reason.toString());\n}\nfunction resolveOrReject(capability, success, reason) {\n  if (success) {\n    capability.resolve();\n  } else {\n    capability.reject(reason);\n  }\n}\nfunction finalize(promise) {\n  return Promise.resolve(promise).catch(function () {});\n}\nfunction MessageHandler(sourceName, targetName, comObj) {\n  var _this = this;\n\n  this.sourceName = sourceName;\n  this.targetName = targetName;\n  this.comObj = comObj;\n  this.callbackId = 1;\n  this.streamId = 1;\n  this.postMessageTransfers = true;\n  this.streamSinks = Object.create(null);\n  this.streamControllers = Object.create(null);\n  var callbacksCapabilities = this.callbacksCapabilities = Object.create(null);\n  var ah = this.actionHandler = Object.create(null);\n  this._onComObjOnMessage = function (event) {\n    var data = event.data;\n    if (data.targetName !== _this.sourceName) {\n      return;\n    }\n    if (data.stream) {\n      _this._processStreamMessage(data);\n    } else if (data.isReply) {\n      var callbackId = data.callbackId;\n      if (data.callbackId in callbacksCapabilities) {\n        var callback = callbacksCapabilities[callbackId];\n        delete callbacksCapabilities[callbackId];\n        if ('error' in data) {\n          callback.reject(wrapReason(data.error));\n        } else {\n          callback.resolve(data.data);\n        }\n      } else {\n        throw new Error('Cannot resolve callback ' + callbackId);\n      }\n    } else if (data.action in ah) {\n      var action = ah[data.action];\n      if (data.callbackId) {\n        var _sourceName = _this.sourceName;\n        var _targetName = data.sourceName;\n        Promise.resolve().then(function () {\n          return action[0].call(action[1], data.data);\n        }).then(function (result) {\n          comObj.postMessage({\n            sourceName: _sourceName,\n            targetName: _targetName,\n            isReply: true,\n            callbackId: data.callbackId,\n            data: result\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName: _sourceName,\n            targetName: _targetName,\n            isReply: true,\n            callbackId: data.callbackId,\n            error: makeReasonSerializable(reason)\n          });\n        });\n      } else if (data.streamId) {\n        _this._createStreamSink(data);\n      } else {\n        action[0].call(action[1], data.data);\n      }\n    } else {\n      throw new Error('Unknown action from worker: ' + data.action);\n    }\n  };\n  comObj.addEventListener('message', this._onComObjOnMessage);\n}\nMessageHandler.prototype = {\n  on: function on(actionName, handler, scope) {\n    var ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error('There is already an actionName called \"' + actionName + '\"');\n    }\n    ah[actionName] = [handler, scope];\n  },\n  send: function send(actionName, data, transfers) {\n    var message = {\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data: data\n    };\n    this.postMessage(message, transfers);\n  },\n  sendWithPromise: function sendWithPromise(actionName, data, transfers) {\n    var callbackId = this.callbackId++;\n    var message = {\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data: data,\n      callbackId: callbackId\n    };\n    var capability = (0, _util.createPromiseCapability)();\n    this.callbacksCapabilities[callbackId] = capability;\n    try {\n      this.postMessage(message, transfers);\n    } catch (e) {\n      capability.reject(e);\n    }\n    return capability.promise;\n  },\n  sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) {\n    var _this2 = this;\n\n    var streamId = this.streamId++;\n    var sourceName = this.sourceName;\n    var targetName = this.targetName;\n    return new _util.ReadableStream({\n      start: function start(controller) {\n        var startCapability = (0, _util.createPromiseCapability)();\n        _this2.streamControllers[streamId] = {\n          controller: controller,\n          startCall: startCapability,\n          isClosed: false\n        };\n        _this2.postMessage({\n          sourceName: sourceName,\n          targetName: targetName,\n          action: actionName,\n          streamId: streamId,\n          data: data,\n          desiredSize: controller.desiredSize\n        });\n        return startCapability.promise;\n      },\n      pull: function pull(controller) {\n        var pullCapability = (0, _util.createPromiseCapability)();\n        _this2.streamControllers[streamId].pullCall = pullCapability;\n        _this2.postMessage({\n          sourceName: sourceName,\n          targetName: targetName,\n          stream: 'pull',\n          streamId: streamId,\n          desiredSize: controller.desiredSize\n        });\n        return pullCapability.promise;\n      },\n      cancel: function cancel(reason) {\n        var cancelCapability = (0, _util.createPromiseCapability)();\n        _this2.streamControllers[streamId].cancelCall = cancelCapability;\n        _this2.streamControllers[streamId].isClosed = true;\n        _this2.postMessage({\n          sourceName: sourceName,\n          targetName: targetName,\n          stream: 'cancel',\n          reason: reason,\n          streamId: streamId\n        });\n        return cancelCapability.promise;\n      }\n    }, queueingStrategy);\n  },\n  _createStreamSink: function _createStreamSink(data) {\n    var _this3 = this;\n\n    var self = this;\n    var action = this.actionHandler[data.action];\n    var streamId = data.streamId;\n    var desiredSize = data.desiredSize;\n    var sourceName = this.sourceName;\n    var targetName = data.sourceName;\n    var capability = (0, _util.createPromiseCapability)();\n    var sendStreamRequest = function sendStreamRequest(_ref2) {\n      var stream = _ref2.stream,\n          chunk = _ref2.chunk,\n          transfers = _ref2.transfers,\n          success = _ref2.success,\n          reason = _ref2.reason;\n\n      _this3.postMessage({\n        sourceName: sourceName,\n        targetName: targetName,\n        stream: stream,\n        streamId: streamId,\n        chunk: chunk,\n        success: success,\n        reason: reason\n      }, transfers);\n    };\n    var streamSink = {\n      enqueue: function enqueue(chunk) {\n        var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n        var transfers = arguments[2];\n\n        if (this.isCancelled) {\n          return;\n        }\n        var lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = (0, _util.createPromiseCapability)();\n          this.ready = this.sinkCapability.promise;\n        }\n        sendStreamRequest({\n          stream: 'enqueue',\n          chunk: chunk,\n          transfers: transfers\n        });\n      },\n      close: function close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        sendStreamRequest({ stream: 'close' });\n        delete self.streamSinks[streamId];\n      },\n      error: function error(reason) {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        sendStreamRequest({\n          stream: 'error',\n          reason: reason\n        });\n      },\n\n      sinkCapability: capability,\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: desiredSize,\n      ready: null\n    };\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    resolveCall(action[0], [data.data, streamSink], action[1]).then(function () {\n      sendStreamRequest({\n        stream: 'start_complete',\n        success: true\n      });\n    }, function (reason) {\n      sendStreamRequest({\n        stream: 'start_complete',\n        success: false,\n        reason: reason\n      });\n    });\n  },\n  _processStreamMessage: function _processStreamMessage(data) {\n    var _this4 = this;\n\n    var sourceName = this.sourceName;\n    var targetName = data.sourceName;\n    var streamId = data.streamId;\n    var sendStreamResponse = function sendStreamResponse(_ref3) {\n      var stream = _ref3.stream,\n          success = _ref3.success,\n          reason = _ref3.reason;\n\n      _this4.comObj.postMessage({\n        sourceName: sourceName,\n        targetName: targetName,\n        stream: stream,\n        success: success,\n        streamId: streamId,\n        reason: reason\n      });\n    };\n    var deleteStreamController = function deleteStreamController() {\n      Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) {\n        return capability && finalize(capability.promise);\n      })).then(function () {\n        delete _this4.streamControllers[data.streamId];\n      });\n    };\n    switch (data.stream) {\n      case 'start_complete':\n        resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason));\n        break;\n      case 'pull_complete':\n        resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason));\n        break;\n      case 'pull':\n        if (!this.streamSinks[data.streamId]) {\n          sendStreamResponse({\n            stream: 'pull_complete',\n            success: true\n          });\n          break;\n        }\n        if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) {\n          this.streamSinks[data.streamId].sinkCapability.resolve();\n        }\n        this.streamSinks[data.streamId].desiredSize = data.desiredSize;\n        resolveCall(this.streamSinks[data.streamId].onPull).then(function () {\n          sendStreamResponse({\n            stream: 'pull_complete',\n            success: true\n          });\n        }, function (reason) {\n          sendStreamResponse({\n            stream: 'pull_complete',\n            success: false,\n            reason: reason\n          });\n        });\n        break;\n      case 'enqueue':\n        (0, _util.assert)(this.streamControllers[data.streamId], 'enqueue should have stream controller');\n        if (!this.streamControllers[data.streamId].isClosed) {\n          this.streamControllers[data.streamId].controller.enqueue(data.chunk);\n        }\n        break;\n      case 'close':\n        (0, _util.assert)(this.streamControllers[data.streamId], 'close should have stream controller');\n        if (this.streamControllers[data.streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[data.streamId].isClosed = true;\n        this.streamControllers[data.streamId].controller.close();\n        deleteStreamController();\n        break;\n      case 'error':\n        (0, _util.assert)(this.streamControllers[data.streamId], 'error should have stream controller');\n        this.streamControllers[data.streamId].controller.error(wrapReason(data.reason));\n        deleteStreamController();\n        break;\n      case 'cancel_complete':\n        resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason));\n        deleteStreamController();\n        break;\n      case 'cancel':\n        if (!this.streamSinks[data.streamId]) {\n          break;\n        }\n        resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () {\n          sendStreamResponse({\n            stream: 'cancel_complete',\n            success: true\n          });\n        }, function (reason) {\n          sendStreamResponse({\n            stream: 'cancel_complete',\n            success: false,\n            reason: reason\n          });\n        });\n        this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason));\n        this.streamSinks[data.streamId].isCancelled = true;\n        delete this.streamSinks[data.streamId];\n        break;\n      default:\n        throw new Error('Unexpected stream case');\n    }\n  },\n  postMessage: function postMessage(message, transfers) {\n    if (transfers && this.postMessageTransfers) {\n      this.comObj.postMessage(message, transfers);\n    } else {\n      this.comObj.postMessage(message);\n    }\n  },\n  destroy: function destroy() {\n    this.comObj.removeEventListener('message', this._onComObjOnMessage);\n  }\n};\nexports.MessageHandler = MessageHandler;\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pdf.worker.js.map"
  },
  {
    "path": "static/js/pdfjs/web/cmaps/CNS2-V.bcmap",
    "content": "\u0003RCopyright 1990-2009 Adobe Systems Incorporated.\nAll rights reserved.\nSee ./LICENSE\u0006CNS2-H"
  },
  {
    "path": "static/js/pdfjs/web/cmaps/ETenms-B5-H.bcmap",
    "content": "\u0002RCopyright 1990-2009 Adobe Systems Incorporated.\nAll rights reserved.\nSee ./LICENSE\tETen-B5-H`\u0001 ^\u0001"
  },
  {
    "path": "static/js/pdfjs/web/cmaps/GB-H.bcmap",
    "content": "\u0002RCopyright 1990-2009 Adobe Systems Incorporated.\nAll rights reserved.\nSee ./LICENSE\u0001\u0001!!]aX!!]`21>\u0002\tp\u0002\u000bz$]\u0006\"Rd-U7*\u0017\r\b4%+ Z\u000f {/\u001f\u001c\u0004%<9Kb1].\"\u001f\f`],\"]\n\"]h\"]F\"]$\"]\u0002\"]`\"]>\"]\u001c\"]z\"]X\"]6\"]\u0014\"]r\"]P\"].\"]\f\"]j\"]H\"]&\"]\u0004\"]b\"]@\"]\u001e\"]|\"]Z\"]8\"]\u0016\"]t\"]R\"]0\"]\u000e\"]l\"]J\"](\"]\u0006\"]d\"]B\"] \"X~']W\"]5\"]\u0013\"]q\"]O\"]-\"]\u000b\"]i\"]G\"]%\"]\u0003\"]a\"]?\"]\u001d\"]{\"]Y\"]7\"]\u0015\"]s\"]Q\"]/\"]\r\"]k\"]I\"]'\"]\u0005\"]c\"]A\"]\u001f\"]}\"][\"]9"
  },
  {
    "path": "static/js/pdfjs/web/cmaps/LICENSE",
    "content": "%%Copyright: -----------------------------------------------------------\n%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.\n%%Copyright: All rights reserved.\n%%Copyright:\n%%Copyright: Redistribution and use in source and binary forms, with or\n%%Copyright: without modification, are permitted provided that the\n%%Copyright: following conditions are met:\n%%Copyright:\n%%Copyright: Redistributions of source code must retain the above\n%%Copyright: copyright notice, this list of conditions and the following\n%%Copyright: disclaimer.\n%%Copyright:\n%%Copyright: Redistributions in binary form must reproduce the above\n%%Copyright: copyright notice, this list of conditions and the following\n%%Copyright: disclaimer in the documentation and/or other materials\n%%Copyright: provided with the distribution. \n%%Copyright:\n%%Copyright: Neither the name of Adobe Systems Incorporated nor the names\n%%Copyright: of its contributors may be used to endorse or promote\n%%Copyright: products derived from this software without specific prior\n%%Copyright: written permission. \n%%Copyright:\n%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n%%Copyright: CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR\n%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n%%Copyright: -----------------------------------------------------------\n"
  },
  {
    "path": "static/js/pdfjs/web/debugger.js",
    "content": "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-var */\n\n'use strict';\n\nvar FontInspector = (function FontInspectorClosure() {\n  var fonts, createObjectURL;\n  var active = false;\n  var fontAttribute = 'data-font-name';\n  function removeSelection() {\n    var divs = document.querySelectorAll('div[' + fontAttribute + ']');\n    for (var i = 0, ii = divs.length; i < ii; ++i) {\n      var div = divs[i];\n      div.className = '';\n    }\n  }\n  function resetSelection() {\n    var divs = document.querySelectorAll('div[' + fontAttribute + ']');\n    for (var i = 0, ii = divs.length; i < ii; ++i) {\n      var div = divs[i];\n      div.className = 'debuggerHideText';\n    }\n  }\n  function selectFont(fontName, show) {\n    var divs = document.querySelectorAll('div[' + fontAttribute + '=' +\n                                         fontName + ']');\n    for (var i = 0, ii = divs.length; i < ii; ++i) {\n      var div = divs[i];\n      div.className = show ? 'debuggerShowText' : 'debuggerHideText';\n    }\n  }\n  function textLayerClick(e) {\n    if (!e.target.dataset.fontName ||\n        e.target.tagName.toUpperCase() !== 'DIV') {\n      return;\n    }\n    var fontName = e.target.dataset.fontName;\n    var selects = document.getElementsByTagName('input');\n    for (var i = 0; i < selects.length; ++i) {\n      var select = selects[i];\n      if (select.dataset.fontName !== fontName) {\n        continue;\n      }\n      select.checked = !select.checked;\n      selectFont(fontName, select.checked);\n      select.scrollIntoView();\n    }\n  }\n  return {\n    // Properties/functions needed by PDFBug.\n    id: 'FontInspector',\n    name: 'Font Inspector',\n    panel: null,\n    manager: null,\n    init: function init(pdfjsLib) {\n      var panel = this.panel;\n      panel.setAttribute('style', 'padding: 5px;');\n      var tmp = document.createElement('button');\n      tmp.addEventListener('click', resetSelection);\n      tmp.textContent = 'Refresh';\n      panel.appendChild(tmp);\n\n      fonts = document.createElement('div');\n      panel.appendChild(fonts);\n\n      createObjectURL = pdfjsLib.createObjectURL;\n    },\n    cleanup: function cleanup() {\n      fonts.textContent = '';\n    },\n    enabled: false,\n    get active() {\n      return active;\n    },\n    set active(value) {\n      active = value;\n      if (active) {\n        document.body.addEventListener('click', textLayerClick, true);\n        resetSelection();\n      } else {\n        document.body.removeEventListener('click', textLayerClick, true);\n        removeSelection();\n      }\n    },\n    // FontInspector specific functions.\n    fontAdded: function fontAdded(fontObj, url) {\n      function properties(obj, list) {\n        var moreInfo = document.createElement('table');\n        for (var i = 0; i < list.length; i++) {\n          var tr = document.createElement('tr');\n          var td1 = document.createElement('td');\n          td1.textContent = list[i];\n          tr.appendChild(td1);\n          var td2 = document.createElement('td');\n          td2.textContent = obj[list[i]].toString();\n          tr.appendChild(td2);\n          moreInfo.appendChild(tr);\n        }\n        return moreInfo;\n      }\n      var moreInfo = properties(fontObj, ['name', 'type']);\n      var fontName = fontObj.loadedName;\n      var font = document.createElement('div');\n      var name = document.createElement('span');\n      name.textContent = fontName;\n      var download = document.createElement('a');\n      if (url) {\n        url = /url\\(['\"]?([^\\)\"']+)/.exec(url);\n        download.href = url[1];\n      } else if (fontObj.data) {\n        download.href = createObjectURL(fontObj.data, fontObj.mimeType);\n      }\n      download.textContent = 'Download';\n      var logIt = document.createElement('a');\n      logIt.href = '';\n      logIt.textContent = 'Log';\n      logIt.addEventListener('click', function(event) {\n        event.preventDefault();\n        console.log(fontObj);\n      });\n      var select = document.createElement('input');\n      select.setAttribute('type', 'checkbox');\n      select.dataset.fontName = fontName;\n      select.addEventListener('click', (function(select, fontName) {\n        return (function() {\n           selectFont(fontName, select.checked);\n        });\n      })(select, fontName));\n      font.appendChild(select);\n      font.appendChild(name);\n      font.appendChild(document.createTextNode(' '));\n      font.appendChild(download);\n      font.appendChild(document.createTextNode(' '));\n      font.appendChild(logIt);\n      font.appendChild(moreInfo);\n      fonts.appendChild(font);\n      // Somewhat of a hack, should probably add a hook for when the text layer\n      // is done rendering.\n      setTimeout(() => {\n        if (this.active) {\n          resetSelection();\n        }\n      }, 2000);\n    },\n  };\n})();\n\nvar opMap;\n\n// Manages all the page steppers.\nvar StepperManager = (function StepperManagerClosure() {\n  var steppers = [];\n  var stepperDiv = null;\n  var stepperControls = null;\n  var stepperChooser = null;\n  var breakPoints = Object.create(null);\n  return {\n    // Properties/functions needed by PDFBug.\n    id: 'Stepper',\n    name: 'Stepper',\n    panel: null,\n    manager: null,\n    init: function init(pdfjsLib) {\n      var self = this;\n      this.panel.setAttribute('style', 'padding: 5px;');\n      stepperControls = document.createElement('div');\n      stepperChooser = document.createElement('select');\n      stepperChooser.addEventListener('change', function(event) {\n        self.selectStepper(this.value);\n      });\n      stepperControls.appendChild(stepperChooser);\n      stepperDiv = document.createElement('div');\n      this.panel.appendChild(stepperControls);\n      this.panel.appendChild(stepperDiv);\n      if (sessionStorage.getItem('pdfjsBreakPoints')) {\n        breakPoints = JSON.parse(sessionStorage.getItem('pdfjsBreakPoints'));\n      }\n\n      opMap = Object.create(null);\n      for (var key in pdfjsLib.OPS) {\n        opMap[pdfjsLib.OPS[key]] = key;\n      }\n    },\n    cleanup: function cleanup() {\n      stepperChooser.textContent = '';\n      stepperDiv.textContent = '';\n      steppers = [];\n    },\n    enabled: false,\n    active: false,\n    // Stepper specific functions.\n    create: function create(pageIndex) {\n      var debug = document.createElement('div');\n      debug.id = 'stepper' + pageIndex;\n      debug.setAttribute('hidden', true);\n      debug.className = 'stepper';\n      stepperDiv.appendChild(debug);\n      var b = document.createElement('option');\n      b.textContent = 'Page ' + (pageIndex + 1);\n      b.value = pageIndex;\n      stepperChooser.appendChild(b);\n      var initBreakPoints = breakPoints[pageIndex] || [];\n      var stepper = new Stepper(debug, pageIndex, initBreakPoints);\n      steppers.push(stepper);\n      if (steppers.length === 1) {\n        this.selectStepper(pageIndex, false);\n      }\n      return stepper;\n    },\n    selectStepper: function selectStepper(pageIndex, selectPanel) {\n      var i;\n      pageIndex = pageIndex | 0;\n      if (selectPanel) {\n        this.manager.selectPanel(this);\n      }\n      for (i = 0; i < steppers.length; ++i) {\n        var stepper = steppers[i];\n        if (stepper.pageIndex === pageIndex) {\n          stepper.panel.removeAttribute('hidden');\n        } else {\n          stepper.panel.setAttribute('hidden', true);\n        }\n      }\n      var options = stepperChooser.options;\n      for (i = 0; i < options.length; ++i) {\n        var option = options[i];\n        option.selected = (option.value | 0) === pageIndex;\n      }\n    },\n    saveBreakPoints: function saveBreakPoints(pageIndex, bps) {\n      breakPoints[pageIndex] = bps;\n      sessionStorage.setItem('pdfjsBreakPoints', JSON.stringify(breakPoints));\n    },\n  };\n})();\n\n// The stepper for each page's IRQueue.\nvar Stepper = (function StepperClosure() {\n  // Shorter way to create element and optionally set textContent.\n  function c(tag, textContent) {\n    var d = document.createElement(tag);\n    if (textContent) {\n      d.textContent = textContent;\n    }\n    return d;\n  }\n\n  function simplifyArgs(args) {\n    if (typeof args === 'string') {\n      var MAX_STRING_LENGTH = 75;\n      return args.length <= MAX_STRING_LENGTH ? args :\n        args.substring(0, MAX_STRING_LENGTH) + '...';\n    }\n    if (typeof args !== 'object' || args === null) {\n      return args;\n    }\n    if ('length' in args) { // array\n      var simpleArgs = [], i, ii;\n      var MAX_ITEMS = 10;\n      for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) {\n        simpleArgs.push(simplifyArgs(args[i]));\n      }\n      if (i < args.length) {\n        simpleArgs.push('...');\n      }\n      return simpleArgs;\n    }\n    var simpleObj = {};\n    for (var key in args) {\n      simpleObj[key] = simplifyArgs(args[key]);\n    }\n    return simpleObj;\n  }\n\n  function Stepper(panel, pageIndex, initialBreakPoints) {\n    this.panel = panel;\n    this.breakPoint = 0;\n    this.nextBreakPoint = null;\n    this.pageIndex = pageIndex;\n    this.breakPoints = initialBreakPoints;\n    this.currentIdx = -1;\n    this.operatorListIdx = 0;\n  }\n  Stepper.prototype = {\n    init: function init(operatorList) {\n      var panel = this.panel;\n      var content = c('div', 'c=continue, s=step');\n      var table = c('table');\n      content.appendChild(table);\n      table.cellSpacing = 0;\n      var headerRow = c('tr');\n      table.appendChild(headerRow);\n      headerRow.appendChild(c('th', 'Break'));\n      headerRow.appendChild(c('th', 'Idx'));\n      headerRow.appendChild(c('th', 'fn'));\n      headerRow.appendChild(c('th', 'args'));\n      panel.appendChild(content);\n      this.table = table;\n      this.updateOperatorList(operatorList);\n    },\n    updateOperatorList: function updateOperatorList(operatorList) {\n      var self = this;\n\n      function cboxOnClick() {\n        var x = +this.dataset.idx;\n        if (this.checked) {\n          self.breakPoints.push(x);\n        } else {\n          self.breakPoints.splice(self.breakPoints.indexOf(x), 1);\n        }\n        StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints);\n      }\n\n      var MAX_OPERATORS_COUNT = 15000;\n      if (this.operatorListIdx > MAX_OPERATORS_COUNT) {\n        return;\n      }\n\n      var chunk = document.createDocumentFragment();\n      var operatorsToDisplay = Math.min(MAX_OPERATORS_COUNT,\n                                        operatorList.fnArray.length);\n      for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) {\n        var line = c('tr');\n        line.className = 'line';\n        line.dataset.idx = i;\n        chunk.appendChild(line);\n        var checked = this.breakPoints.includes(i);\n        var args = operatorList.argsArray[i] || [];\n\n        var breakCell = c('td');\n        var cbox = c('input');\n        cbox.type = 'checkbox';\n        cbox.className = 'points';\n        cbox.checked = checked;\n        cbox.dataset.idx = i;\n        cbox.onclick = cboxOnClick;\n\n        breakCell.appendChild(cbox);\n        line.appendChild(breakCell);\n        line.appendChild(c('td', i.toString()));\n        var fn = opMap[operatorList.fnArray[i]];\n        var decArgs = args;\n        if (fn === 'showText') {\n          var glyphs = args[0];\n          var newArgs = [];\n          var str = [];\n          for (var j = 0; j < glyphs.length; j++) {\n            var glyph = glyphs[j];\n            if (typeof glyph === 'object' && glyph !== null) {\n              str.push(glyph.fontChar);\n            } else {\n              if (str.length > 0) {\n                newArgs.push(str.join(''));\n                str = [];\n              }\n              newArgs.push(glyph); // null or number\n            }\n          }\n          if (str.length > 0) {\n            newArgs.push(str.join(''));\n          }\n          decArgs = [newArgs];\n        }\n        line.appendChild(c('td', fn));\n        line.appendChild(c('td', JSON.stringify(simplifyArgs(decArgs))));\n      }\n      if (operatorsToDisplay < operatorList.fnArray.length) {\n        line = c('tr');\n        var lastCell = c('td', '...');\n        lastCell.colspan = 4;\n        chunk.appendChild(lastCell);\n      }\n      this.operatorListIdx = operatorList.fnArray.length;\n      this.table.appendChild(chunk);\n    },\n    getNextBreakPoint: function getNextBreakPoint() {\n      this.breakPoints.sort(function(a, b) {\n        return a - b;\n      });\n      for (var i = 0; i < this.breakPoints.length; i++) {\n        if (this.breakPoints[i] > this.currentIdx) {\n          return this.breakPoints[i];\n        }\n      }\n      return null;\n    },\n    breakIt: function breakIt(idx, callback) {\n      StepperManager.selectStepper(this.pageIndex, true);\n      var self = this;\n      var dom = document;\n      self.currentIdx = idx;\n      var listener = function(e) {\n        switch (e.keyCode) {\n          case 83: // step\n            dom.removeEventListener('keydown', listener);\n            self.nextBreakPoint = self.currentIdx + 1;\n            self.goTo(-1);\n            callback();\n            break;\n          case 67: // continue\n            dom.removeEventListener('keydown', listener);\n            var breakPoint = self.getNextBreakPoint();\n            self.nextBreakPoint = breakPoint;\n            self.goTo(-1);\n            callback();\n            break;\n        }\n      };\n      dom.addEventListener('keydown', listener);\n      self.goTo(idx);\n    },\n    goTo: function goTo(idx) {\n      var allRows = this.panel.getElementsByClassName('line');\n      for (var x = 0, xx = allRows.length; x < xx; ++x) {\n        var row = allRows[x];\n        if ((row.dataset.idx | 0) === idx) {\n          row.style.backgroundColor = 'rgb(251,250,207)';\n          row.scrollIntoView();\n        } else {\n          row.style.backgroundColor = null;\n        }\n      }\n    },\n  };\n  return Stepper;\n})();\n\nvar Stats = (function Stats() {\n  var stats = [];\n  function clear(node) {\n    while (node.hasChildNodes()) {\n      node.removeChild(node.lastChild);\n    }\n  }\n  function getStatIndex(pageNumber) {\n    for (var i = 0, ii = stats.length; i < ii; ++i) {\n      if (stats[i].pageNumber === pageNumber) {\n        return i;\n      }\n    }\n    return false;\n  }\n  return {\n    // Properties/functions needed by PDFBug.\n    id: 'Stats',\n    name: 'Stats',\n    panel: null,\n    manager: null,\n    init(pdfjsLib) {\n      this.panel.setAttribute('style', 'padding: 5px;');\n    },\n    enabled: false,\n    active: false,\n    // Stats specific functions.\n    add(pageNumber, stat) {\n      if (!stat) {\n        return;\n      }\n      var statsIndex = getStatIndex(pageNumber);\n      if (statsIndex !== false) {\n        var b = stats[statsIndex];\n        this.panel.removeChild(b.div);\n        stats.splice(statsIndex, 1);\n      }\n      var wrapper = document.createElement('div');\n      wrapper.className = 'stats';\n      var title = document.createElement('div');\n      title.className = 'title';\n      title.textContent = 'Page: ' + pageNumber;\n      var statsDiv = document.createElement('div');\n      statsDiv.textContent = stat.toString();\n      wrapper.appendChild(title);\n      wrapper.appendChild(statsDiv);\n      stats.push({ pageNumber, div: wrapper, });\n      stats.sort(function(a, b) {\n        return a.pageNumber - b.pageNumber;\n      });\n      clear(this.panel);\n      for (var i = 0, ii = stats.length; i < ii; ++i) {\n        this.panel.appendChild(stats[i].div);\n      }\n    },\n    cleanup() {\n      stats = [];\n      clear(this.panel);\n    },\n  };\n})();\n\n// Manages all the debugging tools.\nwindow.PDFBug = (function PDFBugClosure() {\n  var panelWidth = 300;\n  var buttons = [];\n  var activePanel = null;\n\n  return {\n    tools: [\n      FontInspector,\n      StepperManager,\n      Stats\n    ],\n    enable(ids) {\n      var all = false, tools = this.tools;\n      if (ids.length === 1 && ids[0] === 'all') {\n        all = true;\n      }\n      for (var i = 0; i < tools.length; ++i) {\n        var tool = tools[i];\n        if (all || ids.includes(tool.id)) {\n          tool.enabled = true;\n        }\n      }\n      if (!all) {\n        // Sort the tools by the order they are enabled.\n        tools.sort(function(a, b) {\n          var indexA = ids.indexOf(a.id);\n          indexA = indexA < 0 ? tools.length : indexA;\n          var indexB = ids.indexOf(b.id);\n          indexB = indexB < 0 ? tools.length : indexB;\n          return indexA - indexB;\n        });\n      }\n    },\n    init(pdfjsLib, container) {\n      /*\n       * Basic Layout:\n       * PDFBug\n       *  Controls\n       *  Panels\n       *    Panel\n       *    Panel\n       *    ...\n       */\n      var ui = document.createElement('div');\n      ui.id = 'PDFBug';\n\n      var controls = document.createElement('div');\n      controls.setAttribute('class', 'controls');\n      ui.appendChild(controls);\n\n      var panels = document.createElement('div');\n      panels.setAttribute('class', 'panels');\n      ui.appendChild(panels);\n\n      container.appendChild(ui);\n      container.style.right = panelWidth + 'px';\n\n      // Initialize all the debugging tools.\n      var tools = this.tools;\n      var self = this;\n      for (var i = 0; i < tools.length; ++i) {\n        var tool = tools[i];\n        var panel = document.createElement('div');\n        var panelButton = document.createElement('button');\n        panelButton.textContent = tool.name;\n        panelButton.addEventListener('click', (function(selected) {\n          return function(event) {\n            event.preventDefault();\n            self.selectPanel(selected);\n          };\n        })(i));\n        controls.appendChild(panelButton);\n        panels.appendChild(panel);\n        tool.panel = panel;\n        tool.manager = this;\n        if (tool.enabled) {\n          tool.init(pdfjsLib);\n        } else {\n          panel.textContent = tool.name + ' is disabled. To enable add ' +\n                              ' \"' + tool.id + '\" to the pdfBug parameter ' +\n                              'and refresh (separate multiple by commas).';\n        }\n        buttons.push(panelButton);\n      }\n      this.selectPanel(0);\n    },\n    cleanup() {\n      for (var i = 0, ii = this.tools.length; i < ii; i++) {\n        if (this.tools[i].enabled) {\n          this.tools[i].cleanup();\n        }\n      }\n    },\n    selectPanel(index) {\n      if (typeof index !== 'number') {\n        index = this.tools.indexOf(index);\n      }\n      if (index === activePanel) {\n        return;\n      }\n      activePanel = index;\n      var tools = this.tools;\n      for (var j = 0; j < tools.length; ++j) {\n        if (j === index) {\n          buttons[j].setAttribute('class', 'active');\n          tools[j].active = true;\n          tools[j].panel.removeAttribute('hidden');\n        } else {\n          buttons[j].setAttribute('class', '');\n          tools[j].active = false;\n          tools[j].panel.setAttribute('hidden', 'true');\n        }\n      }\n    },\n  };\n})();\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ach/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Pot buk mukato\nprevious_label=Mukato\nnext.title=Pot buk malubo\nnext_label=Malubo\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pot buk\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=pi {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} me {{pagesCount}})\n\nzoom_out.title=Jwik Matidi\nzoom_out_label=Jwik Matidi\nzoom_in.title=Kwot Madit\nzoom_in_label=Kwot Madit\nzoom.title=Kwoti\npresentation_mode.title=Lokke i kit me tyer\npresentation_mode_label=Kit me tyer\nopen_file.title=Yab Pwail\nopen_file_label=Yab\nprint.title=Go\nprint_label=Go\ndownload.title=Gam\ndownload_label=Gam\nbookmark.title=Neno ma kombedi (lok onyo yab i dirica manyen)\nbookmark_label=Neno ma kombedi\n\n# Secondary toolbar and context menu\ntools.title=Gintic\ntools_label=Gintic\nfirst_page.title=Cit i pot buk mukwongo\nfirst_page.label=Cit i pot buk mukwongo\nfirst_page_label=Cit i pot buk mukwongo\nlast_page.title=Cit i pot buk magiko\nlast_page.label=Cit i pot buk magiko\nlast_page_label=Cit i pot buk magiko\npage_rotate_cw.title=Wire i tung lacuc\npage_rotate_cw.label=Wire i tung lacuc\npage_rotate_cw_label=Wire i tung lacuc\npage_rotate_ccw.title=Wire i tung lacam\npage_rotate_ccw.label=Wire i tung lacam\npage_rotate_ccw_label=Wire i tung lacam\n\ncursor_text_select_tool.title=Cak gitic me yero coc\ncursor_text_select_tool_label=Gitic me yero coc\ncursor_hand_tool.title=Cak gitic me cing\ncursor_hand_tool_label=Gitic cing\n\n\n\n# Document properties dialog box\ndocument_properties.title=Jami me gin acoya…\ndocument_properties_label=Jami me gin acoya…\ndocument_properties_file_name=Nying pwail:\ndocument_properties_file_size=Dit pa pwail:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Wiye:\ndocument_properties_author=Ngat mucoyo:\ndocument_properties_subject=Subjek:\ndocument_properties_keywords=Lok mapire tek:\ndocument_properties_creation_date=Nino dwe me cwec:\ndocument_properties_modification_date=Nino dwe me yub:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Lacwec:\ndocument_properties_producer=Layub PDF:\ndocument_properties_version=Kit PDF:\ndocument_properties_page_count=Kwan me pot buk:\ndocument_properties_page_size=Dit pa potbuk:\ndocument_properties_page_size_unit_inches=i\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=atir\ndocument_properties_page_size_orientation_landscape=arii\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Waraga\ndocument_properties_page_size_name_legal=Cik\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=Eyo\ndocument_properties_linearized_no=Pe\ndocument_properties_close=Lor\n\nprint_progress_message=Yubo coc me agoya…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Juki\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Lok gintic ma inget\ntoggle_sidebar_notification.title=Lok lanyut me nget (wiyewiye tye i gin acoya/attachments)\ntoggle_sidebar_label=Lok gintic ma inget\ndocument_outline.title=Nyut Wiyewiye me Gin acoya (dii-kiryo me yaro/kano jami weng)\ndocument_outline_label=Pek pa gin acoya\nattachments.title=Nyut twec\nattachments_label=Twec\nthumbs.title=Nyut cal\nthumbs_label=Cal\nfindbar.title=Nong iye gin acoya\nfindbar_label=Nong\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pot buk {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Cal me pot buk {{page}}\n\n# Find panel button title and messages\nfind_input.title=Nong\nfind_input.placeholder=Nong i dokumen…\nfind_previous.title=Nong timme pa lok mukato\nfind_previous_label=Mukato\nfind_next.title=Nong timme pa lok malubo\nfind_next_label=Malubo\nfind_highlight=Wer weng\nfind_match_case_label=Lok marwate\nfind_reached_top=Oo iwi gin acoya, omede ki i tere\nfind_reached_bottom=Oo i agiki me gin acoya, omede ki iwiye\nfind_not_found=Lok pe ononge\n\n# Error panel labels\nerror_more_info=Ngec Mukene\nerror_less_info=Ngec Manok\nerror_close=Lor\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Kwena: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Can kikore {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Pwail: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Rek: {{line}}\nrendering_error=Bal otime i kare me nyuto pot buk.\n\n# Predefined zoom values\npage_scale_width=Lac me iye pot buk\npage_scale_fit=Porre me pot buk\npage_scale_auto=Kwot pire kene\npage_scale_actual=Dite kikome\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Bal\nloading_error=Bal otime kun cano PDF.\ninvalid_file_error=Pwail me PDF ma pe atir onyo obale woko.\nmissing_file_error=Pwail me PDF tye ka rem.\nunexpected_response_error=Lagam mape kigeno pa lapok tic.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Lok angea manok]\npassword_label=Ket mung me donyo me yabo pwail me PDF man.\npassword_invalid=Mung me donyo pe atir. Tim ber i tem doki.\npassword_ok=OK\npassword_cancel=Juki\n\nprinting_not_supported=Ciko: Layeny ma pe teno goyo liweng.\nprinting_not_ready=Ciko: PDF pe ocane weng me agoya.\nweb_fonts_disabled=Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine.\ndocument_colors_not_allowed=Pe ki yee ki gin acoya me PDF me tic ki rangi gi kengi: Kijuko woko “Yee pot buk me yero rangi mamegi kengi” ki i layeny.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/af/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Vorige bladsy\nprevious_label=Vorige\nnext.title=Volgende bladsy\nnext_label=Volgende\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Bladsy\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=van {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} van {{pagesCount}})\n\nzoom_out.title=Zoem uit\nzoom_out_label=Zoem uit\nzoom_in.title=Zoem in\nzoom_in_label=Zoem in\nzoom.title=Zoem\npresentation_mode.title=Wissel na voorleggingsmodus\npresentation_mode_label=Voorleggingsmodus\nopen_file.title=Open lêer\nopen_file_label=Open\nprint.title=Druk\nprint_label=Druk\ndownload.title=Laai af\ndownload_label=Laai af\nbookmark.title=Huidige aansig (kopieer of open in nuwe venster)\nbookmark_label=Huidige aansig\n\n# Secondary toolbar and context menu\ntools.title=Nutsgoed\ntools_label=Nutsgoed\nfirst_page.title=Gaan na eerste bladsy\nfirst_page.label=Gaan na eerste bladsy\nfirst_page_label=Gaan na eerste bladsy\nlast_page.title=Gaan na laaste bladsy\nlast_page.label=Gaan na laaste bladsy\nlast_page_label=Gaan na laaste bladsy\npage_rotate_cw.title=Roteer kloksgewys\npage_rotate_cw.label=Roteer kloksgewys\npage_rotate_cw_label=Roteer kloksgewys\npage_rotate_ccw.title=Roteer anti-kloksgewys\npage_rotate_ccw.label=Roteer anti-kloksgewys\npage_rotate_ccw_label=Roteer anti-kloksgewys\n\ncursor_text_select_tool.title=Aktiveer gereedskap om teks te merk\ncursor_text_select_tool_label=Teksmerkgereedskap\ncursor_hand_tool.title=Aktiveer handjie\ncursor_hand_tool_label=Handjie\n\n# Document properties dialog box\ndocument_properties.title=Dokumenteienskappe…\ndocument_properties_label=Dokumenteienskappe…\ndocument_properties_file_name=Lêernaam:\ndocument_properties_file_size=Lêergrootte:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} kG ({{size_b}} grepe)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MG ({{size_b}} grepe)\ndocument_properties_title=Titel:\ndocument_properties_author=Outeur:\ndocument_properties_subject=Onderwerp:\ndocument_properties_keywords=Sleutelwoorde:\ndocument_properties_creation_date=Skeppingsdatum:\ndocument_properties_modification_date=Wysigingsdatum:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Skepper:\ndocument_properties_producer=PDF-vervaardiger:\ndocument_properties_version=PDF-weergawe:\ndocument_properties_page_count=Aantal bladsye:\ndocument_properties_close=Sluit\n\nprint_progress_message=Berei tans dokument voor om te druk…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Kanselleer\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Sypaneel aan/af\ntoggle_sidebar_notification.title=Sypaneel aan/af (dokument bevat skema/aanhegsels)\ntoggle_sidebar_label=Sypaneel aan/af\ndocument_outline.title=Wys dokumentskema (dubbelklik om alle items oop/toe te vou)\ndocument_outline_label=Dokumentoorsig\nattachments.title=Wys aanhegsels\nattachments_label=Aanhegsels\nthumbs.title=Wys duimnaels\nthumbs_label=Duimnaels\nfindbar.title=Soek in dokument\nfindbar_label=Vind\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Bladsy {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Duimnael van bladsy {{page}}\n\n# Find panel button title and messages\nfind_input.title=Vind\nfind_input.placeholder=Soek in dokument…\nfind_previous.title=Vind die vorige voorkoms van die frase\nfind_previous_label=Vorige\nfind_next.title=Vind die volgende voorkoms van die frase\nfind_next_label=Volgende\nfind_highlight=Verlig almal\nfind_match_case_label=Kassensitief\nfind_reached_top=Bokant van dokument is bereik; gaan voort van onder af\nfind_reached_bottom=Einde van dokument is bereik; gaan voort van bo af\nfind_not_found=Frase nie gevind nie\n\n# Error panel labels\nerror_more_info=Meer inligting\nerror_less_info=Minder inligting\nerror_close=Sluit\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (ID: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Boodskap: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stapel: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Lêer: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Lyn: {{line}}\nrendering_error='n Fout het voorgekom toe die bladsy weergegee is.\n\n# Predefined zoom values\npage_scale_width=Bladsywydte\npage_scale_fit=Pas bladsy\npage_scale_auto=Outomatiese zoem\npage_scale_actual=Werklike grootte\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Fout\nloading_error='n Fout het voorgekom met die laai van die PDF.\ninvalid_file_error=Ongeldige of korrupte PDF-lêer.\nmissing_file_error=PDF-lêer is weg.\nunexpected_response_error=Onverwagse antwoord van bediener.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}}-annotasie]\npassword_label=Gee die wagwoord om dié PDF-lêer mee te open.\npassword_invalid=Ongeldige wagwoord. Probeer gerus weer.\npassword_ok=OK\npassword_cancel=Kanselleer\n\nprinting_not_supported=Waarskuwing: Dié blaaier ondersteun nie drukwerk ten volle nie.\nprinting_not_ready=Waarskuwing: Die PDF is nog nie volledig gelaai vir drukwerk nie.\nweb_fonts_disabled=Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie.\ndocument_colors_not_allowed=PDF-dokumente word nie toegelaat om hul eie kleure te gebruik nie: “Laat bladsye toe om hul eie kleure te kies” is gedeaktiveer in die blaaier.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ak/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Krataafa baako a etwa mu\nprevious_label=Ekyiri-baako\nnext.title=Krataafa a edi so baako\nnext_label=Dea-ɛ-di-so-baako\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Zuum pue\nzoom_out_label=Zuum ba abɔnten\nzoom_in.title=Zuum kɔ mu\nzoom_in_label=Zuum kɔ mu\nzoom.title=Zuum\npresentation_mode.title=Sesa kɔ Yɛkyerɛ Tebea mu\npresentation_mode_label=Yɛkyerɛ Tebea\nopen_file.title=Bue Fael\nopen_file_label=Bue\nprint.title=Prente\nprint_label=Prente\ndownload.title=Twe\ndownload_label=Twe\nbookmark.title=Seisei nhwɛ (fa anaaso bue wɔ tokuro foforo mu)\nbookmark_label=Seisei nhwɛ\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_title=Ti asɛm:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Sɔ anaaso dum saedbaa\ntoggle_sidebar_label=Sɔ anaaso dum saedbaa\ndocument_outline_label=Dɔkomɛnt bɔbea\nthumbs.title=Kyerɛ mfoniwaa\nthumbs_label=Mfoniwaa\nfindbar.title=Hu wɔ dɔkomɛnt no mu\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Krataafa {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Krataafa ne mfoniwaa {{page}}\n\n# Find panel button title and messages\nfind_previous.title=San hu fres wɔ ekyiri baako\nfind_previous_label=Ekyiri baako\nfind_next.title=San hu fres no wɔ enim baako\nfind_next_label=Ndiso\nfind_highlight=Hyɛ bibiara nso\nfind_match_case_label=Fa susu kaase\nfind_reached_top=Edu krataafa ne soro, atoa so efiri ase\nfind_reached_bottom=Edu krataafa n'ewiei, atoa so efiri soro\nfind_not_found=Ennhu fres\n\n# Error panel labels\nerror_more_info=Infɔmehyɛn bio a wɔka ho\nerror_less_info=Te infɔmehyɛn bio a wɔka ho so\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{vɛɛhyen}} (nsi: {{si}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Nkrato: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Staake: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fael: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Laen: {{line}}\nrendering_error=Mfomso bae wɔ bere a wɔ rekyerɛ krataafa no.\n\n# Predefined zoom values\npage_scale_width=Krataafa tɛtrɛtɛ\npage_scale_fit=Krataafa ehimtwa\npage_scale_auto=Zuum otomatik\npage_scale_actual=Kɛseyɛ ankasa\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Mfomso\nloading_error=Mfomso bae wɔ bere a wɔreloode PDF no.\ninvalid_file_error=PDF fael no nndi mu anaaso ho atɔ kyima.\nmissing_file_error=PDF fael no ayera.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Tɛkst-nyiano]\npassword_ok=OK\n\nprinting_not_supported=Kɔkɔbɔ: Brawsa yi nnhyɛ daa mma prent ho kwan.\nprinting_not_ready=Kɔkɔbɔ: Wɔnntwee PDF fael no nyinara mmbaee ama wo ɛ tumi aprente.\nweb_fonts_disabled=Ɔedum wɛb-mfɔnt: nntumi mmfa PDF mfɔnt a wɔhyɛ mu nndi dwuma.\ndocument_colors_not_allowed=Wɔmma ho kwan sɛ PDF adɔkomɛnt de wɔn ara wɔn ahosu bɛdi dwuma: wɔ adum 'Ma ho kwan ma nkrataafa mpaw wɔn ara wɔn ahosu' wɔ brawsa yi mu.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/an/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Pachina anterior\nprevious_label=Anterior\nnext.title=Pachina siguient\nnext_label=Siguient\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pachina\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} de {{pagesCount}})\n\nzoom_out.title=Achiquir\nzoom_out_label=Achiquir\nzoom_in.title=Agrandir\nzoom_in_label=Agrandir\nzoom.title=Grandaria\npresentation_mode.title=Cambear t'o modo de presentación\npresentation_mode_label=Modo de presentación\nopen_file.title=Ubrir o fichero\nopen_file_label=Ubrir\nprint.title=Imprentar\nprint_label=Imprentar\ndownload.title=Descargar\ndownload_label=Descargar\nbookmark.title=Vista actual (copiar u ubrir en una nueva finestra)\nbookmark_label=Anvista actual\n\n# Secondary toolbar and context menu\ntools.title=Ferramientas\ntools_label=Ferramientas\nfirst_page.title=Ir ta la primer pachina\nfirst_page.label=Ir ta la primer pachina\nfirst_page_label=Ir ta la primer pachina\nlast_page.title=Ir ta la zaguer pachina\nlast_page.label=Ir ta la zaguera pachina\nlast_page_label=Ir ta la zaguer pachina\npage_rotate_cw.title=Chirar enta la dreita\npage_rotate_cw.label=Chirar enta la dreita\npage_rotate_cw_label=Chira enta la dreita\npage_rotate_ccw.title=Chirar enta la zurda\npage_rotate_ccw.label=Chirar en sentiu antihorario\npage_rotate_ccw_label=Chirar enta la zurda\n\ncursor_text_select_tool.title=Activar la ferramienta de selección de texto\ncursor_text_select_tool_label=Ferramienta de selección de texto\ncursor_hand_tool.title=Activar la ferramienta man\ncursor_hand_tool_label=Ferramienta man\n\n# Document properties dialog box\ndocument_properties.title=Propiedatz d'o documento...\ndocument_properties_label=Propiedatz d'o documento...\ndocument_properties_file_name=Nombre de fichero:\ndocument_properties_file_size=Grandaria d'o fichero:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Titol:\ndocument_properties_author=Autor:\ndocument_properties_subject=Afer:\ndocument_properties_keywords=Parolas clau:\ndocument_properties_creation_date=Calendata de creyación:\ndocument_properties_modification_date=Calendata de modificación:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creyador:\ndocument_properties_producer=Creyador de PDF:\ndocument_properties_version=Versión de PDF:\ndocument_properties_page_count=Numero de pachinas:\ndocument_properties_close=Zarrar\n\nprint_progress_message=Se ye preparando la documentación pa imprentar…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancelar\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Amostrar u amagar a barra lateral\ntoggle_sidebar_notification.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos)\ntoggle_sidebar_label=Amostrar a barra lateral\ndocument_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items)\ndocument_outline_label=Esquema d'o documento\nattachments.title=Amostrar os adchuntos\nattachments_label=Adchuntos\nthumbs.title=Amostrar as miniaturas\nthumbs_label=Miniaturas\nfindbar.title=Trobar en o documento\nfindbar_label=Trobar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pachina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura d'a pachina {{page}}\n\n# Find panel button title and messages\nfind_input.title=Trobar\nfind_input.placeholder=Trobar en o documento…\nfind_previous.title=Trobar l'anterior coincidencia d'a frase\nfind_previous_label=Anterior\nfind_next.title=Trobar a siguient coincidencia d'a frase\nfind_next_label=Siguient\nfind_highlight=Resaltar-lo tot\nfind_match_case_label=Coincidencia de mayusclas/minusclas\nfind_reached_top=S'ha plegau a l'inicio d'o documento, se contina dende baixo\nfind_reached_bottom=S'ha plegau a la fin d'o documento, se contina dende alto\nfind_not_found=No s'ha trobau a frase\n\n# Error panel labels\nerror_more_info=Mas información\nerror_less_info=Menos información\nerror_close=Zarrar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mensache: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fichero: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linia: {{line}}\nrendering_error=Ha ocurriu una error en renderizar a pachina.\n\n# Predefined zoom values\npage_scale_width=Amplaria d'a pachina\npage_scale_fit=Achuste d'a pachina\npage_scale_auto=Grandaria automatica\npage_scale_actual=Grandaria actual\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=S'ha produciu una error en cargar o PDF.\ninvalid_file_error=O PDF no ye valido u ye estorbau.\nmissing_file_error=No i ha fichero PDF.\nunexpected_response_error=Respuesta a lo servicio inasperada.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotación {{type}}]\npassword_label=Introduzca a clau ta ubrir iste fichero PDF.\npassword_invalid=Clau invalida. Torna a intentar-lo.\npassword_ok=Acceptar\npassword_cancel=Cancelar\n\nprinting_not_supported=Pare cuenta: Iste navegador no maneya totalment as impresions.\nprinting_not_ready=Aviso: Encara no se ha cargau completament o PDF ta imprentar-lo.\nweb_fonts_disabled=As fuents web son desactivadas: no se puet incrustar fichers PDF.\ndocument_colors_not_allowed=Los documentos PDF no pueden fer servir las suyas propias colors: 'Permitir que as pachinas triguen as suyas propias colors' ye desactivau en o navegador.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ar/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=الصفحة السابقة\nprevious_label=السابقة\nnext.title=الصفحة التالية\nnext_label=التالية\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=صفحة\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=من {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} من {{pagesCount}})\n\nzoom_out.title=بعّد\nzoom_out_label=بعّد\nzoom_in.title=قرّب\nzoom_in_label=قرّب\nzoom.title=التقريب\npresentation_mode.title=انتقل لوضع العرض التقديمي\npresentation_mode_label=وضع العرض التقديمي\nopen_file.title=افتح ملفًا\nopen_file_label=افتح\nprint.title=اطبع\nprint_label=اطبع\ndownload.title=نزّل\ndownload_label=نزّل\nbookmark.title=المنظور الحالي (انسخ أو افتح في نافذة جديدة)\nbookmark_label=المنظور الحالي\n\n# Secondary toolbar and context menu\ntools.title=الأدوات\ntools_label=الأدوات\nfirst_page.title=اذهب إلى الصفحة الأولى\nfirst_page.label=اذهب إلى الصفحة الأولى\nfirst_page_label=اذهب إلى الصفحة الأولى\nlast_page.title=اذهب إلى الصفحة الأخيرة\nlast_page.label=اذهب إلى الصفحة الأخيرة\nlast_page_label=اذهب إلى الصفحة الأخيرة\npage_rotate_cw.title=أدر باتجاه عقارب الساعة\npage_rotate_cw.label=أدر باتجاه عقارب الساعة\npage_rotate_cw_label=أدر باتجاه عقارب الساعة\npage_rotate_ccw.title=أدر بعكس اتجاه عقارب الساعة\npage_rotate_ccw.label=أدر بعكس اتجاه عقارب الساعة\npage_rotate_ccw_label=أدر بعكس اتجاه عقارب الساعة\n\ncursor_text_select_tool.title=فعّل أداة اختيار النص\ncursor_text_select_tool_label=أداة اختيار النص\ncursor_hand_tool.title=فعّل أداة اليد\ncursor_hand_tool_label=أداة اليد\n\nscroll_vertical.title=استخدم التمرير الرأسي\nscroll_vertical_label=التمرير الرأسي\nscroll_horizontal.title=استخدم التمرير الأفقي\nscroll_horizontal_label=التمرير الأفقي\nscroll_wrapped.title=استخدم التمرير الملتف\nscroll_wrapped_label=التمرير الملتف\n\nspread_none.title=لا تدمج هوامش الصفحات مع بعضها البعض\nspread_none_label=بلا هوامش\nspread_odd.title=ادمج هوامش الصفحات الفردية\nspread_odd_label=هوامش الصفحات الفردية\nspread_even.title=ادمج هوامش الصفحات الزوجية\nspread_even_label=هوامش الصفحات الزوجية\n\n# Document properties dialog box\ndocument_properties.title=خصائص المستند…\ndocument_properties_label=خصائص المستند…\ndocument_properties_file_name=اسم الملف:\ndocument_properties_file_size=حجم الملف:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} ك.بايت ({{size_b}} بايت)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} م.بايت ({{size_b}} بايت)\ndocument_properties_title=العنوان:\ndocument_properties_author=المؤلف:\ndocument_properties_subject=الموضوع:\ndocument_properties_keywords=الكلمات الأساسية:\ndocument_properties_creation_date=تاريخ الإنشاء:\ndocument_properties_modification_date=تاريخ التعديل:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}، {{time}}\ndocument_properties_creator=المنشئ:\ndocument_properties_producer=منتج PDF:\ndocument_properties_version=إصدارة PDF:\ndocument_properties_page_count=عدد الصفحات:\ndocument_properties_page_size=مقاس الورقة:\ndocument_properties_page_size_unit_inches=بوصة\ndocument_properties_page_size_unit_millimeters=ملم\ndocument_properties_page_size_orientation_portrait=طوليّ\ndocument_properties_page_size_orientation_landscape=عرضيّ\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=خطاب\ndocument_properties_page_size_name_legal=قانونيّ\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string=‏{{width}} × ‏{{height}} ‏{{unit}} (‏{{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string=‏{{width}} × ‏{{height}} ‏{{unit}} (‏{{name}}، {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=العرض السريع عبر الوِب:\ndocument_properties_linearized_yes=نعم\ndocument_properties_linearized_no=لا\ndocument_properties_close=أغلق\n\nprint_progress_message=يُحضّر المستند للطباعة…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}٪\nprint_progress_close=ألغِ\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=بدّل ظهور الشريط الجانبي\ntoggle_sidebar_notification.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات)\ntoggle_sidebar_label=بدّل ظهور الشريط الجانبي\ndocument_outline.title=اعرض فهرس المستند (نقر مزدوج لتمديد أو تقليص كل العناصر)\ndocument_outline_label=مخطط المستند\nattachments.title=اعرض المرفقات\nattachments_label=المُرفقات\nthumbs.title=اعرض مُصغرات\nthumbs_label=مُصغّرات\nfindbar.title=ابحث في المستند\nfindbar_label=ابحث\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=صفحة {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=مصغّرة صفحة {{page}}\n\n# Find panel button title and messages\nfind_input.title=ابحث\nfind_input.placeholder=ابحث في المستند…\nfind_previous.title=ابحث عن التّواجد السّابق للعبارة\nfind_previous_label=السابق\nfind_next.title=ابحث عن التّواجد التّالي للعبارة\nfind_next_label=التالي\nfind_highlight=أبرِز الكل\nfind_match_case_label=طابق حالة الأحرف\nfind_entire_word_label=كلمات كاملة\nfind_reached_top=تابعت من الأسفل بعدما وصلت إلى بداية المستند\nfind_reached_bottom=تابعت من الأعلى بعدما وصلت إلى نهاية المستند\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} من أصل مطابقة واحدة\nfind_match_count[two]={{current}} من أصل مطابقتين\nfind_match_count[few]={{current}} من أصل {{total}} مطابقات\nfind_match_count[many]={{current}} من أصل {{total}} مطابقة\nfind_match_count[other]={{current}} من أصل {{total}} مطابقة\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=فقط\nfind_match_count_limit[one]=أكثر من مطابقة واحدة\nfind_match_count_limit[two]=أكثر من مطابقتين\nfind_match_count_limit[few]=أكثر من {{limit}} مطابقات\nfind_match_count_limit[many]=أكثر من {{limit}} مطابقة\nfind_match_count_limit[other]=أكثر من {{limit}} مطابقة\nfind_not_found=لا وجود للعبارة\n\n# Error panel labels\nerror_more_info=معلومات أكثر\nerror_less_info=معلومات أقل\nerror_close=أغلق\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=‏PDF.js ن{{version}} ‏(بناء: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=الرسالة: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=الرصّة: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=الملف: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=السطر: {{line}}\nrendering_error=حدث خطأ أثناء عرض الصفحة.\n\n# Predefined zoom values\npage_scale_width=عرض الصفحة\npage_scale_fit=ملائمة الصفحة\npage_scale_auto=تقريب تلقائي\npage_scale_actual=الحجم الفعلي\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}٪\n\n# Loading indicator messages\nloading_error_indicator=عطل\nloading_error=حدث عطل أثناء تحميل ملف PDF.\ninvalid_file_error=ملف PDF تالف أو غير صحيح.\nmissing_file_error=ملف PDF غير موجود.\nunexpected_response_error=استجابة خادوم غير متوقعة.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[تعليق {{type}}]\npassword_label=أدخل لكلمة السر لفتح هذا الملف.\npassword_invalid=كلمة سر خطأ. من فضلك أعد المحاولة.\npassword_ok=حسنا\npassword_cancel=ألغِ\n\nprinting_not_supported=تحذير: لا يدعم هذا المتصفح الطباعة بشكل كامل.\nprinting_not_ready=تحذير: ملف PDF لم يُحمّل كاملًا للطباعة.\nweb_fonts_disabled=خطوط الوب مُعطّلة: تعذّر استخدام خطوط PDF المُضمّنة.\ndocument_colors_not_allowed=ليس مسموحًا لملفات PDF باستخدام ألوانها الخاصة: خيار ”اسمح للصفحات باختيار ألوانها الخاصة“ ليس مُفعّلًا في المتصفح.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/as/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=পূৰ্বৱৰ্তী পৃষ্ঠা\nprevious_label=পূৰ্বৱৰ্তী\nnext.title=পৰৱৰ্তী পৃষ্ঠা\nnext_label=পৰৱৰ্তী\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=জুম আউট\nzoom_out_label=জুম আউট\nzoom_in.title=জুম ইন\nzoom_in_label=জুম ইন\nzoom.title=জুম কৰক\npresentation_mode.title=উপস্থাপন অৱস্থালে যাওক\npresentation_mode_label=উপস্থাপন অৱস্থা\nopen_file.title=ফাইল খোলক\nopen_file_label=খোলক\nprint.title=প্ৰিন্ট কৰক\nprint_label=প্ৰিন্ট কৰক\ndownload.title=ডাউনল'ড কৰক\ndownload_label=ডাউনল'ড কৰক\nbookmark.title=বৰ্তমান দৃশ্য (কপি কৰক অথবা নতুন উইন্ডোত খোলক)\nbookmark_label=বৰ্তমান দৃশ্য\n\n# Secondary toolbar and context menu\ntools.title=সঁজুলিসমূহ\ntools_label=সঁজুলিসমূহ\nfirst_page.title=প্ৰথম পৃষ্ঠাত যাওক\nfirst_page.label=প্ৰথম পৃষ্ঠাত যাওক\nfirst_page_label=প্ৰথম পৃষ্ঠাত যাওক\nlast_page.title=সৰ্বশেষ পৃষ্ঠাত যাওক\nlast_page.label=সৰ্বশেষ পৃষ্ঠাত যাওক\nlast_page_label=সৰ্বশেষ পৃষ্ঠাত যাওক\npage_rotate_cw.title=ঘড়ীৰ দিশত ঘুৰাওক\npage_rotate_cw.label=ঘড়ীৰ দিশত ঘুৰাওক\npage_rotate_cw_label=ঘড়ীৰ দিশত ঘুৰাওক\npage_rotate_ccw.title=ঘড়ীৰ ওলোটা দিশত ঘুৰাওক\npage_rotate_ccw.label=ঘড়ীৰ ওলোটা দিশত ঘুৰাওক\npage_rotate_ccw_label=ঘড়ীৰ ওলোটা দিশত ঘুৰাওক\n\n\n# Document properties dialog box\ndocument_properties.title=দস্তাবেজৰ বৈশিষ্ট্যসমূহ…\ndocument_properties_label=দস্তাবেজৰ বৈশিষ্ট্যসমূহ…\ndocument_properties_file_name=ফাইল নাম:\ndocument_properties_file_size=ফাইলৰ আকাৰ:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=শীৰ্ষক:\ndocument_properties_author=লেখক:\ndocument_properties_subject=বিষয়:\ndocument_properties_keywords=কিৱাৰ্ডসমূহ:\ndocument_properties_creation_date=সৃষ্টিৰ তাৰিখ:\ndocument_properties_modification_date=পৰিবৰ্তনৰ তাৰিখ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=সৃষ্টিকৰ্তা:\ndocument_properties_producer=PDF উৎপাদক:\ndocument_properties_version=PDF সংস্কৰণ:\ndocument_properties_page_count=পৃষ্ঠাৰ গণনা:\ndocument_properties_close=বন্ধ কৰক\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=কাষবাৰ টগল কৰক\ntoggle_sidebar_label=কাষবাৰ টগল কৰক\ndocument_outline_label=দস্তাবেজ আউটলাইন\nattachments.title=এটাচমেন্টসমূহ দেখুৱাওক\nattachments_label=এটাচমেন্টসমূহ\nthumbs.title=থাম্বনেইলসমূহ দেখুৱাওক\nthumbs_label=থাম্বনেইলসমূহ\nfindbar.title=দস্তাবেজত সন্ধান কৰক\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=পৃষ্ঠা {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=পৃষ্ঠাৰ থাম্বনেইল {{page}}\n\n# Find panel button title and messages\nfind_previous.title=বাক্যাংশৰ পূৰ্বৱৰ্তী উপস্থিতি সন্ধান কৰক\nfind_previous_label=পূৰ্বৱৰ্তী\nfind_next.title=বাক্যাংশৰ পৰৱৰ্তী উপস্থিতি সন্ধান কৰক\nfind_next_label=পৰৱৰ্তী\nfind_highlight=সকলো উজ্জ্বল কৰক\nfind_match_case_label=ফলা মিলাওক\nfind_reached_top=তলৰ পৰা আৰম্ভ কৰি, দস্তাবেজৰ ওপৰলৈ অহা হৈছে\nfind_reached_bottom=ওপৰৰ পৰা আৰম্ভ কৰি, দস্তাবেজৰ তললৈ অহা হৈছে\nfind_not_found=বাক্যাংশ পোৱা নগল\n\n# Error panel labels\nerror_more_info=অধিক তথ্য\nerror_less_info=কম তথ্য\nerror_close=বন্ধ কৰক\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=বাৰ্তা: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=স্টেক: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ফাইল: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=শাৰী: {{line}}\nrendering_error=এই পৃষ্ঠা ৰেণ্ডাৰ কৰোতে এটা ত্ৰুটি দেখা দিলে।\n\n# Predefined zoom values\npage_scale_width=পৃষ্ঠাৰ প্ৰস্থ\npage_scale_fit=পৃষ্ঠা খাপ\npage_scale_auto=স্বচালিত জুম\npage_scale_actual=প্ৰকৃত আকাৰ\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=ত্ৰুটি\nloading_error=PDF ল'ড কৰোতে এটা ত্ৰুটি দেখা দিলে।\ninvalid_file_error=অবৈধ অথবা ক্ষতিগ্ৰস্থ PDF file।\nmissing_file_error=সন্ধানহিন PDF ফাইল।\nunexpected_response_error=অপ্ৰত্যাশিত চাৰ্ভাৰ প্ৰতিক্ৰিয়া।\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} টোকা]\npassword_label=এই PDF ফাইল খোলিবলৈ পাছৱৰ্ড সুমুৱাওক।\npassword_invalid=অবৈধ পাছৱৰ্ড। অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক।\npassword_ok=ঠিক আছে\n\nprinting_not_supported=সতৰ্কবাৰ্তা: প্ৰিন্টিং এই ব্ৰাউছাৰ দ্বাৰা সম্পূৰ্ণভাৱে সমৰ্থিত নহয়।\nprinting_not_ready=সতৰ্কবাৰ্তা: PDF প্ৰিন্টিংৰ বাবে সম্পূৰ্ণভাৱে ল'ডেড নহয়।\nweb_fonts_disabled=ৱেব ফন্টসমূহ অসামৰ্থবান কৰা আছে: অন্তৰ্ভুক্ত PDF ফন্টসমূহ ব্যৱহাৰ কৰিবলে অক্ষম।\ndocument_colors_not_allowed=PDF দস্তাবেজসমূহৰ সিহতৰ নিজস্ব ৰঙ ব্যৱহাৰ কৰাৰ অনুমতি নাই: ব্ৰাউছাৰত 'পৃষ্ঠাসমূহক সিহতৰ নিজস্ব ৰঙ নিৰ্বাচন কৰাৰ অনুমতি দিয়ক' অসামৰ্থবান কৰা আছে।\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ast/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Páxina anterior\nprevious_label=Anterior\nnext.title=Páxina siguiente\nnext_label=Siguiente\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Páxina\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} de {{pagesCount}})\n\nzoom_out.title=Reducir\nzoom_out_label=Reducir\nzoom_in.title=Aumentar\nzoom_in_label=Aumentar\nzoom.title=Tamañu\npresentation_mode.title=\npresentation_mode_label=\nopen_file.title=Abrir ficheru\nopen_file_label=Abrir\nprint.title=Imprentar\nprint_label=Imprentar\ndownload.title=Descargar\ndownload_label=Descargar\nbookmark.title=Vista actual (copiar o abrir nuna nueva ventana)\nbookmark_label=Vista actual\n\n# Secondary toolbar and context menu\ntools.title=Ferramientes\ntools_label=Ferramientes\nfirst_page.title=Dir a la primer páxina\nfirst_page.label=Dir a la primer páxina\nfirst_page_label=Dir a la primer páxina\nlast_page.title=Dir a la postrer páxina\nlast_page.label=Dir a la cabera páxina\nlast_page_label=Dir a la postrer páxina\npage_rotate_cw.title=Xirar en sen horariu\npage_rotate_cw.label=\npage_rotate_cw_label=Xirar en sen horariu\npage_rotate_ccw.title=Xirar en sen antihorariu\npage_rotate_ccw.label=\npage_rotate_ccw_label=Xirar en sen antihorariu\n\n\n\n\n# Document properties dialog box\ndocument_properties.title=Propiedaes del documentu…\ndocument_properties_label=Propiedaes del documentu…\ndocument_properties_file_name=Nome de ficheru:\ndocument_properties_file_size=Tamañu de ficheru:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Títulu:\ndocument_properties_author=Autor:\ndocument_properties_subject=Asuntu:\ndocument_properties_keywords=Pallabres clave:\ndocument_properties_creation_date=Data de creación:\ndocument_properties_modification_date=Data de modificación:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creador:\ndocument_properties_producer=Productor PDF:\ndocument_properties_version=Versión PDF:\ndocument_properties_page_count=Númberu de páxines:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=Sí\ndocument_properties_linearized_no=Non\ndocument_properties_close=Zarrar\n\nprint_progress_message=Tresnando documentu pa imprentar…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Encaboxar\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Camudar barra llateral\ntoggle_sidebar_label=Camudar barra llateral\ndocument_outline.title=Amosar esquema del documentu (duble clic pa espander/contrayer tolos elementos)\ndocument_outline_label=Esquema del documentu\nattachments.title=Amosar axuntos\nattachments_label=Axuntos\nthumbs.title=Amosar miniatures\nthumbs_label=Miniatures\nfindbar.title=Guetar nel documentu\nfindbar_label=Guetar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Páxina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura de la páxina {{page}}\n\n# Find panel button title and messages\nfind_input.title=Guetar\nfind_input.placeholder=Guetar nel documentu…\nfind_previous.title=Alcontrar l'anterior apaición de la fras\nfind_previous_label=Anterior\nfind_next.title=Alcontrar la siguiente apaición d'esta fras\nfind_next_label=Siguiente\nfind_highlight=Remarcar toos\nfind_match_case_label=Coincidencia de mayús./minús.\nfind_reached_top=Algamóse'l principiu del documentu, siguir dende'l final\nfind_reached_bottom=Algamóse'l final del documentu, siguir dende'l principiu\nfind_not_found=Frase non atopada\n\n# Error panel labels\nerror_more_info=Más información\nerror_less_info=Menos información\nerror_close=Zarrar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mensaxe: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Ficheru: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Llinia: {{line}}\nrendering_error=Hebo un fallu al renderizar la páxina.\n\n# Predefined zoom values\npage_scale_width=Anchor de la páxina\npage_scale_fit=Axuste de la páxina\npage_scale_auto=Tamañu automáticu\npage_scale_actual=Tamañu actual\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Fallu\nloading_error=Hebo un fallu al cargar el PDF.\ninvalid_file_error=Ficheru PDF inválidu o corruptu.\nmissing_file_error=Nun hai ficheru PDF.\nunexpected_response_error=Rempuesta inesperada del sirvidor.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotación {{type}}]\npassword_label=Introduz la contraseña p'abrir esti ficheru PDF\npassword_invalid=Contraseña non válida. Vuelvi a intentalo.\npassword_ok=Aceutar\npassword_cancel=Encaboxar\n\nprinting_not_supported=Alvertencia: La imprentación entá nun ta sofitada dafechu nesti restolador.\nprinting_not_ready=Avisu: Esti PDF nun se cargó completamente pa poder imprentase.\nweb_fonts_disabled=Les fontes web tán desactivaes: ye imposible usar les fontes PDF embebíes.\ndocument_colors_not_allowed=Los documentos PDF nun tienen permisu pa usar les sos colores: «Permitir que les páxines escueyan les sos colores» ta desactivao nel restolador.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/az/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Əvvəlki səhifə\nprevious_label=Əvvəlkini tap\nnext.title=Növbəti səhifə\nnext_label=İrəli\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Səhifə\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=/ {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} / {{pagesCount}})\n\nzoom_out.title=Uzaqlaş\nzoom_out_label=Uzaqlaş\nzoom_in.title=Yaxınlaş\nzoom_in_label=Yaxınlaş\nzoom.title=Yaxınlaşdırma\npresentation_mode.title=Təqdimat Rejiminə Keç\npresentation_mode_label=Təqdimat Rejimi\nopen_file.title=Fayl Aç\nopen_file_label=Aç\nprint.title=Yazdır\nprint_label=Yazdır\ndownload.title=Yüklə\ndownload_label=Yüklə\nbookmark.title=Hazırkı görünüş (köçür və ya yeni pəncərədə aç)\nbookmark_label=Hazırkı görünüş\n\n# Secondary toolbar and context menu\ntools.title=Alətlər\ntools_label=Alətlər\nfirst_page.title=İlk Səhifəyə get\nfirst_page.label=İlk Səhifəyə get\nfirst_page_label=İlk Səhifəyə get\nlast_page.title=Son Səhifəyə get\nlast_page.label=Son Səhifəyə get\nlast_page_label=Son Səhifəyə get\npage_rotate_cw.title=Saat İstiqamətində Fırlat\npage_rotate_cw.label=Saat İstiqamətində Fırlat\npage_rotate_cw_label=Saat İstiqamətində Fırlat\npage_rotate_ccw.title=Saat İstiqamətinin Əksinə Fırlat\npage_rotate_ccw.label=Saat İstiqamətinin Əksinə Fırlat\npage_rotate_ccw_label=Saat İstiqamətinin Əksinə Fırlat\n\ncursor_text_select_tool.title=Yazı seçmə alətini aktivləşdir\ncursor_text_select_tool_label=Yazı seçmə aləti\ncursor_hand_tool.title=Əl alətini aktivləşdir\ncursor_hand_tool_label=Əl aləti\n\nscroll_vertical.title=Şaquli sürüşdürmə işlət\nscroll_vertical_label=Şaquli sürüşdürmə\nscroll_horizontal.title=Üfüqi sürüşdürmə işlət\nscroll_horizontal_label=Üfüqi sürüşdürmə\nscroll_wrapped.title=Bükülü sürüşdürmə işlət\nscroll_wrapped_label=Bükülü sürüşdürmə\n\nspread_none.title=Yan-yana birləşdirilmiş səhifələri işlətmə\nspread_none_label=Birləşdirmə\nspread_odd.title=Yan-yana birləşdirilmiş səhifələri tək nömrəli səhifələrdən başlat\nspread_odd_label=Tək nömrəli\nspread_even.title=Yan-yana birləşdirilmiş səhifələri cüt nömrəli səhifələrdən başlat\nspread_even_label=Cüt nömrəli\n\n# Document properties dialog box\ndocument_properties.title=Sənəd xüsusiyyətləri…\ndocument_properties_label=Sənəd xüsusiyyətləri…\ndocument_properties_file_name=Fayl adı:\ndocument_properties_file_size=Fayl ölçüsü:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bayt)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bayt)\ndocument_properties_title=Başlık:\ndocument_properties_author=Müəllif:\ndocument_properties_subject=Mövzu:\ndocument_properties_keywords=Açar sözlər:\ndocument_properties_creation_date=Yaradılış Tarixi :\ndocument_properties_modification_date=Dəyişdirilmə Tarixi :\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Yaradan:\ndocument_properties_producer=PDF yaradıcısı:\ndocument_properties_version=PDF versiyası:\ndocument_properties_page_count=Səhifə sayı:\ndocument_properties_page_size=Səhifə Ölçüsü:\ndocument_properties_page_size_unit_inches=inç\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portret\ndocument_properties_page_size_orientation_landscape=albom\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Məktub\ndocument_properties_page_size_name_legal=Hüquqi\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Fast Web View:\ndocument_properties_linearized_yes=Bəli\ndocument_properties_linearized_no=Xeyr\ndocument_properties_close=Qapat\n\nprint_progress_message=Sənəd çap üçün hazırlanır…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Ləğv et\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Yan Paneli Aç/Bağla\ntoggle_sidebar_notification.title=Yan paneli çevir (sənəddə icmal/bağlama var)\ntoggle_sidebar_label=Yan Paneli Aç/Bağla\ndocument_outline.title=Sənədin eskizini göstər (bütün bəndləri açmaq/yığmaq üçün iki dəfə klikləyin)\ndocument_outline_label=Sənəd strukturu\nattachments.title=Bağlamaları göstər\nattachments_label=Bağlamalar\nthumbs.title=Kiçik şəkilləri göstər\nthumbs_label=Kiçik şəkillər\nfindbar.title=Sənəddə Tap\nfindbar_label=Tap\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Səhifə{{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}} səhifəsinin kiçik vəziyyəti\n\n# Find panel button title and messages\nfind_input.title=Tap\nfind_input.placeholder=Sənəddə tap…\nfind_previous.title=Bir öncəki uyğun gələn sözü tapır\nfind_previous_label=Geri\nfind_next.title=Bir sonrakı uyğun gələn sözü tapır\nfind_next_label=İrəli\nfind_highlight=İşarələ\nfind_match_case_label=Böyük/kiçik hərfə həssaslıq\nfind_entire_word_label=Tam sözlər\nfind_reached_top=Sənədin yuxarısına çatdı, aşağıdan davam edir\nfind_reached_bottom=Sənədin sonuna çatdı, yuxarıdan davam edir\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} / {{total}} uyğunluq\nfind_match_count[two]={{current}} / {{total}} uyğunluq\nfind_match_count[few]={{current}} / {{total}} uyğunluq\nfind_match_count[many]={{current}} / {{total}} uyğunluq\nfind_match_count[other]={{current}} / {{total}} uyğunluq\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]={{limit}}-dan çox uyğunluq\nfind_match_count_limit[one]={{limit}}-dən çox uyğunluq\nfind_match_count_limit[two]={{limit}}-dən çox uyğunluq\nfind_match_count_limit[few]={{limit}} uyğunluqdan daha çox\nfind_match_count_limit[many]={{limit}} uyğunluqdan daha çox\nfind_match_count_limit[other]={{limit}} uyğunluqdan daha çox\nfind_not_found=Uyğunlaşma tapılmadı\n\n# Error panel labels\nerror_more_info=Daha çox məlumati\nerror_less_info=Daha az məlumat\nerror_close=Qapat\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (yığma: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=İsmarıc: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stek: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fayl: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Sətir: {{line}}\nrendering_error=Səhifə göstərilərkən səhv yarandı.\n\n# Predefined zoom values\npage_scale_width=Səhifə genişliyi\npage_scale_fit=Səhifəni sığdır\npage_scale_auto=Avtomatik yaxınlaşdır\npage_scale_actual=Hazırkı Həcm\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Səhv\nloading_error=PDF yüklenərkən bir səhv yarandı.\ninvalid_file_error=Səhv və ya zədələnmiş olmuş PDF fayl.\nmissing_file_error=PDF fayl yoxdur.\nunexpected_response_error=Gözlənilməz server cavabı.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotasiyası]\npassword_label=Bu PDF faylı açmaq üçün parolu daxil edin.\npassword_invalid=Parol səhvdir. Bir daha yoxlayın.\npassword_ok=Tamam\npassword_cancel=Ləğv et\n\nprinting_not_supported=Xəbərdarlıq: Çap bu səyyah tərəfindən tam olaraq dəstəklənmir.\nprinting_not_ready=Xəbərdarlıq: PDF çap üçün tam yüklənməyib.\nweb_fonts_disabled=Web Şriftlər söndürülüb: yerləşdirilmiş PDF şriftlərini istifadə etmək mümkün deyil.\ndocument_colors_not_allowed=PDF sənədlərə öz rənglərini işlətməyə icazə verilmir: “Səhifələrə öz rənglərini istifadə etməyə icazə ver”mə səyyahda söndürülüb.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/be/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Папярэдняя старонка\nprevious_label=Папярэдняя\nnext.title=Наступная старонка\nnext_label=Наступная\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Старонка\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=з {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} з {{pagesCount}})\n\nzoom_out.title=Паменшыць\nzoom_out_label=Паменшыць\nzoom_in.title=Павялічыць\nzoom_in_label=Павялічыць\nzoom.title=Павялічэнне тэксту\npresentation_mode.title=Пераключыцца ў рэжым паказу\npresentation_mode_label=Рэжым паказу\nopen_file.title=Адкрыць файл\nopen_file_label=Адкрыць\nprint.title=Друкаваць\nprint_label=Друкаваць\ndownload.title=Сцягнуць\ndownload_label=Сцягнуць\nbookmark.title=Цяперашняя праява (скапіяваць або адчыніць у новым акне)\nbookmark_label=Цяперашняя праява\n\n# Secondary toolbar and context menu\ntools.title=Прылады\ntools_label=Прылады\nfirst_page.title=Перайсці на першую старонку\nfirst_page.label=Перайсці на першую старонку\nfirst_page_label=Перайсці на першую старонку\nlast_page.title=Перайсці на апошнюю старонку\nlast_page.label=Перайсці на апошнюю старонку\nlast_page_label=Перайсці на апошнюю старонку\npage_rotate_cw.title=Павярнуць па сонцу\npage_rotate_cw.label=Павярнуць па сонцу\npage_rotate_cw_label=Павярнуць па сонцу\npage_rotate_ccw.title=Павярнуць супраць сонца\npage_rotate_ccw.label=Павярнуць супраць сонца\npage_rotate_ccw_label=Павярнуць супраць сонца\n\ncursor_text_select_tool.title=Уключыць прыладу выбару тэксту\ncursor_text_select_tool_label=Прылада выбару тэксту\ncursor_hand_tool.title=Уключыць ручную прыладу\ncursor_hand_tool_label=Ручная прылада\n\nscroll_vertical.title=Ужываць вертыкальную пракрутку\nscroll_vertical_label=Вертыкальная пракрутка\nscroll_horizontal.title=Ужываць гарызантальную пракрутку\nscroll_horizontal_label=Гарызантальная пракрутка\nscroll_wrapped.title=Ужываць маштабавальную пракрутку\nscroll_wrapped_label=Маштабавальная пракрутка\n\nspread_none.title=Не выкарыстоўваць разгорнутыя старонкі\nspread_none_label=Без разгорнутых старонак\nspread_odd.title=Разгорнутыя старонкі пачынаючы з няцотных нумароў\nspread_odd_label=Няцотныя старонкі злева\nspread_even.title=Разгорнутыя старонкі пачынаючы з цотных нумароў\nspread_even_label=Цотныя старонкі злева\n\n# Document properties dialog box\ndocument_properties.title=Уласцівасці дакумента…\ndocument_properties_label=Уласцівасці дакумента…\ndocument_properties_file_name=Назва файла:\ndocument_properties_file_size=Памер файла:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} КБ ({{size_b}} байт)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} МБ ({{size_b}} байт)\ndocument_properties_title=Загаловак:\ndocument_properties_author=Аўтар:\ndocument_properties_subject=Тэма:\ndocument_properties_keywords=Ключавыя словы:\ndocument_properties_creation_date=Дата стварэння:\ndocument_properties_modification_date=Дата змянення:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Стваральнік:\ndocument_properties_producer=Вырабнік PDF:\ndocument_properties_version=Версія PDF:\ndocument_properties_page_count=Колькасць старонак:\ndocument_properties_page_size=Памер старонкі:\ndocument_properties_page_size_unit_inches=цаляў\ndocument_properties_page_size_unit_millimeters=мм\ndocument_properties_page_size_orientation_portrait=кніжная\ndocument_properties_page_size_orientation_landscape=альбомная\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Хуткі прагляд у Інтэрнэце:\ndocument_properties_linearized_yes=Так\ndocument_properties_linearized_no=Не\ndocument_properties_close=Закрыць\n\nprint_progress_message=Падрыхтоўка дакумента да друку…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Скасаваць\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Паказаць/схаваць бакавую панэль\ntoggle_sidebar_notification.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні)\ntoggle_sidebar_label=Паказаць/схаваць бакавую панэль\ndocument_outline.title=Паказаць структуру дакумента (двайная пстрычка, каб разгарнуць /згарнуць усе элементы)\ndocument_outline_label=Структура дакумента\nattachments.title=Паказаць далучэнні\nattachments_label=Далучэнні\nthumbs.title=Паказ мініяцюр\nthumbs_label=Мініяцюры\nfindbar.title=Пошук у дакуменце\nfindbar_label=Знайсці\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Старонка {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Мініяцюра старонкі {{page}}\n\n# Find panel button title and messages\nfind_input.title=Шукаць\nfind_input.placeholder=Шукаць у дакуменце…\nfind_previous.title=Знайсці папярэдні выпадак выразу\nfind_previous_label=Папярэдні\nfind_next.title=Знайсці наступны выпадак выразу\nfind_next_label=Наступны\nfind_highlight=Падфарбаваць усе\nfind_match_case_label=Адрозніваць вялікія/малыя літары\nfind_entire_word_label=Словы цалкам\nfind_reached_top=Дасягнуты пачатак дакумента, працяг з канца\nfind_reached_bottom=Дасягнуты канец дакумента, працяг з пачатку\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} з {{total}} супадзення\nfind_match_count[two]={{current}} з {{total}} супадзенняў\nfind_match_count[few]={{current}} з {{total}} супадзенняў\nfind_match_count[many]={{current}} з {{total}} супадзенняў\nfind_match_count[other]={{current}} з {{total}} супадзенняў\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Больш за {{limit}} супадзенняў\nfind_match_count_limit[one]=Больш за {{limit}} супадзенне\nfind_match_count_limit[two]=Больш за {{limit}} супадзенняў\nfind_match_count_limit[few]=Больш за {{limit}} супадзенняў\nfind_match_count_limit[many]=Больш за {{limit}} супадзенняў\nfind_match_count_limit[other]=Больш за {{limit}} супадзенняў\nfind_not_found=Выраз не знойдзены\n\n# Error panel labels\nerror_more_info=Падрабязней\nerror_less_info=Сцісла\nerror_close=Закрыць\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js в{{version}} (зборка: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Паведамленне: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Стос: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Файл: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Радок: {{line}}\nrendering_error=Здарылася памылка падчас адлюстравання старонкі.\n\n# Predefined zoom values\npage_scale_width=Шырыня старонкі\npage_scale_fit=Уцісненне старонкі\npage_scale_auto=Аўтаматычнае павелічэнне\npage_scale_actual=Сапраўдны памер\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Памылка\nloading_error=Здарылася памылка падчас загрузкі PDF.\ninvalid_file_error=Няспраўны або пашкоджаны файл PDF.\nmissing_file_error=Адсутны файл PDF.\nunexpected_response_error=Нечаканы адказ сервера.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=Увядзіце пароль, каб адкрыць гэты файл PDF.\npassword_invalid=Нядзейсны пароль. Паспрабуйце зноў.\npassword_ok=Добра\npassword_cancel=Скасаваць\n\nprinting_not_supported=Папярэджанне: друк не падтрымліваецца цалкам гэтым браўзерам.\nprinting_not_ready=Увага: PDF не сцягнуты цалкам для друкавання.\nweb_fonts_disabled=Шрыфты Сеціва забаронены: немагчыма ўжываць укладзеныя шрыфты PDF.\ndocument_colors_not_allowed=PDF-дакументам не дазволена выкарыстоўваць свае колеры: у браўзеры адключаны параметр \"Дазволіць вэб-сайтам выкарыстоўваць свае колеры\".\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/bg/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Предишна страница\nprevious_label=Предишна\nnext.title=Следваща страница\nnext_label=Следваща\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Страница\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=от {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} от {{pagesCount}})\n\nzoom_out.title=Намаляване\nzoom_out_label=Намаляване\nzoom_in.title=Увеличаване\nzoom_in_label=Увеличаване\nzoom.title=Мащабиране\npresentation_mode.title=Превключване към режим на представяне\npresentation_mode_label=Режим на представяне\nopen_file.title=Отваряне на файл\nopen_file_label=Отваряне\nprint.title=Отпечатване\nprint_label=Отпечатване\ndownload.title=Изтегляне\ndownload_label=Изтегляне\nbookmark.title=Текущ изглед (копиране или отваряне в нов прозорец)\nbookmark_label=Текущ изглед\n\n# Secondary toolbar and context menu\ntools.title=Инструменти\ntools_label=Инструменти\nfirst_page.title=Към първата страница\nfirst_page.label=Към първата страница\nfirst_page_label=Към първата страница\nlast_page.title=Към последната страница\nlast_page.label=Към последната страница\nlast_page_label=Към последната страница\npage_rotate_cw.title=Завъртане по час. стрелка\npage_rotate_cw.label=Завъртане по часовниковата стрелка\npage_rotate_cw_label=Завъртане по часовниковата стрелка\npage_rotate_ccw.title=Завъртане обратно на час. стрелка\npage_rotate_ccw.label=Завъртане обратно на часовниковата стрелка\npage_rotate_ccw_label=Завъртане обратно на часовниковата стрелка\n\ncursor_text_select_tool.title=Включване на инструмента за избор на текст\ncursor_text_select_tool_label=Инструмент за избор на текст\ncursor_hand_tool.title=Включване на инструмента ръка\ncursor_hand_tool_label=Инструмент ръка\n\nscroll_vertical.title=Използване на вертикално плъзгане\nscroll_vertical_label=Вертикално плъзгане\nscroll_horizontal.title=Използване на хоризонтално\nscroll_horizontal_label=Хоризонтално плъзгане\nscroll_wrapped.title=Използване на мащабируемо плъзгане\nscroll_wrapped_label=Мащабируемо плъзгане\n\nspread_none.title=Режимът на сдвояване е изключен\nspread_none_label=Без сдвояване\nspread_odd.title=Сдвояване, започвайки от нечетните страници\nspread_odd_label=Нечетните отляво\nspread_even.title=Сдвояване, започвайки от четните страници\nspread_even_label=Четните отляво\n\n# Document properties dialog box\ndocument_properties.title=Свойства на документа…\ndocument_properties_label=Свойства на документа…\ndocument_properties_file_name=Име на файл:\ndocument_properties_file_size=Големина на файл:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} КБ ({{size_b}} байта)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} МБ ({{size_b}} байта)\ndocument_properties_title=Заглавие:\ndocument_properties_author=Автор:\ndocument_properties_subject=Тема:\ndocument_properties_keywords=Ключови думи:\ndocument_properties_creation_date=Дата на създаване:\ndocument_properties_modification_date=Дата на промяна:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Създател:\ndocument_properties_producer=PDF произведен от:\ndocument_properties_version=Издание на PDF:\ndocument_properties_page_count=Брой страници:\ndocument_properties_page_size=Размер на страницата:\ndocument_properties_page_size_unit_inches=инч\ndocument_properties_page_size_unit_millimeters=мм\ndocument_properties_page_size_orientation_portrait=портрет\ndocument_properties_page_size_orientation_landscape=пейзаж\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Правни въпроси\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Бърз преглед:\ndocument_properties_linearized_yes=Да\ndocument_properties_linearized_no=Не\ndocument_properties_close=Затваряне\n\nprint_progress_message=Подготвяне на документа за отпечатване…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Отказ\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Превключване на страничната лента\ntoggle_sidebar_notification.title=Превключване на страничната лента (документи със структура/прикачени файлове)\ntoggle_sidebar_label=Превключване на страничната лента\ndocument_outline.title=Показване на структурата на документа (двукратно щракване за свиване/разгъване на всичко)\ndocument_outline_label=Структура на документа\nattachments.title=Показване на притурките\nattachments_label=Притурки\nthumbs.title=Показване на миниатюрите\nthumbs_label=Миниатюри\nfindbar.title=Намиране в документа\nfindbar_label=Търсене\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Страница {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Миниатюра на страница {{page}}\n\n# Find panel button title and messages\nfind_input.title=Търсене\nfind_input.placeholder=Търсене в документа…\nfind_previous.title=Намиране на предишно съвпадение на фразата\nfind_previous_label=Предишна\nfind_next.title=Намиране на следващо съвпадение на фразата\nfind_next_label=Следваща\nfind_highlight=Открояване на всички\nfind_match_case_label=Съвпадение на регистъра\nfind_entire_word_label=Цели думи\nfind_reached_top=Достигнато е началото на документа, продължаване от края\nfind_reached_bottom=Достигнат е краят на документа, продължаване от началото\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} от {{total}} съвпадение\nfind_match_count[two]={{current}} от {{total}} съвпадения\nfind_match_count[few]={{current}} от {{total}} съвпадения\nfind_match_count[many]={{current}} от {{total}} съвпадения\nfind_match_count[other]={{current}} от {{total}} съвпадения\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Повече от {{limit}} съвпадения\nfind_match_count_limit[one]=Повече от {{limit}} съвпадение\nfind_match_count_limit[two]=Повече от {{limit}} съвпадения\nfind_match_count_limit[few]=Повече от {{limit}} съвпадения\nfind_match_count_limit[many]=Повече от {{limit}} съвпадения\nfind_match_count_limit[other]=Повече от {{limit}} съвпадения\nfind_not_found=Фразата не е намерена\n\n# Error panel labels\nerror_more_info=Повече информация\nerror_less_info=По-малко информация\nerror_close=Затваряне\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=Издание на PDF.js {{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Съобщение: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Стек: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Файл: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Ред: {{line}}\nrendering_error=Грешка при изчертаване на страницата.\n\n# Predefined zoom values\npage_scale_width=Ширина на страницата\npage_scale_fit=Вместване в страницата\npage_scale_auto=Автоматично мащабиране\npage_scale_actual=Действителен размер\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Грешка\nloading_error=Получи се грешка при зареждане на PDF-а.\ninvalid_file_error=Невалиден или повреден PDF файл.\nmissing_file_error=Липсващ PDF файл.\nunexpected_response_error=Неочакван отговор от сървъра.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Анотация {{type}}]\npassword_label=Въведете парола за отваряне на този PDF файл.\npassword_invalid=Невалидна парола. Моля, опитайте отново.\npassword_ok=Добре\npassword_cancel=Отказ\n\nprinting_not_supported=Внимание: Този четец няма пълна поддръжка на отпечатване.\nprinting_not_ready=Внимание: Този PDF файл не е напълно зареден за печат.\nweb_fonts_disabled=Уеб-шрифтовете са забранени: разрешаване на използването на вградените PDF шрифтове.\ndocument_colors_not_allowed=На документите от вид PDF не е разрешено да използват собствени цветове: „Разрешаване на страниците да избират собствени цветове“ е изключено в четеца.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/bn-BD/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=পূর্ববর্তী পাতা\nprevious_label=পূর্ববর্তী\nnext.title=পরবর্তী পাতা\nnext_label=পরবর্তী\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=পাতা\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} এর\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pagesCount}} এর {{pageNumber}})\n\nzoom_out.title=ছোট আকারে প্রদর্শন\nzoom_out_label=ছোট আকারে প্রদর্শন\nzoom_in.title=বড় আকারে প্রদর্শন\nzoom_in_label=বড় আকারে প্রদর্শন\nzoom.title=বড় আকারে প্রদর্শন\npresentation_mode.title=উপস্থাপনা মোডে স্যুইচ করুন\npresentation_mode_label=উপস্থাপনা মোড\nopen_file.title=ফাইল খুলুন\nopen_file_label=খুলুন\nprint.title=মুদ্রণ\nprint_label=মুদ্রণ\ndownload.title=ডাউনলোড\ndownload_label=ডাউনলোড\nbookmark.title=বর্তমান অবস্থা (অনুলিপি অথবা নতুন উইন্ডো তে খুলুন)\nbookmark_label=বর্তমান অবস্থা\n\n# Secondary toolbar and context menu\ntools.title=টুল\ntools_label=টুল\nfirst_page.title=প্রথম পাতায় যাও\nfirst_page.label=প্রথম পাতায় যাও\nfirst_page_label=প্রথম পাতায় যাও\nlast_page.title=শেষ পাতায় যাও\nlast_page.label=শেষ পাতায় যাও\nlast_page_label=শেষ পাতায় যাও\npage_rotate_cw.title=ঘড়ির কাঁটার দিকে ঘোরাও\npage_rotate_cw.label=ঘড়ির কাঁটার দিকে ঘোরাও\npage_rotate_cw_label=ঘড়ির কাঁটার দিকে ঘোরাও\npage_rotate_ccw.title=ঘড়ির কাঁটার বিপরীতে ঘোরাও\npage_rotate_ccw.label=ঘড়ির কাঁটার বিপরীতে ঘোরাও\npage_rotate_ccw_label=ঘড়ির কাঁটার বিপরীতে ঘোরাও\n\ncursor_text_select_tool.title=লেখা নির্বাচক টুল সক্রিয় করুন\ncursor_text_select_tool_label=লেখা নির্বাচক টুল\ncursor_hand_tool.title=হ্যান্ড টুল সক্রিয় করুন\ncursor_hand_tool_label=হ্যান্ড টুল\n\n\n\n# Document properties dialog box\ndocument_properties.title=নথি বৈশিষ্ট্য…\ndocument_properties_label=নথি বৈশিষ্ট্য…\ndocument_properties_file_name=ফাইলের নাম:\ndocument_properties_file_size=ফাইলের আকার:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} কেবি ({{size_b}} বাইট)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} এমবি ({{size_b}} বাইট)\ndocument_properties_title=শিরোনাম:\ndocument_properties_author=লেখক:\ndocument_properties_subject=বিষয়:\ndocument_properties_keywords=কীওয়ার্ড:\ndocument_properties_creation_date=তৈরির তারিখ:\ndocument_properties_modification_date=পরিবর্তনের তারিখ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=প্রস্তুতকারক:\ndocument_properties_producer=পিডিএফ প্রস্তুতকারক:\ndocument_properties_version=পিডিএফ সংষ্করণ:\ndocument_properties_page_count=মোট পাতা:\ndocument_properties_page_size=পাতার সাইজ:\ndocument_properties_page_size_unit_inches=এর মধ্যে\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=উলম্ব\ndocument_properties_page_size_orientation_landscape=অনুভূমিক\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=লেটার\ndocument_properties_page_size_name_legal=লীগাল\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=হ্যাঁ\ndocument_properties_linearized_no=না\ndocument_properties_close=বন্ধ\n\nprint_progress_message=মুদ্রণের জন্য নথি প্রস্তুত করা হচ্ছে…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=বাতিল\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=সাইডবার টগল করুন\ntoggle_sidebar_notification.title=সাইডবার টগল (নথিতে আউটলাইন/এটাচমেন্ট রয়েছে)\ntoggle_sidebar_label=সাইডবার টগল করুন\ndocument_outline.title=নথির আউটলাইন দেখাও (সব আইটেম প্রসারিত/সঙ্কুচিত করতে ডবল ক্লিক করুন)\ndocument_outline_label=নথির রূপরেখা\nattachments.title=সংযুক্তি দেখাও\nattachments_label=সংযুক্তি\nthumbs.title=থাম্বনেইল সমূহ প্রদর্শন করুন\nthumbs_label=থাম্বনেইল সমূহ\nfindbar.title=নথির মধ্যে খুঁজুন\nfindbar_label=খুঁজুন\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=পাতা {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}} পাতার থাম্বনেইল\n\n# Find panel button title and messages\nfind_input.title=খুঁজুন\nfind_input.placeholder=নথির মধ্যে খুঁজুন…\nfind_previous.title=বাক্যাংশের পূর্ববর্তী উপস্থিতি অনুসন্ধান\nfind_previous_label=পূর্ববর্তী\nfind_next.title=বাক্যাংশের পরবর্তী উপস্থিতি অনুসন্ধান\nfind_next_label=পরবর্তী\nfind_highlight=সব হাইলাইট করা হবে\nfind_match_case_label=অক্ষরের ছাঁদ মেলানো\nfind_reached_top=পাতার শুরুতে পৌছে গেছে, নীচ থেকে আরম্ভ করা হয়েছে\nfind_reached_bottom=পাতার শেষে পৌছে গেছে, উপর থেকে আরম্ভ করা হয়েছে\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_not_found=বাক্যাংশ পাওয়া যায়নি\n\n# Error panel labels\nerror_more_info=আরও তথ্য\nerror_less_info=কম তথ্য\nerror_close=বন্ধ\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=বার্তা: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=নথি: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=লাইন: {{line}}\nrendering_error=পাতা উপস্থাপনার সময় ত্রুটি দেখা দিয়েছে।\n\n# Predefined zoom values\npage_scale_width=পাতার প্রস্থ\npage_scale_fit=পাতা ফিট করুন\npage_scale_auto=স্বয়ংক্রিয় জুম\npage_scale_actual=প্রকৃত আকার\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=ত্রুটি\nloading_error=পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে।\ninvalid_file_error=অকার্যকর অথবা ক্ষতিগ্রস্ত পিডিএফ ফাইল।\nmissing_file_error=নিখোঁজ PDF ফাইল।\nunexpected_response_error=অপ্রত্যাশীত সার্ভার প্রতিক্রিয়া।\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} টীকা]\npassword_label=পিডিএফ ফাইলটি ওপেন করতে পাসওয়ার্ড দিন।\npassword_invalid=ভুল পাসওয়ার্ড। অনুগ্রহ করে আবার চেষ্টা করুন।\npassword_ok=ঠিক আছে\npassword_cancel=বাতিল\n\nprinting_not_supported=সতর্কতা: এই ব্রাউজারে মুদ্রণ সম্পূর্ণভাবে সমর্থিত নয়।\nprinting_not_ready=সতর্কীকরণ: পিডিএফটি মুদ্রণের জন্য সম্পূর্ণ লোড হয়নি।\nweb_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয়: সংযুক্ত পিডিএফ ফন্ট ব্যবহার করা যাচ্ছে না।\ndocument_colors_not_allowed=পিডিএফ ডকুমেন্টকে তাদের নিজস্ব রঙ ব্যবহারে অনুমতি নেই: 'পাতা তাদের নিজেস্ব রঙ নির্বাচন করতে অনুমতি দিন' এই ব্রাউজারে নিষ্ক্রিয় রয়েছে।\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/bn-IN/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=পূর্ববর্তী পৃষ্ঠা\nprevious_label=পূর্ববর্তী\nnext.title=পরবর্তী পৃষ্ঠা\nnext_label=পরবর্তী\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=পেজ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pagesCount}} এর {{pageNumber}})\n\nzoom_out.title=ছোট মাপে প্রদর্শন\nzoom_out_label=ছোট মাপে প্রদর্শন\nzoom_in.title=বড় মাপে প্রদর্শন\nzoom_in_label=বড় মাপে প্রদর্শন\nzoom.title=প্রদর্শনের মাপ\npresentation_mode.title=উপস্থাপনা মোড স্যুইচ করুন\npresentation_mode_label=উপস্থাপনা মোড\nopen_file.title=ফাইল খুলুন\nopen_file_label=খুলুন\nprint.title=প্রিন্ট করুন\nprint_label=প্রিন্ট করুন\ndownload.title=ডাউনলোড করুন\ndownload_label=ডাউনলোড করুন\nbookmark.title=বর্তমান প্রদর্শন (কপি করুন অথবা নতুন উইন্ডোতে খুলুন)\nbookmark_label=বর্তমান প্রদর্শন\n\n# Secondary toolbar and context menu\ntools.title=সরঞ্জাম\ntools_label=সরঞ্জাম\nfirst_page.title=প্রথম পৃষ্ঠায় চলুন\nfirst_page.label=প্রথম পৃষ্ঠায় চলুন\nfirst_page_label=প্রথম পৃষ্ঠায় চলুন\nlast_page.title=সর্বশেষ পৃষ্ঠায় চলুন\nlast_page.label=সর্বশেষ পৃষ্ঠায় চলুন\nlast_page_label=সর্বশেষ পৃষ্ঠায় চলুন\npage_rotate_cw.title=ডানদিকে ঘোরানো হবে\npage_rotate_cw.label=ডানদিকে ঘোরানো হবে\npage_rotate_cw_label=ডানদিকে ঘোরানো হবে\npage_rotate_ccw.title=বাঁদিকে ঘোরানো হবে\npage_rotate_ccw.label=বাঁদিকে ঘোরানো হবে\npage_rotate_ccw_label=বাঁদিকে ঘোরানো হবে\n\n\n# Document properties dialog box\ndocument_properties.title=নথির বৈশিষ্ট্য…\ndocument_properties_label=নথির বৈশিষ্ট্য…\ndocument_properties_file_name=ফাইলের নাম:\ndocument_properties_file_size=ফাইলের মাপ:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} মেগাবাইট ({{size_b}} bytes)\ndocument_properties_title=শিরোনাম:\ndocument_properties_author=লেখক:\ndocument_properties_subject=বিষয়:\ndocument_properties_keywords=নির্দেশক শব্দ:\ndocument_properties_creation_date=নির্মাণের তারিখ:\ndocument_properties_modification_date=পরিবর্তনের তারিখ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=নির্মাতা:\ndocument_properties_producer=PDF নির্মাতা:\ndocument_properties_version=PDF সংস্করণ:\ndocument_properties_page_count=মোট পৃষ্ঠা:\ndocument_properties_close=বন্ধ করুন\n\nprint_progress_message=ডকুমেন্ট প্রিন্টিং-র জন্য তৈরি করা হচ্ছে...\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=বাতিল\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=সাইডবার টগল করুন\ntoggle_sidebar_label=সাইডবার টগল করুন\ndocument_outline.title=ডকুমেন্ট আউটলাইন দেখান (দুবার ক্লিক করুন বাড়াতে//collapse সমস্ত আইটেম)\ndocument_outline_label=ডকুমেন্ট আউটলাইন\nattachments.title=সংযুক্তিসমূহ দেখান\nattachments_label=সংযুক্ত বস্তু\nthumbs.title=থাম্ব-নেইল প্রদর্শন\nthumbs_label=থাম্ব-নেইল প্রদর্শন\nfindbar.title=নথিতে খুঁজুন\nfindbar_label=অনুসন্ধান করুন\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=পৃষ্ঠা {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=পৃষ্ঠা {{page}}-র থাম্ব-নেইল\n\n# Find panel button title and messages\nfind_previous.title=চিহ্নিত পংক্তির পূর্ববর্তী উপস্থিতি অনুসন্ধান করুন\nfind_previous_label=পূর্ববর্তী\nfind_next.title=চিহ্নিত পংক্তির পরবর্তী উপস্থিতি অনুসন্ধান করুন\nfind_next_label=পরবর্তী\nfind_highlight=সমগ্র উজ্জ্বল করুন\nfind_match_case_label=হরফের ছাঁদ মেলানো হবে\nfind_reached_top=পৃষ্ঠার প্রারম্ভে পৌছে গেছে, নীচের অংশ থেকে আরম্ভ করা হবে\nfind_reached_bottom=পৃষ্ঠার অন্তিম প্রান্তে পৌছে গেছে, প্রথম অংশ থেকে আরম্ভ করা হবে\nfind_not_found=পংক্তি পাওয়া যায়নি\n\n# Error panel labels\nerror_more_info=অতিরিক্ত তথ্য\nerror_less_info=কম তথ্য\nerror_close=বন্ধ করুন\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Message: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Line: {{line}}\nrendering_error=পৃষ্ঠা প্রদর্শনকালে একটি সমস্যা দেখা দিয়েছে।\n\n# Predefined zoom values\npage_scale_width=পৃষ্ঠার প্রস্থ অনুযায়ী\npage_scale_fit=পৃষ্ঠার মাপ অনুযায়ী\npage_scale_auto=স্বয়ংক্রিয় মাপ নির্ধারণ\npage_scale_actual=প্রকৃত মাপ\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=ত্রুটি\nloading_error=PDF লোড করার সময় সমস্যা দেখা দিয়েছে।\ninvalid_file_error=অবৈধ বা ক্ষতিগ্রস্ত পিডিএফ ফাইল।\nmissing_file_error=অনুপস্থিত PDF ফাইল\nunexpected_response_error=সার্ভার থেকে অপ্রত্যাশিত সাড়া পাওয়া গেছে।\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=এই PDF ফাইল খোলার জন্য পাসওয়ার্ড দিন।\npassword_invalid=পাসওয়ার্ড সঠিক নয়। অনুগ্রহ করে পুনরায় প্রচেষ্টা করুন।\npassword_ok=OK\npassword_cancel=বাতিল করুন\n\nprinting_not_supported=সতর্কবার্তা: এই ব্রাউজার দ্বারা প্রিন্ট ব্যবস্থা সম্পূর্ণরূপে সমর্থিত নয়।\nprinting_not_ready=সতর্কবাণী: পিডিএফ সম্পূর্ণরূপে মুদ্রণের জন্য লোড করা হয় না.\nweb_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয় করা হয়েছে: এমবেডেড পিডিএফ ফন্ট ব্যবহার করতে অক্ষম.\ndocument_colors_not_allowed=পিডিএফ নথি তাদের নিজস্ব রং ব্যবহার করার জন্য অনুমতিপ্রাপ্ত নয়: ব্রাউজারে নিষ্ক্রিয় করা হয়েছে য়েন  'পেজ তাদের নিজস্ব রং নির্বাচন করার অনুমতি প্রদান করা য়ায়।'\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/br/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Pajenn a-raok\nprevious_label=A-raok\nnext.title=Pajenn war-lerc'h\nnext_label=War-lerc'h\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pajenn\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=eus {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} war {{pagesCount}})\n\nzoom_out.title=Zoum bihanaat\nzoom_out_label=Zoum bihanaat\nzoom_in.title=Zoum brasaat\nzoom_in_label=Zoum brasaat\nzoom.title=Zoum\npresentation_mode.title=Trec'haoliñ etrezek ar mod kinnigadenn\npresentation_mode_label=Mod kinnigadenn\nopen_file.title=Digeriñ ur restr\nopen_file_label=Digeriñ ur restr\nprint.title=Moullañ\nprint_label=Moullañ\ndownload.title=Pellgargañ\ndownload_label=Pellgargañ\nbookmark.title=Gwel bremanel (eilañ pe zigeriñ e-barzh ur prenestr nevez)\nbookmark_label=Gwel bremanel\n\n# Secondary toolbar and context menu\ntools.title=Ostilhoù\ntools_label=Ostilhoù\nfirst_page.title=Mont d'ar bajenn gentañ\nfirst_page.label=Mont d'ar bajenn gentañ\nfirst_page_label=Mont d'ar bajenn gentañ\nlast_page.title=Mont d'ar bajenn diwezhañ\nlast_page.label=Mont d'ar bajenn diwezhañ\nlast_page_label=Mont d'ar bajenn diwezhañ\npage_rotate_cw.title=C'hwelañ gant roud ar bizied\npage_rotate_cw.label=C'hwelañ gant roud ar bizied\npage_rotate_cw_label=C'hwelañ gant roud ar bizied\npage_rotate_ccw.title=C'hwelañ gant roud gin ar bizied\npage_rotate_ccw.label=C'hwelañ gant roud gin ar bizied\npage_rotate_ccw_label=C'hwelañ gant roud gin ar bizied\n\ncursor_text_select_tool.title=Gweredekaat an ostilh diuzañ testenn\ncursor_text_select_tool_label=Ostilh diuzañ testenn\ncursor_hand_tool.title=Gweredekaat an ostilh dorn\ncursor_hand_tool_label=Ostilh dorn\n\nscroll_vertical.title=Arverañ an dibunañ a-blom\nscroll_vertical_label=Dibunañ a-serzh\nscroll_horizontal.title=Arverañ an dibunañ a-blaen\nscroll_horizontal_label=Dibunañ a-blaen\nscroll_wrapped.title=Arverañ an dibunañ paket\nscroll_wrapped_label=Dibunañ paket\n\nspread_none.title=Chom hep stagañ ar skignadurioù\nspread_none_label=Skignadenn ebet\nspread_odd.title=Lakaat ar pajennadoù en ur gregiñ gant ar pajennoù ampar\nspread_odd_label=Pajennoù ampar\nspread_even.title=Lakaat ar pajennadoù en ur gregiñ gant ar pajennoù par\nspread_even_label=Pajennoù par\n\n# Document properties dialog box\ndocument_properties.title=Perzhioù an teul…\ndocument_properties_label=Perzhioù an teul…\ndocument_properties_file_name=Anv restr :\ndocument_properties_file_size=Ment ar restr :\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} Me ({{size_b}} eizhbit)\ndocument_properties_title=Titl :\ndocument_properties_author=Aozer :\ndocument_properties_subject=Danvez :\ndocument_properties_keywords=Gerioù-alc'hwez :\ndocument_properties_creation_date=Deiziad krouiñ :\ndocument_properties_modification_date=Deiziad kemmañ :\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Krouer :\ndocument_properties_producer=Kenderc'her PDF :\ndocument_properties_version=Handelv PDF :\ndocument_properties_page_count=Niver a bajennoù :\ndocument_properties_page_size=Ment ar bajenn:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=poltred\ndocument_properties_page_size_orientation_landscape=gweledva\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Lizher\ndocument_properties_page_size_name_legal=Lezennel\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Gwel Web Herrek:\ndocument_properties_linearized_yes=Ya\ndocument_properties_linearized_no=Ket\ndocument_properties_close=Serriñ\n\nprint_progress_message=O prientiñ an teul evit moullañ...\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Nullañ\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez\ntoggle_sidebar_notification.title=Trec'haoliñ ar verrenn-gostez (ur steuñv pe stagadennoù a zo en teul)\ntoggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez\ndocument_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù)\ndocument_outline_label=Sinedoù an teuliad\nattachments.title=Diskouez ar c'henstagadurioù\nattachments_label=Kenstagadurioù\nthumbs.title=Diskouez ar melvennoù\nthumbs_label=Melvennoù\nfindbar.title=Klask e-barzh an teuliad\nfindbar_label=Klask\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pajenn {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Melvenn ar bajenn {{page}}\n\n# Find panel button title and messages\nfind_input.title=Klask\nfind_input.placeholder=Klask e-barzh an teuliad\nfind_previous.title=Kavout an tamm frazenn kent o klotañ ganti\nfind_previous_label=Kent\nfind_next.title=Kavout an tamm frazenn war-lerc'h o klotañ ganti\nfind_next_label=War-lerc'h\nfind_highlight=Usskediñ pep tra\nfind_match_case_label=Teurel evezh ouzh ar pennlizherennoù\nfind_entire_word_label=Gerioù a-bezh\nfind_reached_top=Tizhet eo bet derou ar bajenn, kenderc'hel diouzh an diaz\nfind_reached_bottom=Tizhet eo bet dibenn ar bajenn, kenderc'hel diouzh ar c'hrec'h\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]=Klotadenn {{current}} war {{total}}\nfind_match_count[two]=Klotadenn {{current}} war {{total}}\nfind_match_count[few]=Klotadenn {{current}} war {{total}}\nfind_match_count[many]=Klotadenn {{current}} war {{total}}\nfind_match_count[other]=Klotadenn {{current}} war {{total}}\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Muioc'h eget {{limit}} a glotadennoù\nfind_match_count_limit[one]=Muioc'h eget {{limit}} a glotadennoù\nfind_match_count_limit[two]=Muioc'h eget {{limit}} a glotadennoù\nfind_match_count_limit[few]=Muioc'h eget {{limit}} a glotadennoù\nfind_match_count_limit[many]=Muioc'h eget {{limit}} a glotadennoù\nfind_match_count_limit[other]=Muioc'h eget {{limit}} a glotadennoù\nfind_not_found=N'haller ket kavout ar frazenn\n\n# Error panel labels\nerror_more_info=Muioc'h a ditouroù\nerror_less_info=Nebeutoc'h a ditouroù\nerror_close=Serriñ\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js handelv {{version}} (kempunadur : {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Kemennadenn : {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Torn : {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Restr : {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linenn : {{line}}\nrendering_error=Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajennad.\n\n# Predefined zoom values\npage_scale_width=Led ar bajenn\npage_scale_fit=Pajenn a-bezh\npage_scale_auto=Zoum emgefreek\npage_scale_actual=Ment wir\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Fazi\nloading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF.\ninvalid_file_error=Restr PDF didalvoudek pe kontronet.\nmissing_file_error=Restr PDF o vankout.\nunexpected_response_error=Respont dic'hortoz a-berzh an dafariad\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Notennañ]\npassword_label=Enankit ar ger-tremen evit digeriñ ar restr PDF-mañ.\npassword_invalid=Ger-tremen didalvoudek. Klaskit en-dro mar plij.\npassword_ok=Mat eo\npassword_cancel=Nullañ\n\nprinting_not_supported=Kemenn : N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ.\nprinting_not_ready=Kemenn : N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn.\nweb_fonts_disabled=Diweredekaet eo an nodrezhoù web : n'haller ket arverañ an nodrezhoù PDF enframmet.\ndocument_colors_not_allowed=N'eo ket aotreet an teuliadoù PDF da arverañ o livioù dezho : diweredekaet eo “Aotren ar pajennoù da zibab o livioù dezho” e-barzh ar merdeer.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/brx/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=आगोलनि बिलाइ\nprevious_label=आगोलनि\nnext.title=उननि बिलाइ\nnext_label=उननि\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=फिसायै जुम खालाम\nzoom_out_label=फिसायै जुम खालाम\nzoom_in.title=गेदेरै जुम खालाम\nzoom_in_label=गेदेरै जुम खालाम\nzoom.title=जुम खालाम\npresentation_mode.title=दिन्थिफुंनाय म'डआव थां\npresentation_mode_label=दिन्थिफुंनाय म'ड\nopen_file.title=फाइलखौ खेव\nopen_file_label=खेव\nprint.title=साफाय\nprint_label=साफाय\ndownload.title=डाउनल'ड खालाम\ndownload_label=डाउनल'ड खालाम\nbookmark.title=दानि नुथाय (गोदान उइन्ड'आव कपि खालाम एबा खेव)\nbookmark_label=दानि नुथाय\n\n# Secondary toolbar and context menu\ntools.title=टुल\ntools_label=टुल\nfirst_page.title=गिबि बिलाइआव थां\nfirst_page.label=गिबि बिलाइआव थां\nfirst_page_label=गिबि बिलाइआव थां\nlast_page.title=जोबथा बिलाइआव थां\nlast_page.label=जोबथा बिलाइआव थां\nlast_page_label=जोबथा बिलाइआव थां\npage_rotate_cw.title=घरि गिदिंनाय फार्से फिदिं\npage_rotate_cw.label=घरि गिदिंनाय फार्से फिदिं\npage_rotate_cw_label=घरि गिदिंनाय फार्से फिदिं\npage_rotate_ccw.title=घरि गिदिंनाय उल्था फार्से फिदिं\npage_rotate_ccw.label=घरि गिदिंनाय उल्था फार्से फिदिं\npage_rotate_ccw_label=घरि गिदिंनाय उल्था फार्से फिदिं\n\n\n# Document properties dialog box\ndocument_properties.title=फोरमान बिलाइनि आखुथाय...\ndocument_properties_label=फोरमान बिलाइनि आखुथाय...\ndocument_properties_file_name=फाइलनि मुं:\ndocument_properties_file_size=फाइलनि महर:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} बाइट)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} बाइट)\ndocument_properties_title=बिमुं:\ndocument_properties_author=लिरगिरि:\ndocument_properties_subject=आयदा:\ndocument_properties_keywords=गाहाय सोदोब:\ndocument_properties_creation_date=सोरजिनाय अक्ट':\ndocument_properties_modification_date=सुद्रायनाय अक्ट':\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=सोरजिग्रा:\ndocument_properties_producer=PDF दिहुनग्रा:\ndocument_properties_version=PDF बिसान:\ndocument_properties_page_count=बिलाइनि हिसाब:\ndocument_properties_close=बन्द खालाम\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=टग्गल साइडबार\ntoggle_sidebar_label=टग्गल साइडबार\ndocument_outline_label=फोरमान बिलाइ सिमा हांखो\nattachments.title=नांजाब होनायखौ दिन्थि\nattachments_label=नांजाब होनाय\nthumbs.title=थामनेइलखौ दिन्थि\nthumbs_label=थामनेइल\nfindbar.title=फोरमान बिलाइआव नागिरना दिहुन\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=बिलाइ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=बिलाइ {{page}} नि थामनेइल\n\n# Find panel button title and messages\nfind_previous.title=बाथ्रा खोन्दोबनि सिगांनि नुजाथिनायखौ नागिर\nfind_previous_label=आगोलनि\nfind_next.title=बाथ्रा खोन्दोबनि उननि नुजाथिनायखौ नागिर\nfind_next_label=उननि\nfind_highlight=गासैखौबो हाइलाइट खालाम\nfind_match_case_label=गोरोबनाय केस\nfind_reached_top=थालो निफ्राय जागायनानै फोरमान बिलाइनि बिजौआव सौहैबाय\nfind_reached_bottom=बिजौ निफ्राय जागायनानै फोरमान बिलाइनि बिजौआव सौहैबाय\nfind_not_found=बाथ्रा खोन्दोब मोनाखै\n\n# Error panel labels\nerror_more_info=गोबां फोरमायथिहोग्रा\nerror_less_info=खम फोरमायथिहोग्रा\nerror_close=बन्द खालाम\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=खौरां: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=स्टेक: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=फाइल: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=सारि: {{line}}\nrendering_error=बिलाइखौ राव सोलायनाय समाव मोनसे गोरोन्थि जादों।\n\n# Predefined zoom values\npage_scale_width=बिलाइनि गुवार\npage_scale_fit=बिलाइ गोरोबनाय\npage_scale_auto=गावनोगाव जुम\npage_scale_actual=थार महर\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=गोरोन्थि\nloading_error=PDF ल'ड खालामनाय समाव मोनसे गोरोन्थि जाबाय।\ninvalid_file_error=बाहायजायै एबा गाज्रि जानाय PDF फाइल\nmissing_file_error=गोमानाय PDF फाइल\nunexpected_response_error=मिजिंथियै सार्भार फिननाय।\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} सोदोब बेखेवनाय]\npassword_label=बे PDF फाइलखौ खेवनो पासवार्ड हाबहो।\npassword_invalid=बाहायजायै पासवार्ड। अननानै फिन नाजा।\npassword_ok=OK\n\nprinting_not_supported=सांग्रांथि: साफायनाया बे ब्राउजारजों आबुङै हेफाजाब होजाया।\nprinting_not_ready=सांग्रांथि: PDF खौ साफायनायनि थाखाय फुरायै ल'ड खालामाखै।\nweb_fonts_disabled=वेब फन्टखौ लोरबां खालामबाय: अरजाबहोनाय PDF फन्टखौ बाहायनो हायाखै।\ndocument_colors_not_allowed=PDF फोरमान बिलाइखौ बिसोरनि निजि गाब बाहायनो गनायथि होनाय जाया: 'बिसोरनि निजि गाब बासिखनो बिलाइखौ गनायथि हो'-खौ ब्राउजारआव लोरबां खालामनाय जायो।\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/bs/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Prethodna strana\nprevious_label=Prethodna\nnext.title=Sljedeća strna\nnext_label=Sljedeća\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Strana\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=od {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} od {{pagesCount}})\n\nzoom_out.title=Umanji\nzoom_out_label=Umanji\nzoom_in.title=Uvećaj\nzoom_in_label=Uvećaj\nzoom.title=Uvećanje\npresentation_mode.title=Prebaci se u prezentacijski režim\npresentation_mode_label=Prezentacijski režim\nopen_file.title=Otvori fajl\nopen_file_label=Otvori\nprint.title=Štampaj\nprint_label=Štampaj\ndownload.title=Preuzmi\ndownload_label=Preuzmi\nbookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru)\nbookmark_label=Trenutni prikaz\n\n# Secondary toolbar and context menu\ntools.title=Alati\ntools_label=Alati\nfirst_page.title=Idi na prvu stranu\nfirst_page.label=Idi na prvu stranu\nfirst_page_label=Idi na prvu stranu\nlast_page.title=Idi na zadnju stranu\nlast_page.label=Idi na zadnju stranu\nlast_page_label=Idi na zadnju stranu\npage_rotate_cw.title=Rotiraj u smjeru kazaljke na satu\npage_rotate_cw.label=Rotiraj u smjeru kazaljke na satu\npage_rotate_cw_label=Rotiraj u smjeru kazaljke na satu\npage_rotate_ccw.title=Rotiraj suprotno smjeru kazaljke na satu\npage_rotate_ccw.label=Rotiraj suprotno smjeru kazaljke na satu\npage_rotate_ccw_label=Rotiraj suprotno smjeru kazaljke na satu\n\ncursor_text_select_tool.title=Omogući alat za označavanje teksta\ncursor_text_select_tool_label=Alat za označavanje teksta\ncursor_hand_tool.title=Omogući ručni alat\ncursor_hand_tool_label=Ručni alat\n\n# Document properties dialog box\ndocument_properties.title=Svojstva dokumenta...\ndocument_properties_label=Svojstva dokumenta...\ndocument_properties_file_name=Naziv fajla:\ndocument_properties_file_size=Veličina fajla:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bajta)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bajta)\ndocument_properties_title=Naslov:\ndocument_properties_author=Autor:\ndocument_properties_subject=Predmet:\ndocument_properties_keywords=Ključne riječi:\ndocument_properties_creation_date=Datum kreiranja:\ndocument_properties_modification_date=Datum promjene:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Kreator:\ndocument_properties_producer=PDF stvaratelj:\ndocument_properties_version=PDF verzija:\ndocument_properties_page_count=Broj stranica:\ndocument_properties_page_size=Veličina stranice:\ndocument_properties_page_size_unit_inches=u\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=uspravno\ndocument_properties_page_size_orientation_landscape=vodoravno\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Pismo\ndocument_properties_page_size_name_legal=Pravni\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\ndocument_properties_close=Zatvori\n\nprint_progress_message=Pripremam dokument za štampu…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Otkaži\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Uključi/isključi bočnu traku\ntoggle_sidebar_notification.title=Uključi/isključi sidebar (dokument sadrži outline/priloge)\ntoggle_sidebar_label=Uključi/isključi bočnu traku\ndocument_outline.title=Prikaži outline dokumenta (dvoklik za skupljanje/širenje svih stavki)\ndocument_outline_label=Konture dokumenta\nattachments.title=Prikaži priloge\nattachments_label=Prilozi\nthumbs.title=Prikaži thumbnailove\nthumbs_label=Thumbnailovi\nfindbar.title=Pronađi u dokumentu\nfindbar_label=Pronađi\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Strana {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Thumbnail strane {{page}}\n\n# Find panel button title and messages\nfind_input.title=Pronađi\nfind_input.placeholder=Pronađi u dokumentu…\nfind_previous.title=Pronađi prethodno pojavljivanje fraze\nfind_previous_label=Prethodno\nfind_next.title=Pronađi sljedeće pojavljivanje fraze\nfind_next_label=Sljedeće\nfind_highlight=Označi sve\nfind_match_case_label=Osjetljivost na karaktere\nfind_reached_top=Dostigao sam vrh dokumenta, nastavljam sa dna\nfind_reached_bottom=Dostigao sam kraj dokumenta, nastavljam sa vrha\nfind_not_found=Fraza nije pronađena\n\n# Error panel labels\nerror_more_info=Više informacija\nerror_less_info=Manje informacija\nerror_close=Zatvori\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Poruka: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fajl: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linija: {{line}}\nrendering_error=Došlo je do greške prilikom renderiranja strane.\n\n# Predefined zoom values\npage_scale_width=Širina strane\npage_scale_fit=Uklopi stranu\npage_scale_auto=Automatsko uvećanje\npage_scale_actual=Stvarna veličina\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Greška\nloading_error=Došlo je do greške prilikom učitavanja PDF-a.\ninvalid_file_error=Neispravan ili oštećen PDF fajl.\nmissing_file_error=Nedostaje PDF fajl.\nunexpected_response_error=Neočekivani odgovor servera.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} pribilješka]\npassword_label=Upišite lozinku da biste otvorili ovaj PDF fajl.\npassword_invalid=Pogrešna lozinka. Pokušajte ponovo.\npassword_ok=OK\npassword_cancel=Otkaži\n\nprinting_not_supported=Upozorenje: Štampanje nije u potpunosti podržano u ovom browseru.\nprinting_not_ready=Upozorenje: PDF nije u potpunosti učitan za štampanje.\nweb_fonts_disabled=Web fontovi su onemogućeni: nemoguće koristiti ubačene PDF fontove.\ndocument_colors_not_allowed=PDF dokumentima nije dozvoljeno da koriste vlastite boje: 'Dozvoli stranicama da izaberu vlastite boje' je deaktivirano u browseru.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ca/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Pàgina anterior\nprevious_label=Anterior\nnext.title=Pàgina següent\nnext_label=Següent\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pàgina\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} de {{pagesCount}})\n\nzoom_out.title=Allunya\nzoom_out_label=Allunya\nzoom_in.title=Apropa\nzoom_in_label=Apropa\nzoom.title=Escala\npresentation_mode.title=Canvia al mode de presentació\npresentation_mode_label=Mode de presentació\nopen_file.title=Obre el fitxer\nopen_file_label=Obre\nprint.title=Imprimeix\nprint_label=Imprimeix\ndownload.title=Baixa\ndownload_label=Baixa\nbookmark.title=Vista actual (copia o obre en una finestra nova)\nbookmark_label=Vista actual\n\n# Secondary toolbar and context menu\ntools.title=Eines\ntools_label=Eines\nfirst_page.title=Vés a la primera pàgina\nfirst_page.label=Vés a la primera pàgina\nfirst_page_label=Vés a la primera pàgina\nlast_page.title=Vés a l'última pàgina\nlast_page.label=Vés a l'última pàgina\nlast_page_label=Vés a l'última pàgina\npage_rotate_cw.title=Gira cap a la dreta\npage_rotate_cw.label=Gira cap a la dreta\npage_rotate_cw_label=Gira cap a la dreta\npage_rotate_ccw.title=Gira cap a l'esquerra\npage_rotate_ccw.label=Gira cap a l'esquerra\npage_rotate_ccw_label=Gira cap a l'esquerra\n\ncursor_text_select_tool.title=Habilita l'eina de selecció de text\ncursor_text_select_tool_label=Eina de selecció de text\ncursor_hand_tool.title=Habilita l'eina de mà\ncursor_hand_tool_label=Eina de mà\n\nscroll_vertical.title=Utilitza el desplaçament vertical\nscroll_vertical_label=Desplaçament vertical\nscroll_horizontal.title=Utilitza el desplaçament horitzontal\nscroll_horizontal_label=Desplaçament horitzontal\n\n\n# Document properties dialog box\ndocument_properties.title=Propietats del document…\ndocument_properties_label=Propietats del document…\ndocument_properties_file_name=Nom del fitxer:\ndocument_properties_file_size=Mida del fitxer:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Títol:\ndocument_properties_author=Autor:\ndocument_properties_subject=Assumpte:\ndocument_properties_keywords=Paraules clau:\ndocument_properties_creation_date=Data de creació:\ndocument_properties_modification_date=Data de modificació:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creador:\ndocument_properties_producer=Generador de PDF:\ndocument_properties_version=Versió de PDF:\ndocument_properties_page_count=Nombre de pàgines:\ndocument_properties_page_size=Mida de la pàgina:\ndocument_properties_page_size_unit_inches=polzades\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=vertical\ndocument_properties_page_size_orientation_landscape=apaïsat\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Carta\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\ndocument_properties_close=Tanca\n\nprint_progress_message=S'està preparant la impressió del document…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancel·la\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Mostra/amaga la barra lateral\ntoggle_sidebar_notification.title=Mostra/amaga la barra lateral (el document conté un esquema o adjuncions)\ntoggle_sidebar_label=Mostra/amaga la barra lateral\ndocument_outline.title=Mostra l'esquema del document (doble clic per ampliar/reduir tots els elements)\ndocument_outline_label=Contorn del document\nattachments.title=Mostra les adjuncions\nattachments_label=Adjuncions\nthumbs.title=Mostra les miniatures\nthumbs_label=Miniatures\nfindbar.title=Cerca al document\nfindbar_label=Cerca\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pàgina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura de la pàgina {{page}}\n\n# Find panel button title and messages\nfind_input.title=Cerca\nfind_input.placeholder=Cerca al document…\nfind_previous.title=Cerca l'anterior coincidència de l'expressió\nfind_previous_label=Anterior\nfind_next.title=Cerca la següent coincidència de l'expressió\nfind_next_label=Següent\nfind_highlight=Ressalta-ho tot\nfind_match_case_label=Distingeix entre majúscules i minúscules\nfind_reached_top=S'ha arribat al principi del document, es continua pel final\nfind_reached_bottom=S'ha arribat al final del document, es continua pel principi\nfind_not_found=No s'ha trobat l'expressió\n\n# Error panel labels\nerror_more_info=Més informació\nerror_less_info=Menys informació\nerror_close=Tanca\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (muntatge: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Missatge: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fitxer: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Línia: {{line}}\nrendering_error=S'ha produït un error mentre es renderitzava la pàgina.\n\n# Predefined zoom values\npage_scale_width=Amplària de la pàgina\npage_scale_fit=Ajusta la pàgina\npage_scale_auto=Zoom automàtic\npage_scale_actual=Mida real\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=S'ha produït un error en carregar el PDF.\ninvalid_file_error=El fitxer PDF no és vàlid o està malmès.\nmissing_file_error=Falta el fitxer PDF.\nunexpected_response_error=Resposta inesperada del servidor.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotació {{type}}]\npassword_label=Introduïu la contrasenya per obrir aquest fitxer PDF.\npassword_invalid=La contrasenya no és vàlida. Torneu-ho a provar.\npassword_ok=D'acord\npassword_cancel=Cancel·la\n\nprinting_not_supported=Avís: la impressió no és plenament funcional en aquest navegador.\nprinting_not_ready=Atenció: el PDF no s'ha acabat de carregar per imprimir-lo.\nweb_fonts_disabled=Els tipus de lletra web estan desactivats: no es poden utilitzar els tipus de lletra incrustats al PDF.\ndocument_colors_not_allowed=Els documents PDF no poden usar els seus colors propis: «Permet a les pàgines triar els colors propis» es troba desactivat al navegador.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/cak/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Jun kan ruxaq\nprevious_label=Chuwäch\nnext.title=Jun chik ruxaq\nnext_label=Jun chik\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Ruxaq\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=richin {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} richin {{pagesCount}})\n\nzoom_out.title=Tich'utinirisäx\nzoom_out_label=Tich'utinirisäx\nzoom_in.title=Tinimirisäx\nzoom_in_label=Tinimirisäx\nzoom.title=Sum\npresentation_mode.title=Tijal ri rub'anikil niwachin\npresentation_mode_label=Pa rub'eyal niwachin\nopen_file.title=Tijaq yakb'äl\nopen_file_label=Tijaq\nprint.title=Titz'ajb'äx\nprint_label=Titz'ajb'äx\ndownload.title=Tiqasäx\ndownload_label=Tiqasäx\nbookmark.title=Rutz'etik wakami (tiwachib'ëx o tijaq pa jun k'ak'a' tzuwäch)\nbookmark_label=Rutzub'al wakami\n\n# Secondary toolbar and context menu\ntools.title=Samajib'äl\ntools_label=Samajib'äl\nfirst_page.title=Tib'e pa nab'ey ruxaq\nfirst_page.label=Tib'e pa nab'ey ruxaq\nfirst_page_label=Tib'e pa nab'ey ruxaq\nlast_page.title=Tib'e pa ruk'isib'äl ruxaq\nlast_page.label=Tib'e pa ruk'isib'äl ruxaq\nlast_page_label=Tib'e pa ruk'isib'äl ruxaq\npage_rotate_cw.title=Tisutïx pan ajkiq'a'\npage_rotate_cw.label=Tisutïx pan ajkiq'a'\npage_rotate_cw_label=Tisutïx pan ajkiq'a'\npage_rotate_ccw.title=Tisutïx pan ajxokon\npage_rotate_ccw.label=Tisutïx pan ajxokon\npage_rotate_ccw_label=Tisutïx pan ajxokon\n\ncursor_text_select_tool.title=Titzij ri rusamajib'al Rucha'ik Rucholajem Tzij\ncursor_text_select_tool_label=Rusamajib'al Rucha'ik Rucholajem Tzij\ncursor_hand_tool.title=Titzij ri q'ab'aj samajib'äl\ncursor_hand_tool_label=Q'ab'aj Samajib'äl\n\nscroll_vertical.title=Tokisäx Pa'äl Q'axanem\nscroll_vertical_label=Pa'äl Q'axanem\nscroll_horizontal.title=Tokisäx Kotz'öl Q'axanem\nscroll_horizontal_label=Kotz'öl Q'axanem\nscroll_wrapped.title=Tokisäx Tzub'aj Q'axanem\nscroll_wrapped_label=Tzub'aj Q'axanem\n\nspread_none.title=Man ketun taq ruxaq pa rub'eyal wuj\nspread_none_label=Majun Rub'eyal\nspread_odd.title=Ke'atunu' ri taq ruxaq rik'in natikirisaj rik'in jun man k'ulaj ta rajilab'al\nspread_odd_label=Man K'ulaj Ta Rub'eyal\nspread_even.title=Ke'atunu' ri taq ruxaq rik'in natikirisaj rik'in jun k'ulaj rajilab'al\nspread_even_label=K'ulaj Rub'eyal\n\n# Document properties dialog box\ndocument_properties.title=Taq richinil wuj…\ndocument_properties_label=Taq richinil wuj…\ndocument_properties_file_name=Rub'i' yakb'äl:\ndocument_properties_file_size=Runimilem yakb'äl:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=B'i'aj:\ndocument_properties_author=B'anel:\ndocument_properties_subject=Taqikil:\ndocument_properties_keywords=Kixe'el taq tzij:\ndocument_properties_creation_date=Ruq'ijul xtz'uk:\ndocument_properties_modification_date=Ruq'ijul xjalwachïx:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Q'inonel:\ndocument_properties_producer=PDF b'anöy:\ndocument_properties_version=PDF ruwäch:\ndocument_properties_page_count=Jarupe' ruxaq:\ndocument_properties_page_size=Runimilem ri Ruxaq:\ndocument_properties_page_size_unit_inches=pa\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=rupalem\ndocument_properties_page_size_orientation_landscape=rukotz'olem\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Loman wuj\ndocument_properties_page_size_name_legal=Nïm wuj\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Anin Rutz'etik Ajk'amaya'l:\ndocument_properties_linearized_yes=Ja'\ndocument_properties_linearized_no=Mani\ndocument_properties_close=Titz'apïx\n\nprint_progress_message=Ruchojmirisaxik wuj richin nitz'ajb'äx…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Tiq'at\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Tijal ri ajxikin kajtz'ik\ntoggle_sidebar_notification.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqoj taq yakb'äl)\ntoggle_sidebar_label=Tijal ri ajxikin kajtz'ik\ndocument_outline.title=Tik'ut pe ruch'akulal wuj (kamul-pitz'oj richin nirik'/nich'utinirisäx ronojel ruch'akulal)\ndocument_outline_label=Ruch'akulal wuj\nattachments.title=Kek'ut pe taq taqoj\nattachments_label=Taq taqoj\nthumbs.title=Kek'ut pe taq ch'utiq\nthumbs_label=Koköj\nfindbar.title=Tikanöx chupam ri wuj\nfindbar_label=Tikanöx\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Ruxaq {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Ruch'utinirisaxik ruxaq {{page}}\n\n# Find panel button title and messages\nfind_input.title=Tikanöx\nfind_input.placeholder=Tikanöx pa wuj…\nfind_previous.title=Tib'an b'enam pa ri jun kan q'aptzij xilitäj\nfind_previous_label=Jun kan\nfind_next.title=Tib'e pa ri jun chik pajtzij xilitäj\nfind_next_label=Jun chik\nfind_highlight=Tiya' retal ronojel\nfind_match_case_label=Tuk'äm ri' kik'in taq nimatz'ib' chuqa' taq ch'utitz'ib'\nfind_entire_word_label=Tz'aqät taq tzij\nfind_reached_top=Xb'eq'i' ri rutikirib'al wuj, xtikanöx k'a pa ruk'isib'äl\nfind_reached_bottom=Xb'eq'i' ri ruk'isib'äl wuj, xtikanöx pa rutikirib'al\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} richin {{total}} nuk'äm ri'\nfind_match_count[two]={{current}} richin {{total}} nikik'äm ki'\nfind_match_count[few]={{current}} richin {{total}} nikik'äm ki'\nfind_match_count[many]={{current}} richin {{total}} nikik'äm ki'\nfind_match_count[other]={{current}} richin {{total}} nikik'äm ki'\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=K'ïy chi re {{limit}} nikik'äm ki'\nfind_match_count_limit[one]=K'ïy chi re {{limit}} nuk'äm ri'\nfind_match_count_limit[two]=K'ïy chi re {{limit}} nikik'äm ki'\nfind_match_count_limit[few]=K'ïy chi re {{limit}} nikik'äm ki'\nfind_match_count_limit[many]=K'ïy chi re {{limit}} nikik'äm ki'\nfind_match_count_limit[other]=K'ïy chi re {{limit}} nikik'äm ki'\nfind_not_found=Man xilitäj ta ri pajtzij\n\n# Error panel labels\nerror_more_info=Ch'aqa' chik rutzijol\nerror_less_info=Jub'a' ok rutzijol\nerror_close=Titz'apïx\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Uqxa'n: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Tzub'aj: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Yakb'äl: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=B'ey: {{line}}\nrendering_error=Xk'ulwachitäj jun sachoj toq ninuk'wachij ri ruxaq.\n\n# Predefined zoom values\npage_scale_width=Ruwa ruxaq\npage_scale_fit=Tinuk' ruxaq\npage_scale_auto=Yonil chi nimilem\npage_scale_actual=Runimilem\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Sachoj\nloading_error=\\u0020Xk'ulwachitäj jun sach'oj toq xnuk'ux ri PDF .\ninvalid_file_error=Man oke ta o yujtajinäq ri PDF yakb'äl.\nmissing_file_error=Man xilitäj ta ri PDF yakb'äl.\nunexpected_response_error=Man oyob'en ta tz'olin rutzij ruk'u'x samaj.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Tz'ib'anïk]\npassword_label=Tatz'ib'aj ri ewan tzij richin najäq re yakb'äl re' pa PDF.\npassword_invalid=Man okel ta ri ewan tzij: Tatojtob'ej chik.\npassword_ok=Ütz\npassword_cancel=Tiq'at\n\nprinting_not_supported=Rutzijol k'ayewal: Ri rutz'ajb'axik man koch'el ta ronojel pa re okik'amaya'l re'.\nprinting_not_ready=Rutzijol k'ayewal: Ri PDF man xusamajij ta ronojel richin nitz'ajb'äx.\nweb_fonts_disabled=E chupül ri taq ajk'amaya'l tz'ib': man tikirel ta nokisäx ri taq tz'ib' PDF pa ch'ikenïk\ndocument_colors_not_allowed=Ri taq wuj pa PDF man ya'on ta q'ij chi ke richin nikokisaj ri taq kib'onil: “Tiya' q'ij chi ke ri taq ruxaq chi kekicha' ri taq kib'onil” chupun pa ri awokik'amaya'l.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/crh/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Evvelki Saife\nprevious_label=Evvelki\nnext.title=Soñraki Saife\nnext_label=Soñraki\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Saife\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=/ {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} / {{pagesCount}})\n\nzoom_out.title=Uzaqlaștır\nzoom_out_label=Uzaqlaștır\nzoom_in.title=Yaqınlaştır\nzoom_in_label=Yaqınlaştır\nzoom.title=Miqyasla\npresentation_mode.title=Taqdim Tarzına Almaş\npresentation_mode_label=Taqdim Tarzı\nopen_file.title=Dosye Aç\nopen_file_label=Aç\nprint.title=Bastır\nprint_label=Bastır\ndownload.title=Endir\ndownload_label=Endir\nbookmark.title=Cari körünim (kopiyala yaki yañı pencerede aç)\nbookmark_label=Cari körünim\n\n# Secondary toolbar and context menu\ntools.title=Aletler\ntools_label=Aletler\nfirst_page.title=İlk Saifege Bar\nfirst_page.label=İlk Saifege Bar\nfirst_page_label=İlk Saifege Bar\nlast_page.title=Soñ Saifege Bar\nlast_page.label=Soñ Saifege Bar\nlast_page_label=Soñ Saifege Bar\npage_rotate_cw.title=Saat Yönünde Devrettir\npage_rotate_cw.label=Saat Yönünde Aylandır\npage_rotate_cw_label=Saat Yönünde Aylandır\npage_rotate_ccw.title=Saat Yönüniñ Tersine Devrettir\npage_rotate_ccw.label=Saat Yönüniñ Tersine Aylandır\npage_rotate_ccw_label=Saat Yönüniñ Tersine Aylandır\n\ncursor_text_select_tool.title=Metin Saylamı Aletini Qabilleştir\ncursor_text_select_tool_label=Metin Saylamı Aleti\ncursor_hand_tool.title=El Aletini Qabilleştir\ncursor_hand_tool_label=El Aleti\n\nscroll_vertical.title=Şaquliy Taydırmanı Qullan\nscroll_vertical_label=Şaquliy Taydırma\nscroll_horizontal.title=Ufqiy Taydırmanı Qullan\nscroll_horizontal_label=Ufqiy Taydırma\nscroll_wrapped.title=Türülgen Taydırmanı Qullan\nscroll_wrapped_label=Türülgen Taydırma\n\nspread_none.title=Saife yaymalarını qoşma\nspread_none_label=Yaymasız\nspread_odd.title=Saife yaymalarını tek-sayılı saifeler ile başlayaraq qoş\nspread_odd_label=Tek Yaymalar\nspread_even.title=Saife yaymalarını çift-sayılı saifeler ile başlayaraq qoş\nspread_even_label=Çift Yaymalar\n\n# Document properties dialog box\ndocument_properties.title=Vesiqa Hasiyetleri…\ndocument_properties_label=Vesiqa Hasiyetleri…\ndocument_properties_file_name=Dosye adı:\ndocument_properties_file_size=Dosye ölçüsi:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bayt)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bayt)\ndocument_properties_title=Serleva:\ndocument_properties_author=Müellif:\ndocument_properties_subject=Mevzu:\ndocument_properties_keywords=Anahtar-sözler:\ndocument_properties_creation_date=İcat Tarihı:\ndocument_properties_modification_date=Başqalaştırma Tarihi:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Mücit:\ndocument_properties_producer=PDF İstisalcısı:\ndocument_properties_version=PDF Sürümi:\ndocument_properties_page_count=Saife Adedi:\ndocument_properties_page_size=Saife Ölçüsi:\ndocument_properties_page_size_unit_inches=düym\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portret\ndocument_properties_page_size_orientation_landscape=manzara\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Mektüp\ndocument_properties_page_size_name_legal=Uquqiy\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_close=Qapat\n\nprint_progress_message=Vesiqa bastırılmağa azırlanıla…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent=%{{progress}}\nprint_progress_close=Vazgeç\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Yan-çubuqnı Tönter\ntoggle_sidebar_notification.title=Yançubuqnı Tönter (vesiqa tış-hizanı/ilişiklerni ihtiva ete)\ntoggle_sidebar_label=Yan-çubuqnı Tönter\ndocument_outline.title=Vesiqa Tış-hizasını Köster (unsurlarnıñ episini cayıldırmaq/eştirmek içün çifte-çertiñiz)\ndocument_outline_label=Vesiqa Tış-hizası\nattachments.title=İlişiklerni Köster\nattachments_label=İlişikler\nthumbs.title=Tırnaq-Resimlerni Köster\nthumbs_label=Tırnaq-Resimler\nfindbar.title=Vesiqada Tap\nfindbar_label=Tap\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Saife {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}}. Saifeniñ Tırnaq-Resmi\n\n# Find panel button title and messages\nfind_input.title=Tap\nfind_input.placeholder=Vesiqada tap…\nfind_previous.title=İbareniñ evvelki rastkelişini tap\nfind_previous_label=Evvelki\nfind_next.title=İbareniñ soñraki rastkelişini tap\nfind_next_label=Soñraki\nfind_highlight=Episini ışıqlandır\nfind_match_case_label=Büyük-ufaq hassasiyeti\nfind_reached_top=Saifeniñ töpesi irişildi, tüpten devam etildi\nfind_reached_bottom=Saifeniñ soñu irişildi, töpeden devam etildi\nfind_not_found=İbare tapılmadı\n\n# Error panel labels\nerror_more_info=Daa Çoq Malümat\nerror_less_info=Daa Az Malümat\nerror_close=Qapat\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js s{{version}} (inşa: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mesaj: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Çeren: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Dosye: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Satır: {{line}}\nrendering_error=Saife qılınğanda bir hata ortağa çıqtı.\n\n# Predefined zoom values\npage_scale_width=Saife Kenişligi\npage_scale_fit=Saifeni Sığdır\npage_scale_auto=Öz-özünden Miqyasla\npage_scale_actual=Fiiliy Ölçü\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent=%{{scale}}\n\n# Loading indicator messages\nloading_error_indicator=Hata\nloading_error=PDF yüklengende bir hata ortağa çıqtı.\ninvalid_file_error=Keçersiz yaki ifsat etilgen PDF dosyesi.\nmissing_file_error=Eksik PDF dosyesi.\nunexpected_response_error=Beklenmegen sunucı cevabı.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Notlandırması]\npassword_label=Bu PDF dosyesini açmaq içün sır-sözni kirsetiñiz.\npassword_invalid=Keçersiz sır-söz. Lütfen yañıdan deñeñiz.\npassword_ok=Tamam\npassword_cancel=Vazgeç\n\nprinting_not_supported=Tenbi: Bastıruv bu kezici tarafından tam olaraq desteklenmey.\nprinting_not_ready=Tenbi: PDF bastıruv içün bütünley yüklengen degildir.\nweb_fonts_disabled=Ağ urufatları naqabildir: içeri-yatqızılğan PDF urufatları qullanılalmay.\ndocument_colors_not_allowed=PDF vesiqalarınıñ öz tüslerini qullanması caiz degildir: “Saifelerge öz tüslerini seçmege izin ber” kezicide ğayrıfaalleştirilgendir.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/cs/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Přejde na předchozí stránku\nprevious_label=Předchozí\nnext.title=Přejde na následující stránku\nnext_label=Další\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Stránka\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=z {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} z {{pagesCount}})\n\nzoom_out.title=Zmenší velikost\nzoom_out_label=Zmenšit\nzoom_in.title=Zvětší velikost\nzoom_in_label=Zvětšit\nzoom.title=Nastaví velikost\npresentation_mode.title=Přepne do režimu prezentace\npresentation_mode_label=Režim prezentace\nopen_file.title=Otevře soubor\nopen_file_label=Otevřít\nprint.title=Vytiskne dokument\nprint_label=Tisk\ndownload.title=Stáhne dokument\ndownload_label=Stáhnout\nbookmark.title=Současný pohled (kopírovat nebo otevřít v novém okně)\nbookmark_label=Současný pohled\n\n# Secondary toolbar and context menu\ntools.title=Nástroje\ntools_label=Nástroje\nfirst_page.title=Přejde na první stránku\nfirst_page.label=Přejít na první stránku\nfirst_page_label=Přejít na první stránku\nlast_page.title=Přejde na poslední stránku\nlast_page.label=Přejít na poslední stránku\nlast_page_label=Přejít na poslední stránku\npage_rotate_cw.title=Otočí po směru hodin\npage_rotate_cw.label=Otočit po směru hodin\npage_rotate_cw_label=Otočit po směru hodin\npage_rotate_ccw.title=Otočí proti směru hodin\npage_rotate_ccw.label=Otočit proti směru hodin\npage_rotate_ccw_label=Otočit proti směru hodin\n\ncursor_text_select_tool.title=Povolí výběr textu\ncursor_text_select_tool_label=Výběr textu\ncursor_hand_tool.title=Povolí nástroj ručička\ncursor_hand_tool_label=Nástroj ručička\n\nscroll_vertical.title=Použít svislé posouvání\nscroll_vertical_label=Svislé posouvání\nscroll_horizontal.title=Použít vodorovné posouvání\nscroll_horizontal_label=Vodorovné posouvání\nscroll_wrapped.title=Použít postupné posouvání\nscroll_wrapped_label=Postupné posouvání\n\nspread_none.title=Nesdružovat stránky\nspread_none_label=Žádné sdružení\nspread_odd.title=Sdruží stránky s umístěním lichých vlevo\nspread_odd_label=Sdružení stránek (liché vlevo)\nspread_even.title=Sdruží stránky s umístěním sudých vlevo\nspread_even_label=Sdružení stránek (sudé vlevo)\n\n# Document properties dialog box\ndocument_properties.title=Vlastnosti dokumentu…\ndocument_properties_label=Vlastnosti dokumentu…\ndocument_properties_file_name=Název souboru:\ndocument_properties_file_size=Velikost souboru:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bajtů)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bajtů)\ndocument_properties_title=Název stránky:\ndocument_properties_author=Autor:\ndocument_properties_subject=Předmět:\ndocument_properties_keywords=Klíčová slova:\ndocument_properties_creation_date=Datum vytvoření:\ndocument_properties_modification_date=Datum úpravy:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Vytvořil:\ndocument_properties_producer=Tvůrce PDF:\ndocument_properties_version=Verze PDF:\ndocument_properties_page_count=Počet stránek:\ndocument_properties_page_size=Velikost stránky:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=na výšku\ndocument_properties_page_size_orientation_landscape=na šířku\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Dopis\ndocument_properties_page_size_name_legal=Právní dokument\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Rychlé zobrazování z webu:\ndocument_properties_linearized_yes=Ano\ndocument_properties_linearized_no=Ne\ndocument_properties_close=Zavřít\n\nprint_progress_message=Příprava dokumentu pro tisk…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}} %\nprint_progress_close=Zrušit\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Postranní lišta\ntoggle_sidebar_notification.title=Přepne postranní lištu (dokument obsahuje osnovu/přílohy)\ntoggle_sidebar_label=Postranní lišta\ndocument_outline.title=Zobrazí osnovu dokumentu (dvojité klepnutí rozbalí/sbalí všechny položky)\ndocument_outline_label=Osnova dokumentu\nattachments.title=Zobrazí přílohy\nattachments_label=Přílohy\nthumbs.title=Zobrazí náhledy\nthumbs_label=Náhledy\nfindbar.title=Najde v dokumentu\nfindbar_label=Najít\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Strana {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Náhled strany {{page}}\n\n# Find panel button title and messages\nfind_input.title=Najít\nfind_input.placeholder=Najít v dokumentu…\nfind_previous.title=Najde předchozí výskyt hledaného textu\nfind_previous_label=Předchozí\nfind_next.title=Najde další výskyt hledaného textu\nfind_next_label=Další\nfind_highlight=Zvýraznit\nfind_match_case_label=Rozlišovat velikost\nfind_entire_word_label=Celá slova\nfind_reached_top=Dosažen začátek dokumentu, pokračuje se od konce\nfind_reached_bottom=Dosažen konec dokumentu, pokračuje se od začátku\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}}. z {{total}} výskytu\nfind_match_count[two]={{current}}. z {{total}} výskytů\nfind_match_count[few]={{current}}. z {{total}} výskytů\nfind_match_count[many]={{current}}. z {{total}} výskytů\nfind_match_count[other]={{current}}. z {{total}} výskytů\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Více než {{limit}} výskytů\nfind_match_count_limit[one]=Více než {{limit}} výskyt\nfind_match_count_limit[two]=Více než {{limit}} výskyty\nfind_match_count_limit[few]=Více než {{limit}} výskyty\nfind_match_count_limit[many]=Více než {{limit}} výskytů\nfind_match_count_limit[other]=Více než {{limit}} výskytů\nfind_not_found=Hledaný text nenalezen\n\n# Error panel labels\nerror_more_info=Více informací\nerror_less_info=Méně informací\nerror_close=Zavřít\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (sestavení: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Zpráva: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Zásobník: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Soubor: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Řádek: {{line}}\nrendering_error=Při vykreslování stránky nastala chyba.\n\n# Predefined zoom values\npage_scale_width=Podle šířky\npage_scale_fit=Podle výšky\npage_scale_auto=Automatická velikost\npage_scale_actual=Skutečná velikost\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Chyba\nloading_error=Při nahrávání PDF nastala chyba.\ninvalid_file_error=Neplatný nebo chybný soubor PDF.\nmissing_file_error=Chybí soubor PDF.\nunexpected_response_error=Neočekávaná odpověď serveru.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotace typu {{type}}]\npassword_label=Pro otevření PDF souboru vložte heslo.\npassword_invalid=Neplatné heslo. Zkuste to znovu.\npassword_ok=OK\npassword_cancel=Zrušit\n\nprinting_not_supported=Upozornění: Tisk není v tomto prohlížeči plně podporován.\nprinting_not_ready=Upozornění: Dokument PDF není kompletně načten.\nweb_fonts_disabled=Webová písma jsou zakázána, proto není možné použít vložená písma PDF.\ndocument_colors_not_allowed=PDF dokumenty nemají povoleno používat vlastní barvy: volba 'Povolit stránkám používat vlastní barvy' je v prohlížeči deaktivována.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/csb/viewer.properties",
    "content": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Pòprzédnô strona\nprevious_label=Pòprzédnô\nnext.title=Nôslédnô strona\nnext_label=Nôslédnô\n\n# LOCALIZATION NOTE (page_label, page_of):\n# These strings are concatenated to form the \"Page: X of Y\" string.\n# Do not translate \"{{pageCount}}\", it will be substituted with a number\n# representing the total number of pages.\npage_label=Strona:\npage_of=z {{pageCount}}\n\nzoom_out.title=Zmniészë\nzoom_out_label=Zmniészë\nzoom_in.title=Zwikszë\nzoom_in_label=Wiôlgòsc\nzoom.title=Wiôlgòsc\nprint.title=Drëkùjë\nprint_label=Drëkùjë\npresentation_mode.title=Przéńdzë w trib prezentacje \npresentation_mode_label=Trib prezentacje \nopen_file.title=Òtemkni lopk\nopen_file_label=Òtemkni\ndownload.title=Zladënk\ndownload_label=Zladënk\nbookmark.title=Spamiãtôj wëzdrzatk (kòpérëje, abò òtemkni w nowim òknnie)\nbookmark_label=Aktualny wëzdrzatk\n\nfind_label=Szëkôj:\nfind_previous.title=Biéj do pòprzédnégò wënikù szëkbë\nfind_previous_label=Pòprzédny\nfind_next.title=Biéj do nôslédnégò wënikù szëkbë\nfind_next_label=Nôslédny\nfind_highlight=Pòdszkrzëni wszëtczé\nfind_match_case_label=Rozeznôwôj miarã lëterów\nfind_not_found=Nie nalôzł tekstu\nfind_reached_bottom=Doszedł do kùńca dokùmentu, zaczinającë òd górë\nfind_reached_top=Doszedł do pòczątkù dokùmentu, zaczinającë òd dołù\n\ntoggle_sidebar.title=Pòsuwk wëbiérkù\ntoggle_sidebar_label=Pòsuwk wëbiérkù\n\noutline.title=Wëskrzëni òbcéch dokùmentu\noutline_label=Òbcéch dokùmentu\nthumbs.title=Wëskrzëni miniaturë\nthumbs_label=Miniaturë\nfindbar.title=Przeszëkôj dokùment\nfindbar_label=Nalezë\ntools_label=Nôrzãdła\nfirst_page.title=Biéj do pierszi stronë\nfirst_page.label=Biéj do pierszi stronë\nlast_page.label=Biéj do òstatny stronë\ninvalid_file_error=Lëchi ôrt, abò pòpsëti lopk PDF.\n\n\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Strona {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura stronë {{page}}\n\n# Error panel labels\nerror_more_info=Wicy infòrmacje\nerror_less_info=Mni infòrmacje\nerror_close=Close\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n\n\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Message: {{wiadło}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stóg}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{lopk}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Line: {{line}}\nrendering_error=Pòkôza sã fela przë renderowanim stronë.\n\n# Predefined zoom values\npage_scale_width=Szérzawa stronë\npage_scale_fit=Dopasëje stronã\npage_scale_auto=Aùtomatnô wiôlgòsc\npage_scale_actual=Naturalnô wiôlgòsc\n\n# Loading indicator messages\n# LOCALIZATION NOTE (error_line): \"{{[percent}}\" will be replaced with a percentage\nloading_error_indicator=Fela\nloading_error=Pòkôza sã fela przë wczëtiwanim PDFù.\n\n# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.\n# \"{{[type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n\nrequest_password=PDF je zabezpieczony parolą:\nprinting_not_supported = Òstrzéga: przezérnik nie je do kùńca wspieróny przez drëkôrze \n\n# Context menu\npage_rotate_cw.label=Òbkrãcë w prawò\npage_rotate_ccw.label=Òbkrãcë w lewò\n\n\nlast_page.title=Biéj do pòprzédny stronë\nlast_page_label=Biéj do pòprzédny stronë\npage_rotate_cw.title=Òbkrãcë w prawò\npage_rotate_cw_label=Òbkrãcë w prawò\npage_rotate_ccw.title=Òbkrãcë w lewò\npage_rotate_ccw_label=Òbkrãcë w lewò\n\n\nweb_fonts_disabled=Sécowé czconczi są wëłączoné: włączë je, bë móc ùżiwac òsadzonëch czconków w lopkach PDF.\n\n\nmissing_file_error=Felëje lopka PDF.\nprinting_not_ready = Òstrzéga: lopk mùszi sã do kùńca wczëtac zanim gò mòże drëkòwac\n\ndocument_colors_disabled=Dokùmentë PDF nie mògą ù swòjich farwów: \\'Pòzwòlë stronóm wëbierac swòje farwë\\' je wëłączoné w przezérnikù.\ninvalid_password=Lëchô parola.\ntext_annotation_type.alt=[Adnotacjô {{type}}]\n\ntools.title=Tools\nfirst_page_label=Go to First Page\n\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/cy/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Tudalen Flaenorol\nprevious_label=Blaenorol\nnext.title=Tudalen Nesaf\nnext_label=Nesaf\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Tudalen\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=o {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} o {{pagesCount}})\n\nzoom_out.title=Chwyddo Allan\nzoom_out_label=Chwyddo Allan\nzoom_in.title=Chwyddo Mewn\nzoom_in_label=Chwyddo Mewn\nzoom.title=Chwyddo\npresentation_mode.title=Newid i'r Modd Cyflwyno\npresentation_mode_label=Modd Cyflwyno\nopen_file.title=Agor Ffeil\nopen_file_label=Agor\nprint.title=Argraffu\nprint_label=Argraffu\ndownload.title=Llwyth\ndownload_label=Llwytho i Lawr\nbookmark.title=Golwg cyfredol (copïo neu agor ffenestr newydd)\nbookmark_label=Golwg Gyfredol\n\n# Secondary toolbar and context menu\ntools.title=Offer\ntools_label=Offer\nfirst_page.title=Mynd i'r Dudalen Gyntaf\nfirst_page.label=Mynd i'r Dudalen Gyntaf\nfirst_page_label=Mynd i'r Dudalen Gyntaf\nlast_page.title=Mynd i'r Dudalen Olaf\nlast_page.label=Mynd i'r Dudalen Olaf\nlast_page_label=Mynd i'r Dudalen Olaf\npage_rotate_cw.title=Cylchdroi Clocwedd\npage_rotate_cw.label=Cylchdroi Clocwedd\npage_rotate_cw_label=Cylchdroi Clocwedd\npage_rotate_ccw.title=Cylchdroi Gwrthglocwedd\npage_rotate_ccw.label=Cylchdroi Gwrthglocwedd\npage_rotate_ccw_label=Cylchdroi Gwrthglocwedd\n\ncursor_text_select_tool.title=Galluogi Dewis Offeryn Testun\ncursor_text_select_tool_label=Offeryn Dewis Testun\ncursor_hand_tool.title=Galluogi Offeryn Llaw\ncursor_hand_tool_label=Offeryn Llaw\n\nscroll_vertical.title=Defnyddio Sgrolio Fertigol\nscroll_vertical_label=Sgrolio Fertigol\nscroll_horizontal.title=Defnyddio Sgrolio Fertigol\nscroll_horizontal_label=Sgrolio Fertigol\nscroll_wrapped.title=Defnyddio Sgrolio Amlapio\nscroll_wrapped_label=Sgrolio Amlapio\n\nspread_none.title=Peidio uno taeniadau canol\nspread_none_label=Dim Taeniadau\nspread_odd.title=Uno taeniadau tudalen yn cychwyn gyda thudalennau odrif\nspread_odd_label=Taeniadau Odrifau\nspread_even.title=Uno taeniadau tudalen yn cychwyn gyda thudalennau eilrif\nspread_even_label=Taeniadau Eilrif\n\n# Document properties dialog box\ndocument_properties.title=Priodweddau Dogfen…\ndocument_properties_label=Priodweddau Dogfen…\ndocument_properties_file_name=Enw ffeil:\ndocument_properties_file_size=Maint ffeil:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} beit)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} beit)\ndocument_properties_title=Teitl:\ndocument_properties_author=Awdur:\ndocument_properties_subject=Pwnc:\ndocument_properties_keywords=Allweddair:\ndocument_properties_creation_date=Dyddiad Creu:\ndocument_properties_modification_date=Dyddiad Addasu:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Crewr:\ndocument_properties_producer=Cynhyrchydd PDF:\ndocument_properties_version=Fersiwn PDF:\ndocument_properties_page_count=Cyfrif Tudalen:\ndocument_properties_page_size=Maint Tudalen:\ndocument_properties_page_size_unit_inches=o fewn\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portread\ndocument_properties_page_size_orientation_landscape=tirlun\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Llythyr\ndocument_properties_page_size_name_legal=Cyfreithiol\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Golwg Gwe Cyflym:\ndocument_properties_linearized_yes=Iawn\ndocument_properties_linearized_no=Na\ndocument_properties_close=Cau\n\nprint_progress_message=Paratoi dogfen ar gyfer ei hargraffu…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Diddymu\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Toglo'r Bar Ochr\ntoggle_sidebar_notification.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys outline/attachments)\ntoggle_sidebar_label=Toglo'r Bar Ochr\ndocument_outline.title=Dangos Amlinell Dogfen (clic dwbl i ymestyn/cau pob eitem)\ndocument_outline_label=Amlinelliad Dogfen\nattachments.title=Dangos Atodiadau\nattachments_label=Atodiadau\nthumbs.title=Dangos Lluniau Bach\nthumbs_label=Lluniau Bach\nfindbar.title=Canfod yn y Ddogfen\nfindbar_label=Canfod\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Tudalen {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Llun Bach Tudalen {{page}}\n\n# Find panel button title and messages\nfind_input.title=Canfod\nfind_input.placeholder=Canfod yn y ddogfen…\nfind_previous.title=Canfod enghraifft flaenorol o'r ymadrodd\nfind_previous_label=Blaenorol\nfind_next.title=Canfod enghraifft nesaf yr ymadrodd\nfind_next_label=Nesaf\nfind_highlight=Amlygu popeth\nfind_match_case_label=Cydweddu maint\nfind_entire_word_label=Geiriau cyfan\nfind_reached_top=Wedi cyrraedd brig y dudalen, parhau o'r gwaelod\nfind_reached_bottom=Wedi cyrraedd diwedd y dudalen, parhau o'r brig\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} o {{total}} cydweddiad\nfind_match_count[two]={{current}} o {{total}} cydweddiad\nfind_match_count[few]={{current}} o {{total}} cydweddiad\nfind_match_count[many]={{current}} o {{total}} cydweddiad\nfind_match_count[other]={{current}} o {{total}} cydweddiad\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Mwy na {{limit}} cydweddiad\nfind_match_count_limit[one]=Mwy na {{limit}} cydweddiad\nfind_match_count_limit[two]=Mwy na {{limit}} cydweddiad\nfind_match_count_limit[few]=Mwy na {{limit}} cydweddiad\nfind_match_count_limit[many]=Mwy na {{limit}} cydweddiad\nfind_match_count_limit[other]=Mwy na {{limit}} cydweddiad\nfind_not_found=Heb ganfod ymadrodd\n\n# Error panel labels\nerror_more_info=Rhagor o Wybodaeth\nerror_less_info=Llai o wybodaeth\nerror_close=Cau\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Neges: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stac: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Ffeil: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Llinell: {{line}}\nrendering_error=Digwyddodd gwall wrth adeiladu'r dudalen.\n\n# Predefined zoom values\npage_scale_width=Lled Tudalen\npage_scale_fit=Ffit Tudalen\npage_scale_auto=Chwyddo Awtomatig\npage_scale_actual=Maint Gwirioneddol\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Gwall\nloading_error=Digwyddodd gwall wrth lwytho'r PDF.\ninvalid_file_error=Ffeil PDF annilys neu llwgr.\nmissing_file_error=Ffeil PDF coll.\nunexpected_response_error=Ymateb annisgwyl gan y gweinydd.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anodiad {{type}} ]\npassword_label=Rhowch gyfrinair i agor y PDF.\npassword_invalid=Cyfrinair annilys. Ceisiwch eto.\npassword_ok=Iawn\npassword_cancel=Diddymu\n\nprinting_not_supported=Rhybudd: Nid yw argraffu yn cael ei gynnal yn llawn gan y porwr.\nprinting_not_ready=Rhybudd: Nid yw'r PDF wedi ei lwytho'n llawn ar gyfer argraffu.\nweb_fonts_disabled=Ffontiau gwe wedi eu hanalluogi: methu defnyddio ffontiau PDF mewnblanedig.\ndocument_colors_not_allowed=Nid oes caniatâd i ddogfennau PDF i ddefnyddio eu lliwiau eu hunain: Mae “Caniatáu i dudalennau ddefnyddio eu lliwiau eu hunain” wedi ei atal yn y porwr.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/da/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Forrige side\nprevious_label=Forrige\nnext.title=Næste side\nnext_label=Næste\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Side\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=af {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} af {{pagesCount}})\n\nzoom_out.title=Zoom ud\nzoom_out_label=Zoom ud\nzoom_in.title=Zoom ind\nzoom_in_label=Zoom ind\nzoom.title=Zoom\nprint.title=Udskriv\nprint_label=Udskriv\npresentation_mode.title=Skift til fuldskærmsvisning\npresentation_mode_label=Fuldskærmsvisning\nopen_file.title=Åbn fil\nopen_file_label=Åbn\ndownload.title=Hent\ndownload_label=Hent\nbookmark.title=Aktuel visning (kopier eller åbn i et nyt vindue)\nbookmark_label=Aktuel visning\n\n# Secondary toolbar and context menu\ntools.title=Funktioner\ntools_label=Funktioner\nfirst_page.title=Gå til første side\nfirst_page.label=Gå til første side\nfirst_page_label=Gå til første side\nlast_page.title=Gå til sidste side\nlast_page.label=Gå til sidste side\nlast_page_label=Gå til sidste side\npage_rotate_cw.title=Roter med uret\npage_rotate_cw.label=Roter med uret\npage_rotate_cw_label=Roter med uret\npage_rotate_ccw.title=Roter mod uret\npage_rotate_ccw.label=Roter mod uret\npage_rotate_ccw_label=Roter mod uret\n\ncursor_text_select_tool.title=Aktiver markeringsværktøj\ncursor_text_select_tool_label=Markeringsværktøj\ncursor_hand_tool.title=Aktiver håndværktøj\ncursor_hand_tool_label=Håndværktøj\n\nscroll_vertical.title=Brug vertikal scrolling\nscroll_vertical_label=Vertikal scrolling\nscroll_horizontal.title=Brug horisontal scrolling\nscroll_horizontal_label=Horisontal scrolling\nscroll_wrapped.title=Brug ombrudt scrolling\nscroll_wrapped_label=Ombrudt scrolling\n\nspread_none.title=Vis enkeltsider\nspread_none_label=Enkeltsider\nspread_odd.title=Vis opslag med ulige sidenumre til venstre\nspread_odd_label=Opslag med forside\nspread_even.title=Vis opslag med lige sidenumre til venstre\nspread_even_label=Opslag uden forside\n\n# Document properties dialog box\ndocument_properties.title=Dokumentegenskaber…\ndocument_properties_label=Dokumentegenskaber…\ndocument_properties_file_name=Filnavn:\ndocument_properties_file_size=Filstørrelse:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Titel:\ndocument_properties_author=Forfatter:\ndocument_properties_subject=Emne:\ndocument_properties_keywords=Nøgleord:\ndocument_properties_creation_date=Oprettet:\ndocument_properties_modification_date=Redigeret:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Program:\ndocument_properties_producer=PDF-producent:\ndocument_properties_version=PDF-version:\ndocument_properties_page_count=Antal sider:\ndocument_properties_page_size=Sidestørrelse:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=stående\ndocument_properties_page_size_orientation_landscape=liggende\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Hurtig web-visning:\ndocument_properties_linearized_yes=Ja\ndocument_properties_linearized_no=Nej\ndocument_properties_close=Luk\n\nprint_progress_message=Forbereder dokument til udskrivning…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Annuller\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Slå sidepanel til eller fra\ntoggle_sidebar_notification.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer)\ntoggle_sidebar_label=Slå sidepanel til eller fra\ndocument_outline.title=Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer)\ndocument_outline_label=Dokument-disposition\nattachments.title=Vis vedhæftede filer\nattachments_label=Vedhæftede filer\nthumbs.title=Vis miniaturer\nthumbs_label=Miniaturer\nfindbar.title=Find i dokument\nfindbar_label=Find\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Side {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniature af side {{page}}\n\n# Find panel button title and messages\nfind_input.title=Find\nfind_input.placeholder=Find i dokument…\nfind_previous.title=Find den forrige forekomst\nfind_previous_label=Forrige\nfind_next.title=Find den næste forekomst\nfind_next_label=Næste\nfind_highlight=Fremhæv alle\nfind_match_case_label=Forskel på store og små bogstaver\nfind_entire_word_label=Hele ord\nfind_reached_top=Toppen af siden blev nået, fortsatte fra bunden\nfind_reached_bottom=Bunden af siden blev nået, fortsatte fra toppen\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} af {{total}} forekomst\nfind_match_count[two]={{current}} af {{total}} forekomster\nfind_match_count[few]={{current}} af {{total}} forekomster\nfind_match_count[many]={{current}} af {{total}} forekomster\nfind_match_count[other]={{current}} af {{total}} forekomster\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Mere end {{limit}} forekomster\nfind_match_count_limit[one]=Mere end {{limit}} forekomst\nfind_match_count_limit[two]=Mere end {{limit}} forekomster\nfind_match_count_limit[few]=Mere end {{limit}} forekomster\nfind_match_count_limit[many]=Mere end {{limit}} forekomster\nfind_match_count_limit[other]=Mere end {{limit}} forekomster\nfind_not_found=Der blev ikke fundet noget\n\n# Error panel labels\nerror_more_info=Mere information\nerror_less_info=Mindre information\nerror_close=Luk\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Fejlmeddelelse: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fil: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linje: {{line}}\nrendering_error=Der opstod en fejl ved generering af siden.\n\n# Predefined zoom values\npage_scale_width=Sidebredde\npage_scale_fit=Tilpas til side\npage_scale_auto=Automatisk zoom\npage_scale_actual=Faktisk størrelse\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Fejl\nloading_error=Der opstod en fejl ved indlæsning af PDF-filen.\ninvalid_file_error=PDF-filen er ugyldig eller ødelagt.\nmissing_file_error=Manglende PDF-fil.\nunexpected_response_error=Uventet svar fra serveren.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}}kommentar]\npassword_label=Angiv adgangskode til at åbne denne PDF-fil.\npassword_invalid=Ugyldig adgangskode. Prøv igen.\npassword_ok=OK\npassword_cancel=Fortryd\n\nprinting_not_supported=Advarsel: Udskrivning er ikke fuldt understøttet af browseren.\nprinting_not_ready=Advarsel: PDF-filen er ikke fuldt indlæst til udskrivning.\nweb_fonts_disabled=Webskrifttyper er deaktiverede. De indlejrede skrifttyper i PDF-filen kan ikke anvendes.\ndocument_colors_not_allowed=PDF-dokumenter må ikke bruge deres egne farver: 'Tillad sider at vælge deres egne farver' er deaktiveret i browseren.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/de/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Eine Seite zurück\nprevious_label=Zurück\nnext.title=Eine Seite vor\nnext_label=Vor\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Seite\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=von {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} von {{pagesCount}})\n\nzoom_out.title=Verkleinern\nzoom_out_label=Verkleinern\nzoom_in.title=Vergrößern\nzoom_in_label=Vergrößern\nzoom.title=Zoom\npresentation_mode.title=In Präsentationsmodus wechseln\npresentation_mode_label=Präsentationsmodus\nopen_file.title=Datei öffnen\nopen_file_label=Öffnen\nprint.title=Drucken\nprint_label=Drucken\ndownload.title=Dokument speichern\ndownload_label=Speichern\nbookmark.title=Aktuelle Ansicht (zum Kopieren oder Öffnen in einem neuen Fenster)\nbookmark_label=Aktuelle Ansicht\n\n# Secondary toolbar and context menu\ntools.title=Werkzeuge\ntools_label=Werkzeuge\nfirst_page.title=Erste Seite anzeigen\nfirst_page.label=Erste Seite anzeigen\nfirst_page_label=Erste Seite anzeigen\nlast_page.title=Letzte Seite anzeigen\nlast_page.label=Letzte Seite anzeigen\nlast_page_label=Letzte Seite anzeigen\npage_rotate_cw.title=Im Uhrzeigersinn drehen\npage_rotate_cw.label=Im Uhrzeigersinn drehen\npage_rotate_cw_label=Im Uhrzeigersinn drehen\npage_rotate_ccw.title=Gegen Uhrzeigersinn drehen\npage_rotate_ccw.label=Gegen Uhrzeigersinn drehen\npage_rotate_ccw_label=Gegen Uhrzeigersinn drehen\n\ncursor_text_select_tool.title=Textauswahl-Werkzeug aktivieren\ncursor_text_select_tool_label=Textauswahl-Werkzeug\ncursor_hand_tool.title=Hand-Werkzeug aktivieren\ncursor_hand_tool_label=Hand-Werkzeug\n\nscroll_vertical.title=Seiten übereinander anordnen\nscroll_vertical_label=Vertikale Seitenanordnung\nscroll_horizontal.title=Seiten nebeneinander anordnen\nscroll_horizontal_label=Horizontale Seitenanordnung\nscroll_wrapped.title=Seiten neben- und übereinander anordnen, anhängig vom Platz\nscroll_wrapped_label=Kombinierte Seitenanordnung\n\nspread_none.title=Seiten nicht nebeneinander anzeigen\nspread_none_label=Einzelne Seiten\nspread_odd.title=Jeweils eine ungerade und eine gerade Seite nebeneinander anzeigen\nspread_odd_label=Ungerade + gerade Seite\nspread_even.title=Jeweils eine gerade und eine ungerade Seite nebeneinander anzeigen\nspread_even_label=Gerade + ungerade Seite\n\n# Document properties dialog box\ndocument_properties.title=Dokumenteigenschaften\ndocument_properties_label=Dokumenteigenschaften…\ndocument_properties_file_name=Dateiname:\ndocument_properties_file_size=Dateigröße:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} Bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} Bytes)\ndocument_properties_title=Titel:\ndocument_properties_author=Autor:\ndocument_properties_subject=Thema:\ndocument_properties_keywords=Stichwörter:\ndocument_properties_creation_date=Erstelldatum:\ndocument_properties_modification_date=Bearbeitungsdatum:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}} {{time}}\ndocument_properties_creator=Anwendung:\ndocument_properties_producer=PDF erstellt mit:\ndocument_properties_version=PDF-Version:\ndocument_properties_page_count=Seitenzahl:\ndocument_properties_page_size=Seitengröße:\ndocument_properties_page_size_unit_inches=Zoll\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=Hochformat\ndocument_properties_page_size_orientation_landscape=Querformat\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Schnelle Webanzeige:\ndocument_properties_linearized_yes=Ja\ndocument_properties_linearized_no=Nein\ndocument_properties_close=Schließen\n\nprint_progress_message=Dokument wird für Drucken vorbereitet…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Abbrechen\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Sidebar umschalten\ntoggle_sidebar_notification.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge)\ntoggle_sidebar_label=Sidebar umschalten\ndocument_outline.title=Dokumentstruktur anzeigen (Doppelklicken, um alle Einträge aus- bzw. einzuklappen)\ndocument_outline_label=Dokumentstruktur\nattachments.title=Anhänge anzeigen\nattachments_label=Anhänge\nthumbs.title=Miniaturansichten anzeigen\nthumbs_label=Miniaturansichten\nfindbar.title=Dokument durchsuchen\nfindbar_label=Suchen\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Seite {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniaturansicht von Seite {{page}}\n\n# Find panel button title and messages\nfind_input.title=Suchen\nfind_input.placeholder=Im Dokument suchen…\nfind_previous.title=Vorheriges Vorkommen des Suchbegriffs finden\nfind_previous_label=Zurück\nfind_next.title=Nächstes Vorkommen des Suchbegriffs finden\nfind_next_label=Weiter\nfind_highlight=Alle hervorheben\nfind_match_case_label=Groß-/Kleinschreibung beachten\nfind_entire_word_label=Ganze Wörter\nfind_reached_top=Anfang des Dokuments erreicht, fahre am Ende fort\nfind_reached_bottom=Ende des Dokuments erreicht, fahre am Anfang fort\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_not_found=Suchbegriff nicht gefunden\n\n# Error panel labels\nerror_more_info=Mehr Informationen\nerror_less_info=Weniger Informationen\nerror_close=Schließen\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js Version {{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Nachricht: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Aufrufliste: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Datei: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Zeile: {{line}}\nrendering_error=Beim Darstellen der Seite trat ein Fehler auf.\n\n# Predefined zoom values\npage_scale_width=Seitenbreite\npage_scale_fit=Seitengröße\npage_scale_auto=Automatischer Zoom\npage_scale_actual=Originalgröße\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Fehler\nloading_error=Beim Laden der PDF-Datei trat ein Fehler auf.\ninvalid_file_error=Ungültige oder beschädigte PDF-Datei\nmissing_file_error=Fehlende PDF-Datei\nunexpected_response_error=Unerwartete Antwort des Servers\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anlage: {{type}}]\npassword_label=Geben Sie zum Öffnen der PDF-Datei deren Passwort ein.\npassword_invalid=Falsches Passwort. Bitte versuchen Sie es erneut.\npassword_ok=OK\npassword_cancel=Abbrechen\n\nprinting_not_supported=Warnung: Die Drucken-Funktion wird durch diesen Browser nicht vollständig unterstützt.\nprinting_not_ready=Warnung: Die PDF-Datei ist nicht vollständig geladen, dies ist für das Drucken aber empfohlen.\nweb_fonts_disabled=Web-Schriftarten sind deaktiviert: Eingebettete PDF-Schriftarten konnten nicht geladen werden.\ndocument_colors_not_allowed=PDF-Dokumenten ist es nicht erlaubt, ihre eigenen Farben zu verwenden: 'Seiten das Verwenden von eigenen Farben erlauben' ist im Browser deaktiviert.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/el/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Προηγούμενη σελίδα\nprevious_label=Προηγούμενη\nnext.title=Επόμενη σελίδα\nnext_label=Επόμενη\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Σελίδα\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=από {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} από {{pagesCount}})\n\nzoom_out.title=Σμίκρυνση\nzoom_out_label=Σμίκρυνση\nzoom_in.title=Μεγέθυνση\nzoom_in_label=Μεγέθυνση\nzoom.title=Ζουμ\npresentation_mode.title=Εναλλαγή σε λειτουργία παρουσίασης\npresentation_mode_label=Λειτουργία παρουσίασης\nopen_file.title=Άνοιγμα αρχείου\nopen_file_label=Άνοιγμα\nprint.title=Εκτύπωση\nprint_label=Εκτύπωση\ndownload.title=Λήψη\ndownload_label=Λήψη\nbookmark.title=Τρέχουσα προβολή (αντιγραφή ή άνοιγμα σε νέο παράθυρο)\nbookmark_label=Τρέχουσα προβολή\n\n# Secondary toolbar and context menu\ntools.title=Εργαλεία\ntools_label=Εργαλεία\nfirst_page.title=Μετάβαση στην πρώτη σελίδα\nfirst_page.label=Μετάβαση στην πρώτη σελίδα\nfirst_page_label=Μετάβαση στην πρώτη σελίδα\nlast_page.title=Μετάβαση στην τελευταία σελίδα\nlast_page.label=Μετάβαση στην τελευταία σελίδα\nlast_page_label=Μετάβαση στην τελευταία σελίδα\npage_rotate_cw.title=Δεξιόστροφη περιστροφή\npage_rotate_cw.label=Δεξιόστροφη περιστροφή\npage_rotate_cw_label=Δεξιόστροφη περιστροφή\npage_rotate_ccw.title=Αριστερόστροφη περιστροφή\npage_rotate_ccw.label=Αριστερόστροφη περιστροφή\npage_rotate_ccw_label=Αριστερόστροφη περιστροφή\n\ncursor_text_select_tool.title=Ενεργοποίηση εργαλείου επιλογής κειμένου\ncursor_text_select_tool_label=Εργαλείο επιλογής κειμένου\ncursor_hand_tool.title=Ενεργοποίηση εργαλείου χεριού\ncursor_hand_tool_label=Εργαλείο χεριού\n\nscroll_vertical.title=Χρήση κάθετης κύλισης\nscroll_vertical_label=Κάθετη κύλιση\nscroll_horizontal.title=Χρήση οριζόντιας κύλισης\nscroll_horizontal_label=Οριζόντια κύλιση\nscroll_wrapped.title=Χρήση κυκλικής κύλισης\nscroll_wrapped_label=Κυκλική κύλιση\n\nspread_none.title=Να μην γίνει σύνδεση επεκτάσεων σελίδων\nspread_none_label=Χωρίς επεκτάσεις\nspread_odd.title=Σύνδεση επεκτάσεων σελίδων ξεκινώντας από τις μονές σελίδες\nspread_odd_label=Μονές επεκτάσεις\nspread_even.title=Σύνδεση επεκτάσεων σελίδων ξεκινώντας από τις ζυγές σελίδες\nspread_even_label=Ζυγές επεκτάσεις\n\n# Document properties dialog box\ndocument_properties.title=Ιδιότητες εγγράφου…\ndocument_properties_label=Ιδιότητες εγγράφου…\ndocument_properties_file_name=Όνομα αρχείου:\ndocument_properties_file_size=Μέγεθος αρχείου:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Τίτλος:\ndocument_properties_author=Συγγραφέας:\ndocument_properties_subject=Θέμα:\ndocument_properties_keywords=Λέξεις κλειδιά:\ndocument_properties_creation_date=Ημερομηνία δημιουργίας:\ndocument_properties_modification_date=Ημερομηνία τροποποίησης:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Δημιουργός:\ndocument_properties_producer=Παραγωγός PDF:\ndocument_properties_version=Έκδοση PDF:\ndocument_properties_page_count=Αριθμός σελίδων:\ndocument_properties_page_size=Μέγεθος σελίδας:\ndocument_properties_page_size_unit_inches=ίντσες\ndocument_properties_page_size_unit_millimeters=χιλιοστά\ndocument_properties_page_size_orientation_portrait=κατακόρυφα\ndocument_properties_page_size_orientation_landscape=οριζόντια\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Επιστολή\ndocument_properties_page_size_name_legal=Τύπου Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Ταχεία προβολή ιστού:\ndocument_properties_linearized_yes=Ναι\ndocument_properties_linearized_no=Όχι\ndocument_properties_close=Κλείσιμο\n\nprint_progress_message=Προετοιμασία του εγγράφου για εκτύπωση…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Άκυρο\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=(Απ)ενεργοποίηση πλευρικής στήλης\ntoggle_sidebar_notification.title=(Απ)ενεργοποίηση πλευρικής στήλης (το έγγραφο περιέχει περίγραμμα/συνημμένα)\ntoggle_sidebar_label=(Απ)ενεργοποίηση πλευρικής στήλης\ndocument_outline.title=Εμφάνιση διάρθρωσης εγγράφου (διπλό κλικ για ανάπτυξη/σύμπτυξη όλων των στοιχείων)\ndocument_outline_label=Διάρθρωση εγγράφου\nattachments.title=Προβολή συνημμένων\nattachments_label=Συνημμένα\nthumbs.title=Προβολή μικρογραφιών\nthumbs_label=Μικρογραφίες\nfindbar.title=Εύρεση στο έγγραφο\nfindbar_label=Εύρεση\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Σελίδα {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Μικρογραφία της σελίδας {{page}}\n\n# Find panel button title and messages\nfind_input.title=Εύρεση\nfind_input.placeholder=Εύρεση στο έγγραφο…\nfind_previous.title=Εύρεση της προηγούμενης εμφάνισης της φράσης\nfind_previous_label=Προηγούμενο\nfind_next.title=Εύρεση της επόμενης εμφάνισης της φράσης\nfind_next_label=Επόμενο\nfind_highlight=Επισήμανση όλων\nfind_match_case_label=Ταίριασμα χαρακτήρα\nfind_entire_word_label=Ολόκληρες λέξεις\nfind_reached_top=Έλευση στην αρχή του εγγράφου, συνέχεια από το τέλος\nfind_reached_bottom=Έλευση στο τέλος του εγγράφου, συνέχεια από την αρχή\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} από {{total}} αντιστοιχία\nfind_match_count[two]={{current}} από {{total}} αντιστοιχίες\nfind_match_count[few]={{current}} από {{total}} αντιστοιχίες\nfind_match_count[many]={{current}} από {{total}} αντιστοιχίες\nfind_match_count[other]={{current}} από {{total}} αντιστοιχίες\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Περισσότερες από {{limit}} αντιστοιχίες\nfind_match_count_limit[one]=Περισσότερες από {{limit}} αντιστοιχία\nfind_match_count_limit[two]=Περισσότερες από {{limit}} αντιστοιχίες\nfind_match_count_limit[few]=Περισσότερες από {{limit}} αντιστοιχίες\nfind_match_count_limit[many]=Περισσότερες από {{limit}} αντιστοιχίες\nfind_match_count_limit[other]=Περισσότερες από {{limit}} αντιστοιχίες\nfind_not_found=Η φράση δεν βρέθηκε\n\n# Error panel labels\nerror_more_info=Περισσότερες πληροφορίες\nerror_less_info=Λιγότερες πληροφορίες\nerror_close=Κλείσιμο\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Μήνυμα: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Στοίβα: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Αρχείο: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Γραμμή: {{line}}\nrendering_error=Προέκυψε σφάλμα κατά την ανάλυση της σελίδας.\n\n# Predefined zoom values\npage_scale_width=Πλάτος σελίδας\npage_scale_fit=Μέγεθος σελίδας\npage_scale_auto=Αυτόματο ζουμ\npage_scale_actual=Πραγματικό μέγεθος\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Σφάλμα\nloading_error=Προέκυψε ένα σφάλμα κατά τη φόρτωση του PDF.\ninvalid_file_error=Μη έγκυρο ή κατεστραμμένο αρχείο PDF.\nmissing_file_error=Λείπει αρχείο PDF.\nunexpected_response_error=Μη αναμενόμενη απόκριση από το διακομιστή.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Σχόλιο]\npassword_label=Εισαγωγή κωδικού για το άνοιγμα του PDF αρχείου.\npassword_invalid=Μη έγκυρος κωδικός. Προσπαθείστε ξανά.\npassword_ok=ΟΚ\npassword_cancel=Ακύρωση\n\nprinting_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από αυτόν τον περιηγητή.\nprinting_not_ready=Προειδοποίηση: Το PDF δεν φορτώθηκε πλήρως για εκτύπωση.\nweb_fonts_disabled=Οι γραμματοσειρές Web απενεργοποιημένες: αδυναμία χρήσης των ενσωματωμένων γραμματοσειρών PDF.\ndocument_colors_not_allowed=Στα PDF έγγραφα δεν επιτρέπεται να χρησιμοποιούν τα δικά τους χρώματα: Το “Να επιτρέπεται στις σελίδες να επιλέγουν τα δικά τους χρώματα” είναι απενεργοποιημένο στον περιηγητή.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/en-CA/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Previous Page\nprevious_label=Previous\nnext.title=Next Page\nnext_label=Next\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Page\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=of {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} of {{pagesCount}})\n\nzoom_out.title=Zoom Out\nzoom_out_label=Zoom Out\nzoom_in.title=Zoom In\nzoom_in_label=Zoom In\nzoom.title=Zoom\npresentation_mode.title=Switch to Presentation Mode\npresentation_mode_label=Presentation Mode\nopen_file.title=Open File\nopen_file_label=Open\nprint.title=Print\nprint_label=Print\ndownload.title=Download\ndownload_label=Download\nbookmark.title=Current view (copy or open in new window)\nbookmark_label=Current View\n\n# Secondary toolbar and context menu\ntools.title=Tools\ntools_label=Tools\nfirst_page.title=Go to First Page\nfirst_page.label=Go to First Page\nfirst_page_label=Go to First Page\nlast_page.title=Go to Last Page\nlast_page.label=Go to Last Page\nlast_page_label=Go to Last Page\npage_rotate_cw.title=Rotate Clockwise\npage_rotate_cw.label=Rotate Clockwise\npage_rotate_cw_label=Rotate Clockwise\npage_rotate_ccw.title=Rotate Anti-Clockwise\npage_rotate_ccw.label=Rotate Anti-Clockwise\npage_rotate_ccw_label=Rotate Anti-Clockwise\n\ncursor_text_select_tool.title=Enable Text Selection Tool\ncursor_text_select_tool_label=Text Selection Tool\ncursor_hand_tool.title=Enable Hand Tool\ncursor_hand_tool_label=Hand Tool\n\nscroll_vertical.title=Use Vertical Scrolling\nscroll_vertical_label=Vertical Scrolling\nscroll_horizontal.title=Use Horizontal Scrolling\nscroll_horizontal_label=Horizontal Scrolling\nscroll_wrapped.title=Use Wrapped Scrolling\nscroll_wrapped_label=Wrapped Scrolling\n\nspread_none.title=Do not join page spreads\nspread_none_label=No Spreads\nspread_odd.title=Join page spreads starting with odd-numbered pages\nspread_odd_label=Odd Spreads\nspread_even.title=Join page spreads starting with even-numbered pages\nspread_even_label=Even Spreads\n\n# Document properties dialog box\ndocument_properties.title=Document Properties…\ndocument_properties_label=Document Properties…\ndocument_properties_file_name=File name:\ndocument_properties_file_size=File size:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} kB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Title:\ndocument_properties_author=Author:\ndocument_properties_subject=Subject:\ndocument_properties_keywords=Keywords:\ndocument_properties_creation_date=Creation Date:\ndocument_properties_modification_date=Modification Date:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creator:\ndocument_properties_producer=PDF Producer:\ndocument_properties_version=PDF Version:\ndocument_properties_page_count=Page Count:\ndocument_properties_page_size=Page Size:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portrait\ndocument_properties_page_size_orientation_landscape=landscape\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Fast Web View:\ndocument_properties_linearized_yes=Yes\ndocument_properties_linearized_no=No\ndocument_properties_close=Close\n\nprint_progress_message=Preparing document for printing…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancel\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Toggle Sidebar\ntoggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)\ntoggle_sidebar_label=Toggle Sidebar\ndocument_outline.title=Show Document Outline (double-click to expand/collapse all items)\ndocument_outline_label=Document Outline\nattachments.title=Show Attachments\nattachments_label=Attachments\nthumbs.title=Show Thumbnails\nthumbs_label=Thumbnails\nfindbar.title=Find in Document\nfindbar_label=Find\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Page {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Thumbnail of Page {{page}}\n\n# Find panel button title and messages\nfind_input.title=Find\nfind_input.placeholder=Find in document…\nfind_previous.title=Find the previous occurrence of the phrase\nfind_previous_label=Previous\nfind_next.title=Find the next occurrence of the phrase\nfind_next_label=Next\nfind_highlight=Highlight all\nfind_match_case_label=Match case\nfind_entire_word_label=Whole words\nfind_reached_top=Reached top of document, continued from bottom\nfind_reached_bottom=Reached end of document, continued from top\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} of {{total}} match\nfind_match_count[two]={{current}} of {{total}} matches\nfind_match_count[few]={{current}} of {{total}} matches\nfind_match_count[many]={{current}} of {{total}} matches\nfind_match_count[other]={{current}} of {{total}} matches\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=More than {{limit}} matches\nfind_match_count_limit[one]=More than {{limit}} match\nfind_match_count_limit[two]=More than {{limit}} matches\nfind_match_count_limit[few]=More than {{limit}} matches\nfind_match_count_limit[many]=More than {{limit}} matches\nfind_match_count_limit[other]=More than {{limit}} matches\nfind_not_found=Phrase not found\n\n# Error panel labels\nerror_more_info=More Information\nerror_less_info=Less Information\nerror_close=Close\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Message: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Line: {{line}}\nrendering_error=An error occurred while rendering the page.\n\n# Predefined zoom values\npage_scale_width=Page Width\npage_scale_fit=Page Fit\npage_scale_auto=Automatic Zoom\npage_scale_actual=Actual Size\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=An error occurred while loading the PDF.\ninvalid_file_error=Invalid or corrupted PDF file.\nmissing_file_error=Missing PDF file.\nunexpected_response_error=Unexpected server response.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=Enter the password to open this PDF file.\npassword_invalid=Invalid password. Please try again.\npassword_ok=OK\npassword_cancel=Cancel\n\nprinting_not_supported=Warning: Printing is not fully supported by this browser.\nprinting_not_ready=Warning: The PDF is not fully loaded for printing.\nweb_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.\ndocument_colors_not_allowed=PDF documents are not allowed to use their own colours: “Allow pages to choose their own colours” is deactivated in the browser.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/en-GB/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Previous Page\nprevious_label=Previous\nnext.title=Next Page\nnext_label=Next\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Page\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=of {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} of {{pagesCount}})\n\nzoom_out.title=Zoom Out\nzoom_out_label=Zoom Out\nzoom_in.title=Zoom In\nzoom_in_label=Zoom In\nzoom.title=Zoom\npresentation_mode.title=Switch to Presentation Mode\npresentation_mode_label=Presentation Mode\nopen_file.title=Open File\nopen_file_label=Open\nprint.title=Print\nprint_label=Print\ndownload.title=Download\ndownload_label=Download\nbookmark.title=Current view (copy or open in new window)\nbookmark_label=Current View\n\n# Secondary toolbar and context menu\ntools.title=Tools\ntools_label=Tools\nfirst_page.title=Go to First Page\nfirst_page.label=Go to First Page\nfirst_page_label=Go to First Page\nlast_page.title=Go to Last Page\nlast_page.label=Go to Last Page\nlast_page_label=Go to Last Page\npage_rotate_cw.title=Rotate Clockwise\npage_rotate_cw.label=Rotate Clockwise\npage_rotate_cw_label=Rotate Clockwise\npage_rotate_ccw.title=Rotate Anti-Clockwise\npage_rotate_ccw.label=Rotate Anti-Clockwise\npage_rotate_ccw_label=Rotate Anti-Clockwise\n\ncursor_text_select_tool.title=Enable Text Selection Tool\ncursor_text_select_tool_label=Text Selection Tool\ncursor_hand_tool.title=Enable Hand Tool\ncursor_hand_tool_label=Hand Tool\n\n# Document properties dialog box\ndocument_properties.title=Document Properties…\ndocument_properties_label=Document Properties…\ndocument_properties_file_name=File name:\ndocument_properties_file_size=File size:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} kB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Title:\ndocument_properties_author=Author:\ndocument_properties_subject=Subject:\ndocument_properties_keywords=Keywords:\ndocument_properties_creation_date=Creation Date:\ndocument_properties_modification_date=Modification Date:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creator:\ndocument_properties_producer=PDF Producer:\ndocument_properties_version=PDF Version:\ndocument_properties_page_count=Page Count:\ndocument_properties_close=Close\n\nprint_progress_message=Preparing document for printing…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancel\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Toggle Sidebar\ntoggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)\ntoggle_sidebar_label=Toggle Sidebar\ndocument_outline.title=Show Document Outline (double-click to expand/collapse all items)\ndocument_outline_label=Document Outline\nattachments.title=Show Attachments\nattachments_label=Attachments\nthumbs.title=Show Thumbnails\nthumbs_label=Thumbnails\nfindbar.title=Find in Document\nfindbar_label=Find\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Page {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Thumbnail of Page {{page}}\n\n# Find panel button title and messages\nfind_input.title=Find\nfind_input.placeholder=Find in document…\nfind_previous.title=Find the previous occurrence of the phrase\nfind_previous_label=Previous\nfind_next.title=Find the next occurrence of the phrase\nfind_next_label=Next\nfind_highlight=Highlight all\nfind_match_case_label=Match case\nfind_reached_top=Reached top of document, continued from bottom\nfind_reached_bottom=Reached end of document, continued from top\nfind_not_found=Phrase not found\n\n# Error panel labels\nerror_more_info=More Information\nerror_less_info=Less Information\nerror_close=Close\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Message: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Line: {{line}}\nrendering_error=An error occurred while rendering the page.\n\n# Predefined zoom values\npage_scale_width=Page Width\npage_scale_fit=Page Fit\npage_scale_auto=Automatic Zoom\npage_scale_actual=Actual Size\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=An error occurred while loading the PDF.\ninvalid_file_error=Invalid or corrupted PDF file.\nmissing_file_error=Missing PDF file.\nunexpected_response_error=Unexpected server response.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=Enter the password to open this PDF file.\npassword_invalid=Invalid password. Please try again.\npassword_ok=OK\npassword_cancel=Cancel\n\nprinting_not_supported=Warning: Printing is not fully supported by this browser.\nprinting_not_ready=Warning: The PDF is not fully loaded for printing.\nweb_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.\ndocument_colors_not_allowed=PDF documents are not allowed to use their own colours: “Allow pages to choose their own colours” is deactivated in the browser.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/en-US/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Previous Page\nprevious_label=Previous\nnext.title=Next Page\nnext_label=Next\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Page\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=of {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} of {{pagesCount}})\n\nzoom_out.title=Zoom Out\nzoom_out_label=Zoom Out\nzoom_in.title=Zoom In\nzoom_in_label=Zoom In\nzoom.title=Zoom\npresentation_mode.title=Switch to Presentation Mode\npresentation_mode_label=Presentation Mode\nopen_file.title=Open File\nopen_file_label=Open\nprint.title=Print\nprint_label=Print\ndownload.title=Download\ndownload_label=Download\nbookmark.title=Current view (copy or open in new window)\nbookmark_label=Current View\n\n# Secondary toolbar and context menu\ntools.title=Tools\ntools_label=Tools\nfirst_page.title=Go to First Page\nfirst_page.label=Go to First Page\nfirst_page_label=Go to First Page\nlast_page.title=Go to Last Page\nlast_page.label=Go to Last Page\nlast_page_label=Go to Last Page\npage_rotate_cw.title=Rotate Clockwise\npage_rotate_cw.label=Rotate Clockwise\npage_rotate_cw_label=Rotate Clockwise\npage_rotate_ccw.title=Rotate Counterclockwise\npage_rotate_ccw.label=Rotate Counterclockwise\npage_rotate_ccw_label=Rotate Counterclockwise\n\ncursor_text_select_tool.title=Enable Text Selection Tool\ncursor_text_select_tool_label=Text Selection Tool\ncursor_hand_tool.title=Enable Hand Tool\ncursor_hand_tool_label=Hand Tool\n\nscroll_vertical.title=Use Vertical Scrolling\nscroll_vertical_label=Vertical Scrolling\nscroll_horizontal.title=Use Horizontal Scrolling\nscroll_horizontal_label=Horizontal Scrolling\nscroll_wrapped.title=Use Wrapped Scrolling\nscroll_wrapped_label=Wrapped Scrolling\n\nspread_none.title=Do not join page spreads\nspread_none_label=No Spreads\nspread_odd.title=Join page spreads starting with odd-numbered pages\nspread_odd_label=Odd Spreads\nspread_even.title=Join page spreads starting with even-numbered pages\nspread_even_label=Even Spreads\n\n# Document properties dialog box\ndocument_properties.title=Document Properties…\ndocument_properties_label=Document Properties…\ndocument_properties_file_name=File name:\ndocument_properties_file_size=File size:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Title:\ndocument_properties_author=Author:\ndocument_properties_subject=Subject:\ndocument_properties_keywords=Keywords:\ndocument_properties_creation_date=Creation Date:\ndocument_properties_modification_date=Modification Date:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creator:\ndocument_properties_producer=PDF Producer:\ndocument_properties_version=PDF Version:\ndocument_properties_page_count=Page Count:\ndocument_properties_page_size=Page Size:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portrait\ndocument_properties_page_size_orientation_landscape=landscape\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Fast Web View:\ndocument_properties_linearized_yes=Yes\ndocument_properties_linearized_no=No\ndocument_properties_close=Close\n\nprint_progress_message=Preparing document for printing…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancel\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Toggle Sidebar\ntoggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)\ntoggle_sidebar_label=Toggle Sidebar\ndocument_outline.title=Show Document Outline (double-click to expand/collapse all items)\ndocument_outline_label=Document Outline\nattachments.title=Show Attachments\nattachments_label=Attachments\nthumbs.title=Show Thumbnails\nthumbs_label=Thumbnails\nfindbar.title=Find in Document\nfindbar_label=Find\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Page {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Thumbnail of Page {{page}}\n\n# Find panel button title and messages\nfind_input.title=Find\nfind_input.placeholder=Find in document…\nfind_previous.title=Find the previous occurrence of the phrase\nfind_previous_label=Previous\nfind_next.title=Find the next occurrence of the phrase\nfind_next_label=Next\nfind_highlight=Highlight all\nfind_match_case_label=Match case\nfind_entire_word_label=Whole words\nfind_reached_top=Reached top of document, continued from bottom\nfind_reached_bottom=Reached end of document, continued from top\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} of {{total}} match\nfind_match_count[two]={{current}} of {{total}} matches\nfind_match_count[few]={{current}} of {{total}} matches\nfind_match_count[many]={{current}} of {{total}} matches\nfind_match_count[other]={{current}} of {{total}} matches\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=More than {{limit}} matches\nfind_match_count_limit[one]=More than {{limit}} match\nfind_match_count_limit[two]=More than {{limit}} matches\nfind_match_count_limit[few]=More than {{limit}} matches\nfind_match_count_limit[many]=More than {{limit}} matches\nfind_match_count_limit[other]=More than {{limit}} matches\nfind_not_found=Phrase not found\n\n# Error panel labels\nerror_more_info=More Information\nerror_less_info=Less Information\nerror_close=Close\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Message: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Line: {{line}}\nrendering_error=An error occurred while rendering the page.\n\n# Predefined zoom values\npage_scale_width=Page Width\npage_scale_fit=Page Fit\npage_scale_auto=Automatic Zoom\npage_scale_actual=Actual Size\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=An error occurred while loading the PDF.\ninvalid_file_error=Invalid or corrupted PDF file.\nmissing_file_error=Missing PDF file.\nunexpected_response_error=Unexpected server response.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=Enter the password to open this PDF file.\npassword_invalid=Invalid password. Please try again.\npassword_ok=OK\npassword_cancel=Cancel\n\nprinting_not_supported=Warning: Printing is not fully supported by this browser.\nprinting_not_ready=Warning: The PDF is not fully loaded for printing.\nweb_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.\ndocument_colors_not_allowed=PDF documents are not allowed to use their own colors: “Allow pages to choose their own colors” is deactivated in the browser.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/en-ZA/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Previous Page\nprevious_label=Previous\nnext.title=Next Page\nnext_label=Next\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=of {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Zoom Out\nzoom_out_label=Zoom Out\nzoom_in.title=Zoom In\nzoom_in_label=Zoom In\nzoom.title=Zoom\npresentation_mode.title=Switch to Presentation Mode\npresentation_mode_label=Presentation Mode\nopen_file.title=Open File\nopen_file_label=Open\nprint.title=Print\nprint_label=Print\ndownload.title=Download\ndownload_label=Download\nbookmark.title=Current view (copy or open in new window)\nbookmark_label=Current View\n\n# Secondary toolbar and context menu\ntools.title=Tools\ntools_label=Tools\nfirst_page.title=Go to First Page\nfirst_page.label=Go to First Page\nfirst_page_label=Go to First Page\nlast_page.title=Go to Last Page\nlast_page.label=Go to Last Page\nlast_page_label=Go to Last Page\npage_rotate_cw.title=Rotate Clockwise\npage_rotate_cw.label=Rotate Clockwise\npage_rotate_cw_label=Rotate Clockwise\npage_rotate_ccw.title=Rotate Counterclockwise\npage_rotate_ccw.label=Rotate Counterclockwise\npage_rotate_ccw_label=Rotate Counterclockwise\n\n\n# Document properties dialog box\ndocument_properties.title=Document Properties…\ndocument_properties_label=Document Properties…\ndocument_properties_file_name=File name:\ndocument_properties_file_size=File size:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Title:\ndocument_properties_author=Author:\ndocument_properties_subject=Subject:\ndocument_properties_keywords=Keywords:\ndocument_properties_creation_date=Creation Date:\ndocument_properties_modification_date=Modification Date:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creator:\ndocument_properties_producer=PDF Producer:\ndocument_properties_version=PDF Version:\ndocument_properties_page_count=Page Count:\ndocument_properties_close=Close\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Toggle Sidebar\ntoggle_sidebar_label=Toggle Sidebar\ndocument_outline.title=Show Document Outline (double-click to expand/collapse all items)\ndocument_outline_label=Document Outline\nattachments.title=Show Attachments\nattachments_label=Attachments\nthumbs.title=Show Thumbnails\nthumbs_label=Thumbnails\nfindbar.title=Find in Document\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Page {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Thumbnail of Page {{page}}\n\n# Find panel button title and messages\nfind_previous.title=Find the previous occurrence of the phrase\nfind_previous_label=Previous\nfind_next.title=Find the next occurrence of the phrase\nfind_next_label=Next\nfind_highlight=Highlight all\nfind_match_case_label=Match case\nfind_reached_top=Reached top of document, continued from bottom\nfind_reached_bottom=Reached end of document, continued from top\nfind_not_found=Phrase not found\n\n# Error panel labels\nerror_more_info=More Information\nerror_less_info=Less Information\nerror_close=Close\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Message: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Line: {{line}}\nrendering_error=An error occurred while rendering the page.\n\n# Predefined zoom values\npage_scale_width=Page Width\npage_scale_fit=Page Fit\npage_scale_auto=Automatic Zoom\npage_scale_actual=Actual Size\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=An error occurred while loading the PDF.\ninvalid_file_error=Invalid or corrupted PDF file.\nmissing_file_error=Missing PDF file.\nunexpected_response_error=Unexpected server response.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=Enter the password to open this PDF file.\npassword_invalid=Invalid password. Please try again.\npassword_ok=OK\n\nprinting_not_supported=Warning: Printing is not fully supported by this browser.\nprinting_not_ready=Warning: The PDF is not fully loaded for printing.\nweb_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.\ndocument_colors_not_allowed=PDF documents are not allowed to use their own colours: “Allow pages to choose their own colours” is deactivated in the browser.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/eo/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Antaŭa paĝo\nprevious_label=Malantaŭen\nnext.title=Venonta paĝo\nnext_label=Antaŭen\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Paĝo\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=el {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} el {{pagesCount}})\n\nzoom_out.title=Malpligrandigi\nzoom_out_label=Malpligrandigi\nzoom_in.title=Pligrandigi\nzoom_in_label=Pligrandigi\nzoom.title=Pligrandigilo\npresentation_mode.title=Iri al prezenta reĝimo\npresentation_mode_label=Prezenta reĝimo\nopen_file.title=Malfermi dosieron\nopen_file_label=Malfermi\nprint.title=Presi\nprint_label=Presi\ndownload.title=Elŝuti\ndownload_label=Elŝuti\nbookmark.title=Nuna vido (kopii aŭ malfermi en nova fenestro)\nbookmark_label=Nuna vido\n\n# Secondary toolbar and context menu\ntools.title=Iloj\ntools_label=Iloj\nfirst_page.title=Iri al la unua paĝo\nfirst_page.label=Iri al la unua paĝo\nfirst_page_label=Iri al la unua paĝo\nlast_page.title=Iri al la lasta paĝo\nlast_page.label=Iri al la lasta paĝo\nlast_page_label=Iri al la lasta paĝo\npage_rotate_cw.title=Rotaciigi dekstrume\npage_rotate_cw.label=Rotaciigi dekstrume\npage_rotate_cw_label=Rotaciigi dekstrume\npage_rotate_ccw.title=Rotaciigi maldekstrume\npage_rotate_ccw.label=Rotaciigi maldekstrume\npage_rotate_ccw_label=Rotaciigi maldekstrume\n\ncursor_text_select_tool.title=Aktivigi tekstan elektilon\ncursor_text_select_tool_label=Teksta elektilo\ncursor_hand_tool.title=Aktivigi ilon de mano\ncursor_hand_tool_label=Ilo de mano\n\nscroll_vertical.title=Uzi vertikalan ŝovadon\nscroll_vertical_label=Vertikala ŝovado\nscroll_horizontal.title=Uzi horizontalan ŝovadon\nscroll_horizontal_label=Horizontala ŝovado\nscroll_wrapped.title=Uzi ambaŭdirektan ŝovadon\nscroll_wrapped_label=Ambaŭdirekta ŝovado\n\nspread_none.title=Ne montri paĝojn po du\nspread_none_label=Unupaĝa vido\nspread_odd.title=Kunigi paĝojn komencante per nepara paĝo\nspread_odd_label=Po du paĝoj, neparaj maldekstre\nspread_even.title=Kunigi paĝojn komencante per para paĝo\nspread_even_label=Po du paĝoj, paraj maldekstre\n\n# Document properties dialog box\ndocument_properties.title=Atributoj de dokumento…\ndocument_properties_label=Atributoj de dokumento…\ndocument_properties_file_name=Nomo de dosiero:\ndocument_properties_file_size=Grando de dosiero:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KO ({{size_b}} oktetoj)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MO ({{size_b}} oktetoj)\ndocument_properties_title=Titolo:\ndocument_properties_author=Aŭtoro:\ndocument_properties_subject=Temo:\ndocument_properties_keywords=Ŝlosilvorto:\ndocument_properties_creation_date=Dato de kreado:\ndocument_properties_modification_date=Dato de modifo:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Kreinto:\ndocument_properties_producer=Produktinto de PDF:\ndocument_properties_version=Versio de PDF:\ndocument_properties_page_count=Nombro de paĝoj:\ndocument_properties_page_size=Grando de paĝo:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=vertikala\ndocument_properties_page_size_orientation_landscape=horizontala\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letera\ndocument_properties_page_size_name_legal=Jura\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Rapida tekstaĵa vido:\ndocument_properties_linearized_yes=Jes\ndocument_properties_linearized_no=Ne\ndocument_properties_close=Fermi\n\nprint_progress_message=Preparo de dokumento por presi ĝin …\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Nuligi\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Montri/kaŝi flankan strion\ntoggle_sidebar_notification.title=Montri/kaŝi flankan strion (la dokumento enhavas konturon/aneksaĵojn)\ntoggle_sidebar_label=Montri/kaŝi flankan strion\ndocument_outline.title=Montri la konturon de dokumento (alklaku duoble por faldi/malfaldi ĉiujn elementojn)\ndocument_outline_label=Konturo de dokumento\nattachments.title=Montri kunsendaĵojn\nattachments_label=Kunsendaĵojn\nthumbs.title=Montri miniaturojn\nthumbs_label=Miniaturoj\nfindbar.title=Serĉi en dokumento\nfindbar_label=Serĉi\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Paĝo {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniaturo de paĝo {{page}}\n\n# Find panel button title and messages\nfind_input.title=Serĉi\nfind_input.placeholder=Serĉi en dokumento…\nfind_previous.title=Serĉi la antaŭan aperon de la frazo\nfind_previous_label=Malantaŭen\nfind_next.title=Serĉi la venontan aperon de la frazo\nfind_next_label=Antaŭen\nfind_highlight=Elstarigi ĉiujn\nfind_match_case_label=Distingi inter majuskloj kaj minuskloj\nfind_entire_word_label=Tutaj vortoj\nfind_reached_top=Komenco de la dokumento atingita, daŭrigado ekde la fino\nfind_reached_bottom=Fino de la dokumento atingita, daŭrigado ekde la komenco\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} el {{total}} kongruo\nfind_match_count[two]={{current}} el {{total}} kongruoj\nfind_match_count[few]={{current}} el {{total}} kongruoj\nfind_match_count[many]={{current}} el {{total}} kongruoj\nfind_match_count[other]={{current}} el {{total}} kongruoj\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Pli ol {{limit}} kongruoj\nfind_match_count_limit[one]=Pli ol {{limit}} kongruo\nfind_match_count_limit[two]=Pli ol {{limit}} kongruoj\nfind_match_count_limit[few]=Pli ol {{limit}} kongruoj\nfind_match_count_limit[many]=Pli ol {{limit}} kongruoj\nfind_match_count_limit[other]=Pli ol {{limit}} kongruoj\nfind_not_found=Frazo ne trovita\n\n# Error panel labels\nerror_more_info=Pli da informo\nerror_less_info=Malpli da informo\nerror_close=Fermi\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mesaĝo: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stako: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Dosiero: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linio: {{line}}\nrendering_error=Okazis eraro dum la montro de la paĝo.\n\n# Predefined zoom values\npage_scale_width=Larĝo de paĝo\npage_scale_fit=Adapti paĝon\npage_scale_auto=Aŭtomata skalo\npage_scale_actual=Reala grando\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Eraro\nloading_error=Okazis eraro dum la ŝargado de la PDF dosiero.\ninvalid_file_error=Nevalida aŭ difektita PDF dosiero.\nmissing_file_error=Mankas dosiero PDF.\nunexpected_response_error=Neatendita respondo de servilo.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Prinoto: {{type}}]\npassword_label=Tajpu pasvorton por malfermi tiun ĉi dosieron PDF.\npassword_invalid=Nevalida pasvorto. Bonvolu provi denove.\npassword_ok=Akcepti\npassword_cancel=Nuligi\n\nprinting_not_supported=Averto: tiu ĉi retumilo ne plene subtenas presadon.\nprinting_not_ready=Averto: la PDF dosiero ne estas plene ŝargita por presado.\nweb_fonts_disabled=Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn tiparojn de PDF.\ndocument_colors_not_allowed=PDF dokumentoj ne rajtas uzi siajn proprajn kolorojn: 'Permesi al paĝoj uzi siajn proprajn kolorojn' ne estas aktiva en la retumilo.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/es-AR/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Página anterior\nprevious_label=Anterior\nnext.title=Página siguiente\nnext_label=Siguiente\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Página\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=( {{pageNumber}} de {{pagesCount}} )\n\nzoom_out.title=Alejar\nzoom_out_label=Alejar\nzoom_in.title=Acercar\nzoom_in_label=Acercar\nzoom.title=Zoom\npresentation_mode.title=Cambiar a modo presentación\npresentation_mode_label=Modo presentación\nopen_file.title=Abrir archivo\nopen_file_label=Abrir\nprint.title=Imprimir\nprint_label=Imprimir\ndownload.title=Descargar\ndownload_label=Descargar\nbookmark.title=Vista actual (copiar o abrir en nueva ventana)\nbookmark_label=Vista actual\n\n# Secondary toolbar and context menu\ntools.title=Herramientas\ntools_label=Herramientas\nfirst_page.title=Ir a primera página\nfirst_page.label=Ir a primera página\nfirst_page_label=Ir a primera página\nlast_page.title=Ir a última página\nlast_page.label=Ir a última página\nlast_page_label=Ir a última página\npage_rotate_cw.title=Rotar horario\npage_rotate_cw.label=Rotar horario\npage_rotate_cw_label=Rotar horario\npage_rotate_ccw.title=Rotar antihorario\npage_rotate_ccw.label=Rotar antihorario\npage_rotate_ccw_label=Rotar antihorario\n\ncursor_text_select_tool.title=Habilitar herramienta de selección de texto\ncursor_text_select_tool_label=Herramienta de selección de texto\ncursor_hand_tool.title=Habilitar herramienta mano\ncursor_hand_tool_label=Herramienta mano\n\nscroll_vertical.title=Usar desplazamiento vertical\nscroll_vertical_label=Desplazamiento vertical\nscroll_horizontal.title=Usar desplazamiento vertical\nscroll_horizontal_label=Desplazamiento horizontal\nscroll_wrapped.title=Usar desplazamiento encapsulado\nscroll_wrapped_label=Desplazamiento encapsulado\n\nspread_none.title=No unir páginas dobles\nspread_none_label=Sin dobles\nspread_odd.title=Unir páginas dobles comenzando con las impares\nspread_odd_label=Dobles impares\nspread_even.title=Unir páginas dobles comenzando con las pares\nspread_even_label=Dobles pares\n\n# Document properties dialog box\ndocument_properties.title=Propiedades del documento…\ndocument_properties_label=Propiedades del documento…\ndocument_properties_file_name=Nombre de archivo:\ndocument_properties_file_size=Tamaño de archovo:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Título:\ndocument_properties_author=Autor:\ndocument_properties_subject=Asunto:\ndocument_properties_keywords=Palabras clave:\ndocument_properties_creation_date=Fecha de creación:\ndocument_properties_modification_date=Fecha de modificación:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creador:\ndocument_properties_producer=PDF Productor:\ndocument_properties_version=Versión de PDF:\ndocument_properties_page_count=Cantidad de páginas:\ndocument_properties_page_size=Tamaño de página:\ndocument_properties_page_size_unit_inches=en\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=normal\ndocument_properties_page_size_orientation_landscape=apaisado\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Carta\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Vista rápida de la Web:\ndocument_properties_linearized_yes=Sí\ndocument_properties_linearized_no=No\ndocument_properties_close=Cerrar\n\nprint_progress_message=Preparando documento para imprimir…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancelar\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Alternar barra lateral\ntoggle_sidebar_notification.title=Intercambiar barra lateral (el documento contiene esquema/adjuntos)\ntoggle_sidebar_label=Alternar barra lateral\ndocument_outline.title=Mostrar esquema del documento (doble clic para expandir/colapsar todos los ítems)\ndocument_outline_label=Esquema del documento\nattachments.title=Mostrar adjuntos\nattachments_label=Adjuntos\nthumbs.title=Mostrar miniaturas\nthumbs_label=Miniaturas\nfindbar.title=Buscar en documento\nfindbar_label=Buscar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Página {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura de página {{page}}\n\n# Find panel button title and messages\nfind_input.title=Buscar\nfind_input.placeholder=Buscar en documento…\nfind_previous.title=Buscar la aparición anterior de la frase\nfind_previous_label=Anterior\nfind_next.title=Buscar la siguiente aparición de la frase\nfind_next_label=Siguiente\nfind_highlight=Resaltar todo\nfind_match_case_label=Coincidir mayúsculas\nfind_entire_word_label=Palabras completas\nfind_reached_top=Inicio de documento alcanzado, continuando desde abajo\nfind_reached_bottom=Fin de documento alcanzando, continuando desde arriba\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} de {{total}} coincidencias\nfind_match_count[two]={{current}} de {{total}} coincidencias\nfind_match_count[few]={{current}} de {{total}} coincidencias\nfind_match_count[many]={{current}} de {{total}} coincidencias\nfind_match_count[other]={{current}} de {{total}} coincidencias\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Más de {{limit}} coincidencias\nfind_match_count_limit[one]=Más de {{limit}} coinciden\nfind_match_count_limit[two]=Más de {{limit}} coincidencias\nfind_match_count_limit[few]=Más de {{limit}} coincidencias\nfind_match_count_limit[many]=Más de {{limit}} coincidencias\nfind_match_count_limit[other]=Más de {{limit}} coincidencias\nfind_not_found=Frase no encontrada\n\n# Error panel labels\nerror_more_info=Más información\nerror_less_info=Menos información\nerror_close=Cerrar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mensaje: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Archivo: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Línea: {{line}}\nrendering_error=Ocurrió un error al dibujar la página.\n\n# Predefined zoom values\npage_scale_width=Ancho de página\npage_scale_fit=Ajustar página\npage_scale_auto=Zoom automático\npage_scale_actual=Tamaño real\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=Ocurrió un error al cargar el PDF.\ninvalid_file_error=Archivo PDF no válido o cocrrupto.\nmissing_file_error=Archivo PDF faltante.\nunexpected_response_error=Respuesta del servidor inesperada.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Anotación]\npassword_label=Ingrese la contraseña para abrir este archivo PDF\npassword_invalid=Contraseña inválida. Intente nuevamente.\npassword_ok=Aceptar\npassword_cancel=Cancelar\n\nprinting_not_supported=Advertencia: La impresión no está totalmente soportada por este navegador.\nprinting_not_ready=Advertencia: El PDF no está completamente cargado para impresión.\nweb_fonts_disabled=Tipografía web deshabilitada: no se pueden usar tipos incrustados en PDF.\ndocument_colors_not_allowed=Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/es-CL/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Página anterior\nprevious_label=Anterior\nnext.title=Página siguiente\nnext_label=Siguiente\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Página\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} de {{pagesCount}})\n\nzoom_out.title=Alejar\nzoom_out_label=Alejar\nzoom_in.title=Acercar\nzoom_in_label=Acercar\nzoom.title=Ampliación\npresentation_mode.title=Cambiar al modo de presentación\npresentation_mode_label=Modo de presentación\nopen_file.title=Abrir archivo\nopen_file_label=Abrir\nprint.title=Imprimir\nprint_label=Imprimir\ndownload.title=Descargar\ndownload_label=Descargar\nbookmark.title=Vista actual (copiar o abrir en nueva ventana)\nbookmark_label=Vista actual\n\n# Secondary toolbar and context menu\ntools.title=Herramientas\ntools_label=Herramientas\nfirst_page.title=Ir a la primera página\nfirst_page.label=Ir a la primera página\nfirst_page_label=Ir a la primera página\nlast_page.title=Ir a la última página\nlast_page.label=Ir a la última página\nlast_page_label=Ir a la última página\npage_rotate_cw.title=Girar a la derecha\npage_rotate_cw.label=Girar a la derecha\npage_rotate_cw_label=Girar a la derecha\npage_rotate_ccw.title=Girar a la izquierda\npage_rotate_ccw.label=Girar a la izquierda\npage_rotate_ccw_label=Girar a la izquierda\n\ncursor_text_select_tool.title=Activar la herramienta de selección de texto\ncursor_text_select_tool_label=Herramienta de selección de texto\ncursor_hand_tool.title=Activar la herramienta de mano\ncursor_hand_tool_label=Herramienta de mano\n\nscroll_vertical.title=Usar desplazamiento vertical\nscroll_vertical_label=Desplazamiento vertical\nscroll_horizontal.title=Usar desplazamiento horizontal\nscroll_horizontal_label=Desplazamiento horizontal\nscroll_wrapped.title=Usar desplazamiento en bloque\nscroll_wrapped_label=Desplazamiento en bloque\n\nspread_none.title=No juntar páginas a modo de libro\nspread_none_label=Vista de una página\nspread_odd.title=Junta las páginas partiendo con una de número impar\nspread_odd_label=Vista de libro impar\nspread_even.title=Junta las páginas partiendo con una de número par\nspread_even_label=Vista de libro par\n\n# Document properties dialog box\ndocument_properties.title=Propiedades del documento…\ndocument_properties_label=Propiedades del documento…\ndocument_properties_file_name=Nombre de archivo:\ndocument_properties_file_size=Tamaño del archivo:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Título:\ndocument_properties_author=Autor:\ndocument_properties_subject=Asunto:\ndocument_properties_keywords=Palabras clave:\ndocument_properties_creation_date=Fecha de creación:\ndocument_properties_modification_date=Fecha de modificación:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creador:\ndocument_properties_producer=Productor del PDF:\ndocument_properties_version=Versión de PDF:\ndocument_properties_page_count=Cantidad de páginas:\ndocument_properties_page_size=Tamaño de la página:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=vertical\ndocument_properties_page_size_orientation_landscape=horizontal\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Carta\ndocument_properties_page_size_name_legal=Oficio\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Vista rápida en Web:\ndocument_properties_linearized_yes=Sí\ndocument_properties_linearized_no=No\ndocument_properties_close=Cerrar\n\nprint_progress_message=Preparando documento para impresión…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancelar\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Barra lateral\ntoggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos)\ntoggle_sidebar_label=Mostrar u ocultar la barra lateral\ndocument_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos)\ndocument_outline_label=Esquema del documento\nattachments.title=Mostrar adjuntos\nattachments_label=Adjuntos\nthumbs.title=Mostrar miniaturas\nthumbs_label=Miniaturas\nfindbar.title=Buscar en el documento\nfindbar_label=Buscar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Página {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura de la página {{page}}\n\n# Find panel button title and messages\nfind_input.title=Encontrar\nfind_input.placeholder=Encontrar en el documento…\nfind_previous.title=Buscar la aparición anterior de la frase\nfind_previous_label=Previo\nfind_next.title=Buscar la siguiente aparición de la frase\nfind_next_label=Siguiente\nfind_highlight=Destacar todos\nfind_match_case_label=Coincidir mayús./minús.\nfind_entire_word_label=Palabras completas\nfind_reached_top=Se alcanzó el inicio del documento, continuando desde el final\nfind_reached_bottom=Se alcanzó el final del documento, continuando desde el inicio\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} de {{total}} coincidencia\nfind_match_count[two]={{current}} de {{total}} coincidencias\nfind_match_count[few]={{current}} de {{total}} coincidencias\nfind_match_count[many]={{current}} de {{total}} coincidencias\nfind_match_count[other]={{current}} de {{total}} coincidencias\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Más de {{limit}} coincidencias\nfind_match_count_limit[one]=Más de {{limit}} coincidencia\nfind_match_count_limit[two]=Más de {{limit}} coincidencias\nfind_match_count_limit[few]=Más de {{limit}} coincidencias\nfind_match_count_limit[many]=Más de {{limit}} coincidencias\nfind_match_count_limit[other]=Más de {{limit}} coincidencias\nfind_not_found=Frase no encontrada\n\n# Error panel labels\nerror_more_info=Más información\nerror_less_info=Menos información\nerror_close=Cerrar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (compilación: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mensaje: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Archivo: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Línea: {{line}}\nrendering_error=Ha ocurrido un error al renderizar la página.\n\n# Predefined zoom values\npage_scale_width=Ancho de página\npage_scale_fit=Ajuste de página\npage_scale_auto=Aumento automático\npage_scale_actual=Tamaño actual\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=Ha ocurrido un error al cargar el PDF.\ninvalid_file_error=Archivo PDF inválido o corrupto.\nmissing_file_error=Falta el archivo PDF.\nunexpected_response_error=Respuesta del servidor inesperada.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Anotación]\npassword_label=Ingrese la contraseña para abrir este archivo PDF.\npassword_invalid=Contraseña inválida. Por favor, vuelve a intentarlo.\npassword_ok=Aceptar\npassword_cancel=Cancelar\n\nprinting_not_supported=Advertencia: Imprimir no está soportado completamente por este navegador.\nprinting_not_ready=Advertencia: El PDF no está completamente cargado para ser impreso.\nweb_fonts_disabled=Las tipografías web están desactivadas: imposible usar las fuentes PDF embebidas.\ndocument_colors_not_allowed=Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/es-ES/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Página anterior\nprevious_label=Anterior\nnext.title=Página siguiente\nnext_label=Siguiente\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Página\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} de {{pagesCount}})\n\nzoom_out.title=Reducir\nzoom_out_label=Reducir\nzoom_in.title=Aumentar\nzoom_in_label=Aumentar\nzoom.title=Tamaño\npresentation_mode.title=Cambiar al modo presentación\npresentation_mode_label=Modo presentación\nopen_file.title=Abrir archivo\nopen_file_label=Abrir\nprint.title=Imprimir\nprint_label=Imprimir\ndownload.title=Descargar\ndownload_label=Descargar\nbookmark.title=Vista actual (copiar o abrir en una nueva ventana)\nbookmark_label=Vista actual\n\n# Secondary toolbar and context menu\ntools.title=Herramientas\ntools_label=Herramientas\nfirst_page.title=Ir a la primera página\nfirst_page.label=Ir a la primera página\nfirst_page_label=Ir a la primera página\nlast_page.title=Ir a la última página\nlast_page.label=Ir a la última página\nlast_page_label=Ir a la última página\npage_rotate_cw.title=Rotar en sentido horario\npage_rotate_cw.label=Rotar en sentido horario\npage_rotate_cw_label=Rotar en sentido horario\npage_rotate_ccw.title=Rotar en sentido antihorario\npage_rotate_ccw.label=Rotar en sentido antihorario\npage_rotate_ccw_label=Rotar en sentido antihorario\n\ncursor_text_select_tool.title=Activar herramienta de selección de texto\ncursor_text_select_tool_label=Herramienta de selección de texto\ncursor_hand_tool.title=Activar herramienta de mano\ncursor_hand_tool_label=Herramienta de mano\n\nscroll_vertical.title=Usar desplazamiento vertical\nscroll_vertical_label=Desplazamiento vertical\nscroll_horizontal.title=Usar desplazamiento horizontal\nscroll_horizontal_label=Desplazamiento horizontal\nscroll_wrapped.title=Usar desplazamiento en bloque\nscroll_wrapped_label=Desplazamiento en bloque\n\nspread_none.title=No juntar páginas en vista de libro\nspread_none_label=Vista de libro\nspread_odd.title=Juntar las páginas partiendo de una con número impar\nspread_odd_label=Vista de libro impar\nspread_even.title=Juntar las páginas partiendo de una con número par\nspread_even_label=Vista de libro par\n\n# Document properties dialog box\ndocument_properties.title=Propiedades del documento…\ndocument_properties_label=Propiedades del documento…\ndocument_properties_file_name=Nombre de archivo:\ndocument_properties_file_size=Tamaño de archivo:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Título:\ndocument_properties_author=Autor:\ndocument_properties_subject=Asunto:\ndocument_properties_keywords=Palabras clave:\ndocument_properties_creation_date=Fecha de creación:\ndocument_properties_modification_date=Fecha de modificación:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creador:\ndocument_properties_producer=Productor PDF:\ndocument_properties_version=Versión PDF:\ndocument_properties_page_count=Número de páginas:\ndocument_properties_page_size=Tamaño de la página:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=vertical\ndocument_properties_page_size_orientation_landscape=horizontal\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Carta\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Vista rápida de la web:\ndocument_properties_linearized_yes=Sí\ndocument_properties_linearized_no=No\ndocument_properties_close=Cerrar\n\nprint_progress_message=Preparando documento para impresión…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancelar\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Cambiar barra lateral\ntoggle_sidebar_notification.title=Alternar panel lateral (el documento contiene un esquema o adjuntos)\ntoggle_sidebar_label=Cambiar barra lateral\ndocument_outline.title=Mostrar resumen del documento (doble clic para expandir/contraer todos los elementos)\ndocument_outline_label=Resumen de documento\nattachments.title=Mostrar adjuntos\nattachments_label=Adjuntos\nthumbs.title=Mostrar miniaturas\nthumbs_label=Miniaturas\nfindbar.title=Buscar en el documento\nfindbar_label=Buscar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Página {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura de la página {{page}}\n\n# Find panel button title and messages\nfind_input.title=Buscar\nfind_input.placeholder=Buscar en el documento…\nfind_previous.title=Encontrar la anterior aparición de la frase\nfind_previous_label=Anterior\nfind_next.title=Encontrar la siguiente aparición de esta frase\nfind_next_label=Siguiente\nfind_highlight=Resaltar todos\nfind_match_case_label=Coincidencia de mayús./minús.\nfind_entire_word_label=Palabras completas\nfind_reached_top=Se alcanzó el inicio del documento, se continúa desde el final\nfind_reached_bottom=Se alcanzó el final del documento, se continúa desde el inicio\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} de {{total}} coincidencia\nfind_match_count[two]={{current}} de {{total}} coincidencias\nfind_match_count[few]={{current}} de {{total}} coincidencias\nfind_match_count[many]={{current}} de {{total}} coincidencias\nfind_match_count[other]={{current}} de {{total}} coincidencias\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Más de {{limit}} coincidencias\nfind_match_count_limit[one]=Más de {{limit}} coincidencia\nfind_match_count_limit[two]=Más de {{limit}} coincidencias\nfind_match_count_limit[few]=Más de {{limit}} coincidencias\nfind_match_count_limit[many]=Más de {{limit}} coincidencias\nfind_match_count_limit[other]=Más de {{limit}} coincidencias\nfind_not_found=Frase no encontrada\n\n# Error panel labels\nerror_more_info=Más información\nerror_less_info=Menos información\nerror_close=Cerrar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mensaje: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Archivo: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Línea: {{line}}\nrendering_error=Ocurrió un error al renderizar la página.\n\n# Predefined zoom values\npage_scale_width=Anchura de la página\npage_scale_fit=Ajuste de la página\npage_scale_auto=Tamaño automático\npage_scale_actual=Tamaño real\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=Ocurrió un error al cargar el PDF.\ninvalid_file_error=Fichero PDF no válido o corrupto.\nmissing_file_error=No hay fichero PDF.\nunexpected_response_error=Respuesta inesperada del servidor.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotación {{type}}]\npassword_label=Introduzca la contraseña para abrir este archivo PDF.\npassword_invalid=Contraseña no válida. Vuelva a intentarlo.\npassword_ok=Aceptar\npassword_cancel=Cancelar\n\nprinting_not_supported=Advertencia: Imprimir no está totalmente soportado por este navegador.\nprinting_not_ready=Advertencia: Este PDF no se ha cargado completamente para poder imprimirse.\nweb_fonts_disabled=Las tipografías web están desactivadas: es imposible usar las tipografías PDF embebidas.\ndocument_colors_not_allowed=Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/es-MX/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Página anterior\nprevious_label=Anterior\nnext.title=Página siguiente\nnext_label=Siguiente\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Página\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} de {{pagesCount}})\n\nzoom_out.title=Reducir\nzoom_out_label=Reducir\nzoom_in.title=Aumentar\nzoom_in_label=Aumentar\nzoom.title=Zoom\npresentation_mode.title=Cambiar al modo presentación\npresentation_mode_label=Modo presentación\nopen_file.title=Abrir archivo\nopen_file_label=Abrir\nprint.title=Imprimir\nprint_label=Imprimir\ndownload.title=Descargar\ndownload_label=Descargar\nbookmark.title=Vista actual (copiar o abrir en una nueva ventana)\nbookmark_label=Vista actual\n\n# Secondary toolbar and context menu\ntools.title=Herramientas\ntools_label=Herramientas\nfirst_page.title=Ir a la primera página\nfirst_page.label=Ir a la primera página\nfirst_page_label=Ir a la primera página\nlast_page.title=Ir a la última página\nlast_page.label=Ir a la última página\nlast_page_label=Ir a la última página\npage_rotate_cw.title=Girar a la derecha\npage_rotate_cw.label=Girar a la derecha\npage_rotate_cw_label=Girar a la derecha\npage_rotate_ccw.title=Girar a la izquierda\npage_rotate_ccw.label=Girar a la izquierda\npage_rotate_ccw_label=Girar a la izquierda\n\ncursor_text_select_tool.title=Activar la herramienta de selección de texto\ncursor_text_select_tool_label=Herramienta de selección de texto\ncursor_hand_tool.title=Activar la herramienta de mano\ncursor_hand_tool_label=Herramienta de mano\n\nscroll_vertical.title=Usar desplazamiento vertical\nscroll_vertical_label=Desplazamiento vertical\nscroll_horizontal.title=Usar desplazamiento horizontal\nscroll_horizontal_label=Desplazamiento horizontal\nscroll_wrapped.title=Usar desplazamiento encapsulado\nscroll_wrapped_label=Desplazamiento encapsulado\n\nspread_none.title=No unir páginas separadas\nspread_none_label=Vista de una página\nspread_odd.title=Unir las páginas partiendo con una de número impar\nspread_odd_label=Vista de libro impar\nspread_even.title=Juntar las páginas partiendo con una de número par\nspread_even_label=Vista de libro par\n\n# Document properties dialog box\ndocument_properties.title=Propiedades del documento…\ndocument_properties_label=Propiedades del documento…\ndocument_properties_file_name=Nombre del archivo:\ndocument_properties_file_size=Tamaño del archivo:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Título:\ndocument_properties_author=Autor:\ndocument_properties_subject=Asunto:\ndocument_properties_keywords=Palabras claves:\ndocument_properties_creation_date=Fecha de creación:\ndocument_properties_modification_date=Fecha de modificación:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creador:\ndocument_properties_producer=Productor PDF:\ndocument_properties_version=Versión PDF:\ndocument_properties_page_count=Número de páginas:\ndocument_properties_page_size=Tamaño de la página:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=vertical\ndocument_properties_page_size_orientation_landscape=horizontal\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Carta\ndocument_properties_page_size_name_legal=Oficio\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Vista rápida de la web:\ndocument_properties_linearized_yes=Sí\ndocument_properties_linearized_no=No\ndocument_properties_close=Cerrar\n\nprint_progress_message=Preparando documento para impresión…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancelar\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Cambiar barra lateral\ntoggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos)\ntoggle_sidebar_label=Cambiar barra lateral\ndocument_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos)\ndocument_outline_label=Esquema del documento\nattachments.title=Mostrar adjuntos\nattachments_label=Adjuntos\nthumbs.title=Mostrar miniaturas\nthumbs_label=Miniaturas\nfindbar.title=Buscar en el documento\nfindbar_label=Buscar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Página {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura de la página {{page}}\n\n# Find panel button title and messages\nfind_input.title=Buscar\nfind_input.placeholder=Buscar en el documento…\nfind_previous.title=Ir a la anterior frase encontrada\nfind_previous_label=Anterior\nfind_next.title=Ir a la siguiente frase encontrada\nfind_next_label=Siguiente\nfind_highlight=Resaltar todo\nfind_match_case_label=Coincidir con mayúsculas y minúsculas\nfind_entire_word_label=Palabras completas\nfind_reached_top=Se alcanzó el inicio del documento, se buscará al final\nfind_reached_bottom=Se alcanzó el final del documento, se buscará al inicio\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} de {{total}} coincidencia\nfind_match_count[two]={{current}} de {{total}} coincidencias\nfind_match_count[few]={{current}} de {{total}} coincidencias\nfind_match_count[many]={{current}} de {{total}} coincidencias\nfind_match_count[other]={{current}} de {{total}} coincidencias\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Más de {{limit}} coincidencias\nfind_match_count_limit[one]=Más de {{limit}} coinciden\nfind_match_count_limit[two]=Más de {{limit}} coincidencias\nfind_match_count_limit[few]=Más de {{limit}} coincidencias\nfind_match_count_limit[many]=Más de {{limit}} coincidencias\nfind_match_count_limit[other]=Más de {{limit}} coincidencias\nfind_not_found=No se encontró la frase\n\n# Error panel labels\nerror_more_info=Más información\nerror_less_info=Menos información\nerror_close=Cerrar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mensaje: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Archivo: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Línea: {{line}}\nrendering_error=Un error ocurrió al renderizar la página.\n\n# Predefined zoom values\npage_scale_width=Ancho de página\npage_scale_fit=Ajustar página\npage_scale_auto=Zoom automático\npage_scale_actual=Tamaño real\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=Un error ocurrió al cargar el PDF.\ninvalid_file_error=Archivo PDF invalido o dañado.\nmissing_file_error=Archivo PDF no encontrado.\nunexpected_response_error=Respuesta inesperada del servidor.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} anotación]\npassword_label=Ingresa la contraseña para abrir este archivo PDF.\npassword_invalid=Contraseña inválida. Por favor intenta de nuevo.\npassword_ok=Aceptar\npassword_cancel=Cancelar\n\nprinting_not_supported=Advertencia: La impresión no esta completamente soportada por este navegador.\nprinting_not_ready=Advertencia: El PDF no cargo completamente para impresión.\nweb_fonts_disabled=Las fuentes web están desactivadas: es imposible usar las fuentes PDF embebidas.\ndocument_colors_not_allowed=Los documentos PDF no tienen permiso de usar sus propios colores: 'Permitir que las páginas elijan sus propios colores' esta desactivada en el navegador.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/et/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Eelmine lehekülg\nprevious_label=Eelmine\nnext.title=Järgmine lehekülg\nnext_label=Järgmine\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Leht\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=/ {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}}/{{pagesCount}})\n\nzoom_out.title=Vähenda\nzoom_out_label=Vähenda\nzoom_in.title=Suurenda\nzoom_in_label=Suurenda\nzoom.title=Suurendamine\npresentation_mode.title=Lülitu esitlusrežiimi\npresentation_mode_label=Esitlusrežiim\nopen_file.title=Ava fail\nopen_file_label=Ava\nprint.title=Prindi\nprint_label=Prindi\ndownload.title=Laadi alla\ndownload_label=Laadi alla\nbookmark.title=Praegune vaade (kopeeri või ava uues aknas)\nbookmark_label=Praegune vaade\n\n# Secondary toolbar and context menu\ntools.title=Tööriistad\ntools_label=Tööriistad\nfirst_page.title=Mine esimesele leheküljele\nfirst_page.label=Mine esimesele leheküljele\nfirst_page_label=Mine esimesele leheküljele\nlast_page.title=Mine viimasele leheküljele\nlast_page.label=Mine viimasele leheküljele\nlast_page_label=Mine viimasele leheküljele\npage_rotate_cw.title=Pööra päripäeva\npage_rotate_cw.label=Pööra päripäeva\npage_rotate_cw_label=Pööra päripäeva\npage_rotate_ccw.title=Pööra vastupäeva\npage_rotate_ccw.label=Pööra vastupäeva\npage_rotate_ccw_label=Pööra vastupäeva\n\ncursor_text_select_tool.title=Luba teksti valimise tööriist\ncursor_text_select_tool_label=Teksti valimise tööriist\ncursor_hand_tool.title=Luba sirvimistööriist\ncursor_hand_tool_label=Sirvimistööriist\n\nscroll_vertical.title=Kasuta vertikaalset kerimist\nscroll_vertical_label=Vertikaalne kerimine\nscroll_horizontal.title=Kasuta horisontaalset kerimist\nscroll_horizontal_label=Horisontaalne kerimine\nscroll_wrapped.title=Kasuta rohkem mahutavat kerimist\nscroll_wrapped_label=Rohkem mahutav kerimine\n\nspread_none.title=Ära kõrvuta lehekülgi\nspread_none_label=Lehtede kõrvutamine puudub\nspread_odd.title=Kõrvuta leheküljed, alustades paaritute numbritega lehekülgedega\nspread_odd_label=Kõrvutamine paaritute numbritega alustades\nspread_even.title=Kõrvuta leheküljed, alustades paarisnumbritega lehekülgedega\nspread_even_label=Kõrvutamine paarisnumbritega alustades\n\n# Document properties dialog box\ndocument_properties.title=Dokumendi omadused…\ndocument_properties_label=Dokumendi omadused…\ndocument_properties_file_name=Faili nimi:\ndocument_properties_file_size=Faili suurus:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KiB ({{size_b}} baiti)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MiB ({{size_b}} baiti)\ndocument_properties_title=Pealkiri:\ndocument_properties_author=Autor:\ndocument_properties_subject=Teema:\ndocument_properties_keywords=Märksõnad:\ndocument_properties_creation_date=Loodud:\ndocument_properties_modification_date=Muudetud:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}} {{time}}\ndocument_properties_creator=Looja:\ndocument_properties_producer=Generaator:\ndocument_properties_version=Generaatori versioon:\ndocument_properties_page_count=Lehekülgi:\ndocument_properties_page_size=Lehe suurus:\ndocument_properties_page_size_unit_inches=tolli\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=vertikaalpaigutus\ndocument_properties_page_size_orientation_landscape=rõhtpaigutus\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=\"Fast Web View\" tugi:\ndocument_properties_linearized_yes=Jah\ndocument_properties_linearized_no=Ei\ndocument_properties_close=Sulge\n\nprint_progress_message=Dokumendi ettevalmistamine printimiseks…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Loobu\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Näita külgriba\ntoggle_sidebar_notification.title=Näita külgriba (dokument sisaldab sisukorda/manuseid)\ntoggle_sidebar_label=Näita külgriba\ndocument_outline.title=Näita sisukorda (kõigi punktide laiendamiseks/ahendamiseks topeltklõpsa)\ndocument_outline_label=Näita sisukorda\nattachments.title=Näita manuseid\nattachments_label=Manused\nthumbs.title=Näita pisipilte\nthumbs_label=Pisipildid\nfindbar.title=Otsi dokumendist\nfindbar_label=Otsi\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title={{page}}. lehekülg\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}}. lehekülje pisipilt\n\n# Find panel button title and messages\nfind_input.title=Otsi\nfind_input.placeholder=Otsi dokumendist…\nfind_previous.title=Otsi fraasi eelmine esinemiskoht\nfind_previous_label=Eelmine\nfind_next.title=Otsi fraasi järgmine esinemiskoht\nfind_next_label=Järgmine\nfind_highlight=Too kõik esile\nfind_match_case_label=Tõstutundlik\nfind_entire_word_label=Täissõnad\nfind_reached_top=Jõuti dokumendi algusesse, jätkati lõpust\nfind_reached_bottom=Jõuti dokumendi lõppu, jätkati algusest\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]=vaste {{current}}/{{total}}\nfind_match_count[two]=vaste {{current}}/{{total}}\nfind_match_count[few]=vaste {{current}}/{{total}}\nfind_match_count[many]=vaste {{current}}/{{total}}\nfind_match_count[other]=vaste {{current}}/{{total}}\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Rohkem kui {{limit}} vastet\nfind_match_count_limit[one]=Rohkem kui {{limit}} vaste\nfind_match_count_limit[two]=Rohkem kui {{limit}} vastet\nfind_match_count_limit[few]=Rohkem kui {{limit}} vastet\nfind_match_count_limit[many]=Rohkem kui {{limit}} vastet\nfind_match_count_limit[other]=Rohkem kui {{limit}} vastet\nfind_not_found=Fraasi ei leitud\n\n# Error panel labels\nerror_more_info=Rohkem teavet\nerror_less_info=Vähem teavet\nerror_close=Sulge\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Teade: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fail: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Rida: {{line}}\nrendering_error=Lehe renderdamisel esines viga.\n\n# Predefined zoom values\npage_scale_width=Mahuta laiusele\npage_scale_fit=Mahuta leheküljele\npage_scale_auto=Automaatne suurendamine\npage_scale_actual=Tegelik suurus\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Viga\nloading_error=PDFi laadimisel esines viga.\ninvalid_file_error=Vigane või rikutud PDF-fail.\nmissing_file_error=PDF-fail puudub.\nunexpected_response_error=Ootamatu vastus serverilt.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=PDF-faili avamiseks sisesta parool.\npassword_invalid=Vigane parool. Palun proovi uuesti.\npassword_ok=Sobib\npassword_cancel=Loobu\n\nprinting_not_supported=Hoiatus: printimine pole selle brauseri poolt täielikult toetatud.\nprinting_not_ready=Hoiatus: PDF pole printimiseks täielikult laaditud.\nweb_fonts_disabled=Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada.\ndocument_colors_not_allowed=PDF-dokumentidel pole oma värvide kasutamine lubatud: “Veebilehtedel on lubatud kasutada oma värve” on brauseris deaktiveeritud.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/eu/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Aurreko orria\nprevious_label=Aurrekoa\nnext.title=Hurrengo orria\nnext_label=Hurrengoa\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Orria\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=/ {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages={{pagesCount}}/{{pageNumber}}\n\nzoom_out.title=Urrundu zooma\nzoom_out_label=Urrundu zooma\nzoom_in.title=Gerturatu zooma\nzoom_in_label=Gerturatu zooma\nzoom.title=Zooma\npresentation_mode.title=Aldatu aurkezpen modura\npresentation_mode_label=Arkezpen modua\nopen_file.title=Ireki fitxategia\nopen_file_label=Ireki\nprint.title=Inprimatu\nprint_label=Inprimatu\ndownload.title=Deskargatu\ndownload_label=Deskargatu\nbookmark.title=Uneko ikuspegia (kopiatu edo ireki leiho berrian)\nbookmark_label=Uneko ikuspegia\n\n# Secondary toolbar and context menu\ntools.title=Tresnak\ntools_label=Tresnak\nfirst_page.title=Joan lehen orrira\nfirst_page.label=Joan lehen orrira\nfirst_page_label=Joan lehen orrira\nlast_page.title=Joan azken orrira\nlast_page.label=Joan azken orrira\nlast_page_label=Joan azken orrira\npage_rotate_cw.title=Biratu erlojuaren norantzan\npage_rotate_cw.label=Biratu erlojuaren norantzan\npage_rotate_cw_label=Biratu erlojuaren norantzan\npage_rotate_ccw.title=Biratu erlojuaren aurkako norantzan\npage_rotate_ccw.label=Biratu erlojuaren aurkako norantzan\npage_rotate_ccw_label=Biratu erlojuaren aurkako norantzan\n\ncursor_text_select_tool.title=Gaitu testuaren hautapen tresna\ncursor_text_select_tool_label=Testuaren hautapen tresna\ncursor_hand_tool.title=Gaitu eskuaren tresna\ncursor_hand_tool_label=Eskuaren tresna\n\nscroll_vertical.title=Erabili korritze bertikala\nscroll_vertical_label=Korritze bertikala\nscroll_horizontal.title=Erabili korritze horizontala\nscroll_horizontal_label=Korritze horizontala\nscroll_wrapped.title=Erabili korritze egokitua\nscroll_wrapped_label=Korritze egokitua\n\nspread_none.title=Ez elkartu barreiatutako orriak\nspread_none_label=Barreiatzerik ez\nspread_odd.title=Elkartu barreiatutako orriak bakoiti zenbakidunekin hasita\nspread_odd_label=Barreiatze bakoitia\nspread_even.title=Elkartu barreiatutako orriak bikoiti zenbakidunekin hasita\nspread_even_label=Barreiatze bikoitia\n\n# Document properties dialog box\ndocument_properties.title=Dokumentuaren propietateak…\ndocument_properties_label=Dokumentuaren propietateak…\ndocument_properties_file_name=Fitxategi-izena:\ndocument_properties_file_size=Fitxategiaren tamaina:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} byte)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} byte)\ndocument_properties_title=Izenburua:\ndocument_properties_author=Egilea:\ndocument_properties_subject=Gaia:\ndocument_properties_keywords=Gako-hitzak:\ndocument_properties_creation_date=Sortze-data:\ndocument_properties_modification_date=Aldatze-data:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Sortzailea:\ndocument_properties_producer=PDFaren ekoizlea:\ndocument_properties_version=PDF bertsioa:\ndocument_properties_page_count=Orrialde kopurua:\ndocument_properties_page_size=Orriaren tamaina:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=bertikala\ndocument_properties_page_size_orientation_landscape=horizontala\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Gutuna\ndocument_properties_page_size_name_legal=Legala\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Webeko ikuspegi bizkorra:\ndocument_properties_linearized_yes=Bai\ndocument_properties_linearized_no=Ez\ndocument_properties_close=Itxi\n\nprint_progress_message=Dokumentua inprimatzeko prestatzen…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent=%{{progress}}\nprint_progress_close=Utzi\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Txandakatu alboko barra\ntoggle_sidebar_notification.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak ditu)\ntoggle_sidebar_label=Txandakatu alboko barra\ndocument_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guztiak zabaltzeko/tolesteko)\ndocument_outline_label=Dokumentuaren eskema\nattachments.title=Erakutsi eranskinak\nattachments_label=Eranskinak\nthumbs.title=Erakutsi koadro txikiak\nthumbs_label=Koadro txikiak\nfindbar.title=Bilatu dokumentuan\nfindbar_label=Bilatu\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title={{page}}. orria\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}}. orriaren koadro txikia\n\n# Find panel button title and messages\nfind_input.title=Bilatu\nfind_input.placeholder=Bilatu dokumentuan…\nfind_previous.title=Bilatu esaldiaren aurreko parekatzea\nfind_previous_label=Aurrekoa\nfind_next.title=Bilatu esaldiaren hurrengo parekatzea\nfind_next_label=Hurrengoa\nfind_highlight=Nabarmendu guztia\nfind_match_case_label=Bat etorri maiuskulekin/minuskulekin\nfind_entire_word_label=Hitz osoak\nfind_reached_top=Dokumentuaren hasierara heldu da, bukaeratik jarraitzen\nfind_reached_bottom=Dokumentuaren bukaerara heldu da, hasieratik jarraitzen\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{total}}/{{current}}. bat etortzea\nfind_match_count[two]={{total}}/{{current}}. bat etortzea\nfind_match_count[few]={{total}}/{{current}}. bat etortzea\nfind_match_count[many]={{total}}/{{current}}. bat etortzea\nfind_match_count[other]={{total}}/{{current}}. bat etortzea\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]={{limit}} bat-etortze baino gehiago\nfind_match_count_limit[one]=Bat-etortze {{limit}} baino gehiago\nfind_match_count_limit[two]={{limit}} bat-etortze baino gehiago\nfind_match_count_limit[few]={{limit}} bat-etortze baino gehiago\nfind_match_count_limit[many]={{limit}} bat-etortze baino gehiago\nfind_match_count_limit[other]={{limit}} bat-etortze baino gehiago\nfind_not_found=Esaldia ez da aurkitu\n\n# Error panel labels\nerror_more_info=Informazio gehiago\nerror_less_info=Informazio gutxiago\nerror_close=Itxi\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (eraikuntza: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mezua: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fitxategia: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Lerroa: {{line}}\nrendering_error=Errorea gertatu da orria errendatzean.\n\n# Predefined zoom values\npage_scale_width=Orriaren zabalera\npage_scale_fit=Doitu orrira\npage_scale_auto=Zoom automatikoa\npage_scale_actual=Benetako tamaina\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent=%{{scale}}\n\n# Loading indicator messages\nloading_error_indicator=Errorea\nloading_error=Errorea gertatu da PDFa kargatzean.\ninvalid_file_error=PDF fitxategi baliogabe edo hondatua.\nmissing_file_error=PDF fitxategia falta da.\nunexpected_response_error=Espero gabeko zerbitzariaren erantzuna.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} ohartarazpena]\npassword_label=Idatzi PDF fitxategi hau irekitzeko pasahitza.\npassword_invalid=Pasahitz baliogabea. Saiatu berriro mesedez.\npassword_ok=Ados\npassword_cancel=Utzi\n\nprinting_not_supported=Abisua: inprimatzeko euskarria ez da erabatekoa nabigatzaile honetan.\nprinting_not_ready=Abisua: PDFa ez dago erabat kargatuta inprimatzeko.\nweb_fonts_disabled=Webeko letra-tipoak desgaituta daude: ezin dira kapsulatutako PDF letra-tipoak erabili.\ndocument_colors_not_allowed=PDF dokumentuek ez dute beraien koloreak erabiltzeko baimenik: 'Baimendu orriak beraien letra-tipoak aukeratzea' desaktibatuta dago nabigatzailean.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/fa/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=صفحهٔ قبلی\nprevious_label=قبلی\nnext.title=صفحهٔ بعدی\nnext_label=بعدی\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=صفحه\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=از {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}}از {{pagesCount}})\n\nzoom_out.title=کوچک‌نمایی\nzoom_out_label=کوچک‌نمایی\nzoom_in.title=بزرگ‌نمایی\nzoom_in_label=بزرگ‌نمایی\nzoom.title=زوم\npresentation_mode.title=تغییر به حالت ارائه\npresentation_mode_label=حالت ارائه\nopen_file.title=باز کردن پرونده\nopen_file_label=باز کردن\nprint.title=چاپ\nprint_label=چاپ\ndownload.title=بارگیری\ndownload_label=بارگیری\nbookmark.title=نمای فعلی (رونوشت و یا نشان دادن در پنجره جدید)\nbookmark_label=نمای فعلی\n\n# Secondary toolbar and context menu\ntools.title=ابزارها\ntools_label=ابزارها\nfirst_page.title=برو به اولین صفحه\nfirst_page.label=برو یه اولین صفحه\nfirst_page_label=برو به اولین صفحه\nlast_page.title=برو به آخرین صفحه\nlast_page.label=برو به آخرین صفحه\nlast_page_label=برو به آخرین صفحه\npage_rotate_cw.title=چرخش ساعتگرد\npage_rotate_cw.label=چرخش ساعتگرد\npage_rotate_cw_label=چرخش ساعتگرد\npage_rotate_ccw.title=چرخش پاد ساعتگرد\npage_rotate_ccw.label=چرخش پاد ساعتگرد\npage_rotate_ccw_label=چرخش پاد ساعتگرد\n\ncursor_text_select_tool.title=فعال کردن ابزارِ انتخابِ متن\ncursor_text_select_tool_label=ابزارِ انتخابِ متن\ncursor_hand_tool.title=فعال کردن ابزارِ دست\ncursor_hand_tool_label=ابزار دست\n\n\n\n# Document properties dialog box\ndocument_properties.title=خصوصیات سند...\ndocument_properties_label=خصوصیات سند...\ndocument_properties_file_name=نام فایل:\ndocument_properties_file_size=حجم پرونده:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} کیلوبایت ({{size_b}} بایت)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} مگابایت ({{size_b}} بایت)\ndocument_properties_title=عنوان:\ndocument_properties_author=نویسنده:\ndocument_properties_subject=موضوع:\ndocument_properties_keywords=کلیدواژه‌ها:\ndocument_properties_creation_date=تاریخ ایجاد:\ndocument_properties_modification_date=تاریخ ویرایش:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}، {{time}}\ndocument_properties_creator=ایجاد کننده:\ndocument_properties_producer=ایجاد کننده PDF:\ndocument_properties_version=نسخه PDF:\ndocument_properties_page_count=تعداد صفحات:\ndocument_properties_page_size=اندازه صفحه:\ndocument_properties_page_size_unit_inches=اینچ\ndocument_properties_page_size_unit_millimeters=میلی‌متر\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=نامه\ndocument_properties_page_size_name_legal=حقوقی\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\ndocument_properties_close=بستن\n\nprint_progress_message=آماده سازی مدارک برای چاپ کردن…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=لغو\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=باز و بسته کردن نوار کناری\ntoggle_sidebar_notification.title=تغییر وضعیت نوار کناری (سند حاوی طرح/پیوست است)\ntoggle_sidebar_label=تغییرحالت نوارکناری\ndocument_outline.title=نمایش رئوس مطالب مدارک(برای بازشدن/جمع شدن همه موارد دوبار کلیک کنید)\ndocument_outline_label=طرح نوشتار\nattachments.title=نمایش پیوست‌ها\nattachments_label=پیوست‌ها\nthumbs.title=نمایش تصاویر بندانگشتی\nthumbs_label=تصاویر بندانگشتی\nfindbar.title=جستجو در سند\nfindbar_label=پیدا کردن\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=صفحه {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=تصویر بند‌ انگشتی صفحه {{page}}\n\n# Find panel button title and messages\nfind_input.title=پیدا کردن\nfind_input.placeholder=پیدا کردن در سند…\nfind_previous.title=پیدا کردن رخداد قبلی عبارت\nfind_previous_label=قبلی\nfind_next.title=پیدا کردن رخداد بعدی عبارت\nfind_next_label=بعدی\nfind_highlight=برجسته و هایلایت کردن همه موارد\nfind_match_case_label=تطبیق کوچکی و بزرگی حروف\nfind_reached_top=به بالای صفحه رسیدیم، از پایین ادامه می‌دهیم\nfind_reached_bottom=به آخر صفحه رسیدیم، از بالا ادامه می‌دهیم\nfind_not_found=عبارت پیدا نشد\n\n# Error panel labels\nerror_more_info=اطلاعات بیشتر\nerror_less_info=اطلاعات کمتر\nerror_close=بستن\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=‏PDF.js ورژن{{version}} ‏(ساخت: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=پیام: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=توده: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=پرونده: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=سطر: {{line}}\nrendering_error=هنگام بارگیری صفحه خطایی رخ داد.\n\n# Predefined zoom values\npage_scale_width=عرض صفحه\npage_scale_fit=اندازه کردن صفحه\npage_scale_auto=بزرگنمایی خودکار\npage_scale_actual=اندازه واقعی‌\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=خطا\nloading_error=هنگام بارگیری پرونده PDF خطایی رخ داد.\ninvalid_file_error=پرونده PDF نامعتبر یامعیوب می‌باشد.\nmissing_file_error=پرونده PDF یافت نشد.\nunexpected_response_error=پاسخ پیش بینی نشده سرور\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=جهت باز کردن پرونده PDF گذرواژه را وارد نمائید.\npassword_invalid=گذرواژه نامعتبر. لطفا مجددا تلاش کنید.\npassword_ok=تأیید\npassword_cancel=لغو\n\nprinting_not_supported=هشدار: قابلیت چاپ به‌طور کامل در این مرورگر پشتیبانی نمی‌شود.\nprinting_not_ready=اخطار: پرونده PDF بطور کامل بارگیری نشده و امکان چاپ وجود ندارد.\nweb_fonts_disabled=فونت های تحت وب غیر فعال شده اند: امکان استفاده از نمایش دهنده داخلی PDF وجود ندارد.\ndocument_colors_not_allowed=فایلهای PDF اجازه ندارند تا از رنگ‌های خود استفاده کنند: گزینه «به صفحات اجازه بده تا از رنگ‌های خود استفاده کنند» در مرورگر غیر فعال است.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ff/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Hello Ɓennungo\nprevious_label=Ɓennuɗo\nnext.title=Hello faango\nnext_label=Yeeso\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Hello\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=e nder {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} of {{pagesCount}})\n\nzoom_out.title=Lonngo Woɗɗa\nzoom_out_label=Lonngo Woɗɗa\nzoom_in.title=Lonngo Ara\nzoom_in_label=Lonngo Ara\nzoom.title=Lonngo\npresentation_mode.title=Faytu to  Presentation Mode\npresentation_mode_label=Presentation Mode\nopen_file.title=Uddit Fiilde\nopen_file_label=Uddit\nprint.title=Winndito\nprint_label=Winndito\ndownload.title=Aawto\ndownload_label=Aawto\nbookmark.title=Jiytol gonangol (natto walla uddit e henorde)\nbookmark_label=Jiytol Gonangol\n\n# Secondary toolbar and context menu\ntools.title=Kuutorɗe\ntools_label=Kuutorɗe\nfirst_page.title=Yah to hello adanngo\nfirst_page.label=Yah to hello adanngo\nfirst_page_label=Yah to hello adanngo\nlast_page.title=Yah to hello wattindiingo\nlast_page.label=Yah to hello wattindiingo\nlast_page_label=Yah to hello wattindiingo\npage_rotate_cw.title=Yiiltu Faya Ñaamo\npage_rotate_cw.label=Yiiltu Faya Ñaamo\npage_rotate_cw_label=Yiiltu Faya Ñaamo\npage_rotate_ccw.title=Yiiltu Faya Nano\npage_rotate_ccw.label=Yiiltu Faya Nano\npage_rotate_ccw_label=Yiiltu Faya Nano\n\ncursor_text_select_tool.title=Gollin kaɓirgel cuɓirgel binndi\ncursor_text_select_tool_label=Kaɓirgel cuɓirgel binndi\ncursor_hand_tool.title=Hurmin kuutorgal junngo\ncursor_hand_tool_label=Kaɓirgel junngo\n\n# Document properties dialog box\ndocument_properties.title=Keeroraaɗi Winndannde…\ndocument_properties_label=Keeroraaɗi Winndannde…\ndocument_properties_file_name=Innde fiilde:\ndocument_properties_file_size=Ɓetol fiilde:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bite)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bite)\ndocument_properties_title=Tiitoonde:\ndocument_properties_author=Binnduɗo:\ndocument_properties_subject=Toɓɓere:\ndocument_properties_keywords=Kelmekele jiytirɗe:\ndocument_properties_creation_date=Ñalnde Sosaa:\ndocument_properties_modification_date=Ñalnde Waylaa:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Cosɗo:\ndocument_properties_producer=Paggiiɗo PDF:\ndocument_properties_version=Yamre PDF:\ndocument_properties_page_count=Limoore Kelle:\ndocument_properties_page_size=Ɓeto Hello:\ndocument_properties_page_size_unit_inches=nder\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=dariingo\ndocument_properties_page_size_orientation_landscape=wertiingo\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Ɓataake\ndocument_properties_page_size_name_legal=Laawol\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\ndocument_properties_close=Uddu\n\nprint_progress_message=Nana heboo winnditaade fiilannde…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Haaytu\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Toggilo Palal Sawndo\ntoggle_sidebar_notification.title=Palal sawndo (dokimaa oo ina waɗi taarngo/cinnde)\ntoggle_sidebar_label=Toggilo Palal Sawndo\ndocument_outline.title=Hollu Ƴiyal Fiilannde (dobdobo ngam wertude/taggude teme fof)\ndocument_outline_label=Toɓɓe Fiilannde\nattachments.title=Hollu Ɗisanɗe\nattachments_label=Ɗisanɗe\nthumbs.title=Hollu Dooɓe\nthumbs_label=Dooɓe\nfindbar.title=Yiylo e fiilannde\nfindbar_label=Yiytu\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Hello {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Dooɓre Hello {{page}}\n\n# Find panel button title and messages\nfind_input.title=Yiytu\nfind_input.placeholder=Yiylo nder dokimaa\nfind_previous.title=Yiylo cilol ɓennugol konngol ngol\nfind_previous_label=Ɓennuɗo\nfind_next.title=Yiylo cilol garowol konngol ngol\nfind_next_label=Yeeso\nfind_highlight=Jalbin fof\nfind_match_case_label=Jaaɓnu darnde\nfind_reached_top=Heɓii fuɗɗorde fiilannde, jokku faya les\nfind_reached_bottom=Heɓii hoore fiilannde, jokku faya les\nfind_not_found=Konngi njiyataa\n\n# Error panel labels\nerror_more_info=Ɓeydu Humpito\nerror_less_info=Ustu Humpito\nerror_close=Uddu\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Ɓatakuure: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fiilde: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Gorol: {{line}}\nrendering_error=Juumre waɗii tuma nde yoŋkittoo hello.\n\n# Predefined zoom values\npage_scale_width=Njaajeendi Hello\npage_scale_fit=Keƴeendi Hello\npage_scale_auto=Loongorde Jaajol\npage_scale_actual=Ɓetol Jaati\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Juumre\nloading_error=Juumre waɗii tuma nde loowata PDF oo.\ninvalid_file_error=Fiilde PDF moƴƴaani walla jiibii.\nmissing_file_error=Fiilde PDF ena ŋakki.\nunexpected_response_error=Jaabtol sarworde tijjinooka.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Siiftannde]\npassword_label=Naatu finnde ngam uddite ndee fiilde PDF.\npassword_invalid=Finnde moƴƴaani. Tiiɗno eto kadi.\npassword_ok=OK\npassword_cancel=Haaytu\n\nprinting_not_supported=Reentino: Winnditagol tammbitaaka no feewi e ndee wanngorde.\nprinting_not_ready=Reentino: PDF oo loowaaki haa timmi ngam winnditagol.\nweb_fonts_disabled=Ponte geese ko daaƴaaɗe: horiima huutoraade ponte PDF coomtoraaɗe.\ndocument_colors_not_allowed=Piilanɗe PDF njamiraaka yoo kuutoro goobuuji mum'en keeriiɗi: 'Yamir kello yoo kuutoro goobuuki keeriiɗi' koko daaƴaa e wanngorde ndee.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/fi/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Edellinen sivu\nprevious_label=Edellinen\nnext.title=Seuraava sivu\nnext_label=Seuraava\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Sivu\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=/ {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} / {{pagesCount}})\n\nzoom_out.title=Loitonna\nzoom_out_label=Loitonna\nzoom_in.title=Lähennä\nzoom_in_label=Lähennä\nzoom.title=Suurennus\npresentation_mode.title=Siirry esitystilaan\npresentation_mode_label=Esitystila\nopen_file.title=Avaa tiedosto\nopen_file_label=Avaa\nprint.title=Tulosta\nprint_label=Tulosta\ndownload.title=Lataa\ndownload_label=Lataa\nbookmark.title=Avoin ikkuna (kopioi tai avaa uuteen ikkunaan)\nbookmark_label=Avoin ikkuna\n\n# Secondary toolbar and context menu\ntools.title=Tools\ntools_label=Tools\nfirst_page.title=Siirry ensimmäiselle sivulle\nfirst_page.label=Siirry ensimmäiselle sivulle\nfirst_page_label=Siirry ensimmäiselle sivulle\nlast_page.title=Siirry viimeiselle sivulle\nlast_page.label=Siirry viimeiselle sivulle\nlast_page_label=Siirry viimeiselle sivulle\npage_rotate_cw.title=Kierrä oikealle\npage_rotate_cw.label=Kierrä oikealle\npage_rotate_cw_label=Kierrä oikealle\npage_rotate_ccw.title=Kierrä vasemmalle\npage_rotate_ccw.label=Kierrä vasemmalle\npage_rotate_ccw_label=Kierrä vasemmalle\n\ncursor_text_select_tool.title=Käytä tekstinvalintatyökalua\ncursor_text_select_tool_label=Tekstinvalintatyökalu\ncursor_hand_tool.title=Käytä käsityökalua\ncursor_hand_tool_label=Käsityökalu\n\nscroll_vertical.title=Käytä pystysuuntaista vieritystä\nscroll_vertical_label=Pystysuuntainen vieritys\nscroll_horizontal.title=Käytä vaakasuuntaista vieritystä\nscroll_horizontal_label=Vaakasuuntainen vieritys\nscroll_wrapped.title=Käytä rivittyvää vieritystä\nscroll_wrapped_label=Rivittyvä vieritys\n\nspread_none.title=Älä yhdistä sivuja aukeamiksi\nspread_none_label=Ei aukeamia\nspread_odd.title=Yhdistä sivut aukeamiksi alkaen parittomalta sivulta\nspread_odd_label=Parittomalta alkavat aukeamat\nspread_even.title=Yhdistä sivut aukeamiksi alkaen parilliselta sivulta\nspread_even_label=Parilliselta alkavat aukeamat\n\n# Document properties dialog box\ndocument_properties.title=Dokumentin ominaisuudet…\ndocument_properties_label=Dokumentin ominaisuudet…\ndocument_properties_file_name=Tiedostonimi:\ndocument_properties_file_size=Tiedoston koko:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} kt ({{size_b}} tavua)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} Mt ({{size_b}} tavua)\ndocument_properties_title=Otsikko:\ndocument_properties_author=Tekijä:\ndocument_properties_subject=Aihe:\ndocument_properties_keywords=Avainsanat:\ndocument_properties_creation_date=Luomispäivämäärä:\ndocument_properties_modification_date=Muokkauspäivämäärä:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Luoja:\ndocument_properties_producer=PDF-tuottaja:\ndocument_properties_version=PDF-versio:\ndocument_properties_page_count=Sivujen määrä:\ndocument_properties_page_size=Sivun koko:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=pysty\ndocument_properties_page_size_orientation_landscape=vaaka\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Nopea web-katselu:\ndocument_properties_linearized_yes=Kyllä\ndocument_properties_linearized_no=Ei\ndocument_properties_close=Sulje\n\nprint_progress_message=Valmistellaan dokumenttia tulostamista varten…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}} %\nprint_progress_close=Peruuta\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Näytä/piilota sivupaneeli\ntoggle_sidebar_notification.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys tai liitteitä)\ntoggle_sidebar_label=Näytä/piilota sivupaneeli\ndocument_outline.title=Näytä dokumentin sisällys (laajenna tai kutista kohdat kaksoisnapsauttamalla)\ndocument_outline_label=Dokumentin sisällys\nattachments.title=Näytä liitteet\nattachments_label=Liitteet\nthumbs.title=Näytä pienoiskuvat\nthumbs_label=Pienoiskuvat\nfindbar.title=Etsi dokumentista\nfindbar_label=Etsi\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Sivu {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Pienoiskuva sivusta {{page}}\n\n# Find panel button title and messages\nfind_input.title=Etsi\nfind_input.placeholder=Etsi dokumentista…\nfind_previous.title=Etsi hakusanan edellinen osuma\nfind_previous_label=Edellinen\nfind_next.title=Etsi hakusanan seuraava osuma\nfind_next_label=Seuraava\nfind_highlight=Korosta kaikki\nfind_match_case_label=Huomioi kirjainkoko\nfind_entire_word_label=Kokonaiset sanat\nfind_reached_top=Päästiin dokumentin alkuun, jatketaan lopusta\nfind_reached_bottom=Päästiin sivun loppuun, jatketaan alusta\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} / {{total}} osuma\nfind_match_count[two]={{current}} / {{total}} osumaa\nfind_match_count[few]={{current}} / {{total}} osumaa\nfind_match_count[many]={{current}} / {{total}} osumaa\nfind_match_count[other]={{current}} / {{total}} osumaa\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Enemmän kuin {{limit}} osumaa\nfind_match_count_limit[one]=Enemmän kuin {{limit}} osuma\nfind_match_count_limit[two]=Enemmän kuin {{limit}} osumaa\nfind_match_count_limit[few]=Enemmän kuin {{limit}} osumaa\nfind_match_count_limit[many]=Enemmän kuin {{limit}} osumaa\nfind_match_count_limit[other]=Enemmän kuin {{limit}} osumaa\nfind_not_found=Hakusanaa ei löytynyt\n\n# Error panel labels\nerror_more_info=Lisätietoja\nerror_less_info=Lisätietoja\nerror_close=Sulje\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (kooste: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Virheilmoitus: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pino: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Tiedosto: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Rivi: {{line}}\nrendering_error=Tapahtui virhe piirrettäessä sivua.\n\n# Predefined zoom values\npage_scale_width=Sivun leveys\npage_scale_fit=Koko sivu\npage_scale_auto=Automaattinen suurennus\npage_scale_actual=Todellinen koko\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}} %\n\n# Loading indicator messages\nloading_error_indicator=Virhe\nloading_error=Tapahtui virhe ladattaessa PDF-tiedostoa.\ninvalid_file_error=Virheellinen tai vioittunut PDF-tiedosto.\nmissing_file_error=Puuttuva PDF-tiedosto.\nunexpected_response_error=Odottamaton vastaus palvelimelta.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=Kirjoita PDF-tiedoston salasana.\npassword_invalid=Virheellinen salasana. Yritä uudestaan.\npassword_ok=OK\npassword_cancel=Peruuta\n\nprinting_not_supported=Varoitus: Selain ei tue kaikkia tulostustapoja.\nprinting_not_ready=Varoitus: PDF-tiedosto ei ole vielä latautunut kokonaan, eikä sitä voi vielä tulostaa.\nweb_fonts_disabled=Verkkosivujen omat kirjasinlajit on estetty: ei voida käyttää upotettuja PDF-kirjasinlajeja.\ndocument_colors_not_allowed=PDF-dokumenttien ei ole sallittua käyttää omia värejään: Asetusta ”Sivut saavat käyttää omia värejään oletusten sijaan” ei ole valittu selaimen asetuksissa.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/fr/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Page précédente\nprevious_label=Précédent\nnext.title=Page suivante\nnext_label=Suivant\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Page\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=sur {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} sur {{pagesCount}})\n\nzoom_out.title=Zoom arrière\nzoom_out_label=Zoom arrière\nzoom_in.title=Zoom avant\nzoom_in_label=Zoom avant\nzoom.title=Zoom\npresentation_mode.title=Basculer en mode présentation\npresentation_mode_label=Mode présentation\nopen_file.title=Ouvrir le fichier\nopen_file_label=Ouvrir le fichier\nprint.title=Imprimer\nprint_label=Imprimer\ndownload.title=Télécharger\ndownload_label=Télécharger\nbookmark.title=Affichage courant (copier ou ouvrir dans une nouvelle fenêtre)\nbookmark_label=Affichage actuel\n\n# Secondary toolbar and context menu\ntools.title=Outils\ntools_label=Outils\nfirst_page.title=Aller à la première page\nfirst_page.label=Aller à la première page\nfirst_page_label=Aller à la première page\nlast_page.title=Aller à la dernière page\nlast_page.label=Aller à la dernière page\nlast_page_label=Aller à la dernière page\npage_rotate_cw.title=Rotation horaire\npage_rotate_cw.label=Rotation horaire\npage_rotate_cw_label=Rotation horaire\npage_rotate_ccw.title=Rotation antihoraire\npage_rotate_ccw.label=Rotation antihoraire\npage_rotate_ccw_label=Rotation antihoraire\n\ncursor_text_select_tool.title=Activer l’outil de sélection de texte\ncursor_text_select_tool_label=Outil de sélection de texte\ncursor_hand_tool.title=Activer l’outil main\ncursor_hand_tool_label=Outil main\n\nscroll_vertical.title=Utiliser le défilement vertical\nscroll_vertical_label=Défilement vertical\nscroll_horizontal.title=Utiliser le défilement horizontal\nscroll_horizontal_label=Défilement horizontal\nscroll_wrapped.title=Utiliser le défilement par bloc\nscroll_wrapped_label=Défilement par bloc\n\nspread_none.title=Ne pas afficher les pages deux à deux\nspread_none_label=Pas de double affichage\nspread_odd.title=Afficher les pages par deux, impaires à gauche\nspread_odd_label=Doubles pages, impaires à gauche\nspread_even.title=Afficher les pages par deux, paires à gauche\nspread_even_label=Doubles pages, paires à gauche\n\n# Document properties dialog box\ndocument_properties.title=Propriétés du document…\ndocument_properties_label=Propriétés du document…\ndocument_properties_file_name=Nom du fichier :\ndocument_properties_file_size=Taille du fichier :\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} Ko ({{size_b}} octets)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} Mo ({{size_b}} octets)\ndocument_properties_title=Titre :\ndocument_properties_author=Auteur :\ndocument_properties_subject=Sujet :\ndocument_properties_keywords=Mots-clés :\ndocument_properties_creation_date=Date de création :\ndocument_properties_modification_date=Modifié le :\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}} à {{time}}\ndocument_properties_creator=Créé par :\ndocument_properties_producer=Outil de conversion PDF :\ndocument_properties_version=Version PDF :\ndocument_properties_page_count=Nombre de pages :\ndocument_properties_page_size=Taille de la page :\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portrait\ndocument_properties_page_size_orientation_landscape=paysage\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=lettre\ndocument_properties_page_size_name_legal=document juridique\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Affichage rapide des pages web :\ndocument_properties_linearized_yes=Oui\ndocument_properties_linearized_no=Non\ndocument_properties_close=Fermer\n\nprint_progress_message=Préparation du document pour l’impression…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}} %\nprint_progress_close=Annuler\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Afficher/Masquer le panneau latéral\ntoggle_sidebar_notification.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes)\ntoggle_sidebar_label=Afficher/Masquer le panneau latéral\ndocument_outline.title=Afficher les signets du document (double-cliquer pour développer/réduire tous les éléments)\ndocument_outline_label=Signets du document\nattachments.title=Afficher les pièces jointes\nattachments_label=Pièces jointes\nthumbs.title=Afficher les vignettes\nthumbs_label=Vignettes\nfindbar.title=Rechercher dans le document\nfindbar_label=Rechercher\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Page {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Vignette de la page {{page}}\n\n# Find panel button title and messages\nfind_input.title=Rechercher\nfind_input.placeholder=Rechercher dans le document…\nfind_previous.title=Trouver l’occurrence précédente de la phrase\nfind_previous_label=Précédent\nfind_next.title=Trouver la prochaine occurrence de la phrase\nfind_next_label=Suivant\nfind_highlight=Tout surligner\nfind_match_case_label=Respecter la casse\nfind_entire_word_label=Mots entiers\nfind_reached_top=Haut de la page atteint, poursuite depuis la fin\nfind_reached_bottom=Bas de la page atteint, poursuite au début\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]=Occurrence {{current}} sur {{total}}\nfind_match_count[two]=Occurrence {{current}} sur {{total}}\nfind_match_count[few]=Occurrence {{current}} sur {{total}}\nfind_match_count[many]=Occurrence {{current}} sur {{total}}\nfind_match_count[other]=Occurrence {{current}} sur {{total}}\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Plus de {{limit}} correspondances\nfind_match_count_limit[one]=Plus de {{limit}} correspondance\nfind_match_count_limit[two]=Plus de {{limit}} correspondances\nfind_match_count_limit[few]=Plus de {{limit}} correspondances\nfind_match_count_limit[many]=Plus de {{limit}} correspondances\nfind_match_count_limit[other]=Plus de {{limit}} correspondances\nfind_not_found=Phrase introuvable\n\n# Error panel labels\nerror_more_info=Plus d’informations\nerror_less_info=Moins d’informations\nerror_close=Fermer\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (identifiant de compilation : {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Message : {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pile : {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fichier : {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Ligne : {{line}}\nrendering_error=Une erreur s’est produite lors de l’affichage de la page.\n\n# Predefined zoom values\npage_scale_width=Pleine largeur\npage_scale_fit=Page entière\npage_scale_auto=Zoom automatique\npage_scale_actual=Taille réelle\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}} %\n\n# Loading indicator messages\nloading_error_indicator=Erreur\nloading_error=Une erreur s’est produite lors du chargement du fichier PDF.\ninvalid_file_error=Fichier PDF invalide ou corrompu.\nmissing_file_error=Fichier PDF manquant.\nunexpected_response_error=Réponse inattendue du serveur.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Annotation {{type}}]\npassword_label=Veuillez saisir le mot de passe pour ouvrir ce fichier PDF.\npassword_invalid=Mot de passe incorrect. Veuillez réessayer.\npassword_ok=OK\npassword_cancel=Annuler\n\nprinting_not_supported=Attention : l’impression n’est pas totalement prise en charge par ce navigateur.\nprinting_not_ready=Attention : le PDF n’est pas entièrement chargé pour pouvoir l’imprimer.\nweb_fonts_disabled=Les polices web sont désactivées : impossible d’utiliser les polices intégrées au PDF.\ndocument_colors_not_allowed=Les documents PDF ne peuvent pas utiliser leurs propres couleurs : « Autoriser les pages web à utiliser leurs propres couleurs » est désactivé dans le navigateur.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/fy-NL/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Foarige side\nprevious_label=Foarige\nnext.title=Folgjende side\nnext_label=Folgjende\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Side\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=fa {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} fan {{pagesCount}})\n\nzoom_out.title=Utzoome\nzoom_out_label=Utzoome\nzoom_in.title=Ynzoome\nzoom_in_label=Ynzoome\nzoom.title=Zoome\npresentation_mode.title=Wikselje nei presintaasjemodus\npresentation_mode_label=Presintaasjemodus\nopen_file.title=Bestân iepenje\nopen_file_label=Iepenje\nprint.title=Ofdrukke\nprint_label=Ofdrukke\ndownload.title=Downloade\ndownload_label=Downloade\nbookmark.title=Aktuele finster (kopiearje of iepenje yn nij finster)\nbookmark_label=Aktuele finster\n\n# Secondary toolbar and context menu\ntools.title=Ark\ntools_label=Ark\nfirst_page.title=Gean nei earste side\nfirst_page.label=Nei earste side gean\nfirst_page_label=Gean nei earste side\nlast_page.title=Gean nei lêste side\nlast_page.label=Nei lêste side gean\nlast_page_label=Gean nei lêste side\npage_rotate_cw.title=Rjochtsom draaie\npage_rotate_cw.label=Rjochtsom draaie\npage_rotate_cw_label=Rjochtsom draaie\npage_rotate_ccw.title=Loftsom draaie\npage_rotate_ccw.label=Loftsom draaie\npage_rotate_ccw_label=Loftsom draaie\n\ncursor_text_select_tool.title=Tekstseleksjehelpmiddel ynskeakelje\ncursor_text_select_tool_label=Tekstseleksjehelpmiddel\ncursor_hand_tool.title=Hânhelpmiddel ynskeakelje\ncursor_hand_tool_label=Hânhelpmiddel\n\nscroll_vertical.title=Fertikaal skowe brûke\nscroll_vertical_label=Fertikaal skowe\nscroll_horizontal.title=Horizontaal skowe brûke\nscroll_horizontal_label=Horizontaal skowe\nscroll_wrapped.title=Skowe mei oersjoch brûke\nscroll_wrapped_label=Skowe mei oersjoch\n\nspread_none.title=Sidesprieding net gearfetsje\nspread_none_label=Gjin sprieding\nspread_odd.title=Sidesprieding gearfetsje te starten mei ûneven nûmers\nspread_odd_label=Uneven sprieding\nspread_even.title=Sidesprieding gearfetsje te starten mei even nûmers\nspread_even_label=Even sprieding\n\n# Document properties dialog box\ndocument_properties.title=Dokuminteigenskippen…\ndocument_properties_label=Dokuminteigenskippen…\ndocument_properties_file_name=Bestânsnamme:\ndocument_properties_file_size=Bestânsgrutte:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Titel:\ndocument_properties_author=Auteur:\ndocument_properties_subject=Underwerp:\ndocument_properties_keywords=Kaaiwurden:\ndocument_properties_creation_date=Oanmaakdatum:\ndocument_properties_modification_date=Bewurkingsdatum:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Makker:\ndocument_properties_producer=PDF-makker:\ndocument_properties_version=PDF-ferzje:\ndocument_properties_page_count=Siden:\ndocument_properties_page_size=Sideformaat:\ndocument_properties_page_size_unit_inches=yn\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=steand\ndocument_properties_page_size_orientation_landscape=lizzend\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Juridysk\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Flugge webwerjefte:\ndocument_properties_linearized_yes=Ja\ndocument_properties_linearized_no=Nee\ndocument_properties_close=Slute\n\nprint_progress_message=Dokumint tariede oar ôfdrukken…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Annulearje\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Sidebalke yn-/útskeakelje\ntoggle_sidebar_notification.title=Sidebalke yn-/útskeakelje (dokumint befettet outline/bylagen)\ntoggle_sidebar_label=Sidebalke yn-/útskeakelje\ndocument_outline.title=Dokumintoersjoch toane (dûbelklik om alle items út/yn te klappen)\ndocument_outline_label=Dokumintoersjoch\nattachments.title=Bylagen toane\nattachments_label=Bylagen\nthumbs.title=Foarbylden toane\nthumbs_label=Foarbylden\nfindbar.title=Sykje yn dokumint\nfindbar_label=Sykje\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Side {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Foarbyld fan side {{page}}\n\n# Find panel button title and messages\nfind_input.title=Sykje\nfind_input.placeholder=Sykje yn dokumint…\nfind_previous.title=It foarige foarkommen fan de tekst sykje\nfind_previous_label=Foarige\nfind_next.title=It folgjende foarkommen fan de tekst sykje\nfind_next_label=Folgjende\nfind_highlight=Alles markearje\nfind_match_case_label=Haadlettergefoelich\nfind_entire_word_label=Hiele wurden\nfind_reached_top=Boppekant fan dokumint berikt, trochgien fan ûnder ôf\nfind_reached_bottom=Ein fan dokumint berikt, trochgien fan boppe ôf\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} fan {{total}} oerienkomst\nfind_match_count[two]={{current}} fan {{total}} oerienkomsten\nfind_match_count[few]={{current}} fan {{total}} oerienkomsten\nfind_match_count[many]={{current}} fan {{total}} oerienkomsten\nfind_match_count[other]={{current}} fan {{total}} oerienkomsten\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Mear as {{limit}} oerienkomsten\nfind_match_count_limit[one]=Mear as {{limit}} oerienkomst\nfind_match_count_limit[two]=Mear as {{limit}} oerienkomsten\nfind_match_count_limit[few]=Mear as {{limit}} oerienkomsten\nfind_match_count_limit[many]=Mear as {{limit}} oerienkomsten\nfind_match_count_limit[other]=Mear as {{limit}} oerienkomsten\nfind_not_found=Tekst net fûn\n\n# Error panel labels\nerror_more_info=Mear ynformaasje\nerror_less_info=Minder ynformaasje\nerror_close=Slute\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js f{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Berjocht: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Bestân: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Rigel: {{line}}\nrendering_error=Der is in flater bard by it renderjen fan de side.\n\n# Predefined zoom values\npage_scale_width=Sidebreedte\npage_scale_fit=Hiele side\npage_scale_auto=Automatysk zoome\npage_scale_actual=Werklike grutte\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Flater\nloading_error=Der is in flater bard by it laden fan de PDF.\ninvalid_file_error=Ynfalide of korruptearre PDF-bestân.\nmissing_file_error=PDF-bestân ûntbrekt.\nunexpected_response_error=Unferwacht serverantwurd.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}}-annotaasje]\npassword_label=Jou it wachtwurd om dit PDF-bestân te iepenjen.\npassword_invalid=Ferkeard wachtwurd. Probearje opnij.\npassword_ok=OK\npassword_cancel=Annulearje\n\nprinting_not_supported=Warning: Printen is net folslein stipe troch dizze browser.\nprinting_not_ready=Warning: PDF is net folslein laden om ôf te drukken.\nweb_fonts_disabled=Weblettertypen binne útskeakele: gebrûk fan ynsluten PDF-lettertypen is net mooglik.\ndocument_colors_not_allowed=PDF-dokuminten meie harren eigen kleuren net brûke: ‘Siden tastean om harren eigen kleuren te kiezen’ is útskeakele yn de browser.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ga-IE/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=An Leathanach Roimhe Seo\nprevious_label=Roimhe Seo\nnext.title=An Chéad Leathanach Eile\nnext_label=Ar Aghaidh\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Leathanach\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=as {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} as {{pagesCount}})\n\nzoom_out.title=Súmáil Amach\nzoom_out_label=Súmáil Amach\nzoom_in.title=Súmáil Isteach\nzoom_in_label=Súmáil Isteach\nzoom.title=Súmáil\npresentation_mode.title=Úsáid an Mód Láithreoireachta\npresentation_mode_label=Mód Láithreoireachta\nopen_file.title=Oscail Comhad\nopen_file_label=Oscail\nprint.title=Priontáil\nprint_label=Priontáil\ndownload.title=Íoslódáil\ndownload_label=Íoslódáil\nbookmark.title=An t-amharc reatha (cóipeáil nó oscail i bhfuinneog nua)\nbookmark_label=An tAmharc Reatha\n\n# Secondary toolbar and context menu\ntools.title=Uirlisí\ntools_label=Uirlisí\nfirst_page.title=Go dtí an chéad leathanach\nfirst_page.label=Go dtí an chéad leathanach\nfirst_page_label=Go dtí an chéad leathanach\nlast_page.title=Go dtí an leathanach deiridh\nlast_page.label=Go dtí an leathanach deiridh\nlast_page_label=Go dtí an leathanach deiridh\npage_rotate_cw.title=Rothlaigh ar deiseal\npage_rotate_cw.label=Rothlaigh ar deiseal\npage_rotate_cw_label=Rothlaigh ar deiseal\npage_rotate_ccw.title=Rothlaigh ar tuathal\npage_rotate_ccw.label=Rothlaigh ar tuathal\npage_rotate_ccw_label=Rothlaigh ar tuathal\n\ncursor_text_select_tool.title=Cumasaigh an Uirlis Roghnaithe Téacs\ncursor_text_select_tool_label=Uirlis Roghnaithe Téacs\ncursor_hand_tool.title=Cumasaigh an Uirlis Láimhe\ncursor_hand_tool_label=Uirlis Láimhe\n\n# Document properties dialog box\ndocument_properties.title=Airíonna na Cáipéise…\ndocument_properties_label=Airíonna na Cáipéise…\ndocument_properties_file_name=Ainm an chomhaid:\ndocument_properties_file_size=Méid an chomhaid:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} kB ({{size_b}} beart)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} beart)\ndocument_properties_title=Teideal:\ndocument_properties_author=Údar:\ndocument_properties_subject=Ábhar:\ndocument_properties_keywords=Eochairfhocail:\ndocument_properties_creation_date=Dáta Cruthaithe:\ndocument_properties_modification_date=Dáta Athraithe:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Cruthaitheoir:\ndocument_properties_producer=Cruthaitheoir an PDF:\ndocument_properties_version=Leagan PDF:\ndocument_properties_page_count=Líon Leathanach:\ndocument_properties_close=Dún\n\nprint_progress_message=Cáipéis á hullmhú le priontáil…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cealaigh\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Scoránaigh an Barra Taoibh\ntoggle_sidebar_notification.title=Scoránaigh an Barra Taoibh (achoimre/iatáin sa cháipéis)\ntoggle_sidebar_label=Scoránaigh an Barra Taoibh\ndocument_outline.title=Taispeáin Imlíne na Cáipéise (déchliceáil chun chuile rud a leathnú nó a laghdú)\ndocument_outline_label=Creatlach na Cáipéise\nattachments.title=Taispeáin Iatáin\nattachments_label=Iatáin\nthumbs.title=Taispeáin Mionsamhlacha\nthumbs_label=Mionsamhlacha\nfindbar.title=Aimsigh sa Cháipéis\nfindbar_label=Aimsigh\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Leathanach {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Mionsamhail Leathanaigh {{page}}\n\n# Find panel button title and messages\nfind_input.title=Aimsigh\nfind_input.placeholder=Aimsigh sa cháipéis…\nfind_previous.title=Aimsigh an sampla roimhe seo den nath seo\nfind_previous_label=Roimhe seo\nfind_next.title=Aimsigh an chéad sampla eile den nath sin\nfind_next_label=Ar aghaidh\nfind_highlight=Aibhsigh uile\nfind_match_case_label=Cásíogair\nfind_reached_top=Ag barr na cáipéise, ag leanúint ón mbun\nfind_reached_bottom=Ag bun na cáipéise, ag leanúint ón mbarr\nfind_not_found=Frása gan aimsiú\n\n# Error panel labels\nerror_more_info=Tuilleadh Eolais\nerror_less_info=Níos Lú Eolais\nerror_close=Dún\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Teachtaireacht: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Cruach: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Comhad: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Líne: {{line}}\nrendering_error=Tharla earráid agus an leathanach á leagan amach.\n\n# Predefined zoom values\npage_scale_width=Leithead Leathanaigh\npage_scale_fit=Laghdaigh go dtí an Leathanach\npage_scale_auto=Súmáil Uathoibríoch\npage_scale_actual=Fíormhéid\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Earráid\nloading_error=Tharla earráid agus an cháipéis PDF á lódáil.\ninvalid_file_error=Comhad neamhbhailí nó truaillithe PDF.\nmissing_file_error=Comhad PDF ar iarraidh.\nunexpected_response_error=Freagra ón bhfreastalaí nach rabhthas ag súil leis.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anótáil {{type}}]\npassword_label=Cuir an focal faire isteach chun an comhad PDF seo a oscailt.\npassword_invalid=Focal faire mícheart. Déan iarracht eile.\npassword_ok=OK\npassword_cancel=Cealaigh\n\nprinting_not_supported=Rabhadh: Ní thacaíonn an brabhsálaí le priontáil go hiomlán.\nprinting_not_ready=Rabhadh: Ní féidir an PDF a phriontáil go dtí go mbeidh an cháipéis iomlán lódáilte.\nweb_fonts_disabled=Tá clófhoirne Gréasáin díchumasaithe: ní féidir clófhoirne leabaithe PDF a úsáid.\ndocument_colors_not_allowed=Níl cead ag cáipéisí PDF a ndathanna féin a roghnú: tá “Tabhair cead do leathanaigh a ndathanna féin a roghnú” díchumasaithe sa mbrabhsálaí.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/gd/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=An duilleag roimhe\nprevious_label=Air ais\nnext.title=An ath-dhuilleag\nnext_label=Air adhart\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Duilleag\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=à {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} à {{pagesCount}})\n\nzoom_out.title=Sùm a-mach\nzoom_out_label=Sùm a-mach\nzoom_in.title=Sùm a-steach\nzoom_in_label=Sùm a-steach\nzoom.title=Sùm\npresentation_mode.title=Gearr leum dhan mhodh taisbeanaidh\npresentation_mode_label=Am modh taisbeanaidh\nopen_file.title=Fosgail faidhle\nopen_file_label=Fosgail\nprint.title=Clò-bhuail\nprint_label=Clò-bhuail\ndownload.title=Luchdaich a-nuas\ndownload_label=Luchdaich a-nuas\nbookmark.title=An sealladh làithreach (dèan lethbhreac no fosgail e ann an uinneag ùr)\nbookmark_label=An sealladh làithreach\n\n# Secondary toolbar and context menu\ntools.title=Innealan\ntools_label=Innealan\nfirst_page.title=Rach gun chiad duilleag\nfirst_page.label=Rach gun chiad duilleag\nfirst_page_label=Rach gun chiad duilleag\nlast_page.title=Rach gun duilleag mu dheireadh\nlast_page.label=Rach gun duilleag mu dheireadh\nlast_page_label=Rach gun duilleag mu dheireadh\npage_rotate_cw.title=Cuairtich gu deiseil\npage_rotate_cw.label=Cuairtich gu deiseil\npage_rotate_cw_label=Cuairtich gu deiseil\npage_rotate_ccw.title=Cuairtich gu tuathail\npage_rotate_ccw.label=Cuairtich gu tuathail\npage_rotate_ccw_label=Cuairtich gu tuathail\n\ncursor_text_select_tool.title=Cuir an comas inneal taghadh an teacsa\ncursor_text_select_tool_label=Inneal taghadh an teacsa\ncursor_hand_tool.title=Cuir inneal na làimhe an comas\ncursor_hand_tool_label=Inneal na làimhe\n\nscroll_vertical.title=Cleachd sgroladh inghearach\nscroll_vertical_label=Sgroladh inghearach\nscroll_horizontal.title=Cleachd sgroladh còmhnard\nscroll_horizontal_label=Sgroladh còmhnard\nscroll_wrapped.title=Cleachd sgroladh paisgte\nscroll_wrapped_label=Sgroladh paisgte\n\nspread_none.title=Na cuir còmhla sgoileadh dhuilleagan\nspread_none_label=Gun sgaoileadh dhuilleagan\nspread_odd.title=Cuir còmhla duilleagan sgaoilte a thòisicheas le duilleagan aig a bheil àireamh chorr\nspread_odd_label=Sgaoileadh dhuilleagan corra\nspread_even.title=Cuir còmhla duilleagan sgaoilte a thòisicheas le duilleagan aig a bheil àireamh chothrom\nspread_even_label=Sgaoileadh dhuilleagan cothrom\n\n# Document properties dialog box\ndocument_properties.title=Roghainnean na sgrìobhainne…\ndocument_properties_label=Roghainnean na sgrìobhainne…\ndocument_properties_file_name=Ainm an fhaidhle:\ndocument_properties_file_size=Meud an fhaidhle:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Tiotal:\ndocument_properties_author=Ùghdar:\ndocument_properties_subject=Cuspair:\ndocument_properties_keywords=Faclan-luirg:\ndocument_properties_creation_date=Latha a chruthachaidh:\ndocument_properties_modification_date=Latha atharrachaidh:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Cruthadair:\ndocument_properties_producer=Saothraiche a' PDF:\ndocument_properties_version=Tionndadh a' PDF:\ndocument_properties_page_count=Àireamh de dhuilleagan:\ndocument_properties_page_size=Meud na duilleige:\ndocument_properties_page_size_unit_inches=ann an\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portraid\ndocument_properties_page_size_orientation_landscape=dreach-tìre\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Litir\ndocument_properties_page_size_name_legal=Laghail\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\ndocument_properties_close=Dùin\n\nprint_progress_message=Ag ullachadh na sgrìobhainn airson clò-bhualadh…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Sguir dheth\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Toglaich am bàr-taoibh\ntoggle_sidebar_notification.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain aig an sgrìobhainn)\ntoggle_sidebar_label=Toglaich am bàr-taoibh\ndocument_outline.title=Seall oir-loidhne na sgrìobhainn (dèan briogadh dùbailte airson a h-uile nì a leudachadh/a cho-theannadh)\ndocument_outline_label=Oir-loidhne na sgrìobhainne\nattachments.title=Seall na ceanglachain\nattachments_label=Ceanglachain\nthumbs.title=Seall na dealbhagan\nthumbs_label=Dealbhagan\nfindbar.title=Lorg san sgrìobhainn\nfindbar_label=Lorg\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Duilleag a {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Dealbhag duilleag a {{page}}\n\n# Find panel button title and messages\nfind_input.title=Lorg\nfind_input.placeholder=Lorg san sgrìobhainn...\nfind_previous.title=Lorg làthair roimhe na h-abairt seo\nfind_previous_label=Air ais\nfind_next.title=Lorg ath-làthair na h-abairt seo\nfind_next_label=Air adhart\nfind_highlight=Soillsich a h-uile\nfind_match_case_label=Aire do litrichean mòra is beaga\nfind_reached_top=Ràinig sinn barr na duilleige, a' leantainn air adhart o bhonn na duilleige\nfind_reached_bottom=Ràinig sinn bonn na duilleige, a' leantainn air adhart o bharr na duilleige\nfind_not_found=Cha deach an abairt a lorg\n\n# Error panel labels\nerror_more_info=Barrachd fiosrachaidh\nerror_less_info=Nas lugha de dh'fhiosrachadh\nerror_close=Dùin\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Teachdaireachd: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stac: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Faidhle: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Loidhne: {{line}}\nrendering_error=Thachair mearachd rè reandaradh na duilleige.\n\n# Predefined zoom values\npage_scale_width=Leud na duilleige\npage_scale_fit=Freagair ri meud na duilleige\npage_scale_auto=Sùm fèin-obrachail\npage_scale_actual=Am fìor-mheud\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Mearachd\nloading_error=Thachair mearachd rè luchdadh a' PDF.\ninvalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte.\nmissing_file_error=Faidhle PDF a tha a dhìth.\nunexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Nòtachadh {{type}}]\npassword_label=Cuir a-steach am facal-faire gus am faidhle PDF seo fhosgladh.\npassword_invalid=Tha am facal-faire cearr. Nach fheuch thu ris a-rithist?\npassword_ok=Ceart ma-tha\npassword_cancel=Sguir dheth\n\nprinting_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur làn-taic ri clò-bhualadh.\nprinting_not_ready=Rabhadh: Cha deach am PDF a luchdadh gu tur airson clò-bhualadh.\nweb_fonts_disabled=Tha cruthan-clò lìn à comas: Chan urrainn dhuinn cruthan-clò PDF leabaichte a chleachdadh.\ndocument_colors_not_allowed=Chan fhaod sgrìobhainnean PDF na dathan aca fhèin a chleachdadh: Tha “Leig le duilleagan na dathan aca fhèin a chleachdadh” à comas sa bhrabhsair.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/gl/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Páxina anterior\nprevious_label=Anterior\nnext.title=Seguinte páxina\nnext_label=Seguinte\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Reducir\nzoom_out_label=Reducir\nzoom_in.title=Ampliar\nzoom_in_label=Ampliar\nzoom.title=Zoom\npresentation_mode.title=Cambiar ao modo presentación\npresentation_mode_label=Modo presentación\nopen_file.title=Abrir ficheiro\nopen_file_label=Abrir\nprint.title=Imprimir\nprint_label=Imprimir\ndownload.title=Descargar\ndownload_label=Descargar\nbookmark.title=Vista actual (copiar ou abrir nunha nova xanela)\nbookmark_label=Vista actual\n\n# Secondary toolbar and context menu\ntools.title=Ferramentas\ntools_label=Ferramentas\nfirst_page.title=Ir á primeira páxina\nfirst_page.label=Ir á primeira páxina\nfirst_page_label=Ir á primeira páxina\nlast_page.title=Ir á última páxina\nlast_page.label=Ir á última páxina\nlast_page_label=Ir á última páxina\npage_rotate_cw.title=Rotar no sentido das agullas do reloxo\npage_rotate_cw.label=Rotar no sentido das agullas do reloxo\npage_rotate_cw_label=Rotar no sentido das agullas do reloxo\npage_rotate_ccw.title=Rotar no sentido contrario ás agullas do reloxo\npage_rotate_ccw.label=Rotar no sentido contrario ás agullas do reloxo\npage_rotate_ccw_label=Rotar no sentido contrario ás agullas do reloxo\n\n\n# Document properties dialog box\ndocument_properties.title=Propiedades do documento…\ndocument_properties_label=Propiedades do documento…\ndocument_properties_file_name=Nome do ficheiro:\ndocument_properties_file_size=Tamaño do ficheiro:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Título:\ndocument_properties_author=Autor:\ndocument_properties_subject=Asunto: \ndocument_properties_keywords=Palabras clave:\ndocument_properties_creation_date=Data de creación:\ndocument_properties_modification_date=Data de modificación:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creado por:\ndocument_properties_producer=Xenerador do PDF:\ndocument_properties_version=Versión de PDF:\ndocument_properties_page_count=Número de páxinas:\ndocument_properties_close=Pechar\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Amosar/agochar a barra lateral\ntoggle_sidebar_label=Amosar/agochar a barra lateral\nattachments.title=Amosar anexos\nattachments_label=Anexos\nthumbs.title=Amosar miniaturas\nthumbs_label=Miniaturas\nfindbar.title=Atopar no documento\nfindbar_label=Atopar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Páxina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura da páxina {{page}}\n\n# Find panel button title and messages\nfind_previous.title=Atopar a anterior aparición da frase\nfind_previous_label=Anterior\nfind_next.title=Atopar a seguinte aparición da frase\nfind_next_label=Seguinte\nfind_highlight=Realzar todo\nfind_match_case_label=Diferenciar maiúsculas de minúsculas\nfind_reached_top=Chegouse ao inicio do documento, continuar desde o final\nfind_reached_bottom=Chegouse ao final do documento, continuar desde o inicio\nfind_not_found=Non se atopou a frase\n\n# Error panel labels\nerror_more_info=Máis información\nerror_less_info=Menos información\nerror_close=Pechar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (Identificador da compilación: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mensaxe: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Ficheiro: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Liña: {{line}}\nrendering_error=Produciuse un erro ao representar a páxina.\n\n# Predefined zoom values\npage_scale_width=Largura da páxina\npage_scale_fit=Axuste de páxina\npage_scale_auto=Zoom automático\npage_scale_actual=Tamaño actual\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Erro\nloading_error=Produciuse un erro ao cargar o PDF.\ninvalid_file_error=Ficheiro PDF danado ou incorrecto.\nmissing_file_error=Falta o ficheiro PDF.\nunexpected_response_error=Resposta inesperada do servidor.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotación {{type}}]\npassword_label=Escriba o contrasinal para abrir este ficheiro PDF.\npassword_invalid=Contrasinal incorrecto. Tente de novo.\npassword_ok=Aceptar\npassword_cancel=Cancelar\n\nprinting_not_supported=Aviso: A impresión non é compatíbel de todo con este navegador.\nprinting_not_ready=Aviso: O PDF non se cargou completamente para imprimirse.\nweb_fonts_disabled=Desactiváronse as fontes web:  foi imposíbel usar as fontes incrustadas no PDF.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/gn/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Kuatiarogue mboyvegua\nprevious_label=Mboyvegua\nnext.title=Kuatiarogue upeigua\nnext_label=Upeigua\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Kuatiarogue\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} gui\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} of {{pagesCount}})\n\nzoom_out.title=Momichĩ\nzoom_out_label=Momichĩ\nzoom_in.title=Mbotuicha\nzoom_in_label=Mbotuicha\nzoom.title=Tuichakue\npresentation_mode.title=Jehechauka reko moambue\npresentation_mode_label=Jehechauka reko\nopen_file.title=Marandurendápe jeike\nopen_file_label=Jeike\nprint.title=Monguatia\nprint_label=Monguatia\ndownload.title=Mboguejy\ndownload_label=Mboguejy\nbookmark.title=Ag̃agua jehecha (mbohasarã térã eike peteĩ ovetã pyahúpe)\nbookmark_label=Ag̃agua jehecha\n\n# Secondary toolbar and context menu\ntools.title=Tembipuru\ntools_label=Tembipuru\nfirst_page.title=Kuatiarogue ñepyrũme jeho\nfirst_page.label=Kuatiarogue ñepyrũme jeho\nfirst_page_label=Kuatiarogue ñepyrũme jeho\nlast_page.title=Kuatiarogue pahápe jeho\nlast_page.label=Kuatiarogue pahápe jeho\nlast_page_label=Kuatiarogue pahápe jeho\npage_rotate_cw.title=Aravóicha mbojere\npage_rotate_cw.label=Aravóicha mbojere\npage_rotate_cw_label=Aravóicha mbojere\npage_rotate_ccw.title=Aravo rapykue gotyo mbojere\npage_rotate_ccw.label=Aravo rapykue gotyo mbojere\npage_rotate_ccw_label=Aravo rapykue gotyo mbojere\n\ncursor_text_select_tool.title=Emyandy moñe'ẽrã jeporavo rembipuru\ncursor_text_select_tool_label=Moñe'ẽrã jeporavo rembipuru\ncursor_hand_tool.title=Tembipuru po pegua myandy\ncursor_hand_tool_label=Tembipuru po pegua\n\nscroll_vertical.title=Eipuru jeku’e ykeguáva\nscroll_vertical_label=Jeku’e ykeguáva\nscroll_horizontal.title=Eipuru jeku’e yvate gotyo\nscroll_horizontal_label=Jeku’e yvate gotyo\nscroll_wrapped.title=Eipuru jeku’e mbohyrupyre\nscroll_wrapped_label=Jeku’e mbohyrupyre\n\nspread_none.title=Ani ejuaju spreads kuatiarogue ndive\nspread_none_label=Spreads ỹre\nspread_odd.title=Embojuaju kuatiarogue jepysokue eñepyrũvo kuatiarogue impar-vagui\nspread_odd_label=Spreads impar\nspread_even.title=Embojuaju kuatiarogue jepysokue eñepyrũvo kuatiarogue par-vagui\nspread_even_label=Ipukuve uvei\n\n# Document properties dialog box\ndocument_properties.title=Kuatia mba'etee…\ndocument_properties_label=Kuatia mba'etee…\ndocument_properties_file_name=Marandurenda réra:\ndocument_properties_file_size=Marandurenda tuichakue:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Teratee:\ndocument_properties_author=Apohára:\ndocument_properties_subject=Mba'egua:\ndocument_properties_keywords=Jehero:\ndocument_properties_creation_date=Teñoihague arange:\ndocument_properties_modification_date=Iñambue hague arange:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Apo'ypyha:\ndocument_properties_producer=PDF mbosako'iha:\ndocument_properties_version=PDF mbojuehegua:\ndocument_properties_page_count=Kuatiarogue papapy:\ndocument_properties_page_size=Kuatiarogue tuichakue:\ndocument_properties_page_size_unit_inches=Amo\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=Oĩháicha\ndocument_properties_page_size_orientation_landscape=apaisado\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Kuatiañe'ẽ\ndocument_properties_page_size_name_legal=Tee\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Ñanduti jahecha pya’e:\ndocument_properties_linearized_yes=Añete\ndocument_properties_linearized_no=Ahániri\ndocument_properties_close=Mboty\n\nprint_progress_message=Embosako'i kuatia emonguatia hag̃ua…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Heja\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Tenda yke moambue\ntoggle_sidebar_notification.title=Embojopyru tenda ykegua (kuatia oguereko kora/marandurenda moirũha)\ntoggle_sidebar_label=Tenda yke moambue\ndocument_outline.title=Ehechauka kuatia rape (eikutu mokõi jey embotuicha/emomichĩ hag̃ua opavavete mba'epuru)\ndocument_outline_label=Kuatia apopyre\nattachments.title=Moirũha jehechauka\nattachments_label=Moirũha\nthumbs.title=Mba'emirĩ jehechauka\nthumbs_label=Mba'emirĩ\nfindbar.title=Kuatiápe jeheka\nfindbar_label=Juhu\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Kuatiarogue {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Kuatiarogue mba'emirĩ {{page}}\n\n# Find panel button title and messages\nfind_input.title=Juhu\nfind_input.placeholder=Kuatiápe jejuhu…\nfind_previous.title=Ejuhu ñe'ẽrysýi osẽ'ypy hague\nfind_previous_label=Mboyvegua\nfind_next.title=Eho ñe'ẽ juhupyre upeiguávape\nfind_next_label=Upeigua\nfind_highlight=Embojekuaavepa\nfind_match_case_label=Ejesareko taiguasu/taimichĩre\nfind_entire_word_label=Ñe’ẽ oĩmbáva \nfind_reached_top=Ojehupyty kuatia ñepyrũ, oku'ejeýta kuatia paha guive\nfind_reached_bottom=Ojehupyty kuatia paha, oku'ejeýta kuatia ñepyrũ guive\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} {{total}} ojojoguáva\nfind_match_count[two]={{current}} {{total}} ojojoguáva\nfind_match_count[few]={{current}} {{total}} ojojoguáva\nfind_match_count[many]={{current}} {{total}} ojojoguáva\nfind_match_count[other]={{current}} {{total}} ojojoguáva\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Hetave {{limit}} ojojoguáva\nfind_match_count_limit[one]=Hetave {{limit}} ojojogua\nfind_match_count_limit[two]=Hetave {{limit}} ojojoguáva\nfind_match_count_limit[few]=Hetave {{limit}} ojojoguáva\nfind_match_count_limit[many]=Hetave {{limit}} ojojoguáva\nfind_match_count_limit[other]=Hetave {{limit}} ojojoguáva\nfind_not_found=Ñe'ẽrysýi ojejuhu'ỹva\n\n# Error panel labels\nerror_more_info=Maranduve\nerror_less_info=Sa'ive marandu\nerror_close=Mboty\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Ñe'ẽmondo: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Mbojo'apy: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Marandurenda: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Tairenda: {{line}}\nrendering_error=Oiko jejavy ehechaukasévo kuatiarogue.\n\n# Predefined zoom values\npage_scale_width=Kuatiarogue pekue\npage_scale_fit=Kuatiarogue ñemoĩporã\npage_scale_auto=Tuichakue ijeheguíva\npage_scale_actual=Tuichakue ag̃agua\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Oĩvaíva\nloading_error=Oiko jejavy PDF oñemyeñyhẽnguévo.\ninvalid_file_error=PDF marandurenda ndoikóiva térã ivaipyréva.\nmissing_file_error=Ndaipóri PDF marandurenda\nunexpected_response_error=Mohendahavusu mbohovái ñeha'arõ'ỹva.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Jehaipy {{type}}]\npassword_label=Emoinge ñe'ẽñemi eipe'a hag̃ua ko marandurenda PDF.\npassword_invalid=Ñe'ẽñemi ndoikóiva. Eha'ã jey.\npassword_ok=MONEĨ\npassword_cancel=Heja\n\nprinting_not_supported=Kyhyjerã: Ñembokuatia ndojokupytypái ko kundahára ndive.\nprinting_not_ready=Kyhyjerã: Ko PDF nahenyhẽmbái oñembokuatia hag̃uáicha.\nweb_fonts_disabled=Ñanduti taity oñemongéma: ndaikatumo'ãi eipuru PDF jehai'íva taity.\ndocument_colors_not_allowed=Kuatiakuéra PDF ndaikatúi oipuru isa'ykuéra tee: “Emoneĩ kuatiaroguépe toiporavo isa'ykuéra tee” oñemongehína kundahárape.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/gu-IN/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=પહેલાનુ પાનું\nprevious_label=પહેલાનુ\nnext.title=આગળનુ પાનું\nnext_label=આગળનું\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=પાનું\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=નો {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} નો {{pagesCount}})\n\nzoom_out.title=મોટુ કરો\nzoom_out_label=મોટુ કરો\nzoom_in.title=નાનું કરો\nzoom_in_label=નાનું કરો\nzoom.title=નાનું મોટુ કરો\npresentation_mode.title=રજૂઆત સ્થિતિમાં જાવ\npresentation_mode_label=રજૂઆત સ્થિતિ\nopen_file.title=ફાઇલ ખોલો\nopen_file_label=ખોલો\nprint.title=છાપો\nprint_label=છારો\ndownload.title=ડાઉનલોડ\ndownload_label=ડાઉનલોડ\nbookmark.title=વર્તમાન દૃશ્ય (નવી વિન્ડોમાં નકલ કરો અથવા ખોલો)\nbookmark_label=વર્તમાન દૃશ્ય\n\n# Secondary toolbar and context menu\ntools.title=સાધનો\ntools_label=સાધનો\nfirst_page.title=પહેલાં પાનામાં જાવ\nfirst_page.label=પહેલાં પાનામાં જાવ\nfirst_page_label=પ્રથમ પાનાં પર જાવ\nlast_page.title=છેલ્લા પાનાં પર જાવ\nlast_page.label=છેલ્લા પાનામાં જાવ\nlast_page_label=છેલ્લા પાનાં પર જાવ\npage_rotate_cw.title=ઘડિયાળનાં કાંટા તરફ ફેરવો\npage_rotate_cw.label=ઘડિયાળનાં કાંટાની જેમ ફેરવો\npage_rotate_cw_label=ઘડિયાળનાં કાંટા તરફ ફેરવો\npage_rotate_ccw.title=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો\npage_rotate_ccw.label=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો\npage_rotate_ccw_label=ઘડિયાળનાં કાંટાની વિરુદ્દ ફેરવો\n\ncursor_text_select_tool.title=ટેક્સ્ટ પસંદગી ટૂલ સક્ષમ કરો\ncursor_text_select_tool_label=ટેક્સ્ટ પસંદગી ટૂલ\ncursor_hand_tool.title=હાથનાં સાધનને સક્રિય કરો\ncursor_hand_tool_label=હેન્ડ ટૂલ\n\nscroll_vertical.title=ઊભી સ્ક્રોલિંગનો ઉપયોગ કરો\nscroll_vertical_label=ઊભી સ્ક્રોલિંગ\nscroll_horizontal.title=આડી સ્ક્રોલિંગનો ઉપયોગ કરો\nscroll_horizontal_label=આડી સ્ક્રોલિંગ\nscroll_wrapped.title=આવરિત સ્ક્રોલિંગનો ઉપયોગ કરો\nscroll_wrapped_label=આવરિત સ્ક્રોલિંગ\n\nspread_none.title=પૃષ્ઠ સ્પ્રેડમાં જોડાવશો નહીં\nspread_none_label=કોઈ સ્પ્રેડ નથી\nspread_odd.title=એકી-ક્રમાંકિત પૃષ્ઠો સાથે પ્રારંભ થતાં પૃષ્ઠ સ્પ્રેડમાં જોડાઓ\nspread_odd_label=એકી સ્પ્રેડ્સ\nspread_even.title=નંબર-ક્રમાંકિત પૃષ્ઠોથી શરૂ થતાં પૃષ્ઠ સ્પ્રેડમાં જોડાઓ\nspread_even_label=સરખું ફેલાવવું\n\n# Document properties dialog box\ndocument_properties.title=દસ્તાવેજ ગુણધર્મો…\ndocument_properties_label=દસ્તાવેજ ગુણધર્મો…\ndocument_properties_file_name=ફાઇલ નામ:\ndocument_properties_file_size=ફાઇલ માપ:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} બાઇટ)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} બાઇટ)\ndocument_properties_title=શીર્ષક:\ndocument_properties_author=લેખક:\ndocument_properties_subject=વિષય:\ndocument_properties_keywords=કિવર્ડ:\ndocument_properties_creation_date=નિર્માણ તારીખ:\ndocument_properties_modification_date=ફેરફાર તારીખ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=નિર્માતા:\ndocument_properties_producer=PDF નિર્માતા:\ndocument_properties_version=PDF આવૃત્તિ:\ndocument_properties_page_count=પાનાં ગણતરી:\ndocument_properties_page_size=પૃષ્ઠનું કદ:\ndocument_properties_page_size_unit_inches=ઇંચ\ndocument_properties_page_size_unit_millimeters=મીમી\ndocument_properties_page_size_orientation_portrait=ઉભું\ndocument_properties_page_size_orientation_landscape=આડુ\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=પત્ર\ndocument_properties_page_size_name_legal=કાયદાકીય\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string=\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=ઝડપી વૅબ દૃશ્ય:\ndocument_properties_linearized_yes=હા\ndocument_properties_linearized_no=ના\ndocument_properties_close=બંધ કરો\n\nprint_progress_message=છાપકામ માટે દસ્તાવેજ તૈયાર કરી રહ્યા છે…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=રદ કરો\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=ટૉગલ બાજુપટ્ટી\ntoggle_sidebar_notification.title=સાઇડબારને ટૉગલ કરો(દસ્તાવેજની રૂપરેખા/જોડાણો શામેલ છે)\ntoggle_sidebar_label=ટૉગલ બાજુપટ્ટી\ndocument_outline.title=દસ્તાવેજની રૂપરેખા બતાવો(બધી આઇટમ્સને વિસ્તૃત/સંકુચિત કરવા માટે ડબલ-ક્લિક કરો)\ndocument_outline_label=દસ્તાવેજ રૂપરેખા\nattachments.title=જોડાણોને બતાવો\nattachments_label=જોડાણો\nthumbs.title=થંબનેલ્સ બતાવો\nthumbs_label=થંબનેલ્સ\nfindbar.title=દસ્તાવેજમાં શોધો\nfindbar_label=શોધો\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=પાનું {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=પાનાં {{page}} નું થંબનેલ્સ\n\n# Find panel button title and messages\nfind_input.title=શોધો\nfind_input.placeholder=દસ્તાવેજમાં શોધો…\nfind_previous.title=શબ્દસમૂહની પાછલી ઘટનાને શોધો\nfind_previous_label=પહેલાંનુ\nfind_next.title=શબ્દસમૂહની આગળની ઘટનાને શોધો\nfind_next_label=આગળનું\nfind_highlight=બધુ પ્રકાશિત કરો\nfind_match_case_label=કેસ બંધબેસાડો\nfind_entire_word_label=સંપૂર્ણ શબ્દો\nfind_reached_top=દસ્તાવેજનાં ટોચે પહોંચી ગયા, તળિયેથી ચાલુ કરેલ હતુ\nfind_reached_bottom=દસ્તાવેજનાં અંતે પહોંચી ગયા, ઉપરથી ચાલુ કરેલ હતુ\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{total}} માંથી {{current}} સરખું મળ્યું\nfind_match_count[two]={{total}} માંથી {{current}} સરખા મળ્યાં\nfind_match_count[few]={{total}} માંથી {{current}} સરખા મળ્યાં\nfind_match_count[many]={{total}} માંથી {{current}} સરખા મળ્યાં\nfind_match_count[other]={{total}} માંથી {{current}} સરખા મળ્યાં\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]={{limit}} કરતાં વધુ સરખા મળ્યાં\nfind_match_count_limit[one]={{limit}} કરતાં વધુ સરખું મળ્યું\nfind_match_count_limit[two]={{limit}} કરતાં વધુ સરખા મળ્યાં\nfind_match_count_limit[few]={{limit}} કરતાં વધુ સરખા મળ્યાં\nfind_match_count_limit[many]={{limit}} કરતાં વધુ સરખા મળ્યાં\nfind_match_count_limit[other]={{limit}} કરતાં વધુ સરખા મળ્યાં\nfind_not_found=શબ્દસમૂહ મળ્યુ નથી\n\n# Error panel labels\nerror_more_info=વધારે જાણકારી\nerror_less_info=ઓછી જાણકારી\nerror_close=બંધ કરો\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=સંદેશો: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=સ્ટેક: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ફાઇલ: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=વાક્ય: {{line}}\nrendering_error=ભૂલ ઉદ્ભવી જ્યારે પાનાંનુ રેન્ડ કરી રહ્યા હોય.\n\n# Predefined zoom values\npage_scale_width=પાનાની પહોળાઇ\npage_scale_fit=પાનું બંધબેસતુ\npage_scale_auto=આપમેળે નાનુંમોટુ કરો\npage_scale_actual=ચોક્કસ માપ\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=ભૂલ\nloading_error=ભૂલ ઉદ્ભવી જ્યારે PDF ને લાવી રહ્યા હોય.\ninvalid_file_error=અયોગ્ય અથવા ભાંગેલ PDF ફાઇલ.\nmissing_file_error=ગુમ થયેલ PDF ફાઇલ.\nunexpected_response_error=અનપેક્ષિત સર્વર પ્રતિસાદ.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=આ PDF ફાઇલને ખોલવા પાસવર્ડને દાખલ કરો.\npassword_invalid=અયોગ્ય પાસવર્ડ. મહેરબાની કરીને ફરી પ્રયત્ન કરો.\npassword_ok=બરાબર\npassword_cancel=રદ કરો\n\nprinting_not_supported=ચેતવણી: છાપવાનું આ બ્રાઉઝર દ્દારા સંપૂર્ણપણે આધારભૂત નથી.\nprinting_not_ready=Warning: PDF એ છાપવા માટે સંપૂર્ણપણે લાવેલ છે.\nweb_fonts_disabled=વેબ ફોન્ટ નિષ્ક્રિય થયેલ છે: ઍમ્બેડ થયેલ PDF ફોન્ટને વાપરવાનું અસમર્થ.\ndocument_colors_not_allowed=PDF દસ્તાવેજો તેનાં પોતાના રંગોને વાપરવા પરવાનગી આપતા નથી: 'તેનાં પોતાનાં રંગોને પસંદ કરવા માટે પાનાંને પરવાનગી આપો' બ્રાઉઝરમાં નિષ્ક્રિય થયેલ છે.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/he/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=דף קודם\nprevious_label=קודם\nnext.title=דף הבא\nnext_label=הבא\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=דף\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=מתוך {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} מתוך {{pagesCount}})\n\nzoom_out.title=התרחקות\nzoom_out_label=התרחקות\nzoom_in.title=התקרבות\nzoom_in_label=התקרבות\nzoom.title=מרחק מתצוגה\npresentation_mode.title=מעבר למצב מצגת\npresentation_mode_label=מצב מצגת\nopen_file.title=פתיחת קובץ\nopen_file_label=פתיחה\nprint.title=הדפסה\nprint_label=הדפסה\ndownload.title=הורדה\ndownload_label=הורדה\nbookmark.title=תצוגה נוכחית (העתקה או פתיחה בחלון חדש)\nbookmark_label=תצוגה נוכחית\n\n# Secondary toolbar and context menu\ntools.title=כלים\ntools_label=כלים\nfirst_page.title=מעבר לעמוד הראשון\nfirst_page.label=מעבר לעמוד הראשון\nfirst_page_label=מעבר לעמוד הראשון\nlast_page.title=מעבר לעמוד האחרון\nlast_page.label=מעבר לעמוד האחרון\nlast_page_label=מעבר לעמוד האחרון\npage_rotate_cw.title=הטיה עם כיוון השעון\npage_rotate_cw.label=הטיה עם כיוון השעון\npage_rotate_cw_label=הטיה עם כיוון השעון\npage_rotate_ccw.title=הטיה כנגד כיוון השעון\npage_rotate_ccw.label=הטיה כנגד כיוון השעון\npage_rotate_ccw_label=הטיה כנגד כיוון השעון\n\ncursor_text_select_tool.title=הפעלת כלי בחירת טקסט\ncursor_text_select_tool_label=כלי בחירת טקסט\ncursor_hand_tool.title=הפעלת כלי היד\ncursor_hand_tool_label=כלי יד\n\nscroll_vertical.title=שימוש בגלילה אנכית\nscroll_vertical_label=גלילה אנכית\nscroll_horizontal.title=שימוש בגלילה אופקית\nscroll_horizontal_label=גלילה אופקית\nscroll_wrapped.title=שימוש בגלילה רציפה\nscroll_wrapped_label=גלילה רציפה\n\nspread_none.title=לא לצרף מפתחי עמודים\nspread_none_label=ללא מפתחים\nspread_odd.title=צירוף מפתחי עמודים שמתחילים בדפים עם מספרים אי־זוגיים\nspread_odd_label=מפתחים אי־זוגיים\nspread_even.title=צירוף מפתחי עמודים שמתחילים בדפים עם מספרים זוגיים\nspread_even_label=מפתחים זוגיים\n\n# Document properties dialog box\ndocument_properties.title=מאפייני מסמך…\ndocument_properties_label=מאפייני מסמך…\ndocument_properties_file_name=שם קובץ:\ndocument_properties_file_size=גודל הקובץ:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} ק״ב ({{size_b}} בתים)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} מ״ב ({{size_b}} בתים)\ndocument_properties_title=כותרת:\ndocument_properties_author=מחבר:\ndocument_properties_subject=נושא:\ndocument_properties_keywords=מילות מפתח:\ndocument_properties_creation_date=תאריך יצירה:\ndocument_properties_modification_date=תאריך שינוי:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=יוצר:\ndocument_properties_producer=יצרן PDF:\ndocument_properties_version=גרסת PDF:\ndocument_properties_page_count=מספר דפים:\ndocument_properties_page_size=גודל העמוד:\ndocument_properties_page_size_unit_inches=אינ׳\ndocument_properties_page_size_unit_millimeters=מ״מ\ndocument_properties_page_size_orientation_portrait=לאורך\ndocument_properties_page_size_orientation_landscape=לרוחב\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=מכתב\ndocument_properties_page_size_name_legal=דף משפטי\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=תצוגת דף מהירה:\ndocument_properties_linearized_yes=כן\ndocument_properties_linearized_no=לא\ndocument_properties_close=סגירה\n\nprint_progress_message=מסמך בהכנה להדפסה…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=ביטול\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=הצגה/הסתרה של סרגל הצד\ntoggle_sidebar_notification.title=החלפת תצוגת סרגל צד (מסמך שמכיל מתאר/צרופות)\ntoggle_sidebar_label=הצגה/הסתרה של סרגל הצד\ndocument_outline.title=הצגת מתאר מסמך (לחיצה כפולה כדי להרחיב או לצמצם את כל הפריטים)\ndocument_outline_label=מתאר מסמך\nattachments.title=הצגת צרופות\nattachments_label=צרופות\nthumbs.title=הצגת תצוגה מקדימה\nthumbs_label=תצוגה מקדימה\nfindbar.title=חיפוש במסמך\nfindbar_label=חיפוש\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=עמוד {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=תצוגה מקדימה של עמוד {{page}}\n\n# Find panel button title and messages\nfind_input.title=חיפוש\nfind_input.placeholder=חיפוש במסמך…\nfind_previous.title=חיפוש מופע קודם של הביטוי\nfind_previous_label=קודם\nfind_next.title=חיפוש המופע הבא של הביטוי\nfind_next_label=הבא\nfind_highlight=הדגשת הכול\nfind_match_case_label=התאמת אותיות\nfind_entire_word_label=מילים שלמות\nfind_reached_top=הגיע לראש הדף, ממשיך מלמטה\nfind_reached_bottom=הגיע לסוף הדף, ממשיך מלמעלה\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count[one]=תוצאה {{current}} מתוך {{total}}\nfind_match_count[two]={{current}} מתוך {{total}} תוצאות\nfind_match_count[few]={{current}} מתוך {{total}} תוצאות\nfind_match_count[many]={{current}} מתוך {{total}} תוצאות\nfind_match_count[other]={{current}} מתוך {{total}} תוצאות\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit[zero]=יותר מ־{{limit}} תוצאות\nfind_match_count_limit[one]=יותר מתוצאה אחת\nfind_match_count_limit[two]=יותר מ־{{limit}} תוצאות\nfind_match_count_limit[few]=יותר מ־{{limit}} תוצאות\nfind_match_count_limit[many]=יותר מ־{{limit}} תוצאות\nfind_match_count_limit[other]=יותר מ־{{limit}} תוצאות\nfind_not_found=ביטוי לא נמצא\n\n# Error panel labels\nerror_more_info=מידע נוסף\nerror_less_info=פחות מידע\nerror_close=סגירה\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js גרסה {{version}} (בנייה: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=הודעה: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=תוכן מחסנית: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=קובץ: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=שורה: {{line}}\nrendering_error=אירעה שגיאה בעת עיבוד הדף.\n\n# Predefined zoom values\npage_scale_width=רוחב העמוד\npage_scale_fit=התאמה לעמוד\npage_scale_auto=מרחק מתצוגה אוטומטי\npage_scale_actual=גודל אמתי\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=שגיאה\nloading_error=אירעה שגיאה בעת טעינת ה־PDF.\ninvalid_file_error=קובץ PDF פגום או לא תקין.\nmissing_file_error=קובץ PDF חסר.\nunexpected_response_error=תגובת שרת לא צפויה.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[הערת {{type}}]\npassword_label=נא להכניס את הססמה לפתיחת קובץ PDF זה.\npassword_invalid=ססמה שגויה. נא לנסות שנית.\npassword_ok=אישור\npassword_cancel=ביטול\n\nprinting_not_supported=אזהרה: הדפסה אינה נתמכת במלואה בדפדפן זה.\nprinting_not_ready=אזהרה: ה־PDF לא ניתן לחלוטין עד מצב שמאפשר הדפסה.\nweb_fonts_disabled=גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים.\ndocument_colors_not_allowed=מסמכי PDF אינם מורשים להשתמש בצבעים משלהם: האפשרות „אפשר לעמודים לבחור צבעים משלהם” אינה פעילה בדפדפן.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/hi-IN/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=पिछला पृष्ठ\nprevious_label=पिछला\nnext.title=अगला पृष्ठ\nnext_label=आगे\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=पृष्ठ:\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} का\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} of {{pagesCount}})\n\nzoom_out.title=\\u0020छोटा करें\nzoom_out_label=\\u0020छोटा करें\nzoom_in.title=बड़ा करें\nzoom_in_label=बड़ा करें\nzoom.title=बड़ा-छोटा करें\npresentation_mode.title=प्रस्तुति अवस्था में जाएँ\npresentation_mode_label=\\u0020प्रस्तुति अवस्था\nopen_file.title=फ़ाइल खोलें\nopen_file_label=\\u0020खोलें\nprint.title=छापें\nprint_label=\\u0020छापें\ndownload.title=डाउनलोड\ndownload_label=डाउनलोड\nbookmark.title=मौजूदा दृश्य (नए विंडो में नक़ल लें या खोलें)\nbookmark_label=\\u0020मौजूदा दृश्य\n\n# Secondary toolbar and context menu\ntools.title=औज़ार\ntools_label=औज़ार\nfirst_page.title=प्रथम पृष्ठ पर जाएँ\nfirst_page.label=\\u0020प्रथम पृष्ठ पर जाएँ\nfirst_page_label=प्रथम पृष्ठ पर जाएँ\nlast_page.title=अंतिम पृष्ठ पर जाएँ\nlast_page.label=\\u0020अंतिम पृष्ठ पर जाएँ\nlast_page_label=\\u0020अंतिम पृष्ठ पर जाएँ\npage_rotate_cw.title=घड़ी की दिशा में घुमाएँ\npage_rotate_cw.label=घड़ी की दिशा में घुमाएँ\npage_rotate_cw_label=घड़ी की दिशा में घुमाएँ\npage_rotate_ccw.title=घड़ी की दिशा से उल्टा घुमाएँ\npage_rotate_ccw.label=घड़ी की दिशा से उल्टा घुमाएँ\npage_rotate_ccw_label=\\u0020घड़ी की दिशा से उल्टा घुमाएँ\n\ncursor_text_select_tool.title=पाठ चयन उपकरण सक्षम करें\ncursor_text_select_tool_label=पाठ चयन उपकरण\ncursor_hand_tool.title=हस्त उपकरण सक्षम करें\ncursor_hand_tool_label=हस्त उपकरण\n\nscroll_vertical.title=लंबवत स्क्रॉलिंग का उपयोग करें\nscroll_vertical_label=लंबवत स्क्रॉलिंग\nscroll_horizontal.title=क्षितिजिय स्क्रॉलिंग का उपयोग करें\nscroll_horizontal_label=क्षितिजिय स्क्रॉलिंग\nscroll_wrapped.title=व्राप्पेड स्क्रॉलिंग का उपयोग करें\n\nspread_none_label=कोई स्प्रेड उपलब्ध नहीं\n\n# Document properties dialog box\ndocument_properties.title=दस्तावेज़ विशेषता...\ndocument_properties_label=दस्तावेज़ विशेषता...\ndocument_properties_file_name=फ़ाइल नाम:\ndocument_properties_file_size=फाइल आकारः\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=शीर्षक:\ndocument_properties_author=लेखकः\ndocument_properties_subject=विषय:\ndocument_properties_keywords=कुंजी-शब्द:\ndocument_properties_creation_date=निर्माण दिनांक:\ndocument_properties_modification_date=संशोधन दिनांक:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=निर्माता:\ndocument_properties_producer=PDF उत्पादक:\ndocument_properties_version=PDF संस्करण:\ndocument_properties_page_count=पृष्ठ गिनती:\ndocument_properties_page_size=पृष्ठ आकार:\ndocument_properties_page_size_unit_inches=इंच\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=पोर्ट्रेट\ndocument_properties_page_size_orientation_landscape=लैंडस्केप\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=लेटर\ndocument_properties_page_size_name_legal=लीगल\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=तीव्र वेब व्यू:\ndocument_properties_linearized_yes=हाँ\ndocument_properties_linearized_no=नहीं\ndocument_properties_close=बंद करें\n\nprint_progress_message=छपाई के लिए दस्तावेज़ को तैयार किया जा रहा है...\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=रद्द करें\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=\\u0020स्लाइडर टॉगल करें\ntoggle_sidebar_notification.title=साइडबार टॉगल करें (दस्तावेज़ में रूपरेखा शामिल है/attachments)\ntoggle_sidebar_label=स्लाइडर टॉगल करें\ndocument_outline.title=दस्तावेज़ की रूपरेखा दिखाइए (सारी वस्तुओं को फलने अथवा समेटने के लिए दो बार क्लिक करें)\ndocument_outline_label=दस्तावेज़ आउटलाइन\nattachments.title=संलग्नक दिखायें\nattachments_label=संलग्नक\nthumbs.title=लघुछवियाँ दिखाएँ\nthumbs_label=लघु छवि\nfindbar.title=\\u0020दस्तावेज़ में ढूँढ़ें\nfindbar_label=ढूँढें\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=पृष्ठ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=पृष्ठ {{page}} की लघु-छवि\n\n# Find panel button title and messages\nfind_input.title=ढूँढें\nfind_input.placeholder=दस्तावेज़ में खोजें...\nfind_previous.title=वाक्यांश की पिछली उपस्थिति ढूँढ़ें\nfind_previous_label=पिछला\nfind_next.title=वाक्यांश की अगली उपस्थिति ढूँढ़ें\nfind_next_label=आगे\nfind_highlight=\\u0020सभी आलोकित करें\nfind_match_case_label=मिलान स्थिति\nfind_reached_top=पृष्ठ के ऊपर पहुंच गया, नीचे से जारी रखें\nfind_reached_bottom=पृष्ठ के नीचे में जा पहुँचा, ऊपर से जारी\nfind_not_found=वाक्यांश नहीं मिला\n\n# Error panel labels\nerror_more_info=अधिक सूचना\nerror_less_info=कम सूचना\nerror_close=बंद करें\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=\\u0020संदेश: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=स्टैक: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=फ़ाइल: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=पंक्ति: {{line}}\nrendering_error=पृष्ठ रेंडरिंग के दौरान त्रुटि आई.\n\n# Predefined zoom values\npage_scale_width=\\u0020पृष्ठ चौड़ाई\npage_scale_fit=पृष्ठ फिट\npage_scale_auto=स्वचालित जूम\npage_scale_actual=वास्तविक आकार\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=त्रुटि\nloading_error=PDF लोड करते समय एक त्रुटि हुई.\ninvalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइल.\nmissing_file_error=\\u0020अनुपस्थित PDF फ़ाइल.\nunexpected_response_error=अप्रत्याशित सर्वर प्रतिक्रिया.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=\\u0020[{{type}} Annotation]\npassword_label=इस PDF फ़ाइल को खोलने के लिए कृपया कूटशब्द भरें.\npassword_invalid=अवैध कूटशब्द, कृपया फिर कोशिश करें.\npassword_ok=OK\npassword_cancel=रद्द करें\n\nprinting_not_supported=चेतावनी: इस ब्राउज़र पर छपाई पूरी तरह से समर्थित नहीं है.\nprinting_not_ready=चेतावनी: PDF छपाई के लिए पूरी तरह से लोड नहीं है.\nweb_fonts_disabled=वेब फॉन्ट्स निष्क्रिय हैं: अंतःस्थापित PDF फॉन्टस के उपयोग में असमर्थ.\ndocument_colors_not_allowed=PDF दस्तावेज़ उनके अपने रंग को उपयोग करने के लिए अनुमति प्राप्त नहीं है: \"पृष्ठों को उनके अपने रंग को चुनने के लिए स्वीकृति दें\" कि वह उस ब्राउज़र में निष्क्रिय है.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/hr/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Prethodna stranica\nprevious_label=Prethodna\nnext.title=Sljedeća stranica\nnext_label=Sljedeća\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Stranica\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=od {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} od {{pagesCount}})\n\nzoom_out.title=Uvećaj\nzoom_out_label=Smanji\nzoom_in.title=Uvećaj\nzoom_in_label=Smanji\nzoom.title=Uvećanje\npresentation_mode.title=Prebaci u prezentacijski način rada\npresentation_mode_label=Prezentacijski način rada\nopen_file.title=Otvori datoteku\nopen_file_label=Otvori\nprint.title=Ispis\nprint_label=Ispis\ndownload.title=Preuzmi\ndownload_label=Preuzmi\nbookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru)\nbookmark_label=Trenutni prikaz\n\n# Secondary toolbar and context menu\ntools.title=Alati\ntools_label=Alati\nfirst_page.title=Idi na prvu stranicu\nfirst_page.label=Idi na prvu stranicu\nfirst_page_label=Idi na prvu stranicu\nlast_page.title=Idi na posljednju stranicu\nlast_page.label=Idi na posljednju stranicu\nlast_page_label=Idi na posljednju stranicu\npage_rotate_cw.title=Rotiraj u smjeru kazaljke na satu\npage_rotate_cw.label=Rotiraj u smjeru kazaljke na satu\npage_rotate_cw_label=Rotiraj u smjeru kazaljke na satu\npage_rotate_ccw.title=Rotiraj obrnutno od smjera kazaljke na satu\npage_rotate_ccw.label=Rotiraj obrnutno od smjera kazaljke na satu\npage_rotate_ccw_label=Rotiraj obrnutno od smjera kazaljke na satu\n\ncursor_text_select_tool.title=Omogući alat za označavanje teksta\ncursor_text_select_tool_label=Alat za označavanje teksta\ncursor_hand_tool.title=Omogući ručni alat\ncursor_hand_tool_label=Ručni alat\n\n# Document properties dialog box\ndocument_properties.title=Svojstva dokumenta...\ndocument_properties_label=Svojstva dokumenta...\ndocument_properties_file_name=Naziv datoteke:\ndocument_properties_file_size=Veličina datoteke:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bajtova)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bajtova)\ndocument_properties_title=Naslov:\ndocument_properties_author=Autor:\ndocument_properties_subject=Predmet:\ndocument_properties_keywords=Ključne riječi:\ndocument_properties_creation_date=Datum stvaranja:\ndocument_properties_modification_date=Datum promjene:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Stvaratelj:\ndocument_properties_producer=PDF stvaratelj:\ndocument_properties_version=PDF inačica:\ndocument_properties_page_count=Broj stranica:\ndocument_properties_close=Zatvori\n\nprint_progress_message=Pripremanje dokumenta za ispis…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Odustani\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Prikaži/sakrij bočnu traku\ntoggle_sidebar_notification.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži konturu/privitke)\ntoggle_sidebar_label=Prikaži/sakrij bočnu traku\ndocument_outline.title=Prikaži obris dokumenta (dvostruki klik za proširivanje/skupljanje svih stavki)\ndocument_outline_label=Obris dokumenta\nattachments.title=Prikaži privitke\nattachments_label=Privitci\nthumbs.title=Prikaži sličice\nthumbs_label=Sličice\nfindbar.title=Traži u dokumentu\nfindbar_label=Traži\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Stranica {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Sličica stranice {{page}}\n\n# Find panel button title and messages\nfind_input.title=Traži\nfind_input.placeholder=Traži u dokumentu…\nfind_previous.title=Pronađi prethodno javljanje ovog izraza\nfind_previous_label=Prethodno\nfind_next.title=Pronađi iduće javljanje ovog izraza\nfind_next_label=Sljedeće\nfind_highlight=Istankni sve\nfind_match_case_label=Slučaj podudaranja\nfind_reached_top=Dosegnut vrh dokumenta, nastavak od dna\nfind_reached_bottom=Dosegnut vrh dokumenta, nastavak od vrha\nfind_not_found=Izraz nije pronađen\n\n# Error panel labels\nerror_more_info=Više informacija\nerror_less_info=Manje informacija\nerror_close=Zatvori\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Poruka: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stog: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Datoteka: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Redak: {{line}}\nrendering_error=Došlo je do greške prilikom iscrtavanja stranice.\n\n# Predefined zoom values\npage_scale_width=Širina stranice\npage_scale_fit=Pristajanje stranici\npage_scale_auto=Automatsko uvećanje\npage_scale_actual=Prava veličina\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Greška\nloading_error=Došlo je do greške pri učitavanju PDF-a.\ninvalid_file_error=Kriva ili oštećena PDF datoteka.\nmissing_file_error=Nedostaje PDF datoteka.\nunexpected_response_error=Neočekivani odgovor poslužitelja.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Bilješka]\npassword_label=Upišite lozinku da biste otvorili ovu PDF datoteku.\npassword_invalid=Neispravna lozinka. Pokušajte ponovo.\npassword_ok=U redu\npassword_cancel=Odustani\n\nprinting_not_supported=Upozorenje: Ispisivanje nije potpuno podržano u ovom pregledniku.\nprinting_not_ready=Upozorenje: PDF nije u potpunosti učitan za ispis.\nweb_fonts_disabled=Web fontovi su onemogućeni: nije moguće koristiti umetnute PDF fontove.\ndocument_colors_not_allowed=PDF dokumenti nemaju dopuštene koristiti vlastite boje: opcija 'Dopusti stranicama da koriste vlastite boje' je deaktivirana.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/hsb/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Předchadna strona\nprevious_label=Wróćo\nnext.title=Přichodna strona\nnext_label=Dale\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Strona\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=z {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} z {{pagesCount}})\n\nzoom_out.title=Pomjeńšić\nzoom_out_label=Pomjeńšić\nzoom_in.title=Powjetšić\nzoom_in_label=Powjetšić\nzoom.title=Skalowanje\npresentation_mode.title=Do prezentaciskeho modusa přeńć\npresentation_mode_label=Prezentaciski modus\nopen_file.title=Dataju wočinić\nopen_file_label=Wočinić\nprint.title=Ćišćeć\nprint_label=Ćišćeć\ndownload.title=Sćahnyć\ndownload_label=Sćahnyć\nbookmark.title=Aktualny napohlad (kopěrować abo w nowym woknje wočinić)\nbookmark_label=Aktualny napohlad\n\n# Secondary toolbar and context menu\ntools.title=Nastroje\ntools_label=Nastroje\nfirst_page.title=K prěnjej stronje\nfirst_page.label=K prěnjej stronje\nfirst_page_label=K prěnjej stronje\nlast_page.title=K poslednjej stronje\nlast_page.label=K poslednjej stronje\nlast_page_label=K poslednjej stronje\npage_rotate_cw.title=K směrej časnika wjerćeć\npage_rotate_cw.label=K směrej časnika wjerćeć\npage_rotate_cw_label=K směrej časnika wjerćeć\npage_rotate_ccw.title=Přećiwo směrej časnika wjerćeć\npage_rotate_ccw.label=Přećiwo směrej časnika wjerćeć\npage_rotate_ccw_label=Přećiwo směrej časnika wjerćeć\n\ncursor_text_select_tool.title=Nastroj za wuběranje teksta zmóžnić\ncursor_text_select_tool_label=Nastroj za wuběranje teksta\ncursor_hand_tool.title=Ručny nastroj zmóžnić\ncursor_hand_tool_label=Ručny nastroj\n\nscroll_vertical.title=Wertikalne suwanje wužiwać\nscroll_vertical_label=Wertikalnje suwanje\nscroll_horizontal.title=Horicontalne suwanje wužiwać\nscroll_horizontal_label=Horicontalne suwanje\nscroll_wrapped.title=Postupne suwanje wužiwać\nscroll_wrapped_label=Postupne suwanje\n\nspread_none.title=Strony njezwjazać\nspread_none_label=Žana dwójna strona\nspread_odd.title=Strony započinajo z njerunymi stronami zwjazać\nspread_odd_label=Njerune strony\nspread_even.title=Strony započinajo z runymi stronami zwjazać\nspread_even_label=Rune strony\n\n# Document properties dialog box\ndocument_properties.title=Dokumentowe kajkosće…\ndocument_properties_label=Dokumentowe kajkosće…\ndocument_properties_file_name=Mjeno dataje:\ndocument_properties_file_size=Wulkosć dataje:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bajtow)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bajtow)\ndocument_properties_title=Titul:\ndocument_properties_author=Awtor:\ndocument_properties_subject=Předmjet:\ndocument_properties_keywords=Klučowe słowa:\ndocument_properties_creation_date=Datum wutworjenja:\ndocument_properties_modification_date=Datum změny:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Awtor:\ndocument_properties_producer=PDF-zhotowjer:\ndocument_properties_version=PDF-wersija:\ndocument_properties_page_count=Ličba stronow:\ndocument_properties_page_size=Wulkosć strony:\ndocument_properties_page_size_unit_inches=cól\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=wysoki format\ndocument_properties_page_size_orientation_landscape=prěčny format\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Fast Web View:\ndocument_properties_linearized_yes=Haj\ndocument_properties_linearized_no=Ně\ndocument_properties_close=Začinić\n\nprint_progress_message=Dokument so za ćišćenje přihotuje…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Přetorhnyć\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Bóčnicu pokazać/schować\ntoggle_sidebar_notification.title=Bóčnicu přepinać (dokument wobsahuje wobrys/přiwěški)\ntoggle_sidebar_label=Bóčnicu pokazać/schować\ndocument_outline.title=Dokumentowy naćisk pokazać (dwójne kliknjenje, zo bychu so wšě zapiski pokazali/schowali)\ndocument_outline_label=Dokumentowa struktura\nattachments.title=Přiwěški pokazać\nattachments_label=Přiwěški\nthumbs.title=Miniatury pokazać\nthumbs_label=Miniatury\nfindbar.title=W dokumenće pytać\nfindbar_label=Pytać\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Strona {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura strony {{page}}\n\n# Find panel button title and messages\nfind_input.title=Pytać\nfind_input.placeholder=W dokumenće pytać…\nfind_previous.title=Předchadne wustupowanje pytanskeho wuraza pytać\nfind_previous_label=Wróćo\nfind_next.title=Přichodne wustupowanje pytanskeho wuraza pytać\nfind_next_label=Dale\nfind_highlight=Wšě wuzběhnyć\nfind_match_case_label=Wulkopisanje wobkedźbować\nfind_entire_word_label=Cyłe słowa\nfind_reached_top=Spočatk dokumenta docpěty, pokročuje so z kóncom\nfind_reached_bottom=Kónc dokument docpěty, pokročuje so ze spočatkom\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} z {{total}} wotpowědnika\nfind_match_count[two]={{current}} z {{total}} wotpowědnikow\nfind_match_count[few]={{current}} z {{total}} wotpowědnikow\nfind_match_count[many]={{current}} z {{total}} wotpowědnikow\nfind_match_count[other]={{current}} z {{total}} wotpowědnikow\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Wjace hač {{limit}} wotpowědnikow\nfind_match_count_limit[one]=Wjace hač {{limit}} wotpowědnik\nfind_match_count_limit[two]=Wjace hač {{limit}} wotpowědnikaj\nfind_match_count_limit[few]=Wjace hač {{limit}} wotpowědniki\nfind_match_count_limit[many]=Wjace hač {{limit}} wotpowědnikow\nfind_match_count_limit[other]=Wjace hač {{limit}} wotpowědnikow\nfind_not_found=Pytanski wuraz njeje so namakał\n\n# Error panel labels\nerror_more_info=Wjace informacijow\nerror_less_info=Mjenje informacijow\nerror_close=Začinić\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Zdźělenka: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Lisćina zawołanjow: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Dataja: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linka: {{line}}\nrendering_error=Při zwobraznjenju strony je zmylk wustupił.\n\n# Predefined zoom values\npage_scale_width=Šěrokosć strony\npage_scale_fit=Wulkosć strony\npage_scale_auto=Awtomatiske skalowanje\npage_scale_actual=Aktualna wulkosć\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Zmylk\nloading_error=Při začitowanju PDF je zmylk wustupił.\ninvalid_file_error=Njepłaćiwa abo wobškodźena PDF-dataja.\nmissing_file_error=Falowaca PDF-dataja.\nunexpected_response_error=Njewočakowana serwerowa wotmołwa.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Typ přispomnjenki: {{type}}]\npassword_label=Zapodajće hesło, zo byšće PDF-dataju wočinił.\npassword_invalid=Njepłaćiwe hesło. Prošu spytajće hišće raz.\npassword_ok=W porjadku\npassword_cancel=Přetorhnyć\n\nprinting_not_supported=Warnowanje: Ćišćenje so přez tutón wobhladowak połnje njepodpěruje.\nprinting_not_ready=Warnowanje: PDF njeje so za ćišćenje dospołnje začitał.\nweb_fonts_disabled=Webpisma su znjemóžnjene: njeje móžno, zasadźene PDF-pisma wužiwać.\ndocument_colors_not_allowed=PDF-dokumenty njesmědźa swoje barby wužiwać: 'Stronam dowolić, swoje barby wužiwać' je we wobhladowaku znjemóžnjene.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/hto/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nopen_file_label=Tuide\nprint.title=Rábe fɨnoraɨma\nprint_label=Rábe fɨnoraɨma\ndownload.title=Yúnua\ndownload_label=Yúnua\nbookmark.title=Bírui éroika (kómue éroirafo tuño fakayena)\nbookmark_label=Bírui éroika\n\n# Secondary toolbar and context menu\ntools.title=Ránɨaɨ táɨjɨyena\ntools_label=Ránɨaɨ táɨjɨyena\nfirst_page.title=Nano fueñe rabemo jaíri\nfirst_page.label=Nano fueñe rabemo jaíri\nfirst_page_label=Nano fueñe rabemo jaíri\nlast_page.title=Ɨ́kóɨ fueñe rabemo jaíri\nlast_page.label=Ɨ́kóɨ fueñe rabemo jaíri\nlast_page_label=Ɨ́kóɨ fueñe rabemo jaíri\npage_rotate_cw.title=Nabene jɨrekai\npage_rotate_cw.label=Nabene jɨrekai\npage_rotate_cw_label=Nabene jɨrekai\npage_rotate_ccw.title=Jarɨ́fene jirekaɨ\npage_rotate_ccw.label=Jarɨ́fene jirekaɨ\npage_rotate_ccw_label=Jarɨ́fene jirekaɨ\n\n\n# Document properties dialog box\ndocument_properties_file_name=Ráanɨ mamékɨ:\ndocument_properties_file_size=Ráanɨ dɨeze:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Kúega mámekɨ:\ndocument_properties_author=Fɨnokamɨe:\ndocument_properties_subject=Mɨnɨka:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Fɨnoraɨma:\ndocument_properties_version=Yóga ráfue PDF:\ndocument_properties_close=Ɨ́baide\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\nattachments.title=Dájemo jónega akatairi\nattachments_label=Dano jónega\nthumbs.title=Dúe íya akatairi\nthumbs_label=Dúe íya\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Rabe {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Dúe íya rabe {{page}}\n\n# Find panel button title and messages\nfind_previous_label=Jɨáɨkena\\u0020\nfind_next_label=Báɨfene\nfind_highlight=Nana rɨgɨno\nfind_not_found=Daɨna báñeiga\n\n# Error panel labels\nerror_more_info=Jamano ráfue\nerror_less_info=Dúe ráfue\nerror_close=Ɨ́bai\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Úaina: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Jónia ráa: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Ida: {{line}}\n\n# Predefined zoom values\npage_scale_auto=Zoom dama fɨnode\npage_scale_actual=Bírui dɨeze\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Fɨgòñede\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} baítade]\npassword_ok=Jɨɨ\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/hu/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Előző oldal\nprevious_label=Előző\nnext.title=Következő oldal\nnext_label=Tovább\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Oldal\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=összesen: {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} / {{pagesCount}})\n\nzoom_out.title=Kicsinyítés\nzoom_out_label=Kicsinyítés\nzoom_in.title=Nagyítás\nzoom_in_label=Nagyítás\nzoom.title=Nagyítás\npresentation_mode.title=Váltás bemutató módba\npresentation_mode_label=Bemutató mód\nopen_file.title=Fájl megnyitása\nopen_file_label=Megnyitás\nprint.title=Nyomtatás\nprint_label=Nyomtatás\ndownload.title=Letöltés\ndownload_label=Letöltés\nbookmark.title=Jelenlegi nézet (másolás vagy megnyitás új ablakban)\nbookmark_label=Aktuális nézet\n\n# Secondary toolbar and context menu\ntools.title=Eszközök\ntools_label=Eszközök\nfirst_page.title=Ugrás az első oldalra\nfirst_page.label=Ugrás az első oldalra\nfirst_page_label=Ugrás az első oldalra\nlast_page.title=Ugrás az utolsó oldalra\nlast_page.label=Ugrás az utolsó oldalra\nlast_page_label=Ugrás az utolsó oldalra\npage_rotate_cw.title=Forgatás az óramutató járásával egyezően\npage_rotate_cw.label=Forgatás az óramutató járásával egyezően\npage_rotate_cw_label=Forgatás az óramutató járásával egyezően\npage_rotate_ccw.title=Forgatás az óramutató járásával ellentétesen\npage_rotate_ccw.label=Forgatás az óramutató járásával ellentétesen\npage_rotate_ccw_label=Forgatás az óramutató járásával ellentétesen\n\ncursor_text_select_tool.title=Szövegkijelölő eszköz bekapcsolása\ncursor_text_select_tool_label=Szövegkijelölő eszköz\ncursor_hand_tool.title=Kéz eszköz bekapcsolása\ncursor_hand_tool_label=Kéz eszköz\n\nscroll_vertical.title=Függőleges görgetés használata\nscroll_vertical_label=Függőleges görgetés\nscroll_horizontal.title=Vízszintes görgetés használata\nscroll_horizontal_label=Vízszintes görgetés\nscroll_wrapped.title=Rácsos elrendezés használata\nscroll_wrapped_label=Rácsos elrendezés\n\nspread_none.title=Ne tapassza össze az oldalakat\nspread_none_label=Nincs összetapasztás\nspread_odd.title=Lapok összetapasztása, a páratlan számú oldalakkal kezdve\nspread_odd_label=Összetapasztás: páratlan\nspread_even.title=Lapok összetapasztása, a páros számú oldalakkal kezdve\nspread_even_label=Összetapasztás: páros\n\n# Document properties dialog box\ndocument_properties.title=Dokumentum tulajdonságai…\ndocument_properties_label=Dokumentum tulajdonságai…\ndocument_properties_file_name=Fájlnév:\ndocument_properties_file_size=Fájlméret:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bájt)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bájt)\ndocument_properties_title=Cím:\ndocument_properties_author=Szerző:\ndocument_properties_subject=Tárgy:\ndocument_properties_keywords=Kulcsszavak:\ndocument_properties_creation_date=Létrehozás dátuma:\ndocument_properties_modification_date=Módosítás dátuma:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Létrehozta:\ndocument_properties_producer=PDF előállító:\ndocument_properties_version=PDF verzió:\ndocument_properties_page_count=Oldalszám:\ndocument_properties_page_size=Lapméret:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=álló\ndocument_properties_page_size_orientation_landscape=fekvő\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Gyors webes nézet:\ndocument_properties_linearized_yes=Igen\ndocument_properties_linearized_no=Nem\ndocument_properties_close=Bezárás\n\nprint_progress_message=Dokumentum előkészítése nyomtatáshoz…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Mégse\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Oldalsáv be/ki\ntoggle_sidebar_notification.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket tartalmaz)\ntoggle_sidebar_label=Oldalsáv be/ki\ndocument_outline.title=Dokumentum megjelenítése online (dupla kattintás minden elem kinyitásához/összecsukásához)\ndocument_outline_label=Dokumentumvázlat\nattachments.title=Mellékletek megjelenítése\nattachments_label=Van melléklet\nthumbs.title=Bélyegképek megjelenítése\nthumbs_label=Bélyegképek\nfindbar.title=Keresés a dokumentumban\nfindbar_label=Keresés\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title={{page}}. oldal\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}}. oldal bélyegképe\n\n# Find panel button title and messages\nfind_input.title=Keresés\nfind_input.placeholder=Keresés a dokumentumban…\nfind_previous.title=A kifejezés előző előfordulásának keresése\nfind_previous_label=Előző\nfind_next.title=A kifejezés következő előfordulásának keresése\nfind_next_label=Tovább\nfind_highlight=Összes kiemelése\nfind_match_case_label=Kis- és nagybetűk megkülönböztetése\nfind_entire_word_label=Teljes szavak\nfind_reached_top=A dokumentum eleje elérve, folytatás a végétől\nfind_reached_bottom=A dokumentum vége elérve, folytatás az elejétől\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} / {{total}} találat\nfind_match_count[two]={{current}} / {{total}} találat\nfind_match_count[few]={{current}} / {{total}} találat\nfind_match_count[many]={{current}} / {{total}} találat\nfind_match_count[other]={{current}} / {{total}} találat\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Több mint {{limit}} találat\nfind_match_count_limit[one]=Több mint {{limit}} találat\nfind_match_count_limit[two]=Több mint {{limit}} találat\nfind_match_count_limit[few]=Több mint {{limit}} találat\nfind_match_count_limit[many]=Több mint {{limit}} találat\nfind_match_count_limit[other]=Több mint {{limit}} találat\nfind_not_found=A kifejezés nem található\n\n# Error panel labels\nerror_more_info=További tudnivalók\nerror_less_info=Kevesebb információ\nerror_close=Bezárás\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Üzenet: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Verem: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fájl: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Sor: {{line}}\nrendering_error=Hiba történt az oldal feldolgozása közben.\n\n# Predefined zoom values\npage_scale_width=Oldalszélesség\npage_scale_fit=Teljes oldal\npage_scale_auto=Automatikus nagyítás\npage_scale_actual=Valódi méret\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Hiba\nloading_error=Hiba történt a PDF betöltésekor.\ninvalid_file_error=Érvénytelen vagy sérült PDF fájl.\nmissing_file_error=Hiányzó PDF fájl.\nunexpected_response_error=Váratlan kiszolgálóválasz.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} megjegyzés]\npassword_label=Adja meg a jelszót a PDF fájl megnyitásához.\npassword_invalid=Helytelen jelszó. Próbálja újra.\npassword_ok=OK\npassword_cancel=Mégse\n\nprinting_not_supported=Figyelmeztetés: Ez a böngésző nem teljesen támogatja a nyomtatást.\nprinting_not_ready=Figyelmeztetés: A PDF nincs teljesen betöltve a nyomtatáshoz.\nweb_fonts_disabled=Webes betűkészletek letiltva: nem használhatók a beágyazott PDF betűkészletek.\ndocument_colors_not_allowed=A PDF dokumentumok nem használhatják saját színeiket: „Az oldalak a saját maguk által kiválasztott színeket használhatják” beállítás ki van kapcsolva a böngészőben.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/hy-AM/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Նախորդ էջը\nprevious_label=Նախորդը\nnext.title=Հաջորդ էջը\nnext_label=Հաջորդը\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Էջ.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}}-ից\\u0020\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}}-ը {{pagesCount}})-ից\n\nzoom_out.title=Փոքրացնել\nzoom_out_label=Փոքրացնել\nzoom_in.title=Խոշորացնել\nzoom_in_label=Խոշորացնել\nzoom.title=Մասշտաբը\\u0020\npresentation_mode.title=Անցնել Ներկայացման եղանակին\npresentation_mode_label=Ներկայացման եղանակ\nopen_file.title=Բացել Ֆայլ\nopen_file_label=Բացել\nprint.title=Տպել\nprint_label=Տպել\ndownload.title=Բեռնել\ndownload_label=Բեռնել\nbookmark.title=Ընթացիկ տեսքով (պատճենել կամ բացել նոր պատուհանում)\nbookmark_label=Ընթացիկ տեսքը\n\n# Secondary toolbar and context menu\ntools.title=Գործիքներ\ntools_label=Գործիքներ\nfirst_page.title=Անցնել առաջին էջին\nfirst_page.label=Անցնել առաջին էջին\nfirst_page_label=Անցնել առաջին էջին\nlast_page.title=Անցնել վերջին էջին\nlast_page.label=Անցնել վերջին էջին\nlast_page_label=Անցնել վերջին էջին\npage_rotate_cw.title=Պտտել ըստ ժամացույցի սլաքի\npage_rotate_cw.label=Պտտել ըստ ժամացույցի սլաքի\npage_rotate_cw_label=Պտտել ըստ ժամացույցի սլաքի\npage_rotate_ccw.title=Պտտել հակառակ ժամացույցի սլաքի\npage_rotate_ccw.label=Պտտել հակառակ ժամացույցի սլաքի\npage_rotate_ccw_label=Պտտել հակառակ ժամացույցի սլաքի\n\ncursor_text_select_tool.title=Միացնել Տեքստը ընտրելու գործիքը\ncursor_text_select_tool_label=Տեքստը ընտրելու գործիք\ncursor_hand_tool.title=Միացնել Ձեռքի գործիքը\ncursor_hand_tool_label=Ձեռքի գործիք\n\n# Document properties dialog box\ndocument_properties.title=Փաստաթղթի հատկությունները...\ndocument_properties_label=Փաստաթղթի հատկությունները...\ndocument_properties_file_name=Ֆայլի անունը.\ndocument_properties_file_size=Ֆայլի չափը.\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} ԿԲ ({{size_b}} բայթ)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} ՄԲ ({{size_b}} բայթ)\ndocument_properties_title=Վերնագիր.\ndocument_properties_author=Հեղինակ․\ndocument_properties_subject=Վերնագիր.\ndocument_properties_keywords=Հիմնաբառ.\ndocument_properties_creation_date=Ստեղծելու ամսաթիվը.\ndocument_properties_modification_date=Փոփոխելու ամսաթիվը.\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Ստեղծող.\ndocument_properties_producer=PDF-ի հեղինակը.\ndocument_properties_version=PDF-ի տարբերակը.\ndocument_properties_page_count=Էջերի քանակը.\ndocument_properties_page_size=Էջի չափը.\ndocument_properties_page_size_unit_inches=դյ.\ndocument_properties_page_size_unit_millimeters=մմ\ndocument_properties_page_size_orientation_portrait=ուղղաձիգ\ndocument_properties_page_size_orientation_landscape=հորիզոնական\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Նամակ\ndocument_properties_page_size_name_legal=Օրինական\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\ndocument_properties_close=Փակել\n\nprint_progress_message=Նախապատրաստում է փաստաթուղթը տպելուն...\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Չեղարկել\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Բացել/Փակել Կողային վահանակը\ntoggle_sidebar_notification.title=Փոխանջատել Կողային գոտին (փաստաթուղթը պարունակում է ուրվագիծ/կցորդ)\ntoggle_sidebar_label=Բացել/Փակել Կողային վահանակը\ndocument_outline.title=Ցուցադրել փաստաթղթի ուրվագիծը (կրկնակի սեղմեք՝ միույթները ընդարձակելու/կոծկելու համար)\ndocument_outline_label=Փաստաթղթի բովանդակությունը\nattachments.title=Ցուցադրել կցորդները\nattachments_label=Կցորդներ\nthumbs.title=Ցուցադրել Մանրապատկերը\nthumbs_label=Մանրապատկերը\nfindbar.title=Գտնել փաստաթղթում\nfindbar_label=Որոնում\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Էջը {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Էջի մանրապատկերը {{page}}\n\n# Find panel button title and messages\nfind_input.title=Որոնում\nfind_input.placeholder=Գտնել փաստաթղթում...\nfind_previous.title=Գտնել անրահայտության նախորդ հանդիպումը\nfind_previous_label=Նախորդը\nfind_next.title=Գտիր արտահայտության հաջորդ հանդիպումը\nfind_next_label=Հաջորդը\nfind_highlight=Գունանշել բոլորը\nfind_match_case_label=Մեծ(փոքր)ատառ հաշվի առնել\nfind_reached_top=Հասել եք փաստաթղթի վերևին, կշարունակվի ներքևից\nfind_reached_bottom=Հասել եք փաստաթղթի վերջին, կշարունակվի վերևից\nfind_not_found=Արտահայտությունը չգտնվեց\n\n# Error panel labels\nerror_more_info=Ավելի շատ տեղեկություն\nerror_less_info=Քիչ տեղեկություն\nerror_close=Փակել\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (կառուցումը. {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Գրությունը. {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Շեղջ. {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Ֆայլ. {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Տողը. {{line}}\nrendering_error=Սխալ՝ էջը ստեղծելիս:\n\n# Predefined zoom values\npage_scale_width=Էջի լայնքը\npage_scale_fit=Ձգել էջը\npage_scale_auto=Ինքնաշխատ\npage_scale_actual=Իրական չափը\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Սխալ\nloading_error=Սխալ՝ PDF ֆայլը բացելիս։\ninvalid_file_error=Սխալ կամ բնասված PDF ֆայլ:\nmissing_file_error=PDF ֆայլը բացակայում է:\nunexpected_response_error=Սպասարկիչի անսպասելի պատասխան:\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Ծանոթություն]\npassword_label=Մուտքագրեք PDF-ի գաղտնաբառը:\npassword_invalid=Գաղտնաբառը սխալ է: Կրկին փորձեք:\npassword_ok=Լավ\npassword_cancel=Չեղարկել\n\nprinting_not_supported=Զգուշացում. Տպելը ամբողջությամբ չի աջակցվում դիտարկիչի կողմից։\nprinting_not_ready=Զգուշացում. PDF-ը ամբողջությամբ չի բեռնավորվել տպելու համար:\nweb_fonts_disabled=Վեբ-տառատեսակները անջատված են. հնարավոր չէ օգտագործել ներկառուցված PDF տառատեսակները:\ndocument_colors_not_allowed=PDF փաստաթղթերին թույլատրված չէ օգտագործել իրենց սեփական գույները: “Թույլատրել էջերին ընտրել իրենց սեփական գույները“ ընտրանքը անջատված է դիտարկիչում:\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ia/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Pagina previe\nprevious_label=Previe\nnext.title=Pagina sequente\nnext_label=Sequente\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pagina\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} de {{pagesCount}})\n\nzoom_out.title=Distantiar\nzoom_out_label=Distantiar\nzoom_in.title=Approximar\nzoom_in_label=Approximar\nzoom.title=Zoom\npresentation_mode.title=Excambiar a modo presentation\npresentation_mode_label=Modo presentation\nopen_file.title=Aperir file\nopen_file_label=Aperir\nprint.title=Imprimer\nprint_label=Imprimer\ndownload.title=Discargar\ndownload_label=Discargar\nbookmark.title=Vista actual (copiar o aperir in un nove fenestra)\nbookmark_label=Vista actual\n\n# Secondary toolbar and context menu\ntools.title=Instrumentos\ntools_label=Intrumentos\nfirst_page.title=Ir al prime pagina\nfirst_page.label=Ir al prime pagina\nfirst_page_label=Ir al prime pagina\nlast_page.title=Ir al prime pagina\nlast_page.label=Ir al prime pagina\nlast_page_label=Ir al prime pagina\npage_rotate_cw.title=Rotar in senso horari\npage_rotate_cw.label=Rotar in senso horari\npage_rotate_cw_label=Rotar in senso horari\npage_rotate_ccw.title=Rotar in senso antihorari\npage_rotate_ccw.label=Rotar in senso antihorari\npage_rotate_ccw_label=Rotar in senso antihorari\n\ncursor_text_select_tool.title=Activar le instrumento de selection de texto\ncursor_text_select_tool_label=Instrumento de selection de texto\ncursor_hand_tool.title=Activar le instrumento mano\ncursor_hand_tool_label=Instrumento mano\n\nscroll_vertical.title=Usar rolamento vertical\nscroll_vertical_label=Rolamento vertical\nscroll_horizontal.title=Usar rolamento horizontal\nscroll_horizontal_label=Rolamento horizontal\nscroll_wrapped.title=Usar rolamento incapsulate\nscroll_wrapped_label=Rolamento incapsulate\n\nspread_none.title=Non junger paginas dual\nspread_none_label=Sin paginas dual\nspread_odd.title=Junger paginas dual a partir de paginas con numeros impar\nspread_odd_label=Paginas dual impar\nspread_even.title=Junger paginas dual a partir de paginas con numeros par\nspread_even_label=Paginas dual par\n\n# Document properties dialog box\ndocument_properties.title=Proprietates del documento…\ndocument_properties_label=Proprietates del documento…\ndocument_properties_file_name=Nomine del file:\ndocument_properties_file_size=Dimension de file:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Titulo:\ndocument_properties_author=Autor:\ndocument_properties_subject=Subjecto:\ndocument_properties_keywords=Parolas clave:\ndocument_properties_creation_date=Data de creation:\ndocument_properties_modification_date=Data de modification:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creator:\ndocument_properties_producer=Productor PDF:\ndocument_properties_version=Version PDF:\ndocument_properties_page_count=Numero de paginas:\ndocument_properties_page_size=Dimension del pagina:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=vertical\ndocument_properties_page_size_orientation_landscape=horizontal\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Littera\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Vista web rapide:\ndocument_properties_linearized_yes=Si\ndocument_properties_linearized_no=No\ndocument_properties_close=Clauder\n\nprint_progress_message=Preparation del documento pro le impression…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancellar\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Monstrar/celar le barra lateral\ntoggle_sidebar_notification.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos)\ntoggle_sidebar_label=Monstrar/celar le barra lateral\ndocument_outline.title=Monstrar le schema del documento (clic duple pro expander/contraher tote le elementos)\ndocument_outline_label=Schema del documento\nattachments.title=Monstrar le annexos\nattachments_label=Annexos\nthumbs.title=Monstrar le vignettes\nthumbs_label=Vignettes\nfindbar.title=Recercar in le documento\nfindbar_label=Cercar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pagina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Vignette del pagina {{page}}\n\n# Find panel button title and messages\nfind_input.title=Cercar\nfind_input.placeholder=Cercar in le documento…\nfind_previous.title=Trovar le previe occurrentia del phrase\nfind_previous_label=Previe\nfind_next.title=Trovar le successive occurrentia del phrase\nfind_next_label=Sequente\nfind_highlight=Evidentiar toto\nfind_match_case_label=Distinger majusculas/minusculas\nfind_entire_word_label=Parolas integre\nfind_reached_top=Le initio del documento ha essite attingite, on continua ab le fin\nfind_reached_bottom=Le fin del documento ha essite attingite, on continua ab le initio\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} de {{total}} concordantia\nfind_match_count[two]={{current}} de {{total}} concordantias\nfind_match_count[few]={{current}} de {{total}} concordantias\nfind_match_count[many]={{current}} de {{total}} concordantias\nfind_match_count[other]={{current}} de {{total}} concordantias\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Plus de {{limit}} concordantias\nfind_match_count_limit[one]=Plus de {{limit}} concordantia\nfind_match_count_limit[two]=Plus de {{limit}} concordantias\nfind_match_count_limit[few]=Plus de {{limit}} concordantias\nfind_match_count_limit[many]=\nfind_match_count_limit[other]=Plus de {{limit}} concordantias\nfind_not_found=Phrase non trovate\n\n# Error panel labels\nerror_more_info=Plus de informationes\nerror_less_info=Minus de informationes\nerror_close=Clauder\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Message: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linea: {{line}}\nrendering_error=Un error occurreva durante que on processava le pagina.\n\n# Predefined zoom values\npage_scale_width=Largessa pagina plen\npage_scale_fit=Pagina integre\npage_scale_auto=Zoom automatic\npage_scale_actual=Dimension actual\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=Un error occurreva durante que on cargava le file PDF.\ninvalid_file_error=File PDF corrumpite o non valide.\nmissing_file_error=File PDF mancante.\nunexpected_response_error=Responsa del servitor inexpectate.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=Insere le contrasigno pro aperir iste file PDF.\npassword_invalid=Contrasigno invalide. Per favor retenta.\npassword_ok=OK\npassword_cancel=Cancellar\n\nprinting_not_supported=Attention : le impression non es totalmente supportate per ce navigator.\nprinting_not_ready=Attention: le file PDF non es integremente cargate pro lo poter imprimer.\nweb_fonts_disabled=Le typos de character de web es inactive: incapace de usar le typos de character incorporate al PDF.\ndocument_colors_not_allowed=Le documentos PDF non pote utilisar lor proprie colores: “Autorisar le paginas web a utilisar lor proprie colores” es disactivate in le navigator.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/id/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Laman Sebelumnya\nprevious_label=Sebelumnya\nnext.title=Laman Selanjutnya\nnext_label=Selanjutnya\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Halaman\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=dari {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} dari {{pagesCount}})\n\nzoom_out.title=Perkecil\nzoom_out_label=Perkecil\nzoom_in.title=Perbesar\nzoom_in_label=Perbesar\nzoom.title=Perbesaran\npresentation_mode.title=Ganti ke Mode Presentasi\npresentation_mode_label=Mode Presentasi\nopen_file.title=Buka Berkas\nopen_file_label=Buka\nprint.title=Cetak\nprint_label=Cetak\ndownload.title=Unduh\ndownload_label=Unduh\nbookmark.title=Tampilan Sekarang (salin atau buka di jendela baru)\nbookmark_label=Tampilan Sekarang\n\n# Secondary toolbar and context menu\ntools.title=Alat\ntools_label=Alat\nfirst_page.title=Buka Halaman Pertama\nfirst_page.label=Ke Halaman Pertama\nfirst_page_label=Buka Halaman Pertama\nlast_page.title=Buka Halaman Terakhir\nlast_page.label=Ke Halaman Terakhir\nlast_page_label=Buka Halaman Terakhir\npage_rotate_cw.title=Putar Searah Jarum Jam\npage_rotate_cw.label=Putar Searah Jarum Jam\npage_rotate_cw_label=Putar Searah Jarum Jam\npage_rotate_ccw.title=Putar Berlawanan Arah Jarum Jam\npage_rotate_ccw.label=Putar Berlawanan Arah Jarum Jam\npage_rotate_ccw_label=Putar Berlawanan Arah Jarum Jam\n\ncursor_text_select_tool.title=Aktifkan Alat Seleksi Teks\ncursor_text_select_tool_label=Alat Seleksi Teks\ncursor_hand_tool.title=Aktifkan Alat Tangan\ncursor_hand_tool_label=Alat Tangan\n\nscroll_vertical.title=Gunakan Penggeseran Vertikal\nscroll_vertical_label=Penggeseran Vertikal\nscroll_horizontal.title=Gunakan Penggeseran Horizontal\nscroll_horizontal_label=Penggeseran Horizontal\nscroll_wrapped.title=Gunakan Penggeseran Terapit\nscroll_wrapped_label=Penggeseran Terapit\n\nspread_none.title=Jangan gabungkan lembar halaman\nspread_none_label=Tidak Ada Lembaran\nspread_odd.title=Gabungkan lembar lamanan mulai dengan halaman ganjil\nspread_odd_label=Lembaran Ganjil\nspread_even.title=Gabungkan lembar halaman dimulai dengan halaman genap\nspread_even_label=Lembaran Genap\n\n# Document properties dialog box\ndocument_properties.title=Properti Dokumen…\ndocument_properties_label=Properti Dokumen…\ndocument_properties_file_name=Nama berkas:\ndocument_properties_file_size=Ukuran berkas:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} byte)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} byte)\ndocument_properties_title=Judul:\ndocument_properties_author=Penyusun:\ndocument_properties_subject=Subjek:\ndocument_properties_keywords=Kata Kunci:\ndocument_properties_creation_date=Tanggal Dibuat:\ndocument_properties_modification_date=Tanggal Dimodifikasi:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Pembuat:\ndocument_properties_producer=Pemroduksi PDF:\ndocument_properties_version=Versi PDF:\ndocument_properties_page_count=Jumlah Halaman:\ndocument_properties_page_size=Ukuran Laman:\ndocument_properties_page_size_unit_inches=inci\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=tegak\ndocument_properties_page_size_orientation_landscape=mendatar\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Tampilan Web Kilat:\ndocument_properties_linearized_yes=Ya\ndocument_properties_linearized_no=Tidak\ndocument_properties_close=Tutup\n\nprint_progress_message=Menyiapkan dokumen untuk pencetakan…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Batalkan\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping\ntoggle_sidebar_notification.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran)\ntoggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping\ndocument_outline.title=Tampilkan Kerangka Dokumen (klik ganda untuk membentangkan/menciutkan semua item)\ndocument_outline_label=Kerangka Dokumen\nattachments.title=Tampilkan Lampiran\nattachments_label=Lampiran\nthumbs.title=Tampilkan Miniatur\nthumbs_label=Miniatur\nfindbar.title=Temukan di Dokumen\nfindbar_label=Temukan\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Laman {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatur Laman {{page}}\n\n# Find panel button title and messages\nfind_input.title=Temukan\nfind_input.placeholder=Temukan di dokumen…\nfind_previous.title=Temukan kata sebelumnya\nfind_previous_label=Sebelumnya\nfind_next.title=Temukan lebih lanjut\nfind_next_label=Selanjutnya\nfind_highlight=Sorot semuanya\nfind_match_case_label=Cocokkan BESAR/kecil\nfind_entire_word_label=Seluruh teks\nfind_reached_top=Sampai di awal dokumen, dilanjutkan dari bawah\nfind_reached_bottom=Sampai di akhir dokumen, dilanjutkan dari atas\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} dari {{total}} hasil\nfind_match_count[two]={{current}} dari {{total}} hasil\nfind_match_count[few]={{current}} dari {{total}} hasil\nfind_match_count[many]={{current}} dari {{total}} hasil\nfind_match_count[other]={{current}} dari {{total}} hasil\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Ditemukan lebih dari {{limit}}\nfind_match_count_limit[one]=Ditemukan lebih dari {{limit}}\nfind_match_count_limit[two]=Ditemukan lebih dari {{limit}}\nfind_match_count_limit[few]=Ditemukan lebih dari {{limit}}\nfind_match_count_limit[many]=Ditemukan lebih dari {{limit}}\nfind_match_count_limit[other]=Ditemukan lebih dari {{limit}}\nfind_not_found=Frasa tidak ditemukan\n\n# Error panel labels\nerror_more_info=Lebih Banyak Informasi\nerror_less_info=Lebih Sedikit Informasi\nerror_close=Tutup\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Pesan: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Berkas: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Baris: {{line}}\nrendering_error=Galat terjadi saat merender laman.\n\n# Predefined zoom values\npage_scale_width=Lebar Laman\npage_scale_fit=Muat Laman\npage_scale_auto=Perbesaran Otomatis\npage_scale_actual=Ukuran Asli\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Galat\nloading_error=Galat terjadi saat memuat PDF.\ninvalid_file_error=Berkas PDF tidak valid atau rusak.\nmissing_file_error=Berkas PDF tidak ada.\nunexpected_response_error=Balasan server yang tidak diharapkan.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotasi {{type}}]\npassword_label=Masukkan sandi untuk membuka berkas PDF ini.\npassword_invalid=Sandi tidak valid. Silakan coba lagi.\npassword_ok=Oke\npassword_cancel=Batal\n\nprinting_not_supported=Peringatan: Pencetakan tidak didukung secara lengkap pada peramban ini.\nprinting_not_ready=Peringatan: Berkas PDF masih belum dimuat secara lengkap untuk dapat dicetak.\nweb_fonts_disabled=Font web dinonaktifkan: tidak dapat menggunakan font PDF yang tersemat.\ndocument_colors_not_allowed=Dokumen PDF tidak diizinkan untuk menggunakan warnanya sendiri karena setelan 'Izinkan laman memilih warna sendiri' dinonaktifkan pada pengaturan.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/is/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Fyrri síða\nprevious_label=Fyrri\nnext.title=Næsta síða\nnext_label=Næsti\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Síða\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=af {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} af {{pagesCount}})\n\nzoom_out.title=Minnka\nzoom_out_label=Minnka\nzoom_in.title=Stækka\nzoom_in_label=Stækka\nzoom.title=Aðdráttur\npresentation_mode.title=Skipta yfir á kynningarham\npresentation_mode_label=Kynningarhamur\nopen_file.title=Opna skrá\nopen_file_label=Opna\nprint.title=Prenta\nprint_label=Prenta\ndownload.title=Hala niður\ndownload_label=Hala niður\nbookmark.title=Núverandi sýn (afritaðu eða opnaðu í nýjum glugga)\nbookmark_label=Núverandi sýn\n\n# Secondary toolbar and context menu\ntools.title=Verkfæri\ntools_label=Verkfæri\nfirst_page.title=Fara á fyrstu síðu\nfirst_page.label=Fara á fyrstu síðu\nfirst_page_label=Fara á fyrstu síðu\nlast_page.title=Fara á síðustu síðu\nlast_page.label=Fara á síðustu síðu\nlast_page_label=Fara á síðustu síðu\npage_rotate_cw.title=Snúa réttsælis\npage_rotate_cw.label=Snúa réttsælis\npage_rotate_cw_label=Snúa réttsælis\npage_rotate_ccw.title=Snúa rangsælis\npage_rotate_ccw.label=Snúa rangsælis\npage_rotate_ccw_label=Snúa rangsælis\n\ncursor_text_select_tool.title=Virkja textavalsáhald\ncursor_text_select_tool_label=Textavalsáhald\ncursor_hand_tool.title=Virkja handarverkfæri\ncursor_hand_tool_label=Handarverkfæri\n\n\n\n# Document properties dialog box\ndocument_properties.title=Eiginleikar skjals…\ndocument_properties_label=Eiginleikar skjals…\ndocument_properties_file_name=Skráarnafn:\ndocument_properties_file_size=Skrárstærð:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Titill:\ndocument_properties_author=Hönnuður:\ndocument_properties_subject=Efni:\ndocument_properties_keywords=Stikkorð:\ndocument_properties_creation_date=Búið til:\ndocument_properties_modification_date=Dags breytingar:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Höfundur:\ndocument_properties_producer=PDF framleiðandi:\ndocument_properties_version=PDF útgáfa:\ndocument_properties_page_count=Blaðsíðufjöldi:\ndocument_properties_page_size=Stærð síðu:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=skammsnið\ndocument_properties_page_size_orientation_landscape=langsnið\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_close=Loka\n\nprint_progress_message=Undirbý skjal fyrir prentun…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Hætta við\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Víxla hliðslá\ntoggle_sidebar_notification.title=Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi)\ntoggle_sidebar_label=Víxla hliðslá\ndocument_outline.title=Sýna yfirlit skjals (tvísmelltu til að opna/loka öllum hlutum)\ndocument_outline_label=Efnisskipan skjals\nattachments.title=Sýna viðhengi\nattachments_label=Viðhengi\nthumbs.title=Sýna smámyndir\nthumbs_label=Smámyndir\nfindbar.title=Leita í skjali\nfindbar_label=Leita\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Síða {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Smámynd af síðu {{page}}\n\n# Find panel button title and messages\nfind_input.title=Leita\nfind_input.placeholder=Leita í skjali…\nfind_previous.title=Leita að fyrra tilfelli þessara orða\nfind_previous_label=Fyrri\nfind_next.title=Leita að næsta tilfelli þessara orða\nfind_next_label=Næsti\nfind_highlight=Lita allt\nfind_match_case_label=Passa við stafstöðu\nfind_reached_top=Náði efst í skjal, held áfram neðst\nfind_reached_bottom=Náði enda skjals, held áfram efst\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_not_found=Fann ekki orðið\n\n# Error panel labels\nerror_more_info=Meiri upplýsingar\nerror_less_info=Minni upplýsingar\nerror_close=Loka\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Skilaboð: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stafli: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Skrá: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Lína: {{line}}\nrendering_error=Upp kom villa við að birta síðuna.\n\n# Predefined zoom values\npage_scale_width=Síðubreidd\npage_scale_fit=Passa á síðu\npage_scale_auto=Sjálfvirkur aðdráttur\npage_scale_actual=Raunstærð\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Villa\nloading_error=Villa kom upp við að hlaða inn PDF.\ninvalid_file_error=Ógild eða skemmd PDF skrá.\nmissing_file_error=Vantar PDF skrá.\nunexpected_response_error=Óvænt svar frá netþjóni.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Skýring]\npassword_label=Sláðu inn lykilorð til að opna þessa PDF skrá.\npassword_invalid=Ógilt lykilorð. Reyndu aftur.\npassword_ok=Í lagi\npassword_cancel=Hætta við\n\nprinting_not_supported=Aðvörun: Prentun er ekki með fyllilegan stuðning á þessum vafra.\nprinting_not_ready=Aðvörun: Ekki er búið að hlaða inn allri PDF skránni fyrir prentun.\nweb_fonts_disabled=Vef leturgerðir eru óvirkar: get ekki notað innbyggðar PDF leturgerðir.\ndocument_colors_not_allowed=PDF skjöl hafa ekki leyfi til að nota sína eigin liti: “Leyfa síðum að velja eigin liti” er óvirkt í vafranum.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/it/viewer.properties",
    "content": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\nprevious.title = Pagina precedente\nprevious_label = Precedente\nnext.title = Pagina successiva\nnext_label = Successiva\npage.title = Pagina\nof_pages = di {{pagesCount}}\npage_of_pages = ({{pageNumber}} di {{pagesCount}})\nzoom_out.title = Riduci zoom\nzoom_out_label = Riduci zoom\nzoom_in.title = Aumenta zoom\nzoom_in_label = Aumenta zoom\nzoom.title = Zoom\npresentation_mode.title = Passa alla modalità presentazione\npresentation_mode_label = Modalità presentazione\nopen_file.title = Apri file\nopen_file_label = Apri\nprint.title = Stampa\nprint_label = Stampa\ndownload.title = Scarica questo documento\ndownload_label = Download\nbookmark.title = Visualizzazione corrente (copia o apri in una nuova finestra)\nbookmark_label = Visualizzazione corrente\ntools.title = Strumenti\ntools_label = Strumenti\nfirst_page.title = Vai alla prima pagina\nfirst_page.label = Vai alla prima pagina\nfirst_page_label = Vai alla prima pagina\nlast_page.title = Vai all’ultima pagina\nlast_page.label = Vai all’ultima pagina\nlast_page_label = Vai all’ultima pagina\npage_rotate_cw.title = Ruota in senso orario\npage_rotate_cw.label = Ruota in senso orario\npage_rotate_cw_label = Ruota in senso orario\npage_rotate_ccw.title = Ruota in senso antiorario\npage_rotate_ccw.label = Ruota in senso antiorario\npage_rotate_ccw_label = Ruota in senso antiorario\ncursor_text_select_tool.title = Attiva strumento di selezione testo\ncursor_text_select_tool_label = Strumento di selezione testo\ncursor_hand_tool.title = Attiva strumento mano\ncursor_hand_tool_label = Strumento mano\nscroll_vertical.title = Scorri le pagine in verticale\nscroll_vertical_label = Scorrimento verticale\nscroll_horizontal.title = Scorri le pagine in orizzontale\nscroll_horizontal_label = Scorrimento orizzontale\nscroll_wrapped.title = Scorri le pagine in verticale, disponendole da sinistra a destra e andando a capo automaticamente\nscroll_wrapped_label = Scorrimento con a capo automatico\nspread_none.title = Non raggruppare pagine\nspread_none_label = Nessun raggruppamento\nspread_odd.title = Crea gruppi di pagine che iniziano con numeri di pagina dispari\nspread_odd_label = Raggruppamento dispari\nspread_even.title = Crea gruppi di pagine che iniziano con numeri di pagina pari\nspread_even_label = Raggruppamento pari\ndocument_properties.title = Proprietà del documento…\ndocument_properties_label = Proprietà del documento…\ndocument_properties_file_name = Nome file:\ndocument_properties_file_size = Dimensione file:\ndocument_properties_kb = {{size_kb}} kB ({{size_b}} byte)\ndocument_properties_mb = {{size_mb}} MB ({{size_b}} byte)\ndocument_properties_title = Titolo:\ndocument_properties_author = Autore:\ndocument_properties_subject = Oggetto:\ndocument_properties_keywords = Parole chiave:\ndocument_properties_creation_date = Data creazione:\ndocument_properties_modification_date = Data modifica:\ndocument_properties_date_string = {{date}}, {{time}}\ndocument_properties_creator = Autore originale:\ndocument_properties_producer = Produttore PDF:\ndocument_properties_version = Versione PDF:\ndocument_properties_page_count = Conteggio pagine:\ndocument_properties_page_size = Dimensioni pagina:\ndocument_properties_page_size_unit_inches = in\ndocument_properties_page_size_unit_millimeters = mm\ndocument_properties_page_size_orientation_portrait = verticale\ndocument_properties_page_size_orientation_landscape = orizzontale\ndocument_properties_page_size_name_a3 = A3\ndocument_properties_page_size_name_a4 = A4\ndocument_properties_page_size_name_letter = Lettera\ndocument_properties_page_size_name_legal = Legale\ndocument_properties_page_size_dimension_string = {{width}} × {{height}} {{unit}} ({{orientation}})\ndocument_properties_page_size_dimension_name_string = {{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\ndocument_properties_linearized = Visualizzazione web veloce:\ndocument_properties_linearized_yes = Sì\ndocument_properties_linearized_no = No\ndocument_properties_close = Chiudi\nprint_progress_message = Preparazione documento per la stampa…\nprint_progress_percent = {{progress}}%\nprint_progress_close = Annulla\ntoggle_sidebar.title = Attiva/disattiva barra laterale\ntoggle_sidebar_notification.title = Attiva/disattiva barra laterale (il documento contiene struttura/allegati)\ntoggle_sidebar_label = Attiva/disattiva barra laterale\ndocument_outline.title = Visualizza la struttura del documento (doppio clic per visualizzare/nascondere tutti gli elementi)\ndocument_outline_label = Struttura documento\nattachments.title = Visualizza allegati\nattachments_label = Allegati\nthumbs.title = Mostra le miniature\nthumbs_label = Miniature\nfindbar.title = Trova nel documento\nfindbar_label = Trova\nthumb_page_title = Pagina {{page}}\nthumb_page_canvas = Miniatura della pagina {{page}}\nfind_input.title = Trova\nfind_input.placeholder = Trova nel documento…\nfind_previous.title = Trova l’occorrenza precedente del testo da cercare\nfind_previous_label = Precedente\nfind_next.title = Trova l’occorrenza successiva del testo da cercare\nfind_next_label = Successivo\nfind_highlight = Evidenzia\nfind_match_case_label = Maiuscole/minuscole\nfind_entire_word_label = Parole intere\nfind_reached_top = Raggiunto l’inizio della pagina, continua dalla fine\nfind_reached_bottom = Raggiunta la fine della pagina, continua dall’inizio\nfind_match_count = {[ plural(total) ]}\nfind_match_count[one] = {{current}} di {{total}} corrispondenza\nfind_match_count[two] = {{current}} di {{total}} corrispondenze\nfind_match_count[few] = {{current}} di {{total}} corrispondenze\nfind_match_count[many] = {{current}} di {{total}} corrispondenze\nfind_match_count[other] = {{current}} di {{total}} corrispondenze\nfind_match_count_limit = {[ plural(limit) ]}\nfind_match_count_limit[zero] = Più di {{limit}} corrispondenze\nfind_match_count_limit[one] = Più di {{limit}} corrispondenza\nfind_match_count_limit[two] = Più di {{limit}} corrispondenze\nfind_match_count_limit[few] = Più di {{limit}} corrispondenze\nfind_match_count_limit[many] = Più di {{limit}} corrispondenze\nfind_match_count_limit[other] = Più di {{limit}} corrispondenze\nfind_not_found = Testo non trovato\nerror_more_info = Ulteriori informazioni\nerror_less_info = Nascondi dettagli\nerror_close = Chiudi\nerror_version_info = PDF.js v{{version}} (build: {{build}})\nerror_message = Messaggio: {{message}}\nerror_stack = Stack: {{stack}}\nerror_file = File: {{file}}\nerror_line = Riga: {{line}}\nrendering_error = Si è verificato un errore durante il rendering della pagina.\npage_scale_width = Larghezza pagina\npage_scale_fit = Adatta a una pagina\npage_scale_auto = Zoom automatico\npage_scale_actual = Dimensioni effettive\npage_scale_percent = {{scale}}%\nloading_error_indicator = Errore\nloading_error = Si è verificato un errore durante il caricamento del PDF.\ninvalid_file_error = File PDF non valido o danneggiato.\nmissing_file_error = File PDF non disponibile.\nunexpected_response_error = Risposta imprevista del server\ntext_annotation_type.alt = [Annotazione: {{type}}]\npassword_label = Inserire la password per aprire questo file PDF.\npassword_invalid = Password non corretta. Riprovare.\npassword_ok = OK\npassword_cancel = Annulla\nprinting_not_supported = Attenzione: la stampa non è completamente supportata da questo browser.\nprinting_not_ready = Attenzione: il PDF non è ancora stato caricato completamente per la stampa.\nweb_fonts_disabled = I web font risultano disattivati: impossibile utilizzare i caratteri inclusi nel PDF.\ndocument_colors_not_allowed = Non è possibile visualizzare i colori originali definiti nel file PDF: l’opzione del browser “Consenti alle pagine di scegliere i propri colori invece di quelli impostati” è disattivata.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ja/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=前のページへ戻ります\nprevious_label=前へ\nnext.title=次のページへ進みます\nnext_label=次へ\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=ページ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=/ {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} / {{pagesCount}})\n\nzoom_out.title=表示を縮小します\nzoom_out_label=縮小\nzoom_in.title=表示を拡大します\nzoom_in_label=拡大\nzoom.title=拡大/縮小\npresentation_mode.title=プレゼンテーションモードに切り替えます\npresentation_mode_label=プレゼンテーションモード\nopen_file.title=ファイルを開きます\nopen_file_label=開く\nprint.title=印刷します\nprint_label=印刷\ndownload.title=ダウンロードします\ndownload_label=ダウンロード\nbookmark.title=現在のビューの URL です (コピーまたは新しいウィンドウに開く)\nbookmark_label=現在のビュー\n\n# Secondary toolbar and context menu\ntools.title=ツール\ntools_label=ツール\nfirst_page.title=最初のページへ移動します\nfirst_page.label=最初のページへ移動\nfirst_page_label=最初のページへ移動\nlast_page.title=最後のページへ移動します\nlast_page.label=最後のページへ移動\nlast_page_label=最後のページへ移動\npage_rotate_cw.title=ページを右へ回転します\npage_rotate_cw.label=右回転\npage_rotate_cw_label=右回転\npage_rotate_ccw.title=ページを左へ回転します\npage_rotate_ccw.label=左回転\npage_rotate_ccw_label=左回転\n\ncursor_text_select_tool.title=テキスト選択ツールを有効にする\ncursor_text_select_tool_label=テキスト選択ツール\ncursor_hand_tool.title=手のひらツールを有効にする\ncursor_hand_tool_label=手のひらツール\n\nscroll_vertical.title=縦スクロールにする\nscroll_vertical_label=縦スクロール\nscroll_horizontal.title=横スクロールにする\nscroll_horizontal_label=横スクロール\nscroll_wrapped.title=折り返しスクロールにする\nscroll_wrapped_label=折り返しスクロール\n\nspread_none.title=見開きにしない\nspread_none_label=見開きにしない\nspread_odd.title=奇数ページ開始で見開きにする\nspread_odd_label=奇数ページ見開き\nspread_even.title=偶数ページ開始で見開きにする\nspread_even_label=偶数ページ見開き\n\n# Document properties dialog box\ndocument_properties.title=文書のプロパティ...\ndocument_properties_label=文書のプロパティ...\ndocument_properties_file_name=ファイル名:\ndocument_properties_file_size=ファイルサイズ:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=タイトル:\ndocument_properties_author=作成者:\ndocument_properties_subject=件名:\ndocument_properties_keywords=キーワード:\ndocument_properties_creation_date=作成日:\ndocument_properties_modification_date=更新日:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=アプリケーション:\ndocument_properties_producer=PDF 作成:\ndocument_properties_version=PDF のバージョン:\ndocument_properties_page_count=ページ数:\ndocument_properties_page_size=ページサイズ:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=縦\ndocument_properties_page_size_orientation_landscape=横\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=レター\ndocument_properties_page_size_name_legal=リーガル\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=ウェブ表示用に最適化:\ndocument_properties_linearized_yes=はい\ndocument_properties_linearized_no=いいえ\ndocument_properties_close=閉じる\n\nprint_progress_message=文書の印刷を準備しています...\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=キャンセル\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=サイドバー表示を切り替えます\ntoggle_sidebar_notification.title=サイドバー表示を切り替えます (文書に含まれるアウトライン / 添付)\ntoggle_sidebar_label=サイドバーの切り替え\ndocument_outline.title=文書の目次を表示します (ダブルクリックで項目を開閉します)\ndocument_outline_label=文書の目次\nattachments.title=添付ファイルを表示します\nattachments_label=添付ファイル\nthumbs.title=縮小版を表示します\nthumbs_label=縮小版\nfindbar.title=文書内を検索します\nfindbar_label=検索\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title={{page}} ページ\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=ページの縮小版 {{page}}\n\n# Find panel button title and messages\nfind_input.title=検索\nfind_input.placeholder=文書内を検索...\nfind_previous.title=現在より前の位置で指定文字列が現れる部分を検索します\nfind_previous_label=前へ\nfind_next.title=現在より後の位置で指定文字列が現れる部分を検索します\nfind_next_label=次へ\nfind_highlight=すべて強調表示\nfind_match_case_label=大文字/小文字を区別\nfind_reached_top=文書先頭に到達したので末尾から続けて検索します\nfind_reached_bottom=文書末尾に到達したので先頭から続けて検索します\nfind_not_found=見つかりませんでした\n\n# Error panel labels\nerror_more_info=詳細情報\nerror_less_info=詳細情報を隠す\nerror_close=閉じる\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (ビルド: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=メッセージ: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=スタック: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ファイル: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=行: {{line}}\nrendering_error=ページのレンダリング中にエラーが発生しました。\n\n# Predefined zoom values\npage_scale_width=幅に合わせる\npage_scale_fit=ページのサイズに合わせる\npage_scale_auto=自動ズーム\npage_scale_actual=実際のサイズ\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=エラー\nloading_error=PDF の読み込み中にエラーが発生しました。\ninvalid_file_error=無効または破損した PDF ファイル。\nmissing_file_error=PDF ファイルが見つかりません。\nunexpected_response_error=サーバーから予期せぬ応答がありました。\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} 注釈]\npassword_label=この PDF ファイルを開くためのパスワードを入力してください。\npassword_invalid=無効なパスワードです。もう一度やり直してください。\npassword_ok=OK\npassword_cancel=キャンセル\n\nprinting_not_supported=警告: このブラウザーでは印刷が完全にサポートされていません。\nprinting_not_ready=警告: PDF を印刷するための読み込みが終了していません。\nweb_fonts_disabled=ウェブフォントが無効になっています: 埋め込まれた PDF のフォントを使用できません。\ndocument_colors_not_allowed=PDF 文書は、ウェブページが指定した配色を使用することができません: 'ウェブページが指定した配色' はブラウザーで無効になっています。\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ka/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=წინა გვერდი\nprevious_label=წინა\nnext.title=შემდეგი გვერდი\nnext_label=შემდეგი\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=გვერდი\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}}-დან\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} {{pagesCount}}-დან)\n\nzoom_out.title=ზომის შემცირება\nzoom_out_label=დაშორება\nzoom_in.title=ზომის გაზრდა\nzoom_in_label=მოახლოება\nzoom.title=ზომა\npresentation_mode.title=ჩვენების რეჟიმზე გადართვა\npresentation_mode_label=ჩვენების რეჟიმი\nopen_file.title=ფაილის გახსნა\nopen_file_label=გახსნა\nprint.title=ამობეჭდვა\nprint_label=ამობეჭდვა\ndownload.title=ჩამოტვირთვა\ndownload_label=ჩამოტვირთვა\nbookmark.title=მიმდინარე ხედი (დაკოპირება ან გახსნა ახალ ფანჯარაში)\nbookmark_label=მიმდინარე ხედი\n\n# Secondary toolbar and context menu\ntools.title=ხელსაწყოები\ntools_label=ხელსაწყოები\nfirst_page.title=პირველ გვერდზე გადასვლა\nfirst_page.label=პირველ გვერდზე გადასვლა\nfirst_page_label=პირველ გვერდზე გადასვლა\nlast_page.title=ბოლო გვერდზე გადასვლა\nlast_page.label=ბოლო გვერდზე გადასვლა\nlast_page_label=ბოლო გვერდზე გადასვლა\npage_rotate_cw.title=საათის ისრის მიმართულებით შებრუნება\npage_rotate_cw.label=მარჯვნივ გადაბრუნება\npage_rotate_cw_label=მარჯვნივ გადაბრუნება\npage_rotate_ccw.title=საათის ისრის საპირისპიროდ შებრუნება\npage_rotate_ccw.label=მარცხნივ გადაბრუნება\npage_rotate_ccw_label=მარცხნივ გადაბრუნება\n\ncursor_text_select_tool.title=მოსანიშნი მაჩვენებლის გამოყენება\ncursor_text_select_tool_label=მოსანიშნი მაჩვენებელი\ncursor_hand_tool.title=გადასაადგილებელი მაჩვენებლის გამოყენება\ncursor_hand_tool_label=გადასაადგილებელი\n\nscroll_vertical.title=გვერდების შვეულად ჩვენება\nscroll_vertical_label=შვეული გადაადგილება\nscroll_horizontal.title=გვერდების თარაზულად ჩვენება\nscroll_horizontal_label=განივი გადაადგილება\nscroll_wrapped.title=გვერდების ცხრილურად ჩვენება\nscroll_wrapped_label=ცხრილური გადაადგილება\n\nspread_none.title=ორ გვერდზე გაშლის გარეშე\nspread_none_label=ცალგვერდიანი ჩვენება\nspread_odd.title=ორ გვერდზე გაშლა, კენტი გვერდიდან დაწყებული\nspread_odd_label=ორ გვერდზე კენტიდან\nspread_even.title=ორ გვერდზე გაშლა, ლუწი გვერდიდან დაწყებული\nspread_even_label=ორ გვერდზე ლუწიდან\n\n# Document properties dialog box\ndocument_properties.title=დოკუმენტის შესახებ…\ndocument_properties_label=დოკუმენტის შესახებ…\ndocument_properties_file_name=ფაილის სახელი:\ndocument_properties_file_size=ფაილის მოცულობა:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} კბ ({{size_b}} ბაიტი)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} მბ ({{size_b}} ბაიტი)\ndocument_properties_title=სათაური:\ndocument_properties_author=შემქმნელი:\ndocument_properties_subject=თემა:\ndocument_properties_keywords=საკვანძო სიტყვები:\ndocument_properties_creation_date=შექმნის თარიღი:\ndocument_properties_modification_date=ჩასწორების თარიღი:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=გამომშვები:\ndocument_properties_producer=PDF გამომშვები:\ndocument_properties_version=PDF ვერსია:\ndocument_properties_page_count=გვერდების რაოდენობა:\ndocument_properties_page_size=გვერდის ზომა:\ndocument_properties_page_size_unit_inches=დუიმი\ndocument_properties_page_size_unit_millimeters=მმ\ndocument_properties_page_size_orientation_portrait=შვეულად\ndocument_properties_page_size_orientation_landscape=თარაზულად\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Fast Web View:\ndocument_properties_linearized_yes=დიახ\ndocument_properties_linearized_no=არა\ndocument_properties_close=დახურვა\n\nprint_progress_message=დოკუმენტი მზადდება ამოსაბეჭდად…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=გაუქმება\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=გვერდითა ზოლის გამოჩენა/დამალვა\ntoggle_sidebar_notification.title=გვერდითა ზოლის ჩართვა/გამორთვა (დოკუმენტი შეიცავს სარჩევს/დანართს)\ntoggle_sidebar_label=გვერდითა ზოლის გამოჩენა/დამალვა\ndocument_outline.title=დოკუმენტის სარჩევის ჩვენება (ორჯერ დაწკაპებით ყველა ელემენტის ჩამოშლა/აკეცვა)\ndocument_outline_label=დოკუმენტის სარჩევი\nattachments.title=დანართების ჩვენება\nattachments_label=დანართები\nthumbs.title=შეთვალიერება\nthumbs_label=ესკიზები\nfindbar.title=პოვნა დოკუმენტში\nfindbar_label=ძიება\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=გვერდი {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=გვერდის ესკიზი {{page}}\n\n# Find panel button title and messages\nfind_input.title=ძიება\nfind_input.placeholder=პოვნა დოკუმენტში…\nfind_previous.title=ფრაზის წინა კონტექსტის პოვნა\nfind_previous_label=წინა\nfind_next.title=ფრაზის შემდეგი კონტექსტის პოვნა\nfind_next_label=შემდეგი\nfind_highlight=ყველას მონიშვნა\nfind_match_case_label=მთავრულის გათვალისწინება\nfind_entire_word_label=მთლიანი სიტყვები\nfind_reached_top=მიღწეულია დოკუმენტის დასაწყისი, გრძელდება ბოლოდან\nfind_reached_bottom=მიღწეულია დოკუმენტის ბოლო, გრძელდება დასაწყისიდან\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} / {{total}} თანხვედრიდან\nfind_match_count[two]={{current}} / {{total}} თანხვედრიდან\nfind_match_count[few]={{current}} / {{total}} თანხვედრიდან\nfind_match_count[many]={{current}} / {{total}} თანხვედრიდან\nfind_match_count[other]={{current}} / {{total}} თანხვედრიდან\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]={{limit}}-ზე მეტი თანხვედრა\nfind_match_count_limit[one]={{limit}}-ზე მეტი თანხვედრა\nfind_match_count_limit[two]={{limit}}-ზე მეტი თანხვედრა\nfind_match_count_limit[few]={{limit}}-ზე მეტი თანხვედრა\nfind_match_count_limit[many]={{limit}}-ზე მეტი თანხვედრა\nfind_match_count_limit[other]={{limit}}-ზე მეტი თანხვედრა\nfind_not_found=ფრაზა ვერ მოიძებნა\n\n# Error panel labels\nerror_more_info=ვრცლად\nerror_less_info=შემოკლებულად\nerror_close=დახურვა\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=შეტყობინება: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=სტეკი: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ფაილი: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=ხაზი: {{line}}\nrendering_error=შეცდომა, გვერდის ჩვენებისას.\n\n# Predefined zoom values\npage_scale_width=გვერდის სიგანეზე\npage_scale_fit=მთლიანი გვერდი\npage_scale_auto=ავტომატური\npage_scale_actual=საწყისი ზომა\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=შეცდომა\nloading_error=შეცდომა, PDF ფაილის ჩატვირთვისას.\ninvalid_file_error=არამართებული ან დაზიანებული PDF ფაილი.\nmissing_file_error=ნაკლული PDF ფაილი.\nunexpected_response_error=სერვერის მოულოდნელი პასუხი.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} შენიშვნა]\npassword_label=შეიყვანეთ პაროლი PDF ფაილის გასახსნელად.\npassword_invalid=არასწორი პაროლი. გთხოვთ, სცადოთ ხელახლა.\npassword_ok=კარგი\npassword_cancel=გაუქმება\n\nprinting_not_supported=გაფრთხილება: ამობეჭდვა ამ ბრაუზერში არაა სრულად მხარდაჭერილი.\nprinting_not_ready=გაფრთხილება: PDF სრულად ჩატვირთული არაა, ამობეჭდვის დასაწყებად.\nweb_fonts_disabled=ვებშრიფტები გამორთულია: ჩაშენებული PDF შრიფტების გამოყენება ვერ ხერხდება.\ndocument_colors_not_allowed=PDF დოკუმენტებს არ აქვს საკუთარი ფერების გამოყენების ნებართვა: ბრაუზერში გამორთულია “გვერდებისთვის საკუთარი ფერების გამოყენების უფლება”.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/kab/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Asebter azewwar\nprevious_label=Azewwar\nnext.title=Asebter d-iteddun\nnext_label=Ddu ɣer zdat\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Asebter\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=ɣef {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} n {{pagesCount}})\n\nzoom_out.title=Semẓi\nzoom_out_label=Semẓi\nzoom_in.title=Semɣeṛ\nzoom_in_label=Semɣeṛ\nzoom.title=Semɣeṛ/Semẓi\npresentation_mode.title=Uɣal ɣer Uskar Tihawt\npresentation_mode_label=Askar Tihawt\nopen_file.title=Ldi Afaylu\nopen_file_label=Ldi\nprint.title=Siggez\nprint_label=Siggez\ndownload.title=Sider\ndownload_label=Azdam\nbookmark.title=Timeẓri tamirant (nɣel neɣ ldi ɣef usfaylu amaynut)\nbookmark_label=Askan amiran\n\n# Secondary toolbar and context menu\ntools.title=Ifecka\ntools_label=Ifecka\nfirst_page.title=Ddu ɣer usebter amezwaru\nfirst_page.label=Ddu ɣer usebter amezwaru\nfirst_page_label=Ddu ɣer usebter amezwaru\nlast_page.title=Ddu ɣer usebter aneggaru\nlast_page.label=Ddu ɣer usebter aneggaru\nlast_page_label=Ddu ɣer usebter aneggaru\npage_rotate_cw.title=Tuzzya tusrigt\npage_rotate_cw.label=Tuzzya tusrigt\npage_rotate_cw_label=Tuzzya tusrigt\npage_rotate_ccw.title=Tuzzya amgal-usrig\npage_rotate_ccw.label=Tuzzya amgal-usrig\npage_rotate_ccw_label=Tuzzya amgal-usrig\n\ncursor_text_select_tool.title=Rmed afecku n tefrant n uḍris\ncursor_text_select_tool_label=Afecku n tefrant n uḍris\ncursor_hand_tool.title=Rmed afecku afus\ncursor_hand_tool_label=Afecku afus\n\nscroll_vertical.title=Seqdec adrurem ubdid\nscroll_vertical_label=Adrurem ubdid\nscroll_horizontal.title=Seqdec adrurem aglawan\nscroll_horizontal_label=Adrurem aglawan\nscroll_wrapped.title=Seqdec adrurem yuẓen\nscroll_wrapped_label=Adrurem yuẓen\n\nspread_none.title=Ur sedday ara isiɣzaf n usebter\nspread_none_label=Ulac isiɣzaf\nspread_odd.title=Seddu isiɣzaf n usebter ibeddun s yisebtar irayuganen\nspread_odd_label=Isiɣzaf irayuganen\nspread_even.title=Seddu isiɣzaf n usebter ibeddun s yisebtar iyuganen\nspread_even_label=Isiɣzaf iyuganen\n\n# Document properties dialog box\ndocument_properties.title=Taɣaṛa n isemli…\ndocument_properties_label=Taɣaṛa n isemli…\ndocument_properties_file_name=Isem n ufaylu:\ndocument_properties_file_size=Teɣzi n ufaylu:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KAṬ ({{size_b}} ibiten)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MAṬ ({{size_b}} iṭamḍanen)\ndocument_properties_title=Azwel:\ndocument_properties_author=Ameskar:\ndocument_properties_subject=Amgay:\ndocument_properties_keywords=Awalen n tsaruţ\ndocument_properties_creation_date=Azemz n tmerna:\ndocument_properties_modification_date=Azemz n usnifel:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Yerna-t:\ndocument_properties_producer=Afecku n uselket PDF:\ndocument_properties_version=Lqem PDF:\ndocument_properties_page_count=Amḍan n isebtar:\ndocument_properties_page_size=Tuγzi n usebter:\ndocument_properties_page_size_unit_inches=deg\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=s teɣzi\ndocument_properties_page_size_orientation_landscape=s tehri\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Asekkil\ndocument_properties_page_size_name_legal=Usḍif\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Taskant Web taruradt:\ndocument_properties_linearized_yes=Ih\ndocument_properties_linearized_no=Ala\ndocument_properties_close=Mdel\n\nprint_progress_message=Aheggi i usiggez n isemli…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Sefsex\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Sken/Fer agalis adisan\ntoggle_sidebar_notification.title=Ffer/Sken agalis adisan (isemli yegber aɣawas/imeddayen)\ntoggle_sidebar_label=Sken/Fer agalis adisan\ndocument_outline.title=Sken isemli (Senned snat tikal i wesemɣer/Afneẓ n iferdisen meṛṛa)\ndocument_outline_label=Isɣalen n isebtar\nattachments.title=Sken ticeqqufin yeddan\nattachments_label=Ticeqqufin yeddan\nthumbs.title=Sken tanfult.\nthumbs_label=Tinfulin\nfindbar.title=Nadi deg isemli\nfindbar_label=Nadi\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Asebter {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Tanfult n usebter {{page}}\n\n# Find panel button title and messages\nfind_input.title=Nadi\nfind_input.placeholder=Nadi deg isemli…\nfind_previous.title=Aff-d tamseḍriwt n twinest n deffir\nfind_previous_label=Azewwar\nfind_next.title=Aff-d timseḍriwt n twinest d-iteddun\nfind_next_label=Ddu ɣer zdat\nfind_highlight=Err izirig imaṛṛa\nfind_match_case_label=Qadeṛ amasal n isekkilen\nfind_entire_word_label=Awalen iččuranen\nfind_reached_top=Yabbeḍ s afella n usebter, tuɣalin s wadda\nfind_reached_bottom=Tebḍeḍ s adda n usebter, tuɣalin s afella\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} seg {{total}} n tmeɣṛuḍin\nfind_match_count[two]={{current}} seg {{total}} n tmeɣṛuḍin\nfind_match_count[few]={{current}} seg {{total}} n tmeɣṛuḍin\nfind_match_count[many]={{current}} seg {{total}} n tmeɣṛuḍin\nfind_match_count[other]={{current}} seg {{total}} n tmeɣṛuḍin\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Ugar n {{limit}} n tmeɣṛuḍin\nfind_match_count_limit[one]=Ugar n {{limit}} n tmeɣṛuḍin\nfind_match_count_limit[two]=Ugar n {{limit}} n tmeɣṛuḍin\nfind_match_count_limit[few]=Ugar n {{limit}} n tmeɣṛuḍin\nfind_match_count_limit[many]=Ugar n {{limit}} n tmeɣṛuḍin\nfind_match_count_limit[other]=Ugar n {{limit}} n tmeɣṛuḍin\nfind_not_found=Ulac tawinest\n\n# Error panel labels\nerror_more_info=Ugar n telɣut\nerror_less_info=Drus n isalen\nerror_close=Mdel\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Izen: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Tanebdant: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Afaylu: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Izirig: {{line}}\nrendering_error=Teḍra-d tuccḍa deg uskan n usebter.\n\n# Predefined zoom values\npage_scale_width=Tehri n usebter\npage_scale_fit=Asebter imaṛṛa\npage_scale_auto=Asemɣeṛ/Asemẓi awurman\npage_scale_actual=Teɣzi tilawt\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=Teḍra-d tuccḍa deg alluy n PDF:\ninvalid_file_error=Afaylu PDF arameɣtu neɣ yexṣeṛ.\nmissing_file_error=Ulac afaylu PDF.\nunexpected_response_error=Aqeddac yerra-d yir tiririt ur nettwaṛǧi ara.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Tabzimt {{type}}]\npassword_label=Sekcem awal uffir akken ad ldiḍ afaylu-yagi PDF\npassword_invalid=Awal uffir mačči d ameɣtu, Ɛreḍ tikelt-nniḍen.\npassword_ok=IH\npassword_cancel=Sefsex\n\nprinting_not_supported=Ɣuṛ-k: Asiggez ur ittusefrak ara yakan imaṛṛa deg iminig-a.\nprinting_not_ready=Ɣuṛ-k: Afaylu PDF ur d-yuli ara imeṛṛa akken ad ittusiggez.\nweb_fonts_disabled=Tisefsiyin web ttwassensent; D awezɣi useqdec n tsefsiyin yettwarnan ɣer PDF.\ndocument_colors_not_allowed=Isemliyen PDF ur zmiren ara ad sqedcen initen-nsen: 'Sireg isebtar akken ad fernen initen-nsen' ur yermid ara deg iminig.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/kk/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Алдыңғы парақ\nprevious_label=Алдыңғысы\nnext.title=Келесі парақ\nnext_label=Келесі\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Парақ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} ішінен\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=(парақ {{pageNumber}}, {{pagesCount}} ішінен)\n\nzoom_out.title=Кішірейту\nzoom_out_label=Кішірейту\nzoom_in.title=Үлкейту\nzoom_in_label=Үлкейту\nzoom.title=Масштаб\npresentation_mode.title=Презентация режиміне ауысу\npresentation_mode_label=Презентация режимі\nopen_file.title=Файлды ашу\nopen_file_label=Ашу\nprint.title=Баспаға шығару\nprint_label=Баспаға шығару\ndownload.title=Жүктеп алу\ndownload_label=Жүктеп алу\nbookmark.title=Ағымдағы көрініс (көшіру не жаңа терезеде ашу)\nbookmark_label=Ағымдағы көрініс\n\n# Secondary toolbar and context menu\ntools.title=Құралдар\ntools_label=Құралдар\nfirst_page.title=Алғашқы параққа өту\nfirst_page.label=Алғашқы параққа өту\nfirst_page_label=Алғашқы параққа өту\nlast_page.title=Соңғы параққа өту\nlast_page.label=Соңғы параққа өту\nlast_page_label=Соңғы параққа өту\npage_rotate_cw.title=Сағат тілі бағытымен айналдыру\npage_rotate_cw.label=Сағат тілі бағытымен бұру\npage_rotate_cw_label=Сағат тілі бағытымен бұру\npage_rotate_ccw.title=Сағат тілі бағытына қарсы бұру\npage_rotate_ccw.label=Сағат тілі бағытына қарсы бұру\npage_rotate_ccw_label=Сағат тілі бағытына қарсы бұру\n\ncursor_text_select_tool.title=Мәтінді таңдау құралын іске қосу\ncursor_text_select_tool_label=Мәтінді таңдау құралы\ncursor_hand_tool.title=Қол құралын іске қосу\ncursor_hand_tool_label=Қол құралы\n\nscroll_vertical.title=Вертикалды айналдыруды қолдану\nscroll_vertical_label=Вертикалды айналдыру\nscroll_horizontal.title=Горизонталды айналдыруды қолдану\nscroll_horizontal_label=Горизонталды айналдыру\nscroll_wrapped.title=Масштабталатын айналдыруды қолдану\nscroll_wrapped_label=Масштабталатын айналдыру\n\nspread_none.title=Жазық беттер режимін қолданбау\nspread_none_label=Жазық беттер режимсіз\nspread_odd.title=Жазық беттер тақ нөмірлі беттерден басталады\nspread_odd_label=Тақ нөмірлі беттер сол жақтан\nspread_even.title=Жазық беттер жұп нөмірлі беттерден басталады\nspread_even_label=Жұп нөмірлі беттер сол жақтан\n\n# Document properties dialog box\ndocument_properties.title=Құжат қасиеттері…\ndocument_properties_label=Құжат қасиеттері…\ndocument_properties_file_name=Файл аты:\ndocument_properties_file_size=Файл өлшемі:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} КБ ({{size_b}} байт)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} МБ ({{size_b}} байт)\ndocument_properties_title=Тақырыбы:\ndocument_properties_author=Авторы:\ndocument_properties_subject=Тақырыбы:\ndocument_properties_keywords=Кілт сөздер:\ndocument_properties_creation_date=Жасалған күні:\ndocument_properties_modification_date=Түзету күні:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Жасаған:\ndocument_properties_producer=PDF өндірген:\ndocument_properties_version=PDF нұсқасы:\ndocument_properties_page_count=Беттер саны:\ndocument_properties_page_size=Бет өлшемі:\ndocument_properties_page_size_unit_inches=дюйм\ndocument_properties_page_size_unit_millimeters=мм\ndocument_properties_page_size_orientation_portrait=тік\ndocument_properties_page_size_orientation_landscape=жатық\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Жылдам Web көрінісі:\ndocument_properties_linearized_yes=Иә\ndocument_properties_linearized_no=Жоқ\ndocument_properties_close=Жабу\n\nprint_progress_message=Құжатты баспаға шығару үшін дайындау…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Бас тарту\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Бүйір панелін көрсету/жасыру\ntoggle_sidebar_notification.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар бар)\ntoggle_sidebar_label=Бүйір панелін көрсету/жасыру\ndocument_outline.title=Құжат құрылымын көрсету (барлық нәрселерді жазық қылу/жинау үшін қос шерту керек)\ndocument_outline_label=Құжат құрамасы\nattachments.title=Салынымдарды көрсету\nattachments_label=Салынымдар\nthumbs.title=Кіші көріністерді көрсету\nthumbs_label=Кіші көріністер\nfindbar.title=Құжаттан табу\nfindbar_label=Табу\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title={{page}} парағы\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}} парағы үшін кіші көрінісі\n\n# Find panel button title and messages\nfind_input.title=Табу\nfind_input.placeholder=Құжаттан табу…\nfind_previous.title=Осы сөздердің мәтіннен алдыңғы кездесуін табу\nfind_previous_label=Алдыңғысы\nfind_next.title=Осы сөздердің мәтіннен келесі кездесуін табу\nfind_next_label=Келесі\nfind_highlight=Барлығын түспен ерекшелеу\nfind_match_case_label=Регистрді ескеру\nfind_entire_word_label=Сөздер толығымен\nfind_reached_top=Құжаттың басына жеттік, соңынан бастап жалғастырамыз\nfind_reached_bottom=Құжаттың соңына жеттік, басынан бастап жалғастырамыз\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} / {{total}} сәйкестік\nfind_match_count[two]={{current}} / {{total}} сәйкестік\nfind_match_count[few]={{current}} / {{total}} сәйкестік\nfind_match_count[many]={{current}} / {{total}} сәйкестік\nfind_match_count[other]={{current}} / {{total}} сәйкестік\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]={{limit}} сәйкестіктен көп\nfind_match_count_limit[one]={{limit}} сәйкестіктен көп\nfind_match_count_limit[two]={{limit}} сәйкестіктен көп\nfind_match_count_limit[few]={{limit}} сәйкестіктен көп\nfind_match_count_limit[many]={{limit}} сәйкестіктен көп\nfind_match_count_limit[other]={{limit}} сәйкестіктен көп\nfind_not_found=Сөз(дер) табылмады\n\n# Error panel labels\nerror_more_info=Көбірек ақпарат\nerror_less_info=Азырақ ақпарат\nerror_close=Жабу\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (жинақ: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Хабарлама: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Стек: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Файл: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Жол: {{line}}\nrendering_error=Парақты өңдеу кезінде қате кетті.\n\n# Predefined zoom values\npage_scale_width=Парақ ені\npage_scale_fit=Парақты сыйдыру\npage_scale_auto=Автомасштабтау\npage_scale_actual=Нақты өлшемі\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Қате\nloading_error=PDF жүктеу кезінде қате кетті.\ninvalid_file_error=Зақымдалған немесе қате PDF файл.\nmissing_file_error=PDF файлы жоқ.\nunexpected_response_error=Сервердің күтпеген жауабы.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} аңдатпасы]\npassword_label=Бұл PDF файлын ашу үшін парольді енгізіңіз.\npassword_invalid=Пароль дұрыс емес. Қайталап көріңіз.\npassword_ok=ОК\npassword_cancel=Бас тарту\n\nprinting_not_supported=Ескерту: Баспаға шығаруды бұл браузер толығымен қолдамайды.\nprinting_not_ready=Ескерту: Баспаға шығару үшін, бұл PDF толығымен жүктеліп алынбады.\nweb_fonts_disabled=Веб қаріптері сөндірілген: құрамына енгізілген PDF қаріптерін қолдану мүмкін емес.\ndocument_colors_not_allowed=PDF құжаттарына өздік түстерді қолдану рұқсат етілмеген: бұл браузерде 'Веб-сайттарға өздерінің түстерін қолдануға рұқсат беру' мүмкіндігі сөндірулі тұр.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/km/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=ទំព័រ​មុន\nprevious_label=មុន\nnext.title=ទំព័រ​បន្ទាប់\nnext_label=បន្ទាប់\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=ទំព័រ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=នៃ {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} នៃ {{pagesCount}})\n\nzoom_out.title=​បង្រួម\nzoom_out_label=​បង្រួម\nzoom_in.title=​ពង្រីក\nzoom_in_label=​ពង្រីក\nzoom.title=ពង្រីក\npresentation_mode.title=ប្ដូរ​ទៅ​របៀប​បទ​បង្ហាញ\npresentation_mode_label=របៀប​បទ​បង្ហាញ\nopen_file.title=បើក​ឯកសារ\nopen_file_label=បើក\nprint.title=បោះពុម្ព\nprint_label=បោះពុម្ព\ndownload.title=ទាញ​យក\ndownload_label=ទាញ​យក\nbookmark.title=ទិដ្ឋភាព​បច្ចុប្បន្ន (ចម្លង ឬ​បើក​នៅ​ក្នុង​បង្អួច​ថ្មី)\nbookmark_label=ទិដ្ឋភាព​បច្ចុប្បន្ន\n\n# Secondary toolbar and context menu\ntools.title=ឧបករណ៍\ntools_label=ឧបករណ៍\nfirst_page.title=ទៅកាន់​ទំព័រ​ដំបូង​\nfirst_page.label=ទៅកាន់​ទំព័រ​ដំបូង​\nfirst_page_label=ទៅកាន់​ទំព័រ​ដំបូង​\nlast_page.title=ទៅកាន់​ទំព័រ​ចុងក្រោយ​\nlast_page.label=ទៅកាន់​ទំព័រ​ចុងក្រោយ​\nlast_page_label=ទៅកាន់​ទំព័រ​ចុងក្រោយ\npage_rotate_cw.title=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា\npage_rotate_cw.label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា\npage_rotate_cw_label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា\npage_rotate_ccw.title=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​\npage_rotate_ccw.label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​\npage_rotate_ccw_label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​\n\ncursor_text_select_tool.title=បើក​ឧបករណ៍​ជ្រើស​អត្ថបទ\ncursor_text_select_tool_label=ឧបករណ៍​ជ្រើស​អត្ថបទ\ncursor_hand_tool.title=បើក​ឧបករណ៍​ដៃ\ncursor_hand_tool_label=ឧបករណ៍​ដៃ\n\n# Document properties dialog box\ndocument_properties.title=លក្ខណ​សម្បត្តិ​ឯកសារ…\ndocument_properties_label=លក្ខណ​សម្បត្តិ​ឯកសារ…\ndocument_properties_file_name=ឈ្មោះ​ឯកសារ៖\ndocument_properties_file_size=ទំហំ​ឯកសារ៖\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} បៃ)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} បៃ)\ndocument_properties_title=ចំណងជើង៖\ndocument_properties_author=អ្នក​និពន្ធ៖\ndocument_properties_subject=ប្រធានបទ៖\ndocument_properties_keywords=ពាក្យ​គន្លឹះ៖\ndocument_properties_creation_date=កាលបរិច្ឆេទ​បង្កើត៖\ndocument_properties_modification_date=កាលបរិច្ឆេទ​កែប្រែ៖\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=អ្នក​បង្កើត៖\ndocument_properties_producer=កម្មវិធី​បង្កើត PDF ៖\ndocument_properties_version=កំណែ PDF ៖\ndocument_properties_page_count=ចំនួន​ទំព័រ៖\ndocument_properties_close=បិទ\n\nprint_progress_message=កំពុង​រៀបចំ​ឯកសារ​សម្រាប់​បោះពុម្ព…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=បោះបង់\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=បិទ/បើក​គ្រាប់​រំកិល\ntoggle_sidebar_notification.title=បិទ/បើក​របារ​ចំហៀង (ឯកសារ​មាន​មាតិកា​នៅ​ក្រៅ/attachments)\ntoggle_sidebar_label=បិទ/បើក​គ្រាប់​រំកិល\ndocument_outline.title=បង្ហាញ​គ្រោង​ឯកសារ (ចុច​ទ្វេ​ដង​ដើម្បី​ពង្រីក/បង្រួម​ធាតុ​ទាំងអស់)\ndocument_outline_label=គ្រោង​ឯកសារ\nattachments.title=បង្ហាញ​ឯកសារ​ភ្ជាប់\nattachments_label=ឯកសារ​ភ្ជាប់\nthumbs.title=បង្ហាញ​រូបភាព​តូចៗ\nthumbs_label=រួបភាព​តូចៗ\nfindbar.title=រក​នៅ​ក្នុង​ឯកសារ\nfindbar_label=រក\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=ទំព័រ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=រូបភាព​តូច​របស់​ទំព័រ {{page}}\n\n# Find panel button title and messages\nfind_input.title=រក\nfind_input.placeholder=រក​នៅ​ក្នុង​ឯកសារ...\nfind_previous.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​មុន\nfind_previous_label=មុន\nfind_next.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​បន្ទាប់\nfind_next_label=បន្ទាប់\nfind_highlight=បន្លិច​ទាំងអស់\nfind_match_case_label=ករណី​ដំណូច\nfind_reached_top=បាន​បន្ត​ពី​ខាង​ក្រោម ទៅ​ដល់​ខាង​​លើ​នៃ​ឯកសារ\nfind_reached_bottom=បាន​បន្ត​ពី​ខាងលើ ទៅដល់​ចុង​​នៃ​ឯកសារ\nfind_not_found=រក​មិន​ឃើញ​ពាក្យ ឬ​ឃ្លា\n\n# Error panel labels\nerror_more_info=ព័ត៌មាន​បន្ថែម\nerror_less_info=ព័ត៌មាន​តិចតួច\nerror_close=បិទ\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=សារ ៖ {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=ជង់ ៖ {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ឯកសារ ៖ {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=ជួរ ៖ {{line}}\nrendering_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​បង្ហាញ​ទំព័រ ។\n\n# Predefined zoom values\npage_scale_width=ទទឹង​ទំព័រ\npage_scale_fit=សម​ទំព័រ\npage_scale_auto=ពង្រីក​ស្វ័យប្រវត្តិ\npage_scale_actual=ទំហំ​ជាក់ស្ដែង\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=កំហុស\nloading_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​កំពុង​ផ្ទុក PDF ។\ninvalid_file_error=ឯកសារ PDF ខូច ឬ​មិន​ត្រឹមត្រូវ ។\nmissing_file_error=បាត់​ឯកសារ PDF\nunexpected_response_error=ការ​ឆ្លើយ​តម​ម៉ាស៊ីន​មេ​ដែល​មិន​បាន​រំពឹង។\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} ចំណារ​ពន្យល់]\npassword_label=បញ្ចូល​ពាក្យសម្ងាត់​ដើម្បី​បើក​ឯកសារ PDF នេះ។\npassword_invalid=ពាក្យសម្ងាត់​មិន​ត្រឹមត្រូវ។ សូម​ព្យាយាម​ម្ដងទៀត។\npassword_ok=យល់​ព្រម\npassword_cancel=បោះបង់\n\nprinting_not_supported=ការ​ព្រមាន ៖ កា​រ​បោះពុម្ព​មិន​ត្រូវ​បាន​គាំទ្រ​ពេញលេញ​ដោយ​កម្មវិធី​រុករក​នេះ​ទេ ។\nprinting_not_ready=ព្រមាន៖ PDF មិន​ត្រូវ​បាន​ផ្ទុក​ទាំងស្រុង​ដើម្បី​បោះពុម្ព​ទេ។\nweb_fonts_disabled=បាន​បិទ​ពុម្ពអក្សរ​បណ្ដាញ ៖ មិន​អាច​ប្រើ​ពុម្ពអក្សរ PDF ដែល​បាន​បង្កប់​បាន​ទេ ។\ndocument_colors_not_allowed=ឯកសារ PDF មិន​ត្រូវ​បាន​អនុញ្ញាត​ឲ្យ​ប្រើ​ពណ៌​ផ្ទាល់​របស់​វា​ទេ៖ 'អនុញ្ញាត​​ឲ្យ​ទំព័រ​ជ្រើស​ពណ៌​ផ្ទាល់​ខ្លួន' ត្រូវ​បាន​ធ្វើ​ឲ្យ​អសកម្ម​ក្នុង​​កម្មវិធី​រុករក។\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/kn/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=ಹಿಂದಿನ ಪುಟ\nprevious_label=ಹಿಂದಿನ\nnext.title=ಮುಂದಿನ ಪುಟ\nnext_label=ಮುಂದಿನ\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=ಪುಟ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} ರಲ್ಲಿ\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pagesCount}} ರಲ್ಲಿ {{pageNumber}})\n\nzoom_out.title=ಕಿರಿದಾಗಿಸು\nzoom_out_label=ಕಿರಿದಾಗಿಸಿ\nzoom_in.title=ಹಿರಿದಾಗಿಸು\nzoom_in_label=ಹಿರಿದಾಗಿಸಿ\nzoom.title=ಗಾತ್ರಬದಲಿಸು\npresentation_mode.title=ಪ್ರಸ್ತುತಿ (ಪ್ರಸೆಂಟೇಶನ್) ಕ್ರಮಕ್ಕೆ ಬದಲಾಯಿಸು\npresentation_mode_label=ಪ್ರಸ್ತುತಿ (ಪ್ರಸೆಂಟೇಶನ್) ಕ್ರಮ\nopen_file.title=ಕಡತವನ್ನು ತೆರೆ\nopen_file_label=ತೆರೆಯಿರಿ\nprint.title=ಮುದ್ರಿಸು\nprint_label=ಮುದ್ರಿಸಿ\ndownload.title=ಇಳಿಸು\ndownload_label=ಇಳಿಸಿಕೊಳ್ಳಿ\nbookmark.title=ಪ್ರಸಕ್ತ ನೋಟ (ಪ್ರತಿ ಮಾಡು ಅಥವ ಹೊಸ ಕಿಟಕಿಯಲ್ಲಿ ತೆರೆ)\nbookmark_label=ಪ್ರಸಕ್ತ ನೋಟ\n\n# Secondary toolbar and context menu\ntools.title=ಉಪಕರಣಗಳು\ntools_label=ಉಪಕರಣಗಳು\nfirst_page.title=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು\nfirst_page.label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು\nfirst_page_label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು\nlast_page.title=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು\nlast_page.label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು\nlast_page_label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು\npage_rotate_cw.title=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು\npage_rotate_cw.label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು\npage_rotate_cw_label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು\npage_rotate_ccw.title=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು\npage_rotate_ccw.label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು\npage_rotate_ccw_label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು\n\ncursor_text_select_tool.title=ಪಠ್ಯ ಆಯ್ಕೆ ಉಪಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ\ncursor_text_select_tool_label=ಪಠ್ಯ ಆಯ್ಕೆಯ ಉಪಕರಣ\ncursor_hand_tool.title=ಕೈ ಉಪಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ\ncursor_hand_tool_label=ಕೈ ಉಪಕರಣ\n\n\n\n# Document properties dialog box\ndocument_properties.title=ಡಾಕ್ಯುಮೆಂಟ್‌ ಗುಣಗಳು...\ndocument_properties_label=ಡಾಕ್ಯುಮೆಂಟ್‌ ಗುಣಗಳು...\ndocument_properties_file_name=ಕಡತದ ಹೆಸರು:\ndocument_properties_file_size=ಕಡತದ ಗಾತ್ರ:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} ಬೈಟ್‍ಗಳು)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} ಬೈಟ್‍ಗಳು)\ndocument_properties_title=ಶೀರ್ಷಿಕೆ:\ndocument_properties_author=ಕರ್ತೃ:\ndocument_properties_subject=ವಿಷಯ:\ndocument_properties_keywords=ಮುಖ್ಯಪದಗಳು:\ndocument_properties_creation_date=ರಚಿಸಿದ ದಿನಾಂಕ:\ndocument_properties_modification_date=ಮಾರ್ಪಡಿಸಲಾದ ದಿನಾಂಕ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=ರಚಿಸಿದವರು:\ndocument_properties_producer=PDF ಉತ್ಪಾದಕ:\ndocument_properties_version=PDF ಆವೃತ್ತಿ:\ndocument_properties_page_count=ಪುಟದ ಎಣಿಕೆ:\ndocument_properties_page_size_unit_inches=ಇದರಲ್ಲಿ\ndocument_properties_page_size_orientation_portrait=ಭಾವಚಿತ್ರ\ndocument_properties_page_size_orientation_landscape=ಪ್ರಕೃತಿ ಚಿತ್ರ\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_close=ಮುಚ್ಚು\n\nprint_progress_message=ಮುದ್ರಿಸುವುದಕ್ಕಾಗಿ ದಸ್ತಾವೇಜನ್ನು ಸಿದ್ಧಗೊಳಿಸಲಾಗುತ್ತಿದೆ…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=ರದ್ದು ಮಾಡು\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=ಬದಿಪಟ್ಟಿಯನ್ನು ಹೊರಳಿಸು\ntoggle_sidebar_label=ಬದಿಪಟ್ಟಿಯನ್ನು ಹೊರಳಿಸು\ndocument_outline_label=ದಸ್ತಾವೇಜಿನ ಹೊರರೇಖೆ\nattachments.title=ಲಗತ್ತುಗಳನ್ನು ತೋರಿಸು\nattachments_label=ಲಗತ್ತುಗಳು\nthumbs.title=ಚಿಕ್ಕಚಿತ್ರದಂತೆ ತೋರಿಸು\nthumbs_label=ಚಿಕ್ಕಚಿತ್ರಗಳು\nfindbar.title=ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಹುಡುಕು\nfindbar_label=ಹುಡುಕು\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=ಪುಟ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=ಪುಟವನ್ನು ಚಿಕ್ಕಚಿತ್ರದಂತೆ ತೋರಿಸು {{page}}\n\n# Find panel button title and messages\nfind_input.title=ಹುಡುಕು\nfind_input.placeholder=ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಹುಡುಕು…\nfind_previous.title=ವಾಕ್ಯದ ಹಿಂದಿನ ಇರುವಿಕೆಯನ್ನು ಹುಡುಕು\nfind_previous_label=ಹಿಂದಿನ\nfind_next.title=ವಾಕ್ಯದ ಮುಂದಿನ ಇರುವಿಕೆಯನ್ನು ಹುಡುಕು\nfind_next_label=ಮುಂದಿನ\nfind_highlight=ಎಲ್ಲವನ್ನು ಹೈಲೈಟ್ ಮಾಡು\nfind_match_case_label=ಕೇಸನ್ನು ಹೊಂದಿಸು\nfind_reached_top=ದಸ್ತಾವೇಜಿನ ಮೇಲ್ಭಾಗವನ್ನು ತಲುಪಿದೆ, ಕೆಳಗಿನಿಂದ ಆರಂಭಿಸು\nfind_reached_bottom=ದಸ್ತಾವೇಜಿನ ಕೊನೆಯನ್ನು ತಲುಪಿದೆ, ಮೇಲಿನಿಂದ ಆರಂಭಿಸು\nfind_not_found=ವಾಕ್ಯವು ಕಂಡು ಬಂದಿಲ್ಲ\n\n# Error panel labels\nerror_more_info=ಹೆಚ್ಚಿನ ಮಾಹಿತಿ\nerror_less_info=ಕಡಿಮೆ ಮಾಹಿತಿ\nerror_close=ಮುಚ್ಚು\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=ಸಂದೇಶ: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=ರಾಶಿ: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ಕಡತ: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=ಸಾಲು: {{line}}\nrendering_error=ಪುಟವನ್ನು ನಿರೂಪಿಸುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ.\n\n# Predefined zoom values\npage_scale_width=ಪುಟದ ಅಗಲ\npage_scale_fit=ಪುಟದ ಸರಿಹೊಂದಿಕೆ\npage_scale_auto=ಸ್ವಯಂಚಾಲಿತ ಗಾತ್ರಬದಲಾವಣೆ\npage_scale_actual=ನಿಜವಾದ ಗಾತ್ರ\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=ದೋಷ\nloading_error=PDF ಅನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ.\ninvalid_file_error=ಅಮಾನ್ಯವಾದ ಅಥವ ಹಾಳಾದ PDF ಕಡತ.\nmissing_file_error=PDF ಕಡತ ಇಲ್ಲ.\nunexpected_response_error=ಅನಿರೀಕ್ಷಿತವಾದ ಪೂರೈಕೆಗಣಕದ ಪ್ರತಿಕ್ರಿಯೆ.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} ಟಿಪ್ಪಣಿ]\npassword_label=PDF ಅನ್ನು ತೆರೆಯಲು ಗುಪ್ತಪದವನ್ನು ನಮೂದಿಸಿ.\npassword_invalid=ಅಮಾನ್ಯವಾದ ಗುಪ್ತಪದ, ದಯವಿಟ್ಟು ಇನ್ನೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.\npassword_ok=OK\npassword_cancel=ರದ್ದು ಮಾಡು\n\nprinting_not_supported=ಎಚ್ಚರಿಕೆ: ಈ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ಮುದ್ರಣಕ್ಕೆ ಸಂಪೂರ್ಣ ಬೆಂಬಲವಿಲ್ಲ.\nprinting_not_ready=ಎಚ್ಚರಿಕೆ: PDF ಕಡತವು ಮುದ್ರಿಸಲು ಸಂಪೂರ್ಣವಾಗಿ ಲೋಡ್ ಆಗಿಲ್ಲ.\nweb_fonts_disabled=ಜಾಲ ಅಕ್ಷರಶೈಲಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ: ಅಡಕಗೊಳಿಸಿದ PDF ಅಕ್ಷರಶೈಲಿಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.\ndocument_colors_not_allowed=PDF ದಸ್ತಾವೇಜುಗಳು ತಮ್ಮದೆ ಆದ ಬಣ್ಣಗಳನ್ನು ಬಳಸಲು ಅನುಮತಿ ಇರುವುದಿಲ್ಲ: 'ಪುಟಗಳು ತಮ್ಮದೆ ಆದ ಬಣ್ಣವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಅನುಮತಿಸು' ಅನ್ನು ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುತ್ತದೆ.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ko/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=이전 페이지\nprevious_label=이전\nnext.title=다음 페이지\nnext_label=다음\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=페이지\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=전체 {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pagesCount}} 중 {{pageNumber}})\n\nzoom_out.title=축소\nzoom_out_label=축소\nzoom_in.title=확대\nzoom_in_label=확대\nzoom.title=크기\npresentation_mode.title=발표 모드로 전환\npresentation_mode_label=발표 모드\nopen_file.title=파일 열기\nopen_file_label=열기\nprint.title=인쇄\nprint_label=인쇄\ndownload.title=다운로드\ndownload_label=다운로드\nbookmark.title=지금 보이는 그대로 (복사하거나 새 창에 열기)\nbookmark_label=지금 보이는 그대로\n\n# Secondary toolbar and context menu\ntools.title=도구\ntools_label=도구\nfirst_page.title=첫 페이지로 이동\nfirst_page.label=첫 페이지로 이동\nfirst_page_label=첫 페이지로 이동\nlast_page.title=마지막 페이지로 이동\nlast_page.label=마지막 페이지로 이동\nlast_page_label=마지막 페이지로 이동\npage_rotate_cw.title=시계방향으로 회전\npage_rotate_cw.label=시계방향으로 회전\npage_rotate_cw_label=시계방향으로 회전\npage_rotate_ccw.title=시계 반대방향으로 회전\npage_rotate_ccw.label=시계 반대방향으로 회전\npage_rotate_ccw_label=시계 반대방향으로 회전\n\ncursor_text_select_tool.title=텍스트 선택 도구 활성화\ncursor_text_select_tool_label=텍스트 선택 도구\ncursor_hand_tool.title=손 도구 활성화\ncursor_hand_tool_label=손 도구\n\nscroll_vertical.title=세로 스크롤 사용\nscroll_vertical_label=세로 스크롤\nscroll_horizontal.title=가로 스크롤 사용\nscroll_horizontal_label=가로 스크롤\nscroll_wrapped.title=감싼 스크롤 사용\nscroll_wrapped_label=감싼 스크롤\n\nspread_none.title=펼쳐진 페이지를 합치지 않음\nspread_none_label=펼쳐짐 없음\nspread_odd.title=홀수 페이지로 시작하게 펼쳐진 페이지 합침\nspread_odd_label=홀수 펼쳐짐\nspread_even.title=짝수 페이지로 시작하게 펼쳐진 페이지 합침\nspread_even_label=짝수 펼쳐짐\n\n# Document properties dialog box\ndocument_properties.title=문서 속성…\ndocument_properties_label=문서 속성…\ndocument_properties_file_name=파일 이름:\ndocument_properties_file_size=파일 사이즈:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}}바이트)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}}바이트)\ndocument_properties_title=제목:\ndocument_properties_author=저자:\ndocument_properties_subject=주제:\ndocument_properties_keywords=키워드:\ndocument_properties_creation_date=생성일:\ndocument_properties_modification_date=수정일:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=생성자:\ndocument_properties_producer=PDF 생성기:\ndocument_properties_version=PDF 버전:\ndocument_properties_page_count=총 페이지:\ndocument_properties_page_size=페이지 크기:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=세로\ndocument_properties_page_size_orientation_landscape=가로\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=레터\ndocument_properties_page_size_name_legal=리걸\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=빠른 웹 보기:\ndocument_properties_linearized_yes=예\ndocument_properties_linearized_no=아니오\ndocument_properties_close=닫기\n\nprint_progress_message=문서 출력 준비중…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=취소\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=탐색창 열고 닫기\ntoggle_sidebar_notification.title=탐색창 열고 닫기 (문서에 아웃라인이나 첨부파일이 들어있음)\ntoggle_sidebar_label=탐색창 열고 닫기\ndocument_outline.title=문서 아웃라인 보기(더블 클릭해서 모든 항목 열고 닫기)\ndocument_outline_label=문서 아웃라인\nattachments.title=첨부파일 보기\nattachments_label=첨부파일\nthumbs.title=미리보기\nthumbs_label=미리보기\nfindbar.title=검색\nfindbar_label=검색\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title={{page}}쪽\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}}쪽 미리보기\n\n# Find panel button title and messages\nfind_input.title=찾기\nfind_input.placeholder=문서에서 찾기…\nfind_previous.title=지정 문자열에 일치하는 1개 부분을 검색\nfind_previous_label=이전\nfind_next.title=지정 문자열에 일치하는 다음 부분을 검색\nfind_next_label=다음\nfind_highlight=모두 강조 표시\nfind_match_case_label=대문자/소문자 구별\nfind_entire_word_label=전체 단어\nfind_reached_top=문서 처음까지 검색하고 끝으로 돌아와 검색했습니다.\nfind_reached_bottom=문서 끝까지 검색하고 앞으로 돌아와 검색했습니다.\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{total}} 중 {{current}} 일치\nfind_match_count[two]={{total}} 중 {{current}} 일치\nfind_match_count[few]={{total}} 중 {{current}} 일치\nfind_match_count[many]={{total}} 중 {{current}} 일치\nfind_match_count[other]={{total}} 중 {{current}} 일치\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]={{limit}} 이상 일치\nfind_match_count_limit[one]={{limit}} 이상 일치\nfind_match_count_limit[two]={{limit}} 이상 일치\nfind_match_count_limit[few]={{limit}} 이상 일치\nfind_match_count_limit[many]={{limit}} 이상 일치\nfind_match_count_limit[other]={{limit}} 이상 일치\nfind_not_found=검색 결과 없음\n\n# Error panel labels\nerror_more_info=정보 더 보기\nerror_less_info=정보 간단히 보기\nerror_close=닫기\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (빌드: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=메시지: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=스택: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=파일: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=줄 번호: {{line}}\nrendering_error=페이지를 렌더링하다 오류가 났습니다.\n\n# Predefined zoom values\npage_scale_width=페이지 너비에 맞춤\npage_scale_fit=페이지에 맞춤\npage_scale_auto=알아서 맞춤\npage_scale_actual=실제 크기에 맞춤\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=오류\nloading_error=PDF를 읽는 중 오류가 생겼습니다.\ninvalid_file_error=유효하지 않거나 파손된 PDF 파일\nmissing_file_error=PDF 파일이 없습니다.\nunexpected_response_error=알 수 없는 서버 응답입니다.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} 주석]\npassword_label=이 PDF 파일을 열 수 있는 암호를 입력하십시오.\npassword_invalid=잘못된 암호입니다. 다시 시도해 주십시오.\npassword_ok=확인\npassword_cancel=취소\n\nprinting_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다.\nprinting_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다.\nweb_fonts_disabled=웹 폰트가 꺼져있음: 내장된 PDF 글꼴을 쓸 수 없습니다.\ndocument_colors_not_allowed=PDF 문서의 색상을 쓰지 못하게 되어 있음: '웹 페이지 자체 색상 사용 허용'이 브라우저에서 꺼져 있습니다.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/kok/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=फाटले पान\nprevious_label=फाटले\nnext.title=फुडले पान\nnext_label=फुडें\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=ल्हान करात\nzoom_out_label=ल्हान करात\nzoom_in.title=व्हड करात\nzoom_in_label=व्हड करात\nzoom.title=व्हड\npresentation_mode.title=सादरीकरण स्थितींत वचात\npresentation_mode_label=सादरीकरण स्थिती\nopen_file.title=फायल उगडात\nopen_file_label=उगडात\nprint.title=छापात\nprint_label=छापात\ndownload.title=डावनलोड\ndownload_label=डावनलोड\nbookmark.title=सद्याचे दृश्य (नव्या जनेलांत प्रत करात वो उगडात)\nbookmark_label=सद्याचे दृश्य\n\n# Secondary toolbar and context menu\ntools.title=साधनां\ntools_label=साधनां\nfirst_page.title=पयल्या  पानार वचात\nfirst_page.label=पयल्या  पानार वचात\nfirst_page_label=पयल्या  पानार वचात\nlast_page.title=निमण्या पानार वचात\nlast_page.label=निमण्या पानार वचात\nlast_page_label=निमण्या पानार वचात\npage_rotate_cw.title=घड्याळाच्या दिकेन घुंवडायात\npage_rotate_cw.label=घड्याळाच्या दिकेन घुंवडायात\npage_rotate_cw_label=घड्याळाच्या दिकेन घुंवडायात\npage_rotate_ccw.title=घड्याळाच्या उलट्या दिकेन घुंवडायात\npage_rotate_ccw.label=घड्याळाच्या उलट्या दिकेन घुंवडायात\npage_rotate_ccw_label=घड्याळाच्या उलट्या दिकेन घुंवडायात\n\n\n# Document properties dialog box\ndocument_properties.title=दस्तावेज वैशिश्ट्यां...\ndocument_properties_label=दस्तावेज वैशिश्ट्यां...\ndocument_properties_file_name=फायलीचे नाव:\ndocument_properties_file_size=फायलीचो आकार:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{आकार_kb}} KB ({{आकार_b}} बायटस्)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{आकार_mb}} MB ({{आकार_b}} बायटस्)\ndocument_properties_title=मथळो:\ndocument_properties_author=बरोवपी:\ndocument_properties_subject=विशय:\ndocument_properties_keywords=कीवर्डस्:\ndocument_properties_creation_date=निर्मणी तारीक:\ndocument_properties_modification_date=सुदार तारीक:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{तारीक}}, {{वेळ}}\ndocument_properties_creator=निर्मातो:\ndocument_properties_producer=\\u0020PDF निर्मातो:\ndocument_properties_version=PDF आवृत्ती:\ndocument_properties_page_count=पान गणन:\ndocument_properties_close=बंद\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=सायडबार अदलाबदल\ntoggle_sidebar_label=सायडबार अदलाबदल\ndocument_outline_label=दस्तावेज आउटलायन\nattachments.title=जोड दाखयात\nattachments_label=जोडी\nthumbs.title=थंबनेल दाखयात\nthumbs_label=थंबनेल\nfindbar.title=दस्तावेजांत सोदात\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=पान {{पान}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{पान}} पानाचे थंबनेल\n\n# Find panel button title and messages\nfind_previous.title=वाक्याचो पयलीचो अंश सोदात\nfind_previous_label=फाटले\nfind_next.title=वाक्याचो मुखावेलो अंश सोदात\nfind_next_label=फुडें\nfind_highlight=सगळे ठळक करात\nfind_match_case_label=केस जुळयात\nfind_reached_top=दस्तावेजाच्या वयर पावले. सकयल्यान सुरू करात\nfind_reached_bottom=दस्तावेजाच्या शेवटाक पावले, वयल्यान सुरू करात\nfind_not_found=वाक्य मेळूंक ना\n\n# Error panel labels\nerror_more_info=अदिक माहिती\nerror_less_info=कमी माहिती\nerror_close=बंद\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{आवृत्ती}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=संदेश : {{संदेश}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=दाळ: {{दाळ}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=फायल: {{फायल}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=ओळ: {{ओळ}}\nrendering_error=पान रेंडरिंग करतास्तना एरर आयलो\n\n# Predefined zoom values\npage_scale_width=पानाची रुंदाय\npage_scale_fit=पानार बसयात\npage_scale_auto=आपशीच व्हड\npage_scale_actual=मूळचो आकार\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=एरर\nloading_error=पीडीएफ चालू जातना एरर आयलो\ninvalid_file_error=अवैध वो वाट लागिल्ली PDF फायल\nmissing_file_error=शेणिल्ली PDF फायल.\nunexpected_response_error=अनपेक्षित सर्व्हर प्रतिसाद\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{प्रकार}} टिप्पणी]\npassword_label=ही PDF फायल उगडपाक पासवर्ड दियात\npassword_invalid=अवैध पासवर्ड. परतून यत्न करात.\npassword_ok=बरें आसा\n\nprinting_not_supported=शिटकावणी :  हे ब्रावजर छापपाक फांटबळ दिना\nprinting_not_ready=शिटकावणी: PDF मुद्रणाखातीर पुराय लोड जावना.\nweb_fonts_disabled=वेब अक्षरसंच निश्क्रिय केल्यात: एम्बेडेड PDF अक्षरसंच वापरपाक शकना.\ndocument_colors_not_allowed=PDF दस्तावेजांक तांचे स्वतःचे रंग वापरपाक अनुमती ना: 'पानांक तांचे स्वतःचे रंग निवडुपाक दियात' ब्रावजरान निश्क्रीय केला.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ks/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=پتِم صفحە\nprevious_label=پتِم\nnext.title=برونٹھِم صفحە\nnext_label=برونٹھ\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=نەبر كڈیەو\nzoom_out_label=نەبر كڈیەو\nzoom_in.title=اندر ژٓانیو\nzoom_in_label=اندر ژٓانیو\nzoom.title=زوم\npresentation_mode.title=پریزینٹیشن موڈس کُن کْریو سوچ\npresentation_mode_label=پریزینٹیشن موڈ\nopen_file.title=فایل كھولیو\nopen_file_label=كھولیو\nprint.title=پرینٹ\nprint_label=پرینٹ\ndownload.title=ڈاونلوڈ\ndownload_label=ڈاونلوڈ\nbookmark.title=حالُك نظارء (نقل كریو نتە كھولیەو بدل وِنڈو منز)\nbookmark_label=حالُك نظارء\n\n# Secondary toolbar and context menu\ntools.title=ٹول\ntools_label=ٹول\nfirst_page.title=گوڈنیکِس پیجس کُن گْژھیو\\u0020\nfirst_page.label=گوڈنیکِس پیجس کُن گْژھیو\\u0020\nfirst_page_label=گوڈنیکِس پیجس کُن گْژھیو\\u0020\nlast_page.title=\\u0020پْتمِس پیجس کُن گْژھیو\\u0020\nlast_page.label=\\u0020پْتمِس پیجس کُن گْژھیو\\u0020\nlast_page_label=\\u0020پْتمِس پیجس کُن گْژھیو\\u0020\npage_rotate_cw.title=کُلاک وایِز کْریو روٹیٹ\\u0020\npage_rotate_cw.label=کُلاک وایِز کْریو روٹیٹ\\u0020\npage_rotate_cw_label=کُلاک وایِز کْریو روٹیٹ\\u0020\npage_rotate_ccw.title=\\u0020کاونٹر کُلاک  وایِز کْریو روٹیٹ\npage_rotate_ccw.label=\\u0020کاونٹر کُلاک  وایِز کْریو روٹیٹ\npage_rotate_ccw_label=\\u0020کاونٹر کُلاک  وایِز کْریو روٹیٹ\n\n\n# Document properties dialog box\ndocument_properties.title=دستاویز خصوصیات ۔ ۔ ۔\ndocument_properties_label=دستاویز خصوصیات ۔ ۔ ۔\ndocument_properties_file_name=فایل ناو:\ndocument_properties_file_size=فایل سایِز:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_kb}} KB ({{size_b}} bytes)\ndocument_properties_title=عنوان:\ndocument_properties_author=آتھر\ndocument_properties_subject=موضوع:\ndocument_properties_keywords=كی وٲرڈ:\ndocument_properties_creation_date=بناونُک تأریخ\ndocument_properties_modification_date=تبدیلی ہُند ڈاٹا\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{تأریخ}}, {{ٹایم}}\ndocument_properties_creator=بناون وول:\ndocument_properties_producer=پی ڈی ایف پروڈوسر:\ndocument_properties_version=پی ڈی ایف وْرجن:\ndocument_properties_page_count=پیج کاوُنٹ:\ndocument_properties_close=بند\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=ٹوگل سایِڈ بار\ntoggle_sidebar_label=ٹوگل سایِڈ بار\ndocument_outline_label=دستاەیزن ھِنز آوٹلاین\nattachments.title=اٹیچمینٹ ہأیو\nattachments_label=اٹیچمینٹ\nthumbs.title=تھمبنیلس ھآویو\nthumbs_label=تھمبنیلس\\u0020\nfindbar.title=دستاویزس منز وْچھیو\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=صفحە {{صفحە }}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=صفحُك تھمبنیل\\u0020\n\n# Find panel button title and messages\nfind_previous.title=جملُك پت۪یوم واقعئ ژئھنڈیو\\u0020\nfind_previous_label=پتِم\nfind_next.title=جملُك بیٲكھ واقعئ ژئھنڈیو\\u0020\nfind_next_label=برونٹھ\nfind_highlight=تمام کْریو ہاے لایِٹ\nfind_match_case_label=کیس کْریو میچ\nfind_reached_top=صفحہ  كس ٹاپس  پیٹھ وئت، بوْنئ پیٹھئ  تھأیو جٲری\nfind_reached_bottom=صفحہ  كس آخرس  پیٹھ وئت،  ہ۪یرئ پیٹھئ تھأو جئری\nfind_not_found=جملئ آو نئ اتھ۪ی\n\n# Error panel labels\nerror_more_info=مزید مولومات\nerror_less_info=كم مولەومات\nerror_close=بند\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=شیچھ: {{شیچھ}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=سٹیك: {{سٹیك}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=فایل: {{fileفایل}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=ريخ: {{ریخ}}\nrendering_error=صفحئ كھولُن ویز۪ی گئی غلطی\n\n# Predefined zoom values\npage_scale_width=صفحُك كھَجَر\npage_scale_fit=صفحئ برابر\npage_scale_auto=پٲنٲی بڈٲویو\npage_scale_actual=اصلی سایز\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=غلطی\nloading_error=پی ڈی ایف كھولَن ویز۪ی گئی غلطی\ninvalid_file_error=ناکار یا خراب گأمْژ پی ڈی ایف فایل۔\nmissing_file_error=میسینگ پی ڈی ایف فایل۔\nunexpected_response_error=غیر متوقع سْرور جواب۔\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{قئسم}} اینوٹیشن]\npassword_label=پاس وأرڈ کْریو اینٹر یہ پی ڈی ایف فایل اوپْن کرنْہ باپت۔\npassword_invalid=ناکار پاس وأرڈ۔ مہربأنی کْرتھ کْریو دوبار کوشش۔\npassword_ok=\\u0020OK\n\nprinting_not_supported=آگہی۔ یتَھ براویزرَس چھُنَ چھَپاونئ خٲطرئ پورئ پٲٹھ تعاوُن\nprinting_not_ready=آگأہی: یہ پی ڈی ایف چُھ نْہ پورْ پأٹھ لوڈ پرینٹینگ باپت۔\nweb_fonts_disabled=ویب فانٹ چھ ڈیسیبلْڈ: ایمبیڈیڈ پی ڈی ایف فانٹ استعمال کرنْہ باپت کْریو انیبْل۔\ndocument_colors_not_allowed=پی ڈی ایف دستاویز ہیکن نْہ پنْنئ رنگ استعمال کْرتھ: پیجن دِیو اجازت پنْنئ رنگ استعمال کرنس چُھ ڈی ایکٹیویٹ کرنْہ آمُت براوزرس منز۔\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ku/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Rûpela berê\nprevious_label=Paşve\nnext.title=Rûpela pêş\nnext_label=Pêş\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Dûr bike\nzoom_out_label=Dûr bike\nzoom_in.title=Nêzîk bike\nzoom_in_label=Nêzîk bike\nzoom.title=Nêzîk Bike\npresentation_mode.title=Derbasî mûda pêşkêşkariyê bibe\npresentation_mode_label=Moda Pêşkêşkariyê\nopen_file.title=Pelî veke\nopen_file_label=Veke\nprint.title=Çap bike\nprint_label=Çap bike\ndownload.title=Jêbar bike\ndownload_label=Jêbar bike\nbookmark.title=Xuyakirina niha (kopî yan jî di pencereyeke nû de veke)\nbookmark_label=Xuyakirina niha\n\n# Secondary toolbar and context menu\ntools.title=Amûr\ntools_label=Amûr\nfirst_page.title=Here rûpela yekemîn\nfirst_page.label=Here rûpela yekemîn\nfirst_page_label=Here rûpela yekemîn\nlast_page.title=Here rûpela dawîn\nlast_page.label=Here rûpela dawîn\nlast_page_label=Here rûpela dawîn\npage_rotate_cw.title=Bi aliyê saetê ve bizivirîne\npage_rotate_cw.label=Bi aliyê saetê ve bizivirîne\npage_rotate_cw_label=Bi aliyê saetê ve bizivirîne\npage_rotate_ccw.title=Berevajî aliyê saetê ve bizivirîne\npage_rotate_ccw.label=Berevajî aliyê saetê ve bizivirîne\npage_rotate_ccw_label=Berevajî aliyê saetê ve bizivirîne\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_title=Sernav:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Darikê kêlekê veke/bigire\ntoggle_sidebar_label=Darikê kêlekê veke/bigire\ndocument_outline_label=Şemaya belgeyê\nthumbs.title=Wênekokan nîşan bide\nthumbs_label=Wênekok\nfindbar.title=Di belgeyê de bibîne\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Rûpel {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Wênekoka rûpelê {{page}}\n\n# Find panel button title and messages\nfind_previous.title=Peyva berê bibîne\nfind_previous_label=Paşve\nfind_next.title=Peyya pêş bibîne\nfind_next_label=Pêşve\nfind_highlight=Tevî beloq bike\nfind_match_case_label=Ji bo tîpên hûrdek-girdek bihîstyar\nfind_reached_top=Gihîşt serê rûpelê, ji dawiya rûpelê bidomîne\nfind_reached_bottom=Gihîşt dawiya rûpelê, ji serê rûpelê bidomîne\nfind_not_found=Peyv nehat dîtin\n\n# Error panel labels\nerror_more_info=Zêdetir agahî\nerror_less_info=Zêdetir agahî\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js versiyon {{version}} (avanî: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Peyam: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Komik: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Pel: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Rêzik: {{line}}\nrendering_error=Di vehûrandina rûpelê de çewtî çêbû.\n\n# Predefined zoom values\npage_scale_width=Firehiya rûpelê\npage_scale_fit=Di rûpelê de bicî bike\npage_scale_auto=Xweber nêzîk bike\npage_scale_actual=Mezinahiya rastîn\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Xeletî\nloading_error=Dema ku PDF dihat barkirin çewtiyek çêbû.\ninvalid_file_error=Pelê PDFê nederbasdar yan jî xirabe ye.\nmissing_file_error=Pelê PDFê kêm e.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Nîşaneya {{type}}ê]\npassword_label=Ji bo PDFê vekî şîfreyê binivîse.\npassword_invalid=Şîfre çewt e. Tika ye dîsa biceribîne.\npassword_ok=Temam\n\nprinting_not_supported=Hişyarî: Çapkirin ji hêla vê gerokê ve bi temamî nayê destekirin.\nprinting_not_ready=Hişyarî: PDF bi temamî nehat barkirin û ji bo çapê ne amade ye.\nweb_fonts_disabled=Fontên Webê neçalak in: Fontên PDFê yên veşartî nayên bikaranîn.\ndocument_colors_not_allowed=Destûr tune ye ku belgeyên PDFê rengên xwe bi kar bînin: Di gerokê de 'destûrê bide rûpelan ku rengên xwe bi kar bînin' nehatiye çalakirin.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/lg/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Omuko  Ogubadewo\nnext.title=Omuko Oguddako\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=ku {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Zimbulukusa\nzoom_out_label=Zimbulukusa\nzoom_in.title=Funza Munda\nzoom_in_label=Funza Munda\nzoom.title=Gezzamu\nopen_file.title=Bikula Fayiro\nopen_file_label=Ggulawo\nprint.title=Fulumya\nprint_label=Fulumya\ndownload.title=Tikula\ndownload_label=Tikula\nbookmark.title=Endabika eriwo (koppa oba gulawo mu diriisa epya)\nbookmark_label=Endabika Eriwo\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ndocument_outline_label=Ensalo ze Ekiwandiko\nthumbs.title=Laga Ekifanyi Mubufunze\nthumbs_label=Ekifanyi Mubufunze\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Omuko {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Ekifananyi kyo Omuko Mubufunze {{page}}\n\n# Find panel button title and messages\nfind_previous.title=Zuula awayise mukweddamu mumiteddera\nfind_next.title=Zuula ekidako mukweddamu mumiteddera\nfind_highlight=Londa byonna\nfind_not_found=Emiteddera tezuuliddwa\n\n# Error panel labels\nerror_more_info=Ebisingawo\nerror_less_info=Mubumpimpi\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Obubaaka: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Ebipangiddwa: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fayiro {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Layini: {{line}}\nrendering_error=Wabadewo ensobi muku tekawo omuko.\n\n# Predefined zoom values\npage_scale_width=Obugazi bwo Omuko\npage_scale_fit=Okutuka kwo Omuko\npage_scale_auto=Okwefunza no Kwegeza\npage_scale_actual=Obunene Obutufu\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Ensobi\nloading_error=Wabadewo ensobi mukutika PDF.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Enyonyola]\npassword_ok=OK\n\nprinting_not_supported=Okulaabula: Okulumya empapula tekuwagirwa enonyeso enno.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/lij/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Pagina primma\nprevious_label=Precedente\nnext.title=Pagina dòppo\nnext_label=Pròscima\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pagina\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} de {{pagesCount}})\n\nzoom_out.title=Diminoisci zoom\nzoom_out_label=Diminoisci zoom\nzoom_in.title=Aomenta zoom\nzoom_in_label=Aomenta zoom\nzoom.title=Zoom\npresentation_mode.title=Vanni into mòddo de prezentaçion\npresentation_mode_label=Mòddo de prezentaçion\nopen_file.title=Arvi file\nopen_file_label=Arvi\nprint.title=Stanpa\nprint_label=Stanpa\ndownload.title=Descaregamento\ndownload_label=Descaregamento\nbookmark.title=Vixon corente (còpia ò arvi inte 'n neuvo barcon)\nbookmark_label=Vixon corente\n\n# Secondary toolbar and context menu\ntools.title=Strumenti\ntools_label=Strumenti\nfirst_page.title=Vanni a-a primma pagina\nfirst_page.label=Vanni a-a primma pagina\nfirst_page_label=Vanni a-a primma pagina\nlast_page.title=Vanni a l'urtima pagina\nlast_page.label=Vanni a l'urtima pagina\nlast_page_label=Vanni a l'urtima pagina\npage_rotate_cw.title=Gia into verso oraio\npage_rotate_cw.label=Gia in senso do releuio\npage_rotate_cw_label=Gia into verso oraio\npage_rotate_ccw.title=Gia into verso antioraio\npage_rotate_ccw.label=Gia in senso do releuio a-a reversa\npage_rotate_ccw_label=Gia into verso antioraio\n\ncursor_text_select_tool.title=Abilita strumento de seleçion do testo\ncursor_text_select_tool_label=Strumento de seleçion do testo\ncursor_hand_tool.title=Abilita strumento man\ncursor_hand_tool_label=Strumento man\n\nscroll_vertical.title=Deuvia rebelamento verticale\nscroll_vertical_label=Rebelamento verticale\nscroll_horizontal.title=Deuvia rebelamento orizontâ\nscroll_horizontal_label=Rebelamento orizontâ\nscroll_wrapped.title=Deuvia rebelamento incapsolou\nscroll_wrapped_label=Rebelamento incapsolou\n\nspread_none.title=No unite a-a difuxon de pagina\nspread_none_label=No difuxon\nspread_odd.title=Uniscite a-a difuxon de pagina co-o numero dèspa\nspread_odd_label=Difuxon dèspa\nspread_even.title=Uniscite a-a difuxon de pagina co-o numero pari\nspread_even_label=Difuxon pari\n\n# Document properties dialog box\ndocument_properties.title=Propietæ do documento…\ndocument_properties_label=Propietæ do documento…\ndocument_properties_file_name=Nomme file:\ndocument_properties_file_size=Dimenscion file:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} kB ({{size_b}} byte)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} byte)\ndocument_properties_title=Titolo:\ndocument_properties_author=Aoto:\ndocument_properties_subject=Ogetto:\ndocument_properties_keywords=Paròlle ciave:\ndocument_properties_creation_date=Dæta creaçion:\ndocument_properties_modification_date=Dæta cangiamento:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Aotô originale:\ndocument_properties_producer=Produtô PDF:\ndocument_properties_version=Verscion PDF:\ndocument_properties_page_count=Contezzo pagine:\ndocument_properties_page_size=Dimenscion da pagina:\ndocument_properties_page_size_unit_inches=dii gròsci\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=drito\ndocument_properties_page_size_orientation_landscape=desteizo\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letia\ndocument_properties_page_size_name_legal=Lezze\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Vista veloce do Web:\ndocument_properties_linearized_yes=Sci\ndocument_properties_linearized_no=No\ndocument_properties_close=Særa\n\nprint_progress_message=Praparo o documento pe-a stanpa…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Anulla\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Ativa/dizativa bara de scianco\ntoggle_sidebar_notification.title=Cangia bara de löo (o documento o contegne di alegæ)\ntoggle_sidebar_label=Ativa/dizativa bara de scianco\ndocument_outline.title=Fanni vedde o contorno do documento (scicca doggio pe espande/ridue tutti i elementi)\ndocument_outline_label=Contorno do documento\nattachments.title=Fanni vedde alegæ\nattachments_label=Alegæ\nthumbs.title=Mostra miniatue\nthumbs_label=Miniatue\nfindbar.title=Treuva into documento\nfindbar_label=Treuva\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pagina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatua da pagina {{page}}\n\n# Find panel button title and messages\nfind_input.title=Treuva\nfind_input.placeholder=Treuva into documento…\nfind_previous.title=Treuva a ripetiçion precedente do testo da çercâ\nfind_previous_label=Precedente\nfind_next.title=Treuva a ripetiçion dòppo do testo da çercâ\nfind_next_label=Segoente\nfind_highlight=Evidençia\nfind_match_case_label=Maioscole/minoscole\nfind_entire_word_label=Poula intrega\nfind_reached_top=Razonto a fin da pagina, continoa da l'iniçio\nfind_reached_bottom=Razonto l'iniçio da pagina, continoa da-a fin\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} de {{total}} corispondensa\nfind_match_count[two]={{current}} de {{total}} corispondense\nfind_match_count[few]={{current}} de {{total}} corispondense\nfind_match_count[many]={{current}} de {{total}} corispondense\nfind_match_count[other]={{current}} de {{total}} corispondense\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Ciù de {{limit}} corispondense\nfind_match_count_limit[one]=Ciù de {{limit}} corispondensa\nfind_match_count_limit[two]=Ciù de {{limit}} corispondense\nfind_match_count_limit[few]=Ciù de {{limit}} corispondense\nfind_match_count_limit[many]=Ciù de {{limit}} corispondense\nfind_match_count_limit[other]=Ciù de {{limit}} corispondense\nfind_not_found=Testo no trovou\n\n# Error panel labels\nerror_more_info=Ciù informaçioin\nerror_less_info=Meno informaçioin\nerror_close=Særa\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mesaggio: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linia: {{line}}\nrendering_error=Gh'é stæto 'n'erô itno rendering da pagina.\n\n# Predefined zoom values\npage_scale_width=Larghessa pagina\npage_scale_fit=Adatta a una pagina\npage_scale_auto=Zoom aotomatico\npage_scale_actual=Dimenscioin efetive\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Erô\nloading_error=S'é verificou 'n'erô itno caregamento do PDF.\ninvalid_file_error=O file PDF o l'é no valido ò aroinou.\nmissing_file_error=O file PDF o no gh'é.\nunexpected_response_error=Risposta inprevista do-u server\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotaçion: {{type}}]\npassword_label=Dimme a paròlla segreta pe arvî sto file PDF.\npassword_invalid=Paròlla segreta sbalia. Preuva torna.\npassword_ok=Va ben\npassword_cancel=Anulla\n\nprinting_not_supported=Atençion: a stanpa a no l'é conpletamente soportâ da sto navegatô.\nprinting_not_ready=Atençion: o PDF o no l'é ancon caregou conpletamente pe-a stanpa.\nweb_fonts_disabled=I font do web en dizativæ: inposcibile adeuviâ i carateri do PDF.\ndocument_colors_not_allowed=No l'é poscibile adeuviâ i pròpi coî pe-i documenti PDF: l'opçion do navegatô  “Permetti a-e pagine de çerne i pròpi coî in cangio de quelli inpostæ” a l'é dizativâ.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/lo/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=ຫນ້າກ່ອນຫນ້າ\nprevious_label=ກ່ອນຫນ້າ\nnext.title=ຫນ້າຖັດໄປ\nnext_label=ຖັດໄປ\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=ຫນ້າ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=ຈາກ {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} ຈາກ {{pagesCount}})\n\nzoom_out.title=ຂະຫຍາຍອອກ\nzoom_out_label=ຂະຫຍາຍອອກ\nzoom_in.title=ຂະຫຍາຍເຂົ້າ\nzoom_in_label=ຂະຫຍາຍເຂົ້າ\nzoom.title=ຂະຫຍາຍ\npresentation_mode.title=ສັບປ່ຽນເປັນໂຫມດການນຳສະເຫນີ\npresentation_mode_label=ໂຫມດການນຳສະເຫນີ\nopen_file.title=ເປີດໄຟລ໌\nopen_file_label=ເປີດ\nprint.title=ພິມ\nprint_label=ພິມ\ndownload.title=ດາວໂຫລດ\ndownload_label=ດາວໂຫລດ\nbookmark.title=ມຸມມອງປະຈຸບັນ (ສຳເນົາ ຫລື ເປີດໃນວິນໂດໃຫມ່)\nbookmark_label=ມຸມມອງປະຈຸບັນ\n\n# Secondary toolbar and context menu\ntools.title=ເຄື່ອງມື\ntools_label=ເຄື່ອງມື\nfirst_page.title=ໄປທີ່ຫນ້າທຳອິດ\nfirst_page.label=ໄປທີ່ຫນ້າທຳອິດ\nfirst_page_label=ໄປທີ່ຫນ້າທຳອິດ\nlast_page.title=ໄປທີ່ຫນ້າສຸດທ້າຍ\nlast_page.label=ໄປທີ່ຫນ້າສຸດທ້າຍ\nlast_page_label=ໄປທີ່ຫນ້າສຸດທ້າຍ\npage_rotate_cw.title=ຫມູນຕາມເຂັມໂມງ\npage_rotate_cw.label=ຫມູນຕາມເຂັມໂມງ\npage_rotate_cw_label=ຫມູນຕາມເຂັມໂມງ\npage_rotate_ccw.title=ຫມູນທວນເຂັມໂມງ\npage_rotate_ccw.label=ຫມູນທວນເຂັມໂມງ\npage_rotate_ccw_label=ຫມູນທວນເຂັມໂມງ\n\n\n\n\n# Document properties dialog box\ndocument_properties_file_name=ຊື່ໄຟລ໌:\ndocument_properties_file_size=ຂະຫນາດໄຟລ໌:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=ລວງຕັ້ງ\ndocument_properties_page_size_orientation_landscape=ລວງນອນ\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=ຈົດໝາຍ\ndocument_properties_page_size_name_legal=ຂໍ້ກົດຫມາຍ\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_close=ປິດ\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_close=ຍົກເລີກ\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=ເປີດ/ປິດແຖບຂ້າງ\ntoggle_sidebar_notification.title=ເປີດ/ປິດແຖບຂ້າງ (ເອກະສານມີເຄົ້າຮ່າງ/ໄຟລ໌ແນບ)\ntoggle_sidebar_label=ເປີດ/ປິດແຖບຂ້າງ\ndocument_outline_label=ເຄົ້າຮ່າງເອກະສານ\nfindbar_label=ຄົ້ນຫາ\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\n\n# Find panel button title and messages\nfind_input.title=ຄົ້ນຫາ\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\n\n# Error panel labels\nerror_more_info=ຂໍ້ມູນເພີ່ມເຕີມ\nerror_less_info=ຂໍ້ມູນນ້ອຍລົງ\nerror_close=ປິດ\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nrendering_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງເຣັນເດີຫນ້າ.\n\n# Predefined zoom values\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=ຂໍ້ຜິດພາດ\nloading_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງໂຫລດ PDF.\ninvalid_file_error=ໄຟລ໌ PDF ບໍ່ຖືກຕ້ອງຫລືເສຍຫາຍ.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\npassword_ok=ຕົກລົງ\npassword_cancel=ຍົກເລີກ\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/locale.properties",
    "content": "[ach]\n@import url(ach/viewer.properties)\n\n[af]\n@import url(af/viewer.properties)\n\n[ak]\n@import url(ak/viewer.properties)\n\n[an]\n@import url(an/viewer.properties)\n\n[ar]\n@import url(ar/viewer.properties)\n\n[as]\n@import url(as/viewer.properties)\n\n[ast]\n@import url(ast/viewer.properties)\n\n[az]\n@import url(az/viewer.properties)\n\n[be]\n@import url(be/viewer.properties)\n\n[bg]\n@import url(bg/viewer.properties)\n\n[bn-BD]\n@import url(bn-BD/viewer.properties)\n\n[bn-IN]\n@import url(bn-IN/viewer.properties)\n\n[br]\n@import url(br/viewer.properties)\n\n[brx]\n@import url(brx/viewer.properties)\n\n[bs]\n@import url(bs/viewer.properties)\n\n[ca]\n@import url(ca/viewer.properties)\n\n[cak]\n@import url(cak/viewer.properties)\n\n[crh]\n@import url(crh/viewer.properties)\n\n[cs]\n@import url(cs/viewer.properties)\n\n[csb]\n@import url(csb/viewer.properties)\n\n[cy]\n@import url(cy/viewer.properties)\n\n[da]\n@import url(da/viewer.properties)\n\n[de]\n@import url(de/viewer.properties)\n\n[el]\n@import url(el/viewer.properties)\n\n[en-CA]\n@import url(en-CA/viewer.properties)\n\n[en-GB]\n@import url(en-GB/viewer.properties)\n\n[en-US]\n@import url(en-US/viewer.properties)\n\n[en-ZA]\n@import url(en-ZA/viewer.properties)\n\n[eo]\n@import url(eo/viewer.properties)\n\n[es-AR]\n@import url(es-AR/viewer.properties)\n\n[es-CL]\n@import url(es-CL/viewer.properties)\n\n[es-ES]\n@import url(es-ES/viewer.properties)\n\n[es-MX]\n@import url(es-MX/viewer.properties)\n\n[et]\n@import url(et/viewer.properties)\n\n[eu]\n@import url(eu/viewer.properties)\n\n[fa]\n@import url(fa/viewer.properties)\n\n[ff]\n@import url(ff/viewer.properties)\n\n[fi]\n@import url(fi/viewer.properties)\n\n[fr]\n@import url(fr/viewer.properties)\n\n[fy-NL]\n@import url(fy-NL/viewer.properties)\n\n[ga-IE]\n@import url(ga-IE/viewer.properties)\n\n[gd]\n@import url(gd/viewer.properties)\n\n[gl]\n@import url(gl/viewer.properties)\n\n[gn]\n@import url(gn/viewer.properties)\n\n[gu-IN]\n@import url(gu-IN/viewer.properties)\n\n[he]\n@import url(he/viewer.properties)\n\n[hi-IN]\n@import url(hi-IN/viewer.properties)\n\n[hr]\n@import url(hr/viewer.properties)\n\n[hsb]\n@import url(hsb/viewer.properties)\n\n[hto]\n@import url(hto/viewer.properties)\n\n[hu]\n@import url(hu/viewer.properties)\n\n[hy-AM]\n@import url(hy-AM/viewer.properties)\n\n[ia]\n@import url(ia/viewer.properties)\n\n[id]\n@import url(id/viewer.properties)\n\n[is]\n@import url(is/viewer.properties)\n\n[it]\n@import url(it/viewer.properties)\n\n[ja]\n@import url(ja/viewer.properties)\n\n[ka]\n@import url(ka/viewer.properties)\n\n[kab]\n@import url(kab/viewer.properties)\n\n[kk]\n@import url(kk/viewer.properties)\n\n[km]\n@import url(km/viewer.properties)\n\n[kn]\n@import url(kn/viewer.properties)\n\n[ko]\n@import url(ko/viewer.properties)\n\n[kok]\n@import url(kok/viewer.properties)\n\n[ks]\n@import url(ks/viewer.properties)\n\n[ku]\n@import url(ku/viewer.properties)\n\n[lg]\n@import url(lg/viewer.properties)\n\n[lij]\n@import url(lij/viewer.properties)\n\n[lo]\n@import url(lo/viewer.properties)\n\n[lt]\n@import url(lt/viewer.properties)\n\n[ltg]\n@import url(ltg/viewer.properties)\n\n[lv]\n@import url(lv/viewer.properties)\n\n[mai]\n@import url(mai/viewer.properties)\n\n[meh]\n@import url(meh/viewer.properties)\n\n[mk]\n@import url(mk/viewer.properties)\n\n[ml]\n@import url(ml/viewer.properties)\n\n[mn]\n@import url(mn/viewer.properties)\n\n[mr]\n@import url(mr/viewer.properties)\n\n[ms]\n@import url(ms/viewer.properties)\n\n[my]\n@import url(my/viewer.properties)\n\n[nb-NO]\n@import url(nb-NO/viewer.properties)\n\n[ne-NP]\n@import url(ne-NP/viewer.properties)\n\n[nl]\n@import url(nl/viewer.properties)\n\n[nn-NO]\n@import url(nn-NO/viewer.properties)\n\n[nso]\n@import url(nso/viewer.properties)\n\n[oc]\n@import url(oc/viewer.properties)\n\n[or]\n@import url(or/viewer.properties)\n\n[pa-IN]\n@import url(pa-IN/viewer.properties)\n\n[pl]\n@import url(pl/viewer.properties)\n\n[pt-BR]\n@import url(pt-BR/viewer.properties)\n\n[pt-PT]\n@import url(pt-PT/viewer.properties)\n\n[rm]\n@import url(rm/viewer.properties)\n\n[ro]\n@import url(ro/viewer.properties)\n\n[ru]\n@import url(ru/viewer.properties)\n\n[rw]\n@import url(rw/viewer.properties)\n\n[sah]\n@import url(sah/viewer.properties)\n\n[sat]\n@import url(sat/viewer.properties)\n\n[si]\n@import url(si/viewer.properties)\n\n[sk]\n@import url(sk/viewer.properties)\n\n[sl]\n@import url(sl/viewer.properties)\n\n[son]\n@import url(son/viewer.properties)\n\n[sq]\n@import url(sq/viewer.properties)\n\n[sr]\n@import url(sr/viewer.properties)\n\n[sv-SE]\n@import url(sv-SE/viewer.properties)\n\n[sw]\n@import url(sw/viewer.properties)\n\n[ta]\n@import url(ta/viewer.properties)\n\n[ta-LK]\n@import url(ta-LK/viewer.properties)\n\n[te]\n@import url(te/viewer.properties)\n\n[th]\n@import url(th/viewer.properties)\n\n[tl]\n@import url(tl/viewer.properties)\n\n[tn]\n@import url(tn/viewer.properties)\n\n[tr]\n@import url(tr/viewer.properties)\n\n[tsz]\n@import url(tsz/viewer.properties)\n\n[uk]\n@import url(uk/viewer.properties)\n\n[ur]\n@import url(ur/viewer.properties)\n\n[uz]\n@import url(uz/viewer.properties)\n\n[vi]\n@import url(vi/viewer.properties)\n\n[wo]\n@import url(wo/viewer.properties)\n\n[xh]\n@import url(xh/viewer.properties)\n\n[zam]\n@import url(zam/viewer.properties)\n\n[zh-CN]\n@import url(zh-CN/viewer.properties)\n\n[zh-TW]\n@import url(zh-TW/viewer.properties)\n\n[zu]\n@import url(zu/viewer.properties)\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/lt/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Ankstesnis puslapis\nprevious_label=Ankstesnis\nnext.title=Kitas puslapis\nnext_label=Kitas\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Puslapis\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=iš {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} iš {{pagesCount}})\n\nzoom_out.title=Sumažinti\nzoom_out_label=Sumažinti\nzoom_in.title=Padidinti\nzoom_in_label=Padidinti\nzoom.title=Mastelis\npresentation_mode.title=Pereiti į pateikties veikseną\npresentation_mode_label=Pateikties veiksena\nopen_file.title=Atverti failą\nopen_file_label=Atverti\nprint.title=Spausdinti\nprint_label=Spausdinti\ndownload.title=Parsiųsti\ndownload_label=Parsiųsti\nbookmark.title=Esamojo rodinio saitas (kopijavimui ar atvėrimui kitame lange)\nbookmark_label=Esamasis rodinys\n\n# Secondary toolbar and context menu\ntools.title=Priemonės\ntools_label=Priemonės\nfirst_page.title=Eiti į pirmą puslapį\nfirst_page.label=Eiti į pirmą puslapį\nfirst_page_label=Eiti į pirmą puslapį\nlast_page.title=Eiti į paskutinį puslapį\nlast_page.label=Eiti į paskutinį puslapį\nlast_page_label=Eiti į paskutinį puslapį\npage_rotate_cw.title=Pasukti pagal laikrodžio rodyklę\npage_rotate_cw.label=Pasukti pagal laikrodžio rodyklę\npage_rotate_cw_label=Pasukti pagal laikrodžio rodyklę\npage_rotate_ccw.title=Pasukti prieš laikrodžio rodyklę\npage_rotate_ccw.label=Pasukti prieš laikrodžio rodyklę\npage_rotate_ccw_label=Pasukti prieš laikrodžio rodyklę\n\ncursor_text_select_tool.title=Įjungti teksto žymėjimo įrankį\ncursor_text_select_tool_label=Teksto žymėjimo įrankis\ncursor_hand_tool.title=Įjungti vilkimo įrankį\ncursor_hand_tool_label=Vilkimo įrankis\n\nscroll_vertical.title=Naudoti vertikalų slinkimą\nscroll_vertical_label=Vertikalus slinkimas\nscroll_horizontal.title=Naudoti horizontalų slinkimą\nscroll_horizontal_label=Horizontalus slinkimas\nscroll_wrapped.title=Naudoti išklotą slinkimą\nscroll_wrapped_label=Išklotas slinkimas\n\nspread_none.title=Nesujungti puslapių sklaidų\nspread_none_label=Be sklaidų\nspread_odd.title=Sujungti puslapių sklaidas pradedant nelyginiais puslapiais\nspread_odd_label=Nelyginės sklaidos\nspread_even.title=Sujungti puslapių sklaidas pradedant lyginiais puslapiais\nspread_even_label=Lyginės sklaidos\n\n# Document properties dialog box\ndocument_properties.title=Dokumento savybės…\ndocument_properties_label=Dokumento savybės…\ndocument_properties_file_name=Failo vardas:\ndocument_properties_file_size=Failo dydis:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} B)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} B)\ndocument_properties_title=Antraštė:\ndocument_properties_author=Autorius:\ndocument_properties_subject=Tema:\ndocument_properties_keywords=Reikšminiai žodžiai:\ndocument_properties_creation_date=Sukūrimo data:\ndocument_properties_modification_date=Modifikavimo data:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Kūrėjas:\ndocument_properties_producer=PDF generatorius:\ndocument_properties_version=PDF versija:\ndocument_properties_page_count=Puslapių skaičius:\ndocument_properties_page_size=Puslapio dydis:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=stačias\ndocument_properties_page_size_orientation_landscape=gulsčias\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Laiškas\ndocument_properties_page_size_name_legal=Dokumentas\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Spartus žiniatinklio rodinys:\ndocument_properties_linearized_yes=Taip\ndocument_properties_linearized_no=Ne\ndocument_properties_close=Užverti\n\nprint_progress_message=Dokumentas ruošiamas spausdinimui…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Atsisakyti\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Rodyti / slėpti šoninį polangį\ntoggle_sidebar_notification.title=Parankinė (dokumentas turi struktūrą / priedų)\ntoggle_sidebar_label=Šoninis polangis\ndocument_outline.title=Rodyti dokumento struktūrą (spustelėkite dukart norėdami išplėsti/suskleisti visus elementus)\ndocument_outline_label=Dokumento struktūra\nattachments.title=Rodyti priedus\nattachments_label=Priedai\nthumbs.title=Rodyti puslapių miniatiūras\nthumbs_label=Miniatiūros\nfindbar.title=Ieškoti dokumente\nfindbar_label=Rasti\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title={{page}} puslapis\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}} puslapio miniatiūra\n\n# Find panel button title and messages\nfind_input.title=Rasti\nfind_input.placeholder=Rasti dokumente…\nfind_previous.title=Ieškoti ankstesnio frazės egzemplioriaus\nfind_previous_label=Ankstesnis\nfind_next.title=Ieškoti tolesnio frazės egzemplioriaus\nfind_next_label=Tolesnis\nfind_highlight=Viską paryškinti\nfind_match_case_label=Skirti didžiąsias ir mažąsias raides\nfind_entire_word_label=Ištisi žodžiai\nfind_reached_top=Pasiekus dokumento pradžią, paieška pratęsta nuo pabaigos\nfind_reached_bottom=Pasiekus dokumento pabaigą, paieška pratęsta nuo pradžios\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} iš {{total}} atitikmens\nfind_match_count[two]={{current}} iš {{total}} atitikmenų\nfind_match_count[few]={{current}} iš {{total}} atitikmenų\nfind_match_count[many]={{current}} iš {{total}} atitikmenų\nfind_match_count[other]={{current}} iš {{total}} atitikmens\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Daugiau nei {{limit}} atitikmenų\nfind_match_count_limit[one]=Daugiau nei {{limit}} atitikmuo\nfind_match_count_limit[two]=Daugiau nei {{limit}} atitikmenys\nfind_match_count_limit[few]=Daugiau nei {{limit}} atitikmenys\nfind_match_count_limit[many]=Daugiau nei {{limit}} atitikmenų\nfind_match_count_limit[other]=Daugiau nei {{limit}} atitikmuo\nfind_not_found=Ieškoma frazė nerasta\n\n# Error panel labels\nerror_more_info=Išsamiau\nerror_less_info=Glausčiau\nerror_close=Užverti\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v. {{version}} (darinys: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Pranešimas: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Dėklas: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Failas: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Eilutė: {{line}}\nrendering_error=Atvaizduojant puslapį įvyko klaida.\n\n# Predefined zoom values\npage_scale_width=Priderinti prie lapo pločio\npage_scale_fit=Pritaikyti prie lapo dydžio\npage_scale_auto=Automatinis mastelis\npage_scale_actual=Tikras dydis\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Klaida\nloading_error=Įkeliant PDF failą įvyko klaida.\ninvalid_file_error=Tai nėra PDF failas arba jis yra sugadintas.\nmissing_file_error=PDF failas nerastas.\nunexpected_response_error=Netikėtas serverio atsakas.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[„{{type}}“ tipo anotacija]\npassword_label=Įveskite slaptažodį šiam PDF failui atverti.\npassword_invalid=Slaptažodis neteisingas. Bandykite dar kartą.\npassword_ok=Gerai\npassword_cancel=Atsisakyti\n\nprinting_not_supported=Dėmesio! Spausdinimas šioje naršyklėje nėra pilnai realizuotas.\nprinting_not_ready=Dėmesio! PDF failas dar nėra pilnai įkeltas spausdinimui.\nweb_fonts_disabled=Saityno šriftai išjungti – PDF faile esančių šriftų naudoti negalima.\ndocument_colors_not_allowed=PDF dokumentams neleidžiama nurodyti savo spalvų, nes išjungta naršyklės nuostata „Leisti tinklalapiams nurodyti spalvas“.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ltg/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Īprīkšejā lopa\nprevious_label=Īprīkšejā\nnext.title=Nuokomuo lopa\nnext_label=Nuokomuo\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Lopa\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=nu {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} nu {{pagesCount}})\n\nzoom_out.title=Attuolynuot \nzoom_out_label=Attuolynuot\nzoom_in.title=Pītuvynuot\nzoom_in_label=Pītuvynuot\nzoom.title=Palelynuojums\npresentation_mode.title=Puorslēgtīs iz Prezentacejis režymu\npresentation_mode_label=Prezentacejis režyms\nopen_file.title=Attaiseit failu\nopen_file_label=Attaiseit\nprint.title=Drukuošona\nprint_label=Drukōt\ndownload.title=Lejupīluode\ndownload_label=Lejupīluodeit\nbookmark.title=Pošreizejais skots (kopēt voi attaiseit jaunā lūgā)\nbookmark_label=Pošreizejais skots\n\n# Secondary toolbar and context menu\ntools.title=Reiki\ntools_label=Reiki\nfirst_page.title=Īt iz pyrmū lopu\nfirst_page.label=Īt iz pyrmū lopu\nfirst_page_label=Īt iz pyrmū lopu\nlast_page.title=Īt iz piedejū lopu\nlast_page.label=Īt iz piedejū lopu\nlast_page_label=Īt iz piedejū lopu\npage_rotate_cw.title=Pagrīzt pa pulksteni\npage_rotate_cw.label=Pagrīzt pa pulksteni\npage_rotate_cw_label=Pagrīzt pa pulksteni\npage_rotate_ccw.title=Pagrīzt pret pulksteni\npage_rotate_ccw.label=Pagrīzt pret pulksteni\npage_rotate_ccw_label=Pagrīzt pret pulksteni\n\ncursor_text_select_tool.title=Aktivizēt teksta izvieles reiku\ncursor_text_select_tool_label=Teksta izvieles reiks\ncursor_hand_tool.title=Aktivēt rūkys reiku\ncursor_hand_tool_label=Rūkys reiks\n\nscroll_vertical.title=Izmontōt vertikalū ritinōšonu\nscroll_vertical_label=Vertikalō ritinōšona\nscroll_horizontal.title=Izmontōt horizontalū ritinōšonu\nscroll_horizontal_label=Horizontalō ritinōšona\nscroll_wrapped.title=Izmontōt mārūgojamū ritinōšonu\nscroll_wrapped_label=Mārūgojamō ritinōšona\n\nspread_none.title=Naizmontōt lopu atvāruma režimu\nspread_none_label=Bez atvārumim\nspread_odd.title=Izmontōt lopu atvārumus sōkut nu napōra numeru lopom\nspread_odd_label=Napōra lopys pa kreisi\nspread_even.title=Izmontōt lopu atvārumus sōkut nu pōra numeru lopom\nspread_even_label=Pōra lopys pa kreisi\n\n# Document properties dialog box\ndocument_properties.title=Dokumenta īstatiejumi…\ndocument_properties_label=Dokumenta īstatiejumi…\ndocument_properties_file_name=Faila nūsaukums:\ndocument_properties_file_size=Faila izmārs:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} biti)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} biti)\ndocument_properties_title=Nūsaukums:\ndocument_properties_author=Autors:\ndocument_properties_subject=Tema:\ndocument_properties_keywords=Atslāgi vuordi:\ndocument_properties_creation_date=Izveides datums:\ndocument_properties_modification_date=lobuošonys datums:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Radeituojs:\ndocument_properties_producer=PDF producents:\ndocument_properties_version=PDF verseja:\ndocument_properties_page_count=Lopu skaits:\ndocument_properties_page_size=Lopas izmārs:\ndocument_properties_page_size_unit_inches=collas\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portreta orientaceja\ndocument_properties_page_size_orientation_landscape=ainovys orientaceja\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Fast Web View:\ndocument_properties_linearized_yes=Jā\ndocument_properties_linearized_no=Nā\ndocument_properties_close=Aiztaiseit\n\nprint_progress_message=Preparing document for printing…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Atceļt\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Puorslēgt suonu jūslu\ntoggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)\ntoggle_sidebar_label=Puorslēgt suonu jūslu\ndocument_outline.title=Show Document Outline (double-click to expand/collapse all items)\ndocument_outline_label=Dokumenta saturs\nattachments.title=Show Attachments\nattachments_label=Attachments\nthumbs.title=Paruodeit seiktālus\nthumbs_label=Seiktāli\nfindbar.title=Mekleit dokumentā\nfindbar_label=Mekleit\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Lopa {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Lopys {{page}} seiktāls\n\n# Find panel button title and messages\nfind_input.title=Mekleit\nfind_input.placeholder=Mekleit dokumentā…\nfind_previous.title=Atrast īprīkšejū\nfind_previous_label=Īprīkšejā\nfind_next.title=Atrast nuokamū\nfind_next_label=Nuokomuo\nfind_highlight=Īkruosuot vysys\nfind_match_case_label=Lelū, mozū burtu jiuteigs\nfind_reached_top=Sasnīgts dokumenta suokums, turpynojom nu beigom\nfind_reached_bottom=Sasnīgtys dokumenta beigys, turpynojom nu suokuma\nfind_not_found=Frāze nav atrosta\n\n# Error panel labels\nerror_more_info=Vairuok informacejis\nerror_less_info=mozuok informacejis\nerror_close=Close\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Ziņuojums: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Steks: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Ryndeņa: {{line}}\nrendering_error=Attālojūt lopu rodās klaida\n\n# Predefined zoom values\npage_scale_width=Lopys plotumā\npage_scale_fit=Ītylpynūt lopu\npage_scale_auto=Automatiskais izmārs\npage_scale_actual=Patīsais izmārs\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Klaida\nloading_error=Īluodejūt PDF nūtyka klaida.\ninvalid_file_error=Nadereigs voi būjuots PDF fails.\nmissing_file_error=PDF fails nav atrosts.\nunexpected_response_error=Unexpected server response.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=Īvodit paroli, kab attaiseitu PDF failu.\npassword_invalid=Napareiza parole, raugit vēļreiz.\npassword_ok=Labi\npassword_cancel=Atceļt\n\nprinting_not_supported=Uzmaneibu: Drukuošona nu itei puorlūka dorbojās tikai daleji.\nprinting_not_ready=Uzmaneibu: PDF nav pilneibā īluodeits drukuošonai.\nweb_fonts_disabled=Šķārsteikla fonti nav aktivizāti: Navar īgult PDF fontus.\ndocument_colors_not_allowed=PDF dokumentym nav atļauts izmantuot pošym sovys kruosys: „Atļaut lopom izavieleit pošom sovys kruosys“ ir deaktiveits puorlyukā.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/lv/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Iepriekšējā lapa\nprevious_label=Iepriekšējā\nnext.title=Nākamā lapa\nnext_label=Nākamā\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Lapa\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=no {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} no {{pagesCount}})\n\nzoom_out.title=Attālināt\\u0020\nzoom_out_label=Attālināt\nzoom_in.title=Pietuvināt\nzoom_in_label=Pietuvināt\nzoom.title=Palielinājums\npresentation_mode.title=Pārslēgties uz Prezentācijas režīmu\npresentation_mode_label=Prezentācijas režīms\nopen_file.title=Atvērt failu\nopen_file_label=Atvērt\nprint.title=Drukāšana\nprint_label=Drukāt\ndownload.title=Lejupielāde\ndownload_label=Lejupielādēt\nbookmark.title=Pašreizējais skats (kopēt vai atvērt jaunā logā)\nbookmark_label=Pašreizējais skats\n\n# Secondary toolbar and context menu\ntools.title=Rīki\ntools_label=Rīki\nfirst_page.title=Iet uz pirmo lapu\nfirst_page.label=Iet uz pirmo lapu\nfirst_page_label=Iet uz pirmo lapu\nlast_page.title=Iet uz pēdējo lapu\nlast_page.label=Iet uz pēdējo lapu\nlast_page_label=Iet uz pēdējo lapu\npage_rotate_cw.title=Pagriezt pa pulksteni\npage_rotate_cw.label=Pagriezt pa pulksteni\npage_rotate_cw_label=Pagriezt pa pulksteni\npage_rotate_ccw.title=Pagriezt pret pulksteni\npage_rotate_ccw.label=Pagriezt pret pulksteni\npage_rotate_ccw_label=Pagriezt pret pulksteni\n\ncursor_text_select_tool.title=Aktivizēt teksta izvēles rīku\ncursor_text_select_tool_label=Teksta izvēles rīks\ncursor_hand_tool.title=Aktivēt rokas rīku\ncursor_hand_tool_label=Rokas rīks\n\nscroll_vertical.title=Izmantot vertikālo ritināšanu\nscroll_vertical_label=Vertikālā ritināšana\nscroll_horizontal.title=Izmantot horizontālo ritināšanu\nscroll_horizontal_label=Horizontālā ritināšana\nscroll_wrapped.title=Izmantot apkļauto ritināšanu\nscroll_wrapped_label=Apkļautā ritināšana\n\nspread_none.title=Nepievienoties lapu izpletumiem\nspread_none_label=Neizmantot izpletumus\nspread_odd.title=Izmantot lapu izpletumus sākot ar nepāra numuru lapām\nspread_odd_label=Nepāra izpletumi\nspread_even.title=Izmantot lapu izpletumus sākot ar pāra numuru lapām\nspread_even_label=Pāra izpletumi\n\n# Document properties dialog box\ndocument_properties.title=Dokumenta iestatījumi…\ndocument_properties_label=Dokumenta iestatījumi…\ndocument_properties_file_name=Faila nosaukums:\ndocument_properties_file_size=Faila izmērs:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} biti)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} biti)\ndocument_properties_title=Nosaukums:\ndocument_properties_author=Autors:\ndocument_properties_subject=Tēma:\ndocument_properties_keywords=Atslēgas vārdi:\ndocument_properties_creation_date=Izveides datums:\ndocument_properties_modification_date=LAbošanas datums:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Radītājs:\ndocument_properties_producer=PDF producents:\ndocument_properties_version=PDF versija:\ndocument_properties_page_count=Lapu skaits:\ndocument_properties_page_size=Papīra izmērs:\ndocument_properties_page_size_unit_inches=collas\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portretorientācija\ndocument_properties_page_size_orientation_landscape=ainavorientācija\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Vēstule\ndocument_properties_page_size_name_legal=Juridiskie teksti\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Ātrā tīmekļa skats:\ndocument_properties_linearized_yes=Jā\ndocument_properties_linearized_no=Nē\ndocument_properties_close=Aizvērt\n\nprint_progress_message=Gatavo dokumentu drukāšanai...\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Atcelt\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Pārslēgt sānu joslu\ntoggle_sidebar_notification.title=Pārslēgt sānu joslu (dokumenta saturu un pielikumus)\ntoggle_sidebar_label=Pārslēgt sānu joslu\ndocument_outline.title=Rādīt dokumenta struktūru (veiciet dubultklikšķi lai izvērstu/sakļautu visus vienumus)\ndocument_outline_label=Dokumenta saturs\nattachments.title=Rādīt pielikumus\nattachments_label=Pielikumi\nthumbs.title=Parādīt sīktēlus\nthumbs_label=Sīktēli\nfindbar.title=Meklēt dokumentā\nfindbar_label=Meklēt\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Lapa {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Lapas {{page}} sīktēls\n\n# Find panel button title and messages\nfind_input.title=Meklēt\nfind_input.placeholder=Meklēt dokumentā…\nfind_previous.title=Atrast iepriekšējo\nfind_previous_label=Iepriekšējā\nfind_next.title=Atrast nākamo\nfind_next_label=Nākamā\nfind_highlight=Iekrāsot visas\nfind_match_case_label=Lielo, mazo burtu jutīgs\nfind_entire_word_label=Veselus vārdus\nfind_reached_top=Sasniegts dokumenta sākums, turpinām no beigām\nfind_reached_bottom=Sasniegtas dokumenta beigas, turpinām no sākuma\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} no {{total}} rezultāta\nfind_match_count[two]={{current}} no {{total}} rezultātiem\nfind_match_count[few]={{current}} no {{total}} rezultātiem\nfind_match_count[many]={{current}} no {{total}} rezultātiem\nfind_match_count[other]={{current}} no {{total}} rezultātiem\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Vairāk nekā {{limit}} rezultāti\nfind_match_count_limit[one]=Vairāk nekā {{limit}} rezultāti\nfind_match_count_limit[two]=Vairāk nekā {{limit}} rezultāti\nfind_match_count_limit[few]=Vairāk nekā {{limit}} rezultāti\nfind_match_count_limit[many]=Vairāk nekā {{limit}} rezultāti\nfind_match_count_limit[other]=Vairāk nekā {{limit}} rezultāti\nfind_not_found=Frāze nav atrasta\n\n# Error panel labels\nerror_more_info=Vairāk informācijas\nerror_less_info=MAzāk informācijas\nerror_close=Close\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Ziņojums: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Steks: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Rindiņa: {{line}}\nrendering_error=Attēlojot lapu radās kļūda\n\n# Predefined zoom values\npage_scale_width=Lapas platumā\npage_scale_fit=Ietilpinot lapu\npage_scale_auto=Automātiskais izmērs\npage_scale_actual=Patiesais izmērs\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Kļūda\nloading_error=Ielādējot PDF notika kļūda.\ninvalid_file_error=Nederīgs vai bojāts PDF fails.\nmissing_file_error=PDF fails nav atrasts.\nunexpected_response_error=Negaidīa servera atbilde.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} anotācija]\npassword_label=Ievadiet paroli, lai atvērtu PDF failu.\npassword_invalid=Nepareiza parole, mēģiniet vēlreiz.\npassword_ok=Labi\npassword_cancel=Atcelt\n\nprinting_not_supported=Uzmanību: Drukāšana no šī pārlūka darbojas tikai daļēji.\nprinting_not_ready=Uzmanību: PDF nav pilnībā ielādēts drukāšanai.\nweb_fonts_disabled=Tīmekļa fonti nav aktivizēti: Nevar iegult PDF fontus.\ndocument_colors_not_allowed=PDF dokumentiem nav atļauts izmantot pašiem savas krāsas: „Atļaut lapām izvēlēties pašām savas krāsas“ ir deaktivēts pārlūkā.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/mai/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=पछिला पृष्ठ\nprevious_label=पछिला\nnext.title=अगिला पृष्ठ\nnext_label=आगाँ\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=छोट करू\nzoom_out_label=छोट करू\nzoom_in.title=पैघ करू\nzoom_in_label=जूम इन\nzoom.title=छोट-पैघ करू\\u0020\npresentation_mode.title=प्रस्तुति अवस्थामे जाउ\npresentation_mode_label=प्रस्तुति अवस्था\nopen_file.title=फाइल खोलू\nopen_file_label=खोलू\nprint.title=छापू\nprint_label=छापू\ndownload.title=डाउनलोड\ndownload_label=डाउनलोड\nbookmark.title=मोजुदा दृश्य (नव विंडोमे नकल लिअ अथवा खोलू)\nbookmark_label=वर्तमान दृश्य\n\n# Secondary toolbar and context menu\ntools.title=अओजार\ntools_label=अओजार\nfirst_page.title=प्रथम पृष्ठ पर जाउ\nfirst_page.label=प्रथम पृष्ठ पर जाउ\nfirst_page_label=प्रथम पृष्ठ पर जाउ\nlast_page.title=अंतिम पृष्ठ पर जाउ\nlast_page.label=अंतिम पृष्ठ पर जाउ\nlast_page_label=अंतिम पृष्ठ पर जाउ\npage_rotate_cw.title=घड़ीक दिशा मे घुमाउ\npage_rotate_cw.label=घड़ीक दिशा मे घुमाउ\npage_rotate_cw_label=घड़ीक दिशा मे घुमाउ\npage_rotate_ccw.title=घड़ीक दिशा सँ उनटा घुमाउ\npage_rotate_ccw.label=घड़ीक दिशा सँ उनटा घुमाउ\npage_rotate_ccw_label=घड़ीक दिशा सँ उनटा घुमाउ\n\n\n# Document properties dialog box\ndocument_properties.title=दस्तावेज़ विशेषता...\ndocument_properties_label=दस्तावेज़ विशेषता...\ndocument_properties_file_name=फाइल नाम:\ndocument_properties_file_size=फ़ाइल आकार:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} बाइट)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} बाइट)\ndocument_properties_title=शीर्षक:\ndocument_properties_author=लेखकः\ndocument_properties_subject=विषय\ndocument_properties_keywords=बीजशब्द\ndocument_properties_creation_date=निर्माण तिथि:\ndocument_properties_modification_date=संशोधन दिनांक:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=सृजक:\ndocument_properties_producer=PDF उत्पादक:\ndocument_properties_version=PDF संस्करण:\ndocument_properties_page_count=पृष्ठ गिनती:\ndocument_properties_close=बन्न करू\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=स्लाइडर टागल\ntoggle_sidebar_label=स्लाइडर टागल\ndocument_outline_label=दस्तावेज खाका\nattachments.title=संलग्नक देखाबू\nattachments_label=संलग्नक\nthumbs.title=लघु-छवि देखाउ\nthumbs_label=लघु छवि\nfindbar.title=दस्तावेजमे ढूँढू\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=पृष्ठ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=पृष्ठ {{page}} का लघु-चित्र\n\n# Find panel button title and messages\nfind_previous.title=खोजक पछिला उपस्थिति ताकू\nfind_previous_label=पछिला\nfind_next.title=खोजक अगिला उपस्थिति ताकू\nfind_next_label=आगाँ\nfind_highlight=सभटा आलोकित करू\nfind_match_case_label=मिलान स्थिति\nfind_reached_top=पृष्ठक शीर्ष जाए पहुँचल, तल सँ जारी\nfind_reached_bottom=पृष्ठक तल मे जाए पहुँचल, शीर्ष सँ जारी\nfind_not_found=वाकींश नहि भेटल\n\n# Error panel labels\nerror_more_info=बेसी  सूचना\nerror_less_info=कम सूचना\nerror_close=बन्न करू\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=संदेश: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=स्टैक: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=फ़ाइल: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=पंक्ति: {{line}}\nrendering_error=पृष्ठ रेंडरिंगक समय त्रुटि आएल.\n\n# Predefined zoom values\npage_scale_width=पृष्ठ चओड़ाइ\npage_scale_fit=पृष्ठ फिट\npage_scale_auto=स्वचालित जूम\npage_scale_actual=सही आकार\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=त्रुटि\nloading_error=पीडीएफ लोड करैत समय एकटा त्रुटि भेल.\ninvalid_file_error=अमान्य अथवा भ्रष्ट PDF फाइल.\nmissing_file_error=अनुपस्थित PDF फाइल.\nunexpected_response_error=सर्वर सँ अप्रत्याशित प्रतिक्रिया.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=एहि पीडीएफ फ़ाइल केँ खोलबाक लेल कृपया कूटशब्द भरू.\npassword_invalid=अवैध कूटशब्द, कृपया फिनु कोशिश करू.\npassword_ok=बेस\n\nprinting_not_supported=चेतावनी: ई ब्राउजर पर छपाइ पूर्ण तरह सँ समर्थित नहि अछि.\nprinting_not_ready=चेतावनी: पीडीएफ छपाइक लेल पूर्ण तरह सँ लोड नहि अछि.\nweb_fonts_disabled=वेब फॉन्ट्स निष्क्रिय अछि: अंतःस्थापित PDF फान्टसक उपयोगमे असमर्थ.\ndocument_colors_not_allowed=PDF दस्तावेज़ हुकर अपन रंग केँ उपयोग करबाक लेल अनुमति प्राप्त नहि अछि: 'पृष्ठ केँ हुकर अपन रंग केँ चुनबाक लेल स्वीकृति दिअ जे ओ ओहि ब्राउज़र मे निष्क्रिय अछि.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/meh/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom.title=Nasa´a ka´nu/Nasa´a luli\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\n\n# Find panel button title and messages\n\n# Error panel labels\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\n\n# Predefined zoom values\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/mk/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Претходна страница\nprevious_label=Претходна\nnext.title=Следна страница\nnext_label=Следна\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Намалување\nzoom_out_label=Намали\nzoom_in.title=Зголемување\nzoom_in_label=Зголеми\nzoom.title=Променување на големина\npresentation_mode.title=Премини во презентациски режим\npresentation_mode_label=Презентациски режим\nopen_file.title=Отворање датотека\nopen_file_label=Отвори\nprint.title=Печатење\nprint_label=Печати\ndownload.title=Преземање\ndownload_label=Преземи\nbookmark.title=Овој преглед (копирај или отвори во нов прозорец)\nbookmark_label=Овој преглед\n\n# Secondary toolbar and context menu\ntools.title=Алатки\nfirst_page.label=Оди до првата страница\nlast_page.label=Оди до последната страница\npage_rotate_cw.label=Ротирај по стрелките на часовникот\npage_rotate_ccw.label=Ротирај спротивно од стрелките на часовникот\n\n\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_close=Откажи\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Вклучи странична лента\ntoggle_sidebar_label=Вклучи странична лента\nthumbs.title=Прикажување на икони\nthumbs_label=Икони\nfindbar.title=Најди во документот\nfindbar_label=Најди\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Страница {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Икона од страница {{page}}\n\n# Find panel button title and messages\nfind_previous.title=Најди ја предходната појава на фразата\nfind_previous_label=Претходно\nfind_next.title=Најди ја следната појава на фразата\nfind_next_label=Следно\nfind_highlight=Означи сѐ\nfind_match_case_label=Токму така\nfind_reached_top=Барањето стигна до почетокот на документот и почнува од крајот\nfind_reached_bottom=Барањето стигна до крајот на документот и почнува од почеток\nfind_not_found=Фразата не е пронајдена\n\n# Error panel labels\nerror_more_info=Повеќе информации\nerror_less_info=Помалку информации\nerror_close=Затвори\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Порака: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Датотека: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Линија: {{line}}\nrendering_error=Настана грешка при прикажувањето на страницата.\n\n# Predefined zoom values\npage_scale_width=Ширина на страница\npage_scale_fit=Цела страница\npage_scale_auto=Автоматска големина\npage_scale_actual=Вистинска големина\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Грешка\nloading_error=Настана грешка при вчитувањето на PDF-от.\ninvalid_file_error=Невалидна или корумпирана PDF датотека.\nmissing_file_error=Недостасува PDF документ.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\npassword_cancel=Откажи\n\nprinting_not_supported=Предупредување: Печатењето не е целосно поддржано во овој прелистувач.\nprinting_not_ready=Предупредување: PDF документот не е целосно вчитан за печатење.\nweb_fonts_disabled=Интернет фонтовите се оневозможени: не може да се користат вградените PDF фонтови.\ndocument_colors_not_allowed=PDF-документите немаат дозвола да користат сопствени бои: Поставката „Дозволи страниците сами да ги избираат своите бои“ е деактивирана од прелистувачот.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ml/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=മുമ്പുള്ള താള്‍\nprevious_label=മുമ്പു്\nnext.title=അടുത്ത താള്‍\nnext_label=അടുത്തതു്\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=താള്‍\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} ലെ\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pagesCount}} ലെ {{pageNumber}})\n\nzoom_out.title=ചെറുതാക്കുക\nzoom_out_label=ചെറുതാക്കുക\nzoom_in.title=വലുതാക്കുക\nzoom_in_label=വലുതാക്കുക\nzoom.title=വ്യാപ്തി മാറ്റുക\npresentation_mode.title=പ്രസന്റേഷന്‍ രീതിയിലേക്കു് മാറ്റുക\npresentation_mode_label=പ്രസന്റേഷന്‍ രീതി\nopen_file.title=ഫയല്‍ തുറക്കുക\nopen_file_label=തുറക്കുക\nprint.title=പ്രിന്റ് ചെയ്യുക\nprint_label=പ്രിന്റ് ചെയ്യുക\ndownload.title=ഡൌണ്‍ലോഡ് ചെയ്യുക\ndownload_label=ഡൌണ്‍ലോഡ് ചെയ്യുക\nbookmark.title=നിലവിലുള്ള കാഴ്ച (പുതിയ ജാലകത്തില്‍ പകര്‍ത്തുക അല്ലെങ്കില്‍ തുറക്കുക)\nbookmark_label=നിലവിലുള്ള കാഴ്ച\n\n# Secondary toolbar and context menu\ntools.title=ഉപകരണങ്ങള്‍\ntools_label=ഉപകരണങ്ങള്‍\nfirst_page.title=ആദ്യത്തെ താളിലേയ്ക്കു് പോകുക\nfirst_page.label=ആദ്യത്തെ താളിലേയ്ക്കു് പോകുക\nfirst_page_label=ആദ്യത്തെ താളിലേയ്ക്കു് പോകുക\nlast_page.title=അവസാന താളിലേയ്ക്കു് പോകുക\nlast_page.label=അവസാന താളിലേയ്ക്കു് പോകുക\nlast_page_label=അവസാന താളിലേയ്ക്കു് പോകുക\npage_rotate_cw.title=ഘടികാരദിശയില്‍ കറക്കുക\npage_rotate_cw.label=ഘടികാരദിശയില്‍ കറക്കുക\npage_rotate_cw_label=ഘടികാരദിശയില്‍ കറക്കുക\npage_rotate_ccw.title=ഘടികാര ദിശയ്ക്കു് വിപരീതമായി കറക്കുക\npage_rotate_ccw.label=ഘടികാര ദിശയ്ക്കു് വിപരീതമായി കറക്കുക\npage_rotate_ccw_label=ഘടികാര ദിശയ്ക്കു് വിപരീതമായി കറക്കുക\n\ncursor_text_select_tool.title=ടെക്സ്റ്റ് തിരഞ്ഞെടുക്കൽ ടൂള്‍ പ്രാപ്തമാക്കുക\ncursor_text_select_tool_label=ടെക്സ്റ്റ് തിരഞ്ഞെടുക്കൽ ടൂള്‍\ncursor_hand_tool.title=ഹാന്റ് ടൂള്‍ പ്രാപ്തമാക്കുക\ncursor_hand_tool_label=ഹാന്റ് ടൂള്‍\n\n# Document properties dialog box\ndocument_properties.title=രേഖയുടെ വിശേഷതകള്‍...\ndocument_properties_label=രേഖയുടെ വിശേഷതകള്‍...\ndocument_properties_file_name=ഫയലിന്റെ പേര്‌:\ndocument_properties_file_size=ഫയലിന്റെ വലിപ്പം:‌‌\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} കെബി ({{size_b}} ബൈറ്റുകള്‍)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} എംബി ({{size_b}} ബൈറ്റുകള്‍)\ndocument_properties_title=തലക്കെട്ട്‌\\u0020\ndocument_properties_author=രചയിതാവ്:\ndocument_properties_subject=വിഷയം:\ndocument_properties_keywords=കീവേര്‍ഡുകള്‍:\ndocument_properties_creation_date=പൂര്‍ത്തിയാകുന്ന തീയതി:\ndocument_properties_modification_date=മാറ്റം വരുത്തിയ തീയതി:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=സൃഷ്ടികര്‍ത്താവ്:\ndocument_properties_producer=പിഡിഎഫ് പ്രൊഡ്യൂസര്‍:\ndocument_properties_version=പിഡിഎഫ് പതിപ്പ്:\ndocument_properties_page_count=താളിന്റെ എണ്ണം:\ndocument_properties_close=അടയ്ക്കുക\n\nprint_progress_message=പ്രിന്റുചെയ്യുന്നതിന് ഡോക്യുമെന്റ് തയ്യാറാക്കുന്നു…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=റദ്ദാക്കുക\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=സൈഡ് ബാറിലേക്കു് മാറ്റുക\ntoggle_sidebar_notification.title=ടോഗിൾ സൈഡ്ബാർ (ഡോക്യുമെന്റില്‍ ഔട്ട്ലൈൻ/അറ്റാച്ചുമെന്റുകൾ അടങ്ങിയിരിക്കുന്നു)\ntoggle_sidebar_label=സൈഡ് ബാറിലേക്കു് മാറ്റുക\ndocument_outline.title=ഡോക്യുമെന്റിന്റെ ബാഹ്യരേഖ കാണിക്കുക (എല്ലാ ഇനങ്ങളും വിപുലീകരിക്കാനും ചുരുക്കാനും ഇരട്ട ക്ലിക്കുചെയ്യുക)\ndocument_outline_label=രേഖയുടെ ഔട്ട്ലൈന്‍\nattachments.title=അറ്റാച്മെന്റുകള്‍ കാണിയ്ക്കുക\nattachments_label=അറ്റാച്മെന്റുകള്‍\nthumbs.title=തംബ്നെയിലുകള്‍ കാണിയ്ക്കുക\nthumbs_label=തംബ്നെയിലുകള്‍\nfindbar.title=രേഖയില്‍ കണ്ടുപിടിയ്ക്കുക\nfindbar_label=കണ്ടെത്തുക\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=താള്‍ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}} താളിനുള്ള തംബ്നെയില്‍\n\n# Find panel button title and messages\nfind_input.title=കണ്ടെത്തുക\nfind_input.placeholder=ഡോക്യുമെന്റില്‍ കണ്ടെത്തുക…\nfind_previous.title=വാചകം ഇതിനു മുന്‍പ്‌ ആവര്‍ത്തിച്ചത്‌ കണ്ടെത്തുക\\u0020\nfind_previous_label=മുമ്പു്\nfind_next.title=വാചകം വീണ്ടും ആവര്‍ത്തിക്കുന്നത്‌ കണ്ടെത്തുക\\u0020\nfind_next_label=അടുത്തതു്\nfind_highlight=എല്ലാം എടുത്തുകാണിയ്ക്കുക\nfind_match_case_label=അക്ഷരങ്ങള്‍ ഒത്തുനോക്കുക\nfind_reached_top=രേഖയുടെ മുകളില്‍ എത്തിയിരിക്കുന്നു, താഴെ നിന്നും തുടരുന്നു\nfind_reached_bottom=രേഖയുടെ അവസാനം വരെ എത്തിയിരിക്കുന്നു, മുകളില്‍ നിന്നും തുടരുന്നു\\u0020\nfind_not_found=വാചകം കണ്ടെത്താനായില്ല\\u0020\n\n# Error panel labels\nerror_more_info=കൂടുതല്‍ വിവരം\nerror_less_info=കുറച്ച് വിവരം\nerror_close=അടയ്ക്കുക\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=സന്ദേശം: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=സ്റ്റാക്ക്: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ഫയല്‍: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=വരി: {{line}}\nrendering_error=താള്‍ റെണ്ടര്‍ ചെയ്യുമ്പോള്‍‌ പിശകുണ്ടായിരിയ്ക്കുന്നു.\n\n# Predefined zoom values\npage_scale_width=താളിന്റെ വീതി\npage_scale_fit=താള്‍ പാകത്തിനാക്കുക\npage_scale_auto=സ്വയമായി വലുതാക്കുക\npage_scale_actual=യഥാര്‍ത്ഥ വ്യാപ്തി\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=പിശക്\nloading_error=പിഡിഎഫ് ലഭ്യമാക്കുമ്പോള്‍ പിശക് ഉണ്ടായിരിയ്ക്കുന്നു.\ninvalid_file_error=തെറ്റായ അല്ലെങ്കില്‍ തകരാറുള്ള പിഡിഎഫ് ഫയല്‍.\nmissing_file_error=പിഡിഎഫ് ഫയല്‍ ലഭ്യമല്ല.\nunexpected_response_error=പ്രതീക്ഷിക്കാത്ത സെര്‍വര്‍ മറുപടി.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=ഈ പിഡിഎഫ് ഫയല്‍ തുറക്കുന്നതിനു് രഹസ്യവാക്ക് നല്‍കുക.\npassword_invalid=തെറ്റായ രഹസ്യവാക്ക്, ദയവായി വീണ്ടും ശ്രമിയ്ക്കുക.\npassword_ok=ശരി\npassword_cancel=റദ്ദാക്കുക\n\nprinting_not_supported=മുന്നറിയിപ്പു്: ഈ ബ്രൌസര്‍ പൂര്‍ണ്ണമായി പ്രിന്റിങ് പിന്തുണയ്ക്കുന്നില്ല.\nprinting_not_ready=മുന്നറിയിപ്പു്: പ്രിന്റ് ചെയ്യുന്നതിനു് പിഡിഎഫ് പൂര്‍ണ്ണമായി ലഭ്യമല്ല.\nweb_fonts_disabled=വെബിനുള്ള അക്ഷരസഞ്ചയങ്ങള്‍ പ്രവര്‍ത്തന രഹിതം: എംബഡ്ഡ് ചെയ്ത പിഡിഎഫ് അക്ഷരസഞ്ചയങ്ങള്‍ ഉപയോഗിയ്ക്കുവാന്‍ സാധ്യമല്ല.\ndocument_colors_not_allowed=സ്വന്തം നിറങ്ങള്‍ ഉപയോഗിയ്ക്കുവാന്‍ പിഡിഎഫ് രേഖകള്‍ക്കു് അനുവാദമില്ല:  'സ്വന്തം നിറങ്ങള്‍ ഉപയോഗിയ്ക്കുവാന്‍ താളുകളെ അനുവദിയ്ക്കുക' എന്നതു് ബ്രൌസറില്‍ നിര്‍ജീവമാണു്.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/mn/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom.title=Тэлэлт\nopen_file.title=Файл нээ\nopen_file_label=Нээ\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\ndocument_properties_file_name=Файлын нэр:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_title=Гарчиг:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\n\n# Find panel button title and messages\nfind_previous.title=Хайлтын өмнөх олдцыг харуулна\nfind_next.title=Хайлтын дараагийн олдцыг харуулна\nfind_not_found=Олдсонгүй\n\n# Error panel labels\nerror_more_info=Нэмэлт мэдээлэл\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\n\n# Predefined zoom values\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Алдаа\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\npassword_ok=OK\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/mr/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=मागील पृष्ठ\nprevious_label=मागील\nnext.title=पुढील पृष्ठ\nnext_label=पुढील\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=पृष्ठ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}}पैकी\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pagesCount}} पैकी {{pageNumber}})\n\nzoom_out.title=छोटे करा\nzoom_out_label=छोटे करा\nzoom_in.title=मोठे करा\nzoom_in_label=मोठे करा\nzoom.title=लहान किंवा मोठे करा\npresentation_mode.title=प्रस्तुतिकरण मोडचा वापर करा\npresentation_mode_label=प्रस्तुतिकरण मोड\nopen_file.title=फाइल उघडा\nopen_file_label=उघडा\nprint.title=छपाई करा\nprint_label=छपाई करा\ndownload.title=डाउनलोड करा\ndownload_label=डाउनलोड करा\nbookmark.title=सध्याचे अवलोकन (नवीन पटलात प्रत बनवा किंवा उघडा)\nbookmark_label=सध्याचे अवलोकन\n\n# Secondary toolbar and context menu\ntools.title=साधने\ntools_label=साधने\nfirst_page.title=पहिल्या पृष्ठावर जा\nfirst_page.label=पहिल्या पृष्ठावर जा\nfirst_page_label=पहिल्या पृष्ठावर जा\nlast_page.title=शेवटच्या पृष्ठावर जा\nlast_page.label=शेवटच्या पृष्ठावर जा\nlast_page_label=शेवटच्या पृष्ठावर जा\npage_rotate_cw.title=घड्याळाच्या काट्याच्या दिशेने फिरवा\npage_rotate_cw.label=घड्याळाच्या काट्याच्या दिशेने फिरवा\npage_rotate_cw_label=घड्याळाच्या काट्याच्या दिशेने फिरवा\npage_rotate_ccw.title=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा\npage_rotate_ccw.label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा\npage_rotate_ccw_label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा\n\ncursor_text_select_tool.title=मजकूर निवड साधन कार्यान्वयीत करा\ncursor_text_select_tool_label=मजकूर निवड साधन\ncursor_hand_tool.title=हात साधन कार्यान्वित करा\ncursor_hand_tool_label=हस्त साधन\n\n\n\n# Document properties dialog box\ndocument_properties.title=दस्तऐवज गुणधर्म…\ndocument_properties_label=दस्तऐवज गुणधर्म…\ndocument_properties_file_name=फाइलचे नाव:\ndocument_properties_file_size=फाइल आकार:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} बाइट्स)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} बाइट्स)\ndocument_properties_title=शिर्षक:\ndocument_properties_author=लेखक:\ndocument_properties_subject=विषय:\ndocument_properties_keywords=मुख्यशब्द:\ndocument_properties_creation_date=निर्माण दिनांक:\ndocument_properties_modification_date=दुरूस्ती दिनांक:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=निर्माता:\ndocument_properties_producer=PDF निर्माता:\ndocument_properties_version=PDF आवृत्ती:\ndocument_properties_page_count=पृष्ठ संख्या:\ndocument_properties_page_size=पृष्ठ आकार:\ndocument_properties_page_size_unit_inches=इंच\ndocument_properties_page_size_unit_millimeters=मीमी\ndocument_properties_page_size_orientation_portrait=उभी मांडणी\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=हो\ndocument_properties_linearized_no=नाही\ndocument_properties_close=बंद करा\n\nprint_progress_message=छपाई करीता पृष्ठ तयार करीत आहे…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=रद्द करा\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=बाजूचीपट्टी टॉगल करा\ntoggle_sidebar_notification.title=बाजूची पट्टी टॉगल करा (दस्तऐवजामध्ये रुपरेषा/जोडण्या आहेत)\ntoggle_sidebar_label=बाजूचीपट्टी टॉगल करा\ndocument_outline.title=दस्तऐवज बाह्यरेखा दर्शवा (विस्तृत करण्यासाठी दोनवेळा क्लिक करा /सर्व घटक दाखवा)\ndocument_outline_label=दस्तऐवज रूपरेषा\nattachments.title=जोडपत्र दाखवा\nattachments_label=जोडपत्र\nthumbs.title=थंबनेल्स् दाखवा\nthumbs_label=थंबनेल्स्\nfindbar.title=दस्तऐवजात शोधा\nfindbar_label=शोधा\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=पृष्ठ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=पृष्ठाचे थंबनेल {{page}}\n\n# Find panel button title and messages\nfind_input.title=शोधा\nfind_input.placeholder=दस्तऐवजात शोधा…\nfind_previous.title=वाकप्रयोगची मागील घटना शोधा\nfind_previous_label=मागील\nfind_next.title=वाकप्रयोगची पुढील घटना शोधा\nfind_next_label=पुढील\nfind_highlight=सर्व ठळक करा\nfind_match_case_label=आकार जुळवा\nfind_reached_top=दस्तऐवजाच्या शीर्षकास पोहचले, तळपासून पुढे\nfind_reached_bottom=दस्तऐवजाच्या तळाला पोहचले, शीर्षकापासून पुढे\nfind_not_found=वाकप्रयोग आढळले नाही\n\n# Error panel labels\nerror_more_info=आणखी माहिती\nerror_less_info=कमी माहिती\nerror_close=बंद करा\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=संदेश: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=स्टॅक: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=फाइल: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=रेष: {{line}}\nrendering_error=पृष्ठ दाखवतेवेळी त्रुटी आढळली.\n\n# Predefined zoom values\npage_scale_width=पृष्ठाची रूंदी\npage_scale_fit=पृष्ठ बसवा\npage_scale_auto=स्वयं लाहन किंवा मोठे करणे\npage_scale_actual=प्रत्यक्ष आकार\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=त्रुटी\nloading_error=PDF लोड करतेवेळी त्रुटी आढळली.\ninvalid_file_error=अवैध किंवा दोषीत PDF फाइल.\nmissing_file_error=न आढळणारी PDF फाइल.\nunexpected_response_error=अनपेक्षित सर्व्हर प्रतिसाद.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} टिपण्णी]\npassword_label=ही PDF फाइल उघडण्याकरिता पासवर्ड द्या.\npassword_invalid=अवैध पासवर्ड. कृपया पुन्हा प्रयत्न करा.\npassword_ok=ठीक आहे\npassword_cancel=रद्द करा\n\nprinting_not_supported=सावधानता: या ब्राउझरतर्फे छपाइ पूर्णपणे समर्थीत नाही.\nprinting_not_ready=सावधानता: छपाईकरिता PDF पूर्णतया लोड झाले नाही.\nweb_fonts_disabled=वेब टंक असमर्थीत आहेत: एम्बेडेड PDF टंक वापर अशक्य.\ndocument_colors_not_allowed=PDF दस्तऐवजांना त्यांचे रंग वापरण्यास अनुमती नाही: ब्राउझरमध्ये ' पृष्ठांना त्यांचे रंग निवडण्यास अनुमती द्या' बंद केले आहे.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ms/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Halaman Dahulu\nprevious_label=Dahulu\nnext.title=Halaman Berikut\nnext_label=Berikut\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Halaman\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=daripada {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} daripada {{pagesCount}})\n\nzoom_out.title=Zum Keluar\nzoom_out_label=Zum Keluar\nzoom_in.title=Zum Masuk\nzoom_in_label=Zum Masuk\nzoom.title=Zum\npresentation_mode.title=Tukar ke Mod Persembahan\npresentation_mode_label=Mod Persembahan\nopen_file.title=Buka Fail\nopen_file_label=Buka\nprint.title=Cetak\nprint_label=Cetak\ndownload.title=Muat turun\ndownload_label=Muat turun\nbookmark.title=Paparan semasa (salin atau buka dalam tetingkap baru)\nbookmark_label=Paparan Semasa\n\n# Secondary toolbar and context menu\ntools.title=Alatan\ntools_label=Alatan\nfirst_page.title=Pergi ke Halaman Pertama\nfirst_page.label=Pergi ke Halaman Pertama\nfirst_page_label=Pergi ke Halaman Pertama\nlast_page.title=Pergi ke Halaman Terakhir\nlast_page.label=Pergi ke Halaman Terakhir\nlast_page_label=Pergi ke Halaman Terakhir\npage_rotate_cw.title=Berputar ikut arah Jam\npage_rotate_cw.label=Berputar ikut arah Jam\npage_rotate_cw_label=Berputar ikut arah Jam\npage_rotate_ccw.title=Pusing berlawan arah jam\npage_rotate_ccw.label=Pusing berlawan arah jam\npage_rotate_ccw_label=Pusing berlawan arah jam\n\ncursor_text_select_tool.title=Dayakan Alatan Pilihan Teks\ncursor_text_select_tool_label=Alatan Pilihan Teks\ncursor_hand_tool.title=Dayakan Alatan Tangan\ncursor_hand_tool_label=Alatan Tangan\n\nscroll_vertical.title=Guna Skrol Menegak\nscroll_vertical_label=Skrol Menegak\nscroll_horizontal.title=Guna Skrol Mengufuk\nscroll_horizontal_label=Skrol Mengufuk\nscroll_wrapped.title=Guna Skrol Berbalut\nscroll_wrapped_label=Skrol Berbalut\n\nspread_none.title=Jangan hubungkan hamparan halaman\nspread_none_label=Tanpa Hamparan\nspread_odd.title=Hubungkan hamparan halaman dengan halaman nombor ganjil\nspread_odd_label=Hamparan Ganjil\nspread_even.title=Hubungkan hamparan halaman dengan halaman nombor genap\nspread_even_label=Hamparan Seimbang\n\n# Document properties dialog box\ndocument_properties.title=Sifat Dokumen…\ndocument_properties_label=Sifat Dokumen…\ndocument_properties_file_name=Nama fail:\ndocument_properties_file_size=Saiz fail:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bait)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bait)\ndocument_properties_title=Tajuk:\ndocument_properties_author=Pengarang:\ndocument_properties_subject=Subjek:\ndocument_properties_keywords=Kata kunci:\ndocument_properties_creation_date=Masa Dicipta:\ndocument_properties_modification_date=Tarikh Ubahsuai:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Pencipta:\ndocument_properties_producer=Pengeluar PDF:\ndocument_properties_version=Versi PDF:\ndocument_properties_page_count=Kiraan Laman:\ndocument_properties_page_size=Saiz Halaman:\ndocument_properties_page_size_unit_inches=dalam\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=potret\ndocument_properties_page_size_orientation_landscape=landskap\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Paparan Web Pantas:\ndocument_properties_linearized_yes=Ya\ndocument_properties_linearized_no=Tidak\ndocument_properties_close=Tutup\n\nprint_progress_message=Menyediakan dokumen untuk dicetak…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Batal\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Togol Bar Sisi\ntoggle_sidebar_notification.title=Togol Sidebar (dokumen mengandungi rangka/attachments)\ntoggle_sidebar_label=Togol Bar Sisi\ndocument_outline.title=Papar Rangka Dokumen (klik-dua-kali untuk kembangkan/kolaps semua item)\ndocument_outline_label=Rangka Dokumen\nattachments.title=Papar Lampiran\nattachments_label=Lampiran\nthumbs.title=Papar Thumbnails\nthumbs_label=Imej kecil\nfindbar.title=Cari didalam Dokumen\nfindbar_label=Cari\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Halaman {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Halaman Imej kecil {{page}}\n\n# Find panel button title and messages\nfind_input.title=Cari\nfind_input.placeholder=Cari dalam dokumen…\nfind_previous.title=Cari teks frasa berkenaan yang terdahulu\nfind_previous_label=Dahulu\nfind_next.title=Cari teks frasa berkenaan yang berikut\nfind_next_label=Berikut\nfind_highlight=Serlahkan semua\nfind_match_case_label=Huruf sepadan\nfind_entire_word_label=Seluruh perkataan\nfind_reached_top=Mencapai teratas daripada dokumen, sambungan daripada bawah\nfind_reached_bottom=Mencapai terakhir daripada dokumen, sambungan daripada atas\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} daripada {{total}} padanan\nfind_match_count[two]={{current}} daripada {{total}} padanan\nfind_match_count[few]={{current}} daripada {{total}} padanan\nfind_match_count[many]={{current}} daripada {{total}} padanan\nfind_match_count[other]={{current}} daripada {{total}} padanan\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Lebih daripada {{limit}} padanan\nfind_match_count_limit[one]=Lebih daripada {{limit}} padanan\nfind_match_count_limit[two]=Lebih daripada {{limit}} padanan\nfind_match_count_limit[few]=Lebih daripada {{limit}} padanan\nfind_match_count_limit[many]=Lebih daripada {{limit}} padanan\nfind_match_count_limit[other]=Lebih daripada {{limit}} padanan\nfind_not_found=Frasa tidak ditemui\n\n# Error panel labels\nerror_more_info=Maklumat Lanjut\nerror_less_info=Kurang Informasi\nerror_close=Tutup\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mesej: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Timbun: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fail: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Garis: {{line}}\nrendering_error=Ralat berlaku ketika memberikan halaman.\n\n# Predefined zoom values\npage_scale_width=Lebar Halaman\npage_scale_fit=Muat Halaman\npage_scale_auto=Zoom Automatik\npage_scale_actual=Saiz Sebenar\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Ralat\nloading_error=Masalah berlaku semasa menuatkan sebuah PDF.\ninvalid_file_error=Tidak sah atau fail PDF rosak.\nmissing_file_error=Fail PDF Hilang.\nunexpected_response_error=Respon pelayan yang tidak dijangka.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Anotasi]\npassword_label=Masukan kata kunci untuk membuka fail PDF ini.\npassword_invalid=Kata laluan salah. Cuba lagi.\npassword_ok=OK\npassword_cancel=Batal\n\nprinting_not_supported=Amaran: Cetakan ini tidak sepenuhnya disokong oleh pelayar ini.\nprinting_not_ready=Amaran: PDF tidak sepenuhnya dimuatkan untuk dicetak.\nweb_fonts_disabled=Fon web dinyahdayakan: tidak dapat menggunakan fon terbenam PDF.\ndocument_colors_not_allowed=Dokumen PDF tidak dibenarkan untuk menggunakan warna sendiri: “Izinkan halaman untuk memilih warna sendiri” telah dinyahaktifkan dalam pelayar.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/my/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=အရင် စာမျက်နှာ\nprevious_label=အရင်နေရာ\nnext.title=ရှေ့ စာမျက်နှာ\nnext_label=နောက်တခု\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=စာမျက်နှာ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} ၏\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pagesCount}} ၏ {{pageNumber}})\n\nzoom_out.title=ချုံ့ပါ\nzoom_out_label=ချုံ့ပါ\nzoom_in.title=ချဲ့ပါ\nzoom_in_label=ချဲ့ပါ\nzoom.title=ချုံ့/ချဲ့ပါ\npresentation_mode.title=ဆွေးနွေးတင်ပြစနစ်သို့ ကူးပြောင်းပါ\npresentation_mode_label=ဆွေးနွေးတင်ပြစနစ်\nopen_file.title=ဖိုင်အားဖွင့်ပါ။\nopen_file_label=ဖွင့်ပါ\nprint.title=ပုံနှိုပ်ပါ\nprint_label=ပုံနှိုပ်ပါ\ndownload.title=ကူးဆွဲ\ndownload_label=ကူးဆွဲ\nbookmark.title=လက်ရှိ မြင်ကွင်း (ဝင်းဒိုးအသစ်မှာ ကူးပါ သို့မဟုတ် ဖွင့်ပါ)\nbookmark_label=လက်ရှိ မြင်ကွင်း\n\n# Secondary toolbar and context menu\ntools.title=ကိရိယာများ\ntools_label=ကိရိယာများ\nfirst_page.title=ပထမ စာမျက်နှာသို့\nfirst_page.label=ပထမ စာမျက်နှာသို့\nfirst_page_label=ပထမ စာမျက်နှာသို့\nlast_page.title=နောက်ဆုံး စာမျက်နှာသို့\nlast_page.label=နောက်ဆုံး စာမျက်နှာသို့\nlast_page_label=နောက်ဆုံး စာမျက်နှာသို့\npage_rotate_cw.title=နာရီလက်တံ အတိုင်း\npage_rotate_cw.label=နာရီလက်တံ အတိုင်း\npage_rotate_cw_label=နာရီလက်တံ အတိုင်း\npage_rotate_ccw.title=နာရီလက်တံ ပြောင်းပြန်\npage_rotate_ccw.label=နာရီလက်တံ ပြောင်းပြန်\npage_rotate_ccw_label=နာရီလက်တံ ပြောင်းပြန်\n\n\n# Document properties dialog box\ndocument_properties.title=မှတ်တမ်းမှတ်ရာ ဂုဏ်သတ္တိများ\ndocument_properties_label=မှတ်တမ်းမှတ်ရာ ဂုဏ်သတ္တိများ\ndocument_properties_file_name=ဖိုင် :\ndocument_properties_file_size=ဖိုင်ဆိုဒ် :\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} ကီလိုဘိုတ် ({{size_b}}ဘိုတ်)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=ခေါင်းစဉ်‌ -\ndocument_properties_author=ရေးသားသူ:\ndocument_properties_subject=အကြောင်းအရာ:\\u0020\ndocument_properties_keywords=သော့ချက် စာလုံး:\ndocument_properties_creation_date=ထုတ်လုပ်ရက်စွဲ:\ndocument_properties_modification_date=ပြင်ဆင်ရက်စွဲ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=ဖန်တီးသူ:\ndocument_properties_producer=PDF ထုတ်လုပ်သူ:\ndocument_properties_version=PDF ဗားရှင်း:\ndocument_properties_page_count=စာမျက်နှာအရေအတွက်:\ndocument_properties_close=ပိတ်\n\nprint_progress_message=Preparing document for printing…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=ပယ်​ဖျက်ပါ\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=ဘေးတန်းဖွင့်ပိတ်\ntoggle_sidebar_notification.title=ဘေးဘားတန်းကို အဖွင့်/အပိတ် လုပ်ရန် (စာတမ်းတွင် outline/attachments ပါဝင်နိုင်သည်)\ntoggle_sidebar_label=ဖွင့်ပိတ် ဆလိုက်ဒါ\ndocument_outline.title=စာတမ်းအကျဉ်းချုပ်ကို ပြပါ (စာရင်းအားလုံးကို ချုံ့/ချဲ့ရန် ကလစ်နှစ်ချက်နှိပ်ပါ)\ndocument_outline_label=စာတမ်းအကျဉ်းချုပ်\nattachments.title=တွဲချက်များ ပြပါ\nattachments_label=တွဲထားချက်များ\nthumbs.title=ပုံရိပ်ငယ်များကို ပြပါ\nthumbs_label=ပုံရိပ်ငယ်များ\nfindbar.title=Find in Document\nfindbar_label=ရှာဖွေပါ\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=စာမျက်နှာ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=စာမျက်နှာရဲ့ ပုံရိပ်ငယ် {{page}}\n\n# Find panel button title and messages\nfind_input.title=ရှာဖွေပါ\nfind_input.placeholder=စာတမ်းထဲတွင် ရှာဖွေရန်…\nfind_previous.title=စကားစုရဲ့ အရင် ​ဖြစ်ပွားမှုကို ရှာဖွေပါ\nfind_previous_label=နောက်သို့\nfind_next.title=စကားစုရဲ့ နောက်ထပ် ​ဖြစ်ပွားမှုကို ရှာဖွေပါ\nfind_next_label=ရှေ့သို့\nfind_highlight=အားလုံးကို မျဉ်းသားပါ\nfind_match_case_label=စာလုံး တိုက်ဆိုင်ပါ\nfind_reached_top=စာမျက်နှာထိပ် ရောက်နေပြီ၊ အဆုံးကနေ ပြန်စပါ\nfind_reached_bottom=စာမျက်နှာအဆုံး ရောက်နေပြီ၊ ထိပ်ကနေ ပြန်စပါ\nfind_not_found=စကားစု မတွေ့ရဘူး\n\n# Error panel labels\nerror_more_info=နောက်ထပ်အချက်အလက်များ\nerror_less_info=အနည်းငယ်မျှသော သတင်းအချက်အလက်\nerror_close=ပိတ်\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=မက်ဆေ့ - {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=အထပ် - {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ဖိုင် {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=လိုင်း - {{line}}\nrendering_error=စာမျက်နှာကို ပုံဖော်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။\n\n# Predefined zoom values\npage_scale_width=စာမျက်နှာ အကျယ်\npage_scale_fit=စာမျက်နှာ ကွက်တိ\npage_scale_auto=အလိုအလျောက် ချုံ့ချဲ့\npage_scale_actual=အမှန်တကယ်ရှိတဲ့ အရွယ်\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=အမှား\nloading_error=PDF ဖိုင် ကိုဆွဲတင်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။\ninvalid_file_error=မရသော သို့ ပျက်နေသော PDF ဖိုင်\nmissing_file_error=PDF ပျောက်ဆုံး\nunexpected_response_error=မမျှော်လင့်ထားသော ဆာဗာမှ ပြန်ကြားချက်\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} အဓိပ္ပာယ်ဖွင့်ဆိုချက်]\npassword_label=PDF အားဖွင့်ရန် ပတ်စ်ဝတ်အားထည့်ပါ\npassword_invalid=စာဝှက် မှားသည်။ ထပ်ကြိုးစားကြည့်ပါ။\npassword_ok=OK\npassword_cancel=ပယ်​ဖျက်ပါ\n\nprinting_not_supported=သတိပေးချက်၊ပရင့်ထုတ်ခြင်းကိုဤဘယောက်ဆာသည် ပြည့်ဝစွာထောက်ပံ့မထားပါ ။\nprinting_not_ready=သတိပေးချက်: ယခု PDF ဖိုင်သည် ပုံနှိပ်ရန် မပြည့်စုံပါ\nweb_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.\ndocument_colors_not_allowed=PDF ဖိုင်အား ၎င်းဤ ကိုယ်ပိုင်အရောင်များကို အသုံးပြုခွင့်မပေးထားပါ ။ 'စာမျက်နှာအားလုံးအားအရောင်ရွေးချယ်ခွင့်' အား ယခု ဘယောက်ဆာတွင် ပိတ်ထားခြင်းကြောင့်ဖြစ် သှ်\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/nb-NO/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Forrige side\nprevious_label=Forrige\nnext.title=Neste side\nnext_label=Neste\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Side\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=av {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} av {{pagesCount}})\n\nzoom_out.title=Zoom ut\nzoom_out_label=Zoom ut\nzoom_in.title=Zoom inn\nzoom_in_label=Zoom inn\nzoom.title=Zoom\npresentation_mode.title=Bytt til presentasjonsmodus\npresentation_mode_label=Presentasjonsmodus\nopen_file.title=Åpne fil\nopen_file_label=Åpne\nprint.title=Skriv ut\nprint_label=Skriv ut\ndownload.title=Last ned\ndownload_label=Last ned\nbookmark.title=Nåværende visning (kopier eller åpne i et nytt vindu)\nbookmark_label=Nåværende visning\n\n# Secondary toolbar and context menu\ntools.title=Verktøy\ntools_label=Verktøy\nfirst_page.title=Gå til første side\nfirst_page.label=Gå til første side\nfirst_page_label=Gå til første side\nlast_page.title=Gå til siste side\nlast_page.label=Gå til siste side\nlast_page_label=Gå til siste side\npage_rotate_cw.title=Roter med klokken\npage_rotate_cw.label=Roter med klokken\npage_rotate_cw_label=Roter med klokken\npage_rotate_ccw.title=Roter mot klokken\npage_rotate_ccw.label=Roter mot klokken\npage_rotate_ccw_label=Roter mot klokken\n\ncursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy\ncursor_text_select_tool_label=Tekstmarkeringsverktøy\ncursor_hand_tool.title=Aktiver handverktøy\ncursor_hand_tool_label=Handverktøy\n\nscroll_vertical.title=Bruk vertikal rulling\nscroll_vertical_label=Vertikal rulling\nscroll_horizontal.title=Bruk horisontal rulling\nscroll_horizontal_label=Horisontal rulling\nscroll_wrapped.title=Bruk flersiderulling\nscroll_wrapped_label=Flersiderulling\n\nspread_none.title=Vis enkeltsider\nspread_none_label=Enkeltsider\nspread_odd.title=Vis oppslag med ulike sidenumre til venstre\nspread_odd_label=Oppslag med forside\nspread_even.title=Vis oppslag med like sidenumre til venstre\nspread_even_label=Oppslag uten forside\n\n# Document properties dialog box\ndocument_properties.title=Dokumentegenskaper …\ndocument_properties_label=Dokumentegenskaper …\ndocument_properties_file_name=Filnavn:\ndocument_properties_file_size=Filstørrelse:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Dokumentegenskaper …\ndocument_properties_author=Forfatter:\ndocument_properties_subject=Emne:\ndocument_properties_keywords=Nøkkelord:\ndocument_properties_creation_date=Opprettet dato:\ndocument_properties_modification_date=Endret dato:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Opprettet av:\ndocument_properties_producer=PDF-verktøy:\ndocument_properties_version=PDF-versjon:\ndocument_properties_page_count=Sideantall:\ndocument_properties_page_size=Sidestørrelse:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=stående\ndocument_properties_page_size_orientation_landscape=liggende\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Hurtig nettvisning:\ndocument_properties_linearized_yes=Ja\ndocument_properties_linearized_no=Nei\ndocument_properties_close=Lukk\n\nprint_progress_message=Forbereder dokument for utskrift …\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Avbryt\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Slå av/på sidestolpe\ntoggle_sidebar_notification.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg)\ntoggle_sidebar_label=Slå av/på sidestolpe\ndocument_outline.title=Vis dokumentdisposisjonen (dobbeltklikk for å utvide/skjule alle elementer)\ndocument_outline_label=Dokumentdisposisjon\nattachments.title=Vis vedlegg\nattachments_label=Vedlegg\nthumbs.title=Vis miniatyrbilde\nthumbs_label=Miniatyrbilde\nfindbar.title=Finn i dokumentet\nfindbar_label=Finn\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Side {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatyrbilde av side {{page}}\n\n# Find panel button title and messages\nfind_input.title=Søk\nfind_input.placeholder=Søk i dokument…\nfind_previous.title=Finn forrige forekomst av frasen\nfind_previous_label=Forrige\nfind_next.title=Finn neste forekomst av frasen\nfind_next_label=Neste\nfind_highlight=Uthev alle\nfind_match_case_label=Skill store/små bokstaver\nfind_entire_word_label=Hele ord\nfind_reached_top=Nådde toppen av dokumentet, fortsetter fra bunnen\nfind_reached_bottom=Nådde bunnen av dokumentet, fortsetter fra toppen\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} av {{total}} treff\nfind_match_count[two]={{current}} av {{total}} treff\nfind_match_count[few]={{current}} av {{total}} treff\nfind_match_count[many]={{current}} av {{total}} treff\nfind_match_count[other]={{current}} av {{total}} treff\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Mer enn {{limit}} treff\nfind_match_count_limit[one]=Mer enn {{limit}} treff\nfind_match_count_limit[two]=Mer enn {{limit}} treff\nfind_match_count_limit[few]=Mer enn {{limit}} treff\nfind_match_count_limit[many]=Mer enn {{limit}} treff\nfind_match_count_limit[other]=Mer enn {{limit}} treff\nfind_not_found=Fant ikke teksten\n\n# Error panel labels\nerror_more_info=Mer info\nerror_less_info=Mindre info\nerror_close=Lukk\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (bygg: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Melding: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stakk: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fil: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linje: {{line}}\nrendering_error=En feil oppstod ved opptegning av siden.\n\n# Predefined zoom values\npage_scale_width=Sidebredde\npage_scale_fit=Tilpass til siden\npage_scale_auto=Automatisk zoom\npage_scale_actual=Virkelig størrelse\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}} %\n\n# Loading indicator messages\nloading_error_indicator=Feil\nloading_error=En feil oppstod ved lasting av PDF.\ninvalid_file_error=Ugyldig eller skadet PDF-fil.\nmissing_file_error=Manglende PDF-fil.\nunexpected_response_error=Uventet serverrespons.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} annotasjon]\npassword_label=Skriv inn passordet for å åpne denne PDF-filen.\npassword_invalid=Ugyldig passord. Prøv igjen.\npassword_ok=OK\npassword_cancel=Avbryt\n\nprinting_not_supported=Advarsel: Utskrift er ikke fullstendig støttet av denne nettleseren.\nprinting_not_ready=Advarsel: PDF er ikke fullstendig innlastet for utskrift.\nweb_fonts_disabled=Web-fonter er avslått: Kan ikke bruke innbundne PDF-fonter.\ndocument_colors_not_allowed=PDF-dokumenter tillates ikke å bruke deres egne farger: \"Tillat sider å velge egne farger\" er deaktivert i nettleseren.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ne-NP/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=अघिल्लो पृष्ठ\nprevious_label=अघिल्लो\nnext.title=पछिल्लो पृष्ठ\nnext_label=पछिल्लो\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=पृष्ठ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} मध्ये\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pagesCount}} को {{pageNumber}})\n\nzoom_out.title=जुम घटाउनुहोस्\nzoom_out_label=जुम घटाउनुहोस्\nzoom_in.title=जुम बढाउनुहोस्\nzoom_in_label=जुम बढाउनुहोस्\nzoom.title=जुम गर्नुहोस्\npresentation_mode.title=प्रस्तुति मोडमा जानुहोस्\npresentation_mode_label=प्रस्तुति मोड\nopen_file.title=फाइल खोल्नुहोस्\nopen_file_label=खोल्नुहोस्\nprint.title=मुद्रण गर्नुहोस्\nprint_label=मुद्रण गर्नुहोस्\ndownload.title=डाउनलोडहरू\ndownload_label=डाउनलोडहरू\nbookmark.title=वर्तमान दृश्य (प्रतिलिपि गर्नुहोस् वा नयाँ सञ्झ्यालमा खुल्नुहोस्)\nbookmark_label=हालको दृश्य\n\n# Secondary toolbar and context menu\ntools.title=औजारहरू\ntools_label=औजारहरू\nfirst_page.title=पहिलो पृष्ठमा जानुहोस्\nfirst_page.label=पहिलो पृष्ठमा जानुहोस्\nfirst_page_label=पहिलो पृष्ठमा जानुहोस्\nlast_page.title=पछिल्लो पृष्ठमा जानुहोस्\nlast_page.label=पछिल्लो पृष्ठमा जानुहोस्\nlast_page_label=पछिल्लो पृष्ठमा जानुहोस्\npage_rotate_cw.title=घडीको दिशामा घुमाउनुहोस्\npage_rotate_cw.label=घडीको दिशामा घुमाउनुहोस्\npage_rotate_cw_label=घडीको दिशामा घुमाउनुहोस्\npage_rotate_ccw.title=घडीको विपरित दिशामा घुमाउनुहोस्\npage_rotate_ccw.label=घडीको विपरित दिशामा घुमाउनुहोस्\npage_rotate_ccw_label=घडीको विपरित दिशामा घुमाउनुहोस्\n\ncursor_text_select_tool.title=पाठ चयन उपकरण सक्षम गर्नुहोस्\ncursor_text_select_tool_label=पाठ चयन उपकरण\ncursor_hand_tool.title=हाते उपकरण सक्षम गर्नुहोस्\ncursor_hand_tool_label=हाते उपकरण\n\n# Document properties dialog box\ndocument_properties.title=कागजात विशेषताहरू...\ndocument_properties_label=कागजात विशेषताहरू...\ndocument_properties_file_name=फाइल नाम:\ndocument_properties_file_size=फाइल आकार:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=शीर्षक:\ndocument_properties_author=लेखक:\ndocument_properties_subject=विषयः\ndocument_properties_keywords=शब्दकुञ्जीः\ndocument_properties_creation_date=सिर्जना गरिएको मिति:\ndocument_properties_modification_date=परिमार्जित मिति:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=सर्जक:\ndocument_properties_producer=PDF निर्माता:\ndocument_properties_version=PDF संस्करण\ndocument_properties_page_count=पृष्ठ गणना:\ndocument_properties_close=बन्द गर्नुहोस्\n\nprint_progress_message=मुद्रणका लागि कागजात तयारी गरिदै…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=रद्द गर्नुहोस्\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=टगल साइडबार\ntoggle_sidebar_notification.title=साइडबार टगल गर्नुहोस् (कागजातमा समावेश भएको कुराहरू रूपरेखा/attachments)\ntoggle_sidebar_label=टगल साइडबार\ndocument_outline.title=कागजातको रूपरेखा देखाउनुहोस् (सबै वस्तुहरू विस्तार/पतन गर्न डबल-क्लिक गर्नुहोस्)\ndocument_outline_label=दस्तावेजको रूपरेखा\nattachments.title=संलग्नहरू देखाउनुहोस्\nattachments_label=संलग्नकहरू\nthumbs.title=थम्बनेलहरू देखाउनुहोस्\nthumbs_label=थम्बनेलहरू\nfindbar.title=कागजातमा फेला पार्नुहोस्\nfindbar_label=फेला पार्नुहोस्\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=पृष्ठ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}} पृष्ठको थम्बनेल\n\n# Find panel button title and messages\nfind_input.title=फेला पार्नुहोस्\nfind_input.placeholder=कागजातमा फेला पार्नुहोस्…\nfind_previous.title=यस वाक्यांशको अघिल्लो घटना फेला पार्नुहोस्\nfind_previous_label=अघिल्लो\nfind_next.title=यस वाक्यांशको पछिल्लो घटना फेला पार्नुहोस्\nfind_next_label=अर्को\nfind_highlight=सबै हाइलाइट गर्ने\nfind_match_case_label=केस जोडा मिलाउनुहोस्\nfind_reached_top=पृष्ठको शिर्षमा पुगीयो, तलबाट जारी गरिएको थियो\nfind_reached_bottom=पृष्ठको अन्त्यमा पुगीयो, शिर्षबाट जारी गरिएको थियो\nfind_not_found=वाक्यांश फेला परेन\n\n# Error panel labels\nerror_more_info=थप जानकारी\nerror_less_info=कम जानकारी\nerror_close=बन्द गर्नुहोस्\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=सन्देश: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=स्ट्याक: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=फाइल: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=लाइन: {{line}}\nrendering_error=पृष्ठ प्रतिपादन गर्दा एउटा त्रुटि देखापर्‍यो।\n\n# Predefined zoom values\npage_scale_width=पृष्ठ चौडाइ\npage_scale_fit=पृष्ठ ठिक्क मिल्ने\npage_scale_auto=स्वचालित जुम\npage_scale_actual=वास्तविक आकार\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=त्रुटि\nloading_error=यो PDF लोड गर्दा एउटा त्रुटि देखापर्‍यो।\ninvalid_file_error=अवैध वा दुषित PDF फाइल।\nmissing_file_error=हराईरहेको PDF फाइल।\nunexpected_response_error=अप्रत्याशित सर्भर प्रतिक्रिया।\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=यस PDF फाइललाई खोल्न गोप्यशब्द प्रविष्ट गर्नुहोस्।\npassword_invalid=अवैध गोप्यशब्द। पुनः प्रयास गर्नुहोस्।\npassword_ok=ठिक छ\npassword_cancel=रद्द गर्नुहोस्\n\nprinting_not_supported=चेतावनी: यो ब्राउजरमा मुद्रण पूर्णतया समर्थित छैन।\nprinting_not_ready=चेतावनी: PDF मुद्रणका लागि पूर्णतया लोड भएको छैन।\nweb_fonts_disabled=वेब फन्ट असक्षम छन्: एम्बेडेड PDF फन्ट प्रयोग गर्न असमर्थ।\ndocument_colors_not_allowed=PDF कागजातहरूलाई आफ्नै रङ प्रयोग गर्न अनुमति छैन: 'पृष्ठलाई आफ्नै रङ चयन गर्न अनुमति दिने' ब्राउजरमा निष्क्रिय गरिएको छ।\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/nl/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Vorige pagina\nprevious_label=Vorige\nnext.title=Volgende pagina\nnext_label=Volgende\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pagina\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=van {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} van {{pagesCount}})\n\nzoom_out.title=Uitzoomen\nzoom_out_label=Uitzoomen\nzoom_in.title=Inzoomen\nzoom_in_label=Inzoomen\nzoom.title=Zoomen\npresentation_mode.title=Wisselen naar presentatiemodus\npresentation_mode_label=Presentatiemodus\nopen_file.title=Bestand openen\nopen_file_label=Openen\nprint.title=Afdrukken\nprint_label=Afdrukken\ndownload.title=Downloaden\ndownload_label=Downloaden\nbookmark.title=Huidige weergave (kopiëren of openen in nieuw venster)\nbookmark_label=Huidige weergave\n\n# Secondary toolbar and context menu\ntools.title=Hulpmiddelen\ntools_label=Hulpmiddelen\nfirst_page.title=Naar eerste pagina gaan\nfirst_page.label=Naar eerste pagina gaan\nfirst_page_label=Naar eerste pagina gaan\nlast_page.title=Naar laatste pagina gaan\nlast_page.label=Naar laatste pagina gaan\nlast_page_label=Naar laatste pagina gaan\npage_rotate_cw.title=Rechtsom draaien\npage_rotate_cw.label=Rechtsom draaien\npage_rotate_cw_label=Rechtsom draaien\npage_rotate_ccw.title=Linksom draaien\npage_rotate_ccw.label=Linksom draaien\npage_rotate_ccw_label=Linksom draaien\n\ncursor_text_select_tool.title=Tekstselectiehulpmiddel inschakelen\ncursor_text_select_tool_label=Tekstselectiehulpmiddel\ncursor_hand_tool.title=Handhulpmiddel inschakelen\ncursor_hand_tool_label=Handhulpmiddel\n\nscroll_vertical.title=Verticaal scrollen gebruiken\nscroll_vertical_label=Verticaal scrollen\nscroll_horizontal.title=Horizontaal scrollen gebruiken\nscroll_horizontal_label=Horizontaal scrollen\nscroll_wrapped.title=Scrollen met terugloop gebruiken\nscroll_wrapped_label=Scrollen met terugloop\n\nspread_none.title=Dubbele pagina’s niet samenvoegen\nspread_none_label=Geen dubbele pagina’s\nspread_odd.title=Dubbele pagina’s samenvoegen vanaf oneven pagina’s\nspread_odd_label=Oneven dubbele pagina’s\nspread_even.title=Dubbele pagina’s samenvoegen vanaf even pagina’s\nspread_even_label=Even dubbele pagina’s\n\n# Document properties dialog box\ndocument_properties.title=Documenteigenschappen…\ndocument_properties_label=Documenteigenschappen…\ndocument_properties_file_name=Bestandsnaam:\ndocument_properties_file_size=Bestandsgrootte:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Titel:\ndocument_properties_author=Auteur:\ndocument_properties_subject=Onderwerp:\ndocument_properties_keywords=Trefwoorden:\ndocument_properties_creation_date=Aanmaakdatum:\ndocument_properties_modification_date=Wijzigingsdatum:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Maker:\ndocument_properties_producer=PDF-producent:\ndocument_properties_version=PDF-versie:\ndocument_properties_page_count=Aantal pagina’s:\ndocument_properties_page_size=Paginagrootte:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=staand\ndocument_properties_page_size_orientation_landscape=liggend\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Snelle webweergave:\ndocument_properties_linearized_yes=Ja\ndocument_properties_linearized_no=Nee\ndocument_properties_close=Sluiten\n\nprint_progress_message=Document voorbereiden voor afdrukken…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Annuleren\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Zijbalk in-/uitschakelen\ntoggle_sidebar_notification.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen)\ntoggle_sidebar_label=Zijbalk in-/uitschakelen\ndocument_outline.title=Documentoverzicht tonen (dubbelklik om alle items uit/samen te vouwen)\ndocument_outline_label=Documentoverzicht\nattachments.title=Bijlagen tonen\nattachments_label=Bijlagen\nthumbs.title=Miniaturen tonen\nthumbs_label=Miniaturen\nfindbar.title=Zoeken in document\nfindbar_label=Zoeken\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pagina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatuur van pagina {{page}}\n\n# Find panel button title and messages\nfind_input.title=Zoeken\nfind_input.placeholder=Zoeken in document…\nfind_previous.title=De vorige overeenkomst van de tekst zoeken\nfind_previous_label=Vorige\nfind_next.title=De volgende overeenkomst van de tekst zoeken\nfind_next_label=Volgende\nfind_highlight=Alles markeren\nfind_match_case_label=Hoofdlettergevoelig\nfind_entire_word_label=Hele woorden\nfind_reached_top=Bovenkant van document bereikt, doorgegaan vanaf onderkant\nfind_reached_bottom=Onderkant van document bereikt, doorgegaan vanaf bovenkant\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} van {{total}} overeenkomst\nfind_match_count[two]={{current}} van {{total}} overeenkomsten\nfind_match_count[few]={{current}} van {{total}} overeenkomsten\nfind_match_count[many]={{current}} van {{total}} overeenkomsten\nfind_match_count[other]={{current}} van {{total}} overeenkomsten\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Meer dan {{limit}} overeenkomsten\nfind_match_count_limit[one]=Meer dan {{limit}} overeenkomst\nfind_match_count_limit[two]=Meer dan {{limit}} overeenkomsten\nfind_match_count_limit[few]=Meer dan {{limit}} overeenkomsten\nfind_match_count_limit[many]=Meer dan {{limit}} overeenkomsten\nfind_match_count_limit[other]=Meer dan {{limit}} overeenkomsten\nfind_not_found=Tekst niet gevonden\n\n# Error panel labels\nerror_more_info=Meer informatie\nerror_less_info=Minder informatie\nerror_close=Sluiten\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Bericht: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Bestand: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Regel: {{line}}\nrendering_error=Er is een fout opgetreden bij het weergeven van de pagina.\n\n# Predefined zoom values\npage_scale_width=Paginabreedte\npage_scale_fit=Hele pagina\npage_scale_auto=Automatisch zoomen\npage_scale_actual=Werkelijke grootte\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Fout\nloading_error=Er is een fout opgetreden bij het laden van de PDF.\ninvalid_file_error=Ongeldig of beschadigd PDF-bestand.\nmissing_file_error=PDF-bestand ontbreekt. \nunexpected_response_error=Onverwacht serverantwoord.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}}-aantekening]\npassword_label=Voer het wachtwoord in om dit PDF-bestand te openen.\npassword_invalid=Ongeldig wachtwoord. Probeer het opnieuw.\npassword_ok=OK\npassword_cancel=Annuleren\n\nprinting_not_supported=Waarschuwing: afdrukken wordt niet volledig ondersteund door deze browser.\nprinting_not_ready=Waarschuwing: de PDF is niet volledig geladen voor afdrukken.\nweb_fonts_disabled=Weblettertypen zijn uitgeschakeld: gebruik van ingebedde PDF-lettertypen is niet mogelijk.\ndocument_colors_not_allowed=PDF-documenten mogen hun eigen kleuren niet gebruiken: ‘Pagina’s toestaan om hun eigen kleuren te kiezen’ is uitgeschakeld in de browser.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/nn-NO/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Føregåande side\nprevious_label=Føregåande\nnext.title=Neste side\nnext_label=Neste\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Side\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=av {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} av {{pagesCount}})\n\nzoom_out.title=Zoom ut\nzoom_out_label=Zoom ut\nzoom_in.title=Zoom inn\nzoom_in_label=Zoom inn\nzoom.title=Zoom\npresentation_mode.title=Byt til presentasjonsmodus\npresentation_mode_label=Presentasjonsmodus\nopen_file.title=Opne fil\nopen_file_label=Opne\nprint.title=Skriv ut\nprint_label=Skriv ut\ndownload.title=Last ned\ndownload_label=Last ned\nbookmark.title=Gjeldande vising (kopier eller opne i nytt vindauge)\nbookmark_label=Gjeldande vising\n\n# Secondary toolbar and context menu\ntools.title=Verktøy\ntools_label=Verktøy\nfirst_page.title=Gå til første side\nfirst_page.label=Gå til første side\nfirst_page_label=Gå til første side\nlast_page.title=Gå til siste side\nlast_page.label=Gå til siste side\nlast_page_label=Gå til siste side\npage_rotate_cw.title=Roter med klokka\npage_rotate_cw.label=Roter med klokka\npage_rotate_cw_label=Roter med klokka\npage_rotate_ccw.title=Roter mot klokka\npage_rotate_ccw.label=Roter mot klokka\npage_rotate_ccw_label=Roter mot klokka\n\ncursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy\ncursor_text_select_tool_label=Tekstmarkeringsverktøy\ncursor_hand_tool.title=Aktiver handverktøy\ncursor_hand_tool_label=Handverktøy\n\nscroll_vertical.title=Bruk vertikal rulling\nscroll_vertical_label=Vertikal rulling\nscroll_horizontal.title=Bruk horisontal rulling\nscroll_horizontal_label=Horisontal rulling\nscroll_wrapped.title=Bruk fleirsiderulling\nscroll_wrapped_label=Fleirsiderulling\n\nspread_none.title=Vis enkeltsider\nspread_none_label=Enkeltside\nspread_odd.title=Vis oppslag med ulike sidenummer til venstre\nspread_odd_label=Oppslag med framside\nspread_even.title=Vis oppslag med like sidenummmer til venstre\nspread_even_label=Oppslag utan framside\n\n# Document properties dialog box\ndocument_properties.title=Dokumenteigenskapar…\ndocument_properties_label=Dokumenteigenskapar…\ndocument_properties_file_name=Filnamn:\ndocument_properties_file_size=Filstorleik:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Tittel:\ndocument_properties_author=Forfattar:\ndocument_properties_subject=Emne:\ndocument_properties_keywords=Stikkord:\ndocument_properties_creation_date=Dato oppretta:\ndocument_properties_modification_date=Dato endra:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Oppretta av:\ndocument_properties_producer=PDF-verktøy:\ndocument_properties_version=PDF-versjon:\ndocument_properties_page_count=Sidetal:\ndocument_properties_page_size=Sidestørrelse:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=ståande\ndocument_properties_page_size_orientation_landscape=liggande\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Brev\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Rask nettvising:\ndocument_properties_linearized_yes=Ja\ndocument_properties_linearized_no=Nei\ndocument_properties_close=Lat att\n\nprint_progress_message=Førebur dokumentet for utskrift…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Avbryt\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Slå av/på sidestolpe\ntoggle_sidebar_notification.title=Vis/gøym sidestolpen (dokumentet inneheld oversikt/vedlegg)\ntoggle_sidebar_label=Slå av/på sidestolpe\ndocument_outline.title=Vis dokumentdisposisjonen (dobbelklikk for å utvide/gøyme alle elementa)\ndocument_outline_label=Dokumentdisposisjon\nattachments.title=Vis vedlegg\nattachments_label=Vedlegg\nthumbs.title=Vis miniatyrbilde\nthumbs_label=Miniatyrbilde\nfindbar.title=Finn i dokumentet\nfindbar_label=Finn\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Side {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatyrbilde av side {{page}}\n\n# Find panel button title and messages\nfind_input.title=Søk\nfind_input.placeholder=Søk i dokument…\nfind_previous.title=Finn førre førekomst av frasen\nfind_previous_label=Førre\nfind_next.title=Finn neste førekomst av frasen\nfind_next_label=Neste\nfind_highlight=Uthev alle\nfind_match_case_label=Skil store/små bokstavar\nfind_entire_word_label=Heile ord\nfind_reached_top=Nådde toppen av dokumentet, fortset frå botnen\nfind_reached_bottom=Nådde botnen av dokumentet, fortset frå toppen\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} av {{total}} treff\nfind_match_count[two]={{current}} av {{total}} treff\nfind_match_count[few]={{current}} av {{total}} treff\nfind_match_count[many]={{current}} av {{total}} treff\nfind_match_count[other]={{current}} av {{total}} treff\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Meir enn {{limit}} treff\nfind_match_count_limit[one]=Meir enn {{limit}} treff\nfind_match_count_limit[two]=Meir enn {{limit}} treff\nfind_match_count_limit[few]=Meir enn {{limit}} treff\nfind_match_count_limit[many]=Meir enn {{limit}} treff\nfind_match_count_limit[other]=Meir enn {{limit}} treff\nfind_not_found=Fann ikkje teksten\n\n# Error panel labels\nerror_more_info=Meir info\nerror_less_info=Mindre info\nerror_close=Lat att\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (bygg: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Melding: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stakk: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fil: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linje: {{line}}\nrendering_error=Ein feil oppstod under vising av sida.\n\n# Predefined zoom values\npage_scale_width=Sidebreidde\npage_scale_fit=Tilpass til sida\npage_scale_auto=Automatisk skalering\npage_scale_actual=Verkeleg storleik\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Feil\nloading_error=Ein feil oppstod ved lasting av PDF.\ninvalid_file_error=Ugyldig eller korrupt PDF-fil.\nmissing_file_error=Manglande PDF-fil.\nunexpected_response_error=Uventa tenarrespons.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} annotasjon]\npassword_label=Skriv inn passordet for å opne denne PDF-fila.\npassword_invalid=Ugyldig passord. Prøv igjen.\npassword_ok=OK\npassword_cancel=Avbryt\n\nprinting_not_supported=Åtvaring: Utskrift er ikkje fullstendig støtta av denne nettlesaren.\nprinting_not_ready=Åtvaring: PDF ikkje fullstendig innlasta for utskrift.\nweb_fonts_disabled=Web-skrifter er slått av: Kan ikkje bruke innbundne PDF-skrifter.\ndocument_colors_not_allowed=PDF-dokument kan ikkje bruke eigne fargar: «Tillat sider å velje eigne fargar» er deaktivert i nettlesaren.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/nso/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Letlakala le fetilego\nprevious_label=Fetilego\nnext.title=Letlakala le latelago\nnext_label=Latelago\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Bušetša ka gare\nzoom_out_label=Bušetša ka gare\nzoom_in.title=Godišetša ka ntle\nzoom_in_label=Godišetša ka ntle\nzoom.title=Godiša\npresentation_mode.title=Fetogela go mokgwa wa tlhagišo\npresentation_mode_label=Mokgwa wa tlhagišo\nopen_file.title=Bula faele\nopen_file_label=Bula\nprint.title=Gatiša\nprint_label=Gatiša\ndownload.title=Laolla\ndownload_label=Laolla\nbookmark.title=Pono ya bjale (kopiša le go bula lefasetereng le leswa)\nbookmark_label=Tebelelo ya gona bjale\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\ndocument_properties_file_name=Leina la faele:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_title=Thaetlele:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Šielanya para ya ka thoko\ntoggle_sidebar_label=Šielanya para ya ka thoko\ndocument_outline_label=Kakaretšo ya tokumente\nthumbs.title=Laetša dikhutšofatšo\nthumbs_label=Dikhutšofatšo\nfindbar.title=Hwetša go tokumente\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Letlakala {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Khutšofatšo ya letlakala {{page}}\n\n# Find panel button title and messages\nfind_previous.title=Hwetša tiragalo e fetilego ya sekafoko\nfind_previous_label=Fetilego\nfind_next.title=Hwetša tiragalo e latelago ya sekafoko\nfind_next_label=Latelago\nfind_highlight=Bonagatša tšohle\nfind_match_case_label=Swantšha kheisi\nfind_reached_top=Fihlile godimo ga tokumente, go tšwetšwe pele go tloga tlase\nfind_reached_bottom=Fihlile mafelelong a tokumente, go tšwetšwe pele go tloga godimo\nfind_not_found=Sekafoko ga sa hwetšwa\n\n# Error panel labels\nerror_more_info=Tshedimošo e oketšegilego\nerror_less_info=Tshedimošo ya tlasana\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Molaetša: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Mokgobo: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Faele: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Mothaladi: {{line}}\nrendering_error=Go diregile phošo ge go be go gafelwa letlakala.\n\n# Predefined zoom values\npage_scale_width=Bophara bja letlakala\npage_scale_fit=Go lekana ga letlakala\npage_scale_auto=Kgodišo ya maitirišo\npage_scale_actual=Bogolo bja kgonthe\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Phošo\nloading_error=Go diregile phošo ge go hlahlelwa PDF.\ninvalid_file_error=Faele ye e sa šomego goba e senyegilego ya PDF.\nmissing_file_error=Faele yeo e sego gona ya PDF.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Tlhaloso]\npassword_ok=LOKILE\n\nprinting_not_supported=Temošo: Go gatiša ga go thekgwe ke praosara ye ka botlalo.\nprinting_not_ready=Temošo: PDF ga ya hlahlelwa ka botlalo bakeng sa go gatišwa.\nweb_fonts_disabled=Difonte tša wepe di šitišitšwe: ga e kgone go diriša difonte tša PDF tše khutišitšwego.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/oc/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Pagina precedenta\nprevious_label=Precedent\nnext.title=Pagina seguenta\nnext_label=Seguent\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pagina\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=sus {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} sus {{pagesCount}})\n\nzoom_out.title=Zoom arrièr\nzoom_out_label=Zoom arrièr\nzoom_in.title=Zoom avant\nzoom_in_label=Zoom avant\nzoom.title=Zoom\npresentation_mode.title=Bascular en mòde presentacion\npresentation_mode_label=Mòde Presentacion\nopen_file.title=Dobrir lo fichièr\nopen_file_label=Dobrir\nprint.title=Imprimir\nprint_label=Imprimir\ndownload.title=Telecargar\ndownload_label=Telecargar\nbookmark.title=Afichatge corrent (copiar o dobrir dins una fenèstra novèla)\nbookmark_label=Afichatge actual\n\n# Secondary toolbar and context menu\ntools.title=Aisinas\ntools_label=Aisinas\nfirst_page.title=Anar a la primièra pagina\nfirst_page.label=Anar a la primièra pagina\nfirst_page_label=Anar a la primièra pagina\nlast_page.title=Anar a la darrièra pagina\nlast_page.label=Anar a la darrièra pagina\nlast_page_label=Anar a la darrièra pagina\npage_rotate_cw.title=Rotacion orària\npage_rotate_cw.label=Rotacion orària\npage_rotate_cw_label=Rotacion orària\npage_rotate_ccw.title=Rotacion antiorària\npage_rotate_ccw.label=Rotacion antiorària\npage_rotate_ccw_label=Rotacion antiorària\n\ncursor_text_select_tool.title=Activar l'aisina de seleccion de tèxte\ncursor_text_select_tool_label=Aisina de seleccion de tèxte\ncursor_hand_tool.title=Activar l’aisina man\ncursor_hand_tool_label=Aisina man\n\nscroll_vertical.title=Utilizar lo desfilament vertical\nscroll_vertical_label=Desfilament vertical\nscroll_horizontal.title=Utilizar lo desfilament orizontal\nscroll_horizontal_label=Desfilament orizontal\n\n\n# Document properties dialog box\ndocument_properties.title=Proprietats del document…\ndocument_properties_label=Proprietats del document…\ndocument_properties_file_name=Nom del fichièr :\ndocument_properties_file_size=Talha del fichièr :\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} Ko ({{size_b}} octets)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} Mo ({{size_b}} octets)\ndocument_properties_title=Títol :\ndocument_properties_author=Autor :\ndocument_properties_subject=Subjècte :\ndocument_properties_keywords=Mots claus :\ndocument_properties_creation_date=Data de creacion :\ndocument_properties_modification_date=Data de modificacion :\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Creator :\ndocument_properties_producer=Aisina de conversion PDF :\ndocument_properties_version=Version PDF :\ndocument_properties_page_count=Nombre de paginas :\ndocument_properties_page_size=Talha de la pagina :\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=retrait\ndocument_properties_page_size_orientation_landscape=païsatge\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letra\ndocument_properties_page_size_name_legal=Document juridic\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=Òc\ndocument_properties_linearized_no=Non\ndocument_properties_close=Tampar\n\nprint_progress_message=Preparacion del document per l’impression…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Anullar\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Afichar/amagar lo panèl lateral\ntoggle_sidebar_notification.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas)\ntoggle_sidebar_label=Afichar/amagar lo panèl lateral\ndocument_outline.title=Mostrar los esquèmas del document (dobleclicar per espandre/reduire totes los elements)\ndocument_outline_label=Marcapaginas del document\nattachments.title=Visualizar las pèças juntas\nattachments_label=Pèças juntas\nthumbs.title=Afichar las vinhetas\nthumbs_label=Vinhetas\nfindbar.title=Trobar dins lo document\nfindbar_label=Recercar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pagina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Vinheta de la pagina {{page}}\n\n# Find panel button title and messages\nfind_input.title=Recercar\nfind_input.placeholder=Cercar dins lo document…\nfind_previous.title=Tròba l'ocurréncia precedenta de la frasa\nfind_previous_label=Precedent\nfind_next.title=Tròba l'ocurréncia venenta de la frasa\nfind_next_label=Seguent\nfind_highlight=Suslinhar tot\nfind_match_case_label=Respectar la cassa\nfind_reached_top=Naut de la pagina atenh, perseguida del bas\nfind_reached_bottom=Bas de la pagina atench, perseguida al començament\nfind_not_found=Frasa pas trobada\n\n# Error panel labels\nerror_more_info=Mai de detalhs\nerror_less_info=Mens d'informacions\nerror_close=Tampar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (identificant de compilacion : {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Messatge : {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pila : {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fichièr : {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linha : {{line}}\nrendering_error=Una error s'es produita pendent l'afichatge de la pagina.\n\n# Predefined zoom values\npage_scale_width=Largor plena\npage_scale_fit=Pagina entièra\npage_scale_auto=Zoom automatic\npage_scale_actual=Talha vertadièra\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=Una error s'es produita pendent lo cargament del fichièr PDF.\ninvalid_file_error=Fichièr PDF invalid o corromput.\nmissing_file_error=Fichièr PDF mancant.\nunexpected_response_error=Responsa de servidor imprevista.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotacion {{type}}]\npassword_label=Picatz lo senhal per dobrir aqueste fichièr PDF.\npassword_invalid=Senhal incorrècte. Tornatz ensajar.\npassword_ok=D'acòrdi\npassword_cancel=Anullar\n\nprinting_not_supported=Atencion : l'impression es pas completament gerida per aqueste navegador.\nprinting_not_ready=Atencion : lo PDF es pas entièrament cargat per lo poder imprimir.\nweb_fonts_disabled=Las poliças web son desactivadas : impossible d'utilizar las poliças integradas al PDF.\ndocument_colors_not_allowed=Los documents PDF pòdon pas utilizar lors pròprias colors : « Autorizar las paginas web d'utilizar lors pròprias colors » es desactivat dins lo navegador.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/or/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=ପୂର୍ବ ପୃଷ୍ଠା\nprevious_label=ପୂର୍ବ\nnext.title=ପର ପୃଷ୍ଠା\nnext_label=ପର\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=ଛୋଟ କରନ୍ତୁ\nzoom_out_label=ଛୋଟ କରନ୍ତୁ\nzoom_in.title=ବଡ଼ କରନ୍ତୁ\nzoom_in_label=ବଡ଼ କରନ୍ତୁ\nzoom.title=ଛୋଟ ବଡ଼ କରନ୍ତୁ\npresentation_mode.title=ଉପସ୍ଥାପନ ଧାରାକୁ ବଦଳାନ୍ତୁ\npresentation_mode_label=ଉପସ୍ଥାପନ ଧାରା\nopen_file.title=ଫାଇଲ ଖୋଲନ୍ତୁ\nopen_file_label=ଖୋଲନ୍ତୁ\nprint.title=ମୁଦ୍ରଣ\nprint_label=ମୁଦ୍ରଣ\ndownload.title=ଆହରଣ\ndownload_label=ଆହରଣ\nbookmark.title=ପ୍ରଚଳିତ ଦୃଶ୍ୟ (ନକଲ କରନ୍ତୁ କିମ୍ବା ଏକ ନୂତନ ୱିଣ୍ଡୋରେ ଖୋଲନ୍ତୁ)\nbookmark_label=ପ୍ରଚଳିତ ଦୃଶ୍ୟ\n\n# Secondary toolbar and context menu\ntools.title=ସାଧନଗୁଡ଼ିକ\ntools_label=ସାଧନଗୁଡ଼ିକ\nfirst_page.title=ପ୍ରଥମ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ\nfirst_page.label=ପ୍ରଥମ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ\nfirst_page_label=ପ୍ରଥମ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ\nlast_page.title=ଶେଷ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ\nlast_page.label=ଶେଷ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ\nlast_page_label=ଶେଷ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ\npage_rotate_cw.title=ଦକ୍ଷିଣାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ\npage_rotate_cw.label=ଦକ୍ଷିଣାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ\npage_rotate_cw_label=ଦକ୍ଷିଣାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ\npage_rotate_ccw.title=ବାମାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ\npage_rotate_ccw.label=ବାମାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ\npage_rotate_ccw_label=ବାମାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ\n\n\n# Document properties dialog box\ndocument_properties.title=ଦଲିଲ ଗୁଣଧର୍ମ…\ndocument_properties_label=ଦଲିଲ ଗୁଣଧର୍ମ…\ndocument_properties_file_name=ଫାଇଲ ନାମ:\ndocument_properties_file_size=ଫାଇଲ ଆକାର:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=ଶୀର୍ଷକ:\ndocument_properties_author=ଲେଖକ:\ndocument_properties_subject=ବିଷୟ:\ndocument_properties_keywords=ସୂଚକ ଶବ୍ଦ:\ndocument_properties_creation_date=ନିର୍ମାଣ ତାରିଖ:\ndocument_properties_modification_date=ପରିବର୍ତ୍ତନ ତାରିଖ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=ନିର୍ମାତା:\ndocument_properties_producer=PDF ପ୍ରଯୋଜକ:\ndocument_properties_version=PDF ସଂସ୍କରଣ:\ndocument_properties_page_count=ପୃଷ୍ଠା ଗଣନା:\ndocument_properties_close=ବନ୍ଦ କରନ୍ତୁ\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=ପାର୍ଶ୍ୱପଟିକୁ ଆଗପଛ କରନ୍ତୁ\ntoggle_sidebar_label=ପାର୍ଶ୍ୱପଟିକୁ ଆଗପଛ କରନ୍ତୁ\ndocument_outline_label=ଦଲିଲ ସାରାଂଶ\nattachments.title=ସଂଲଗ୍ନକଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ\nattachments_label=ସଲଗ୍ନକଗୁଡିକ\nthumbs.title=ସଂକ୍ଷିପ୍ତ ବିବରଣୀ ଦର୍ଶାନ୍ତୁ\nthumbs_label=ସଂକ୍ଷିପ୍ତ ବିବରଣୀ\nfindbar.title=ଦଲିଲରେ ଖୋଜନ୍ତୁ\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=ପୃଷ୍ଠା {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=ପୃଷ୍ଠାର ସଂକ୍ଷିପ୍ତ ବିବରଣୀ {{page}}\n\n# Find panel button title and messages\nfind_previous.title=ଏହି ବାକ୍ୟାଂଶର ପୂର୍ବ ଉପସ୍ଥିତିକୁ ଖୋଜନ୍ତୁ\nfind_previous_label=ପୂର୍ବବର୍ତ୍ତୀ\nfind_next.title=ଏହି ବାକ୍ୟାଂଶର ପରବର୍ତ୍ତୀ ଉପସ୍ଥିତିକୁ ଖୋଜନ୍ତୁ\nfind_next_label=ପରବର୍ତ୍ତୀ\\u0020\nfind_highlight=ସମସ୍ତଙ୍କୁ ଆଲୋକିତ କରନ୍ତୁ\nfind_match_case_label=ଅକ୍ଷର ମେଳାନ୍ତୁ\nfind_reached_top=ତଳୁ ଉପରକୁ ଗତି କରି ଦଲିଲର ଉପର ଭାଗରେ ପହଞ୍ଚି ଯାଇଛି\nfind_reached_bottom=ଉପରୁ ତଳକୁ ଗତି କରି ଦଲିଲର ଶେଷ ଭାଗରେ ପହଞ୍ଚି ଯାଇଛି\nfind_not_found=ବାକ୍ୟାଂଶ ମିଳିଲା ନାହିଁ\n\n# Error panel labels\nerror_more_info=ଅଧିକ ସୂଚନା\nerror_less_info=ସ୍ୱଳ୍ପ ସୂଚନା\nerror_close=ବନ୍ଦ କରନ୍ତୁ\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=ସନ୍ଦେଶ: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=ଷ୍ଟାକ: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ଫାଇଲ: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=ଧାଡ଼ି: {{line}}\nrendering_error=ପୃଷ୍ଠା ଚିତ୍ରଣ କରିବା ସମୟରେ ତ୍ରୁଟି ଘଟିଲା।\n\n# Predefined zoom values\npage_scale_width=ପୃଷ୍ଠା ଓସାର\npage_scale_fit=ପୃଷ୍ଠା ମେଳନ\npage_scale_auto=ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଛୋଟବଡ଼ କରିବା\npage_scale_actual=ପ୍ରକୃତ ଆକାର\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=ତ୍ରୁଟି\nloading_error=PDF ଧାରଣ କରିବା ସମୟରେ ଏକ ତ୍ରୁଟି ଘଟିଲା।\ninvalid_file_error=ଅବୈଧ କିମ୍ବା ତ୍ରୁଟିଯୁକ୍ତ PDF ଫାଇଲ।\nmissing_file_error=ହଜିଯାଇଥିବା PDF ଫାଇଲ।\nunexpected_response_error=ଅପ୍ରତ୍ୟାଶିତ ସର୍ଭର ଉତ୍ତର।\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=ଏହି PDF ଫାଇଲକୁ ଖୋଲିବା ପାଇଁ ପ୍ରବେଶ ସଂକେତ ଭରଣ କରନ୍ତୁ।\npassword_invalid=ଭୁଲ ପ୍ରବେଶ ସଂକେତ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।\npassword_ok=ଠିକ ଅଛି\n\nprinting_not_supported=ଚେତାବନୀ: ଏହି ବ୍ରାଉଜର ଦ୍ୱାରା ମୁଦ୍ରଣ କ୍ରିୟା ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ସହାୟତା ପ୍ରାପ୍ତ ନୁହଁ।\nprinting_not_ready=ଚେତାବନୀ: PDF ଟି ମୁଦ୍ରଣ ପାଇଁ ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ଧାରଣ ହୋଇ ନାହିଁ।\nweb_fonts_disabled=ୱେବ ଅକ୍ଷରରୂପଗୁଡ଼ିକୁ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି: ସନ୍ନିହିତ PDF ଅକ୍ଷରରୂପଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବାରେ ଅସମର୍ଥ।\ndocument_colors_not_allowed=PDF ଦଲିଲଗୁଡ଼ିକ ସେମାନଙ୍କର ନିଜର ରଙ୍ଗ ବ୍ୟବହାର କରିବା ପାଇଁ ଅନୁମତି ପ୍ରାପ୍ତ ନୁହଁ: 'ସେମାନଙ୍କର ନିଜ ରଙ୍ଗ ବାଛିବା ପାଇଁ ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ' କୁ ବ୍ରାଉଜରରେ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି।\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/pa-IN/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=ਪਿਛਲਾ ਸਫ਼ਾ\nprevious_label=ਪਿੱਛੇ\nnext.title=ਅਗਲਾ ਸਫ਼ਾ\nnext_label=ਅੱਗੇ\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=ਸਫ਼ਾ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} ਵਿੱਚੋਂ\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages={{pagesCount}}) ਵਿੱਚੋਂ ({{pageNumber}}\n\nzoom_out.title=ਜ਼ੂਮ ਆਉਟ\nzoom_out_label=ਜ਼ੂਮ ਆਉਟ\nzoom_in.title=ਜ਼ੂਮ ਇਨ\nzoom_in_label=ਜ਼ੂਮ ਇਨ\nzoom.title=ਜ਼ੂਨ\npresentation_mode.title=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ ਵਿੱਚ ਜਾਓ\npresentation_mode_label=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ\nopen_file.title=ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹੋ\nopen_file_label=ਖੋਲ੍ਹੋ\nprint.title=ਪਰਿੰਟ\nprint_label=ਪਰਿੰਟ\ndownload.title=ਡਾਊਨਲੋਡ\ndownload_label=ਡਾਊਨਲੋਡ\nbookmark.title=ਮੌਜੂਦਾ ਝਲਕ (ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਕਾਪੀ ਕਰੋ ਜਾਂ ਖੋਲ੍ਹੋ)\nbookmark_label=ਮੌਜੂਦਾ ਝਲਕ\n\n# Secondary toolbar and context menu\ntools.title=ਟੂਲ\ntools_label=ਟੂਲ\nfirst_page.title=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ\nfirst_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ\nfirst_page_label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ\nlast_page.title=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ\nlast_page.label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ\nlast_page_label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ\npage_rotate_cw.title=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ\npage_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਉ\npage_rotate_cw_label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ\npage_rotate_ccw.title=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ\npage_rotate_ccw.label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਉ\npage_rotate_ccw_label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ\n\ncursor_text_select_tool.title=ਲਿਖਤ ਚੋਣ ਟੂਲ ਸਮਰੱਥ ਕਰੋ\ncursor_text_select_tool_label=ਲਿਖਤ ਚੋਣ ਟੂਲ\ncursor_hand_tool.title=ਹੱਥ ਟੂਲ ਸਮਰੱਥ ਕਰੋ\ncursor_hand_tool_label=ਹੱਥ ਟੂਲ\n\nscroll_vertical.title=ਖੜ੍ਹਵੇਂ ਸਕਰਾਉਣ ਨੂੰ ਵਰਤੋਂ\nscroll_vertical_label=ਖੜ੍ਹਵਾਂ ਸਰਕਾਉਣਾ\nscroll_horizontal.title=ਲੇਟਵੇਂ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ\nscroll_horizontal_label=ਲੇਟਵਾਂ ਸਰਕਾਉਣਾ\nscroll_wrapped.title=ਸਮੇਟੇ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ\nscroll_wrapped_label=ਸਮੇਟਿਆ ਸਰਕਾਉਣਾ\n\n\n# Document properties dialog box\ndocument_properties.title=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ\ndocument_properties_label=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ\ndocument_properties_file_name=ਫਾਈਲ ਦਾ ਨਾਂ:\ndocument_properties_file_size=ਫਾਈਲ ਦਾ ਆਕਾਰ:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} ਬਾਈਟ)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} ਬਾਈਟ)\ndocument_properties_title=ਟਾਈਟਲ:\ndocument_properties_author=ਲੇਖਕ:\ndocument_properties_subject=ਵਿਸ਼ਾ:\ndocument_properties_keywords=ਸ਼ਬਦ:\ndocument_properties_creation_date=ਬਣਾਉਣ ਦੀ ਮਿਤੀ:\ndocument_properties_modification_date=ਸੋਧ ਦੀ ਮਿਤੀ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=ਨਿਰਮਾਤਾ:\ndocument_properties_producer=PDF ਪ੍ਰੋਡਿਊਸਰ:\ndocument_properties_version=PDF ਵਰਜਨ:\ndocument_properties_page_count=ਸਫ਼ੇ ਦੀ ਗਿਣਤੀ:\ndocument_properties_page_size=ਸਫ਼ਾ ਆਕਾਰ:\ndocument_properties_page_size_unit_inches=ਇੰਚ\ndocument_properties_page_size_unit_millimeters=ਮਿਮੀ\ndocument_properties_page_size_orientation_portrait=ਪੋਰਟਰੇਟ\ndocument_properties_page_size_orientation_landscape=ਲੈਂਡਸਕੇਪ\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=ਲੈਟਰ\ndocument_properties_page_size_name_legal=ਕਨੂੰਨੀ\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\ndocument_properties_close=ਬੰਦ ਕਰੋ\n\nprint_progress_message=…ਪਰਿੰਟ ਕਰਨ ਲਈ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=ਰੱਦ ਕਰੋ\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ\ntoggle_sidebar_notification.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟਾਂ ਰੱਖਦਾ ਹੈ)\ntoggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ\ndocument_outline.title=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ ਦਿਖਾਓ (ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਫੈਲਾਉਣ/ਸਮੇਟਣ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ)\ndocument_outline_label=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ\nattachments.title=ਅਟੈਚਮੈਂਟ ਵੇਖਾਓ\nattachments_label=ਅਟੈਚਮੈਂਟਾਂ\nthumbs.title=ਥੰਮਨੇਲ ਨੂੰ ਵੇਖਾਓ\nthumbs_label=ਥੰਮਨੇਲ\nfindbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ\nfindbar_label=ਲੱਭੋ\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=ਸਫ਼ਾ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}} ਸਫ਼ੇ ਦਾ ਥੰਮਨੇਲ\n\n# Find panel button title and messages\nfind_input.title=ਲੱਭੋ\nfind_input.placeholder=…ਦਸਤਾਵੇਜ਼ 'ਚ ਲੱਭੋ\nfind_previous.title=ਵਾਕ ਦੀ ਪਿਛਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ\nfind_previous_label=ਪਿੱਛੇ\nfind_next.title=ਵਾਕ ਦੀ ਅਗਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ\nfind_next_label=ਅੱਗੇ\nfind_highlight=ਸਭ ਉਭਾਰੋ\nfind_match_case_label=ਅੱਖਰ ਆਕਾਰ ਨੂੰ ਮਿਲਾਉ\nfind_reached_top=ਦਸਤਾਵੇਜ਼ ਦੇ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਥੱਲੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ\nfind_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਉੱਤੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ\nfind_not_found=ਵਾਕ ਨਹੀਂ ਲੱਭਿਆ\n\n# Error panel labels\nerror_more_info=ਹੋਰ ਜਾਣਕਾਰੀ\nerror_less_info=ਘੱਟ ਜਾਣਕਾਰੀ\nerror_close=ਬੰਦ ਕਰੋ\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (ਬਿਲਡ: {{build}}\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=ਸੁਨੇਹਾ: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=ਸਟੈਕ: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ਫਾਈਲ: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=ਲਾਈਨ: {{line}}\nrendering_error=ਸਫ਼ਾ ਰੈਡਰ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ।\n\n# Predefined zoom values\npage_scale_width=ਸਫ਼ੇ ਦੀ ਚੌੜਾਈ\npage_scale_fit=ਸਫ਼ਾ ਫਿੱਟ\npage_scale_auto=ਆਟੋਮੈਟਿਕ ਜ਼ੂਮ ਕਰੋ\npage_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=ਗਲਤੀ\nloading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ।\ninvalid_file_error=ਗਲਤ ਜਾਂ ਨਿਕਾਰਾ PDF ਫਾਈਲ ਹੈ।\nmissing_file_error=ਨਾ-ਮੌਜੂਦ PDF ਫਾਈਲ।\nunexpected_response_error=ਅਣਜਾਣ ਸਰਵਰ ਜਵਾਬ।\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} ਵਿਆਖਿਆ]\npassword_label=ਇਹ PDF ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਪਾਸਵਰਡ ਦਿਉ।\npassword_invalid=ਗਲਤ ਪਾਸਵਰਡ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।\npassword_ok=ਠੀਕ ਹੈ\npassword_cancel=ਰੱਦ ਕਰੋ\n\nprinting_not_supported=ਸਾਵਧਾਨ: ਇਹ ਬਰਾਊਜ਼ਰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।\nprinting_not_ready=ਸਾਵਧਾਨ: PDF ਨੂੰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਨਹੀਂ ਹੈ।\nweb_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ PDF ਫੋਂਟ ਨੂੰ ਵਰਤਣ ਲਈ ਅਸਮਰੱਥ ਹੈ।\ndocument_colors_not_allowed=PDF ਦਸਤਾਵੇਜ਼ਾਂ ਨੂੰ ਆਪਣੇ ਰੰਗ ਵਰਤਣ ਦੀ ਇਜ਼ਾਜ਼ਤ ਨਹੀਂ ਹੈ।: ਬਰਾਊਜ਼ਰ ਵਿੱਚ “ਸਫ਼ਿਆਂ ਨੂੰ ਆਪਣੇ ਰੰਗ ਚੁਣਨ ਦੀ ਇਜ਼ਾਜ਼ਤ ਦਿਓ” ਨਾ-ਸਰਗਰਮ ਹੈ।\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/pl/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nprevious.title=Poprzednia strona\nprevious_label=Poprzednia\nnext.title=Następna strona\nnext_label=Następna\n\npage.title==Strona:\nof_pages=z {{pagesCount}}\npage_of_pages=({{pageNumber}} z {{pagesCount}})\n\nzoom_out.title=Pomniejszenie\nzoom_out_label=Pomniejsz\nzoom_in.title=Powiększenie\nzoom_in_label=Powiększ\nzoom.title=Skala\npresentation_mode.title=Przełącz na tryb prezentacji\npresentation_mode_label=Tryb prezentacji\nopen_file.title=Otwieranie pliku\nopen_file_label=Otwórz\nprint.title=Drukowanie\nprint_label=Drukuj\ndownload.title=Pobieranie\ndownload_label=Pobierz\nbookmark.title=Bieżąca pozycja (skopiuj lub otwórz jako odnośnik w nowym oknie)\nbookmark_label=Bieżąca pozycja\n\ntools.title=Narzędzia\ntools_label=Narzędzia\nfirst_page.title=Przechodzenie do pierwszej strony\nfirst_page.label=Przejdź do pierwszej strony\nfirst_page_label=Przejdź do pierwszej strony\nlast_page.title=Przechodzenie do ostatniej strony\nlast_page.label=Przejdź do ostatniej strony\nlast_page_label=Przejdź do ostatniej strony\npage_rotate_cw.title=Obracanie zgodnie z ruchem wskazówek zegara\npage_rotate_cw.label=Obróć zgodnie z ruchem wskazówek zegara\npage_rotate_cw_label=Obróć zgodnie z ruchem wskazówek zegara\npage_rotate_ccw.title=Obracanie przeciwnie do ruchu wskazówek zegara\npage_rotate_ccw.label=Obróć przeciwnie do ruchu wskazówek zegara\npage_rotate_ccw_label=Obróć przeciwnie do ruchu wskazówek zegara\n\ncursor_text_select_tool.title=Włącza narzędzie zaznaczania tekstu\ncursor_text_select_tool_label=Narzędzie zaznaczania tekstu\ncursor_hand_tool.title=Włącza narzędzie rączka\ncursor_hand_tool_label=Narzędzie rączka\n\nscroll_wrapped_label=Widok dwóch stron\nscroll_wrapped.title=Strony dokumentu wyświetlaj i przewijaj w kolumnach\n\nspread_none_label=Brak kolumn\nspread_none.title=Nie ustawiaj stron obok siebie\nspread_odd_label=Nieparzyste po lewej\nspread_odd.title=Strony nieparzyste ustawiaj na lewo od parzystych\nspread_even_label=Parzyste po lewej\nspread_even.title=Strony parzyste ustawiaj na lewo od nieparzystych\n\ndocument_properties.title=Właściwości dokumentu…\ndocument_properties_label=Właściwości dokumentu…\ndocument_properties_file_name=Nazwa pliku:\ndocument_properties_file_size=Rozmiar pliku:\ndocument_properties_kb={{size_kb}} KB ({{size_b}} b)\ndocument_properties_mb={{size_mb}} MB ({{size_b}} b)\ndocument_properties_title=Tytuł:\ndocument_properties_author=Autor:\ndocument_properties_subject=Temat:\ndocument_properties_keywords=Słowa kluczowe:\ndocument_properties_creation_date=Data utworzenia:\ndocument_properties_modification_date=Data modyfikacji:\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Utworzony przez:\ndocument_properties_producer=PDF wyprodukowany przez:\ndocument_properties_version=Wersja PDF:\ndocument_properties_page_count=Liczba stron:\ndocument_properties_page_size=Wymiary strony:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=pionowa\ndocument_properties_page_size_orientation_landscape=pozioma\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=US Letter\ndocument_properties_page_size_name_legal=US Legal\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} (orientacja {{orientation}})\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, orientacja {{orientation}})\ndocument_properties_linearized=Szybki podgląd w Internecie:\ndocument_properties_linearized_yes=tak\ndocument_properties_linearized_no=nie\ndocument_properties_close=Zamknij\n\nprint_progress_message=Przygotowywanie dokumentu do druku…\nprint_progress_percent={{progress}}%\nprint_progress_close=Anuluj\n\ntoggle_sidebar.title=Przełączanie panelu bocznego\ntoggle_sidebar_notification.title=Przełączanie panelu bocznego (dokument zawiera konspekt/załączniki)\ntoggle_sidebar_label=Przełącz panel boczny\ndocument_outline.title=Wyświetlanie zarysu dokumentu (podwójne kliknięcie rozwija lub zwija wszystkie pozycje)\ndocument_outline_label=Zarys dokumentu\nattachments.title=Wyświetlanie załączników\nattachments_label=Załączniki\nthumbs.title=Wyświetlanie miniaturek\nthumbs_label=Miniaturki\nfindbar.title=Znajdź w dokumencie\nfindbar_label=Znajdź\n\nthumb_page_title=Strona {{page}}\nthumb_page_canvas=Miniaturka strony {{page}}\n\nfind_input.title=Wyszukiwanie\nfind_input.placeholder=Szukaj w dokumencie…\nfind_previous.title=Znajdź poprzednie wystąpienie tekstu\nfind_previous_label=Poprzednie\nfind_next.title=Znajdź następne wystąpienie tekstu\nfind_next_label=Następne\nfind_highlight=Podświetl wszystkie\nfind_match_case_label=Rozróżnianie wielkości liter\nfind_entire_word_label=Całe słowa\nfind_reached_top=Początek dokumentu. Wyszukiwanie od końca.\nfind_reached_bottom=Koniec dokumentu. Wyszukiwanie od początku.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]=Pierwsze z {{total}} trafień\nfind_match_count[two]=Drugie z {{total}} trafień\nfind_match_count[few]={{current}}. z {{total}} trafień\nfind_match_count[many]={{current}}. z {{total}} trafień\nfind_match_count[other]={{current}}. z {{total}} trafień\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Brak trafień.\nfind_match_count_limit[one]=Więcej niż jedno trafienie.\nfind_match_count_limit[two]=Więcej niż dwa trafienia.\nfind_match_count_limit[few]=Więcej niż {{limit}} trafienia.\nfind_match_count_limit[many]=Więcej niż {{limit}} trafień.\nfind_match_count_limit[other]=Więcej niż {{limit}} trafień.\nfind_not_found=Nie znaleziono tekstu\n\nerror_more_info=Więcej informacji\nerror_less_info=Mniej informacji\nerror_close=Zamknij\nerror_version_info=PDF.js v{{version}} (kompilacja: {{build}})\nerror_message=Wiadomość: {{message}}\nerror_stack=Stos: {{stack}}\nerror_file=Plik: {{file}}\nerror_line=Wiersz: {{line}}\nrendering_error=Podczas renderowania strony wystąpił błąd.\n\npage_scale_width=Szerokość strony\npage_scale_fit=Dopasowanie strony\npage_scale_auto=Skala automatyczna\npage_scale_actual=Rozmiar rzeczywisty\npage_scale_percent={{scale}}%\n\nloading_error_indicator=Błąd\nloading_error=Podczas wczytywania dokumentu PDF wystąpił błąd.\ninvalid_file_error=Nieprawidłowy lub uszkodzony plik PDF.\nmissing_file_error=Brak pliku PDF.\nunexpected_response_error=Nieoczekiwana odpowiedź serwera.\n\ntext_annotation_type.alt=[Adnotacja: {{type}}]\npassword_label=Wprowadź hasło, aby otworzyć ten dokument PDF.\npassword_invalid=Nieprawidłowe hasło. Proszę spróbować ponownie.\npassword_ok=OK\npassword_cancel=Anuluj\n\nprinting_not_supported=Ostrzeżenie: drukowanie nie jest w pełni obsługiwane przez przeglądarkę.\nprinting_not_ready=Ostrzeżenie: dokument PDF nie jest całkowicie wczytany, więc nie można go wydrukować.\nweb_fonts_disabled=Czcionki sieciowe są wyłączone: nie można użyć osadzonych czcionek PDF.\ndocument_colors_not_allowed=Dokumenty PDF nie mogą używać własnych kolorów: opcja „Pozwalaj stronom stosować inne kolory” w przeglądarce jest nieaktywna.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/pt-BR/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Página anterior\nprevious_label=Anterior\nnext.title=Próxima página\nnext_label=Próxima\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Página\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} de {{pagesCount}})\n\nzoom_out.title=Reduzir\nzoom_out_label=Reduzir\nzoom_in.title=Ampliar\nzoom_in_label=Ampliar\nzoom.title=Zoom\npresentation_mode.title=Alternar para o modo de apresentação\npresentation_mode_label=Modo de apresentação\nopen_file.title=Abrir arquivo\nopen_file_label=Abrir\nprint.title=Imprimir\nprint_label=Imprimir\ndownload.title=Download\ndownload_label=Download\nbookmark.title=Visualização atual (copiar ou abrir em uma nova janela)\nbookmark_label=Visualização atual\n\n# Secondary toolbar and context menu\ntools.title=Ferramentas\ntools_label=Ferramentas\nfirst_page.title=Ir para a primeira página\nfirst_page.label=Ir para a primeira página\nfirst_page_label=Ir para a primeira página\nlast_page.title=Ir para a última página\nlast_page.label=Ir para a última página\nlast_page_label=Ir para a última página\npage_rotate_cw.title=Girar no sentido horário\npage_rotate_cw.label=Girar no sentido horário\npage_rotate_cw_label=Girar no sentido horário\npage_rotate_ccw.title=Girar no sentido anti-horário\npage_rotate_ccw.label=Girar no sentido anti-horário\npage_rotate_ccw_label=Girar no sentido anti-horário\n\ncursor_text_select_tool.title=Ativar a ferramenta de seleção de texto\ncursor_text_select_tool_label=Ferramenta de seleção de texto\ncursor_hand_tool.title=Ativar ferramenta de mão\ncursor_hand_tool_label=Ferramenta de mão\n\nscroll_vertical.title=Usar rolagem vertical\nscroll_vertical_label=Rolagem vertical\nscroll_horizontal.title=Usar rolagem horizontal\nscroll_horizontal_label=Rolagem horizontal\nscroll_wrapped.title=Usar rolagem contida\nscroll_wrapped_label=Rolagem contida\n\nspread_none.title=Não associar à página estendidas\nspread_none_label=Não estender\nspread_odd.title=Associar página estendida a partir de páginas com números ímpares\nspread_odd_label=Estender ímpares\nspread_even.title=Associar página estendida a partir de páginas com números pares\nspread_even_label=Estender pares\n\n# Document properties dialog box\ndocument_properties.title=Propriedades do documento…\ndocument_properties_label=Propriedades do documento…\ndocument_properties_file_name=Nome do arquivo:\ndocument_properties_file_size=Tamanho do arquivo:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Título:\ndocument_properties_author=Autor:\ndocument_properties_subject=Assunto:\ndocument_properties_keywords=Palavras-chave:\ndocument_properties_creation_date=Data da criação:\ndocument_properties_modification_date=Data da modificação:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Criação:\ndocument_properties_producer=Criador do PDF:\ndocument_properties_version=Versão do PDF:\ndocument_properties_page_count=Número de páginas:\ndocument_properties_page_size=Tamanho da página:\ndocument_properties_page_size_unit_inches=pol.\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=retrato\ndocument_properties_page_size_orientation_landscape=paisagem\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Carta\ndocument_properties_page_size_name_legal=Jurídico\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Visualização rápida da Web:\ndocument_properties_linearized_yes=Sim\ndocument_properties_linearized_no=Não\ndocument_properties_close=Fechar\n\nprint_progress_message=Preparando documento para impressão…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}} %\nprint_progress_close=Cancelar\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Alternar painel\ntoggle_sidebar_notification.title=Alternar o painel (documento contém marcadores e anexos)\ntoggle_sidebar_label=Alternar painel\ndocument_outline.title=Mostrar a estrutura do documento (duplo-clique para expandir/recolher todos os ítens)\ndocument_outline_label=Estrutura do documento\nattachments.title=Mostrar anexos\nattachments_label=Anexos\nthumbs.title=Mostrar miniaturas\nthumbs_label=Miniaturas\nfindbar.title=Localizar no documento\nfindbar_label=Localizar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Página {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura da página {{page}}\n\n# Find panel button title and messages\nfind_input.title=Localizar\nfind_input.placeholder=Localizar no documento…\nfind_previous.title=Localizar a ocorrência anterior da frase\nfind_previous_label=Anterior\nfind_next.title=Localizar a próxima ocorrência da frase\nfind_next_label=Próxima\nfind_highlight=Realçar tudo\nfind_match_case_label=Diferenciar maiúsculas/minúsculas\nfind_entire_word_label=Palavras completas\nfind_reached_top=Início do documento alcançado, continuando do fim\nfind_reached_bottom=Fim do documento alcançado, continuando do início\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_not_found=Frase não encontrada\n\n# Error panel labels\nerror_more_info=Mais informações\nerror_less_info=Menos informações\nerror_close=Fechar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (compilação: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mensagem: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Pilha: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Arquivo: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linha: {{line}}\nrendering_error=Ocorreu um erro ao renderizar a página.\n\n# Predefined zoom values\npage_scale_width=Largura da página\npage_scale_fit=Ajustar à janela\npage_scale_auto=Zoom automático\npage_scale_actual=Tamanho real\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Erro\nloading_error=Ocorreu um erro ao carregar o PDF.\ninvalid_file_error=Arquivo PDF corrompido ou inválido.\nmissing_file_error=Arquivo PDF ausente.\nunexpected_response_error=Resposta inesperada do servidor.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotação {{type}}]\npassword_label=Forneça a senha para abrir este arquivo PDF.\npassword_invalid=Senha inválida. Tente novamente.\npassword_ok=OK\npassword_cancel=Cancelar\n\nprinting_not_supported=Aviso: a impressão não é totalmente suportada neste navegador.\nprinting_not_ready=Aviso: o PDF não está totalmente carregado para impressão.\nweb_fonts_disabled=As fontes web estão desabilitadas: não foi possível usar fontes incorporadas do PDF.\ndocument_colors_not_allowed=Os documentos em PDF não estão autorizados a usar suas próprias cores: “Permitir que as páginas escolham suas próprias cores” está desabilitado no navegador.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/pt-PT/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Página anterior\nprevious_label=Anterior\nnext.title=Página seguinte\nnext_label=Seguinte\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Página\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=de {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} de {{pagesCount}})\n\nzoom_out.title=Reduzir\nzoom_out_label=Reduzir\nzoom_in.title=Ampliar\nzoom_in_label=Ampliar\nzoom.title=Zoom\npresentation_mode.title=Trocar para o modo de apresentação\npresentation_mode_label=Modo de apresentação\nopen_file.title=Abrir ficheiro\nopen_file_label=Abrir\nprint.title=Imprimir\nprint_label=Imprimir\ndownload.title=Transferir\ndownload_label=Transferir\nbookmark.title=Vista atual (copiar ou abrir numa nova janela)\nbookmark_label=Visão atual\n\n# Secondary toolbar and context menu\ntools.title=Ferramentas\ntools_label=Ferramentas\nfirst_page.title=Ir para a primeira página\nfirst_page.label=Ir para a primeira página\nfirst_page_label=Ir para a primeira página\nlast_page.title=Ir para a última página\nlast_page.label=Ir para a última página\nlast_page_label=Ir para a última página\npage_rotate_cw.title=Rodar à direita\npage_rotate_cw.label=Rodar à direita\npage_rotate_cw_label=Rodar à direita\npage_rotate_ccw.title=Rodar à esquerda\npage_rotate_ccw.label=Rodar à esquerda\npage_rotate_ccw_label=Rodar à esquerda\n\ncursor_text_select_tool.title=Ativar ferramenta de seleção de texto\ncursor_text_select_tool_label=Ferramenta de seleção de texto\ncursor_hand_tool.title=Ativar ferramenta de mão\ncursor_hand_tool_label=Ferramenta de mão\n\nscroll_vertical.title=Utilizar deslocação vertical\nscroll_vertical_label=Deslocação vertical\nscroll_horizontal.title=Utilizar deslocação horizontal\nscroll_horizontal_label=Deslocação horizontal\nscroll_wrapped.title=Utilizar deslocação encapsulada\nscroll_wrapped_label=Deslocação encapsulada\n\nspread_none.title=Não juntar spreads de páginas\nspread_none_label=Sem spreads\nspread_odd.title=Juntar spreads de páginas a partir de páginas com números ímpares\nspread_odd_label=Spreads ímpares\nspread_even.title=Juntar spreads de páginas a partir de páginas com números pares\nspread_even_label=Spreads pares\n\n# Document properties dialog box\ndocument_properties.title=Propriedades do documento…\ndocument_properties_label=Propriedades do documento…\ndocument_properties_file_name=Nome do ficheiro:\ndocument_properties_file_size=Tamanho do ficheiro:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Título:\ndocument_properties_author=Autor:\ndocument_properties_subject=Assunto:\ndocument_properties_keywords=Palavras-chave:\ndocument_properties_creation_date=Data de criação:\ndocument_properties_modification_date=Data de modificação:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Criador:\ndocument_properties_producer=Produtor de PDF:\ndocument_properties_version=Versão do PDF:\ndocument_properties_page_count=N.º de páginas:\ndocument_properties_page_size=Tamanho da página:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=retrato\ndocument_properties_page_size_orientation_landscape=paisagem\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Carta\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Vista rápida web:\ndocument_properties_linearized_yes=Sim\ndocument_properties_linearized_no=Não\ndocument_properties_close=Fechar\n\nprint_progress_message=A preparar o documento para impressão…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Cancelar\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Alternar barra lateral\ntoggle_sidebar_notification.title=Alternar barra lateral (documento contém contorno/anexos)\ntoggle_sidebar_label=Alternar barra lateral\ndocument_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens)\ndocument_outline_label=Estrutura do documento\nattachments.title=Mostrar anexos\nattachments_label=Anexos\nthumbs.title=Mostrar miniaturas\nthumbs_label=Miniaturas\nfindbar.title=Localizar em documento\nfindbar_label=Localizar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Página {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura da página {{page}}\n\n# Find panel button title and messages\nfind_input.title=Localizar\nfind_input.placeholder=Localizar em documento…\nfind_previous.title=Localizar ocorrência anterior da frase\nfind_previous_label=Anterior\nfind_next.title=Localizar ocorrência seguinte da frase\nfind_next_label=Seguinte\nfind_highlight=Destacar tudo\nfind_match_case_label=Correspondência\nfind_entire_word_label=Palavras completas\nfind_reached_top=Topo do documento atingido, a continuar a partir do fundo\nfind_reached_bottom=Fim do documento atingido, a continuar a partir do topo\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} de {{total}} correspondência\nfind_match_count[two]={{current}} de {{total}} correspondências\nfind_match_count[few]={{current}} de {{total}} correspondências\nfind_match_count[many]={{current}} de {{total}} correspondências\nfind_match_count[other]={{current}} de {{total}} correspondências\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Mais de {{limit}} correspondências\nfind_match_count_limit[one]=Mais de {{limit}} correspondência\nfind_match_count_limit[two]=Mais de {{limit}} correspondências\nfind_match_count_limit[few]=Mais de {{limit}} correspondências\nfind_match_count_limit[many]=Mais de {{limit}} correspondências\nfind_match_count_limit[other]=Mais de {{limit}} correspondências\nfind_not_found=Frase não encontrada\n\n# Error panel labels\nerror_more_info=Mais informação\nerror_less_info=Menos informação\nerror_close=Fechar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (compilação: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mensagem: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Ficheiro: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linha: {{line}}\nrendering_error=Ocorreu um erro ao processar a página.\n\n# Predefined zoom values\npage_scale_width=Ajustar à largura\npage_scale_fit=Ajustar à página\npage_scale_auto=Zoom automático\npage_scale_actual=Tamanho real\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Erro\nloading_error=Ocorreu um erro ao carregar o PDF.\ninvalid_file_error=Ficheiro PDF inválido ou danificado.\nmissing_file_error=Ficheiro PDF inexistente.\nunexpected_response_error=Resposta inesperada do servidor.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotação {{type}}]\npassword_label=Introduza a palavra-passe para abrir este ficheiro PDF.\npassword_invalid=Palavra-passe inválida. Por favor, tente novamente.\npassword_ok=OK\npassword_cancel=Cancelar\n\nprinting_not_supported=Aviso: a impressão não é totalmente suportada por este navegador.\nprinting_not_ready=Aviso: o PDF ainda não está totalmente carregado.\nweb_fonts_disabled=Os tipos de letra web estão desativados: não é possível utilizar os tipos de letra PDF incorporados.\ndocument_colors_not_allowed=Os documentos PDF não permitem a utilização das suas próprias cores: “Permitir às páginas escolher as suas próprias cores” está desativado no navegador.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/rm/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Pagina precedenta\nprevious_label=Enavos\nnext.title=Proxima pagina\nnext_label=Enavant\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pagina\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=da {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} da {{pagesCount}})\n\nzoom_out.title=Empitschnir\nzoom_out_label=Empitschnir\nzoom_in.title=Engrondir\nzoom_in_label=Engrondir\nzoom.title=Zoom\npresentation_mode.title=Midar en il modus da preschentaziun\npresentation_mode_label=Modus da preschentaziun\nopen_file.title=Avrir datoteca\nopen_file_label=Avrir\nprint.title=Stampar\nprint_label=Stampar\ndownload.title=Telechargiar\ndownload_label=Telechargiar\nbookmark.title=Vista actuala (copiar u avrir en ina nova fanestra)\nbookmark_label=Vista actuala\n\n# Secondary toolbar and context menu\ntools.title=Utensils\ntools_label=Utensils\nfirst_page.title=Siglir a l'emprima pagina\nfirst_page.label=Siglir a l'emprima pagina\nfirst_page_label=Siglir a l'emprima pagina\nlast_page.title=Siglir a la davosa pagina\nlast_page.label=Siglir a la davosa pagina\nlast_page_label=Siglir a la davosa pagina\npage_rotate_cw.title=Rotar en direcziun da l'ura\npage_rotate_cw.label=Rotar en direcziun da l'ura\npage_rotate_cw_label=Rotar en direcziun da l'ura\npage_rotate_ccw.title=Rotar en direcziun cuntraria a l'ura\npage_rotate_ccw.label=Rotar en direcziun cuntraria a l'ura\npage_rotate_ccw_label=Rotar en direcziun cuntraria a l'ura\n\ncursor_text_select_tool.title=Activar l'utensil per selecziunar text\ncursor_text_select_tool_label=Utensil per selecziunar text\ncursor_hand_tool.title=Activar l'utensil da maun\ncursor_hand_tool_label=Utensil da maun\n\nscroll_vertical.title=Utilisar il defilar vertical\nscroll_vertical_label=Defilar vertical\nscroll_horizontal.title=Utilisar il defilar orizontal\nscroll_horizontal_label=Defilar orizontal\nscroll_wrapped.title=Utilisar il defilar en colonnas\nscroll_wrapped_label=Defilar en colonnas\n\nspread_none.title=Betg parallelisar las paginas\nspread_none_label=Betg parallel\nspread_odd.title=Parallelisar las paginas cun cumenzar cun paginas spèras\nspread_odd_label=Parallel spèr\nspread_even.title=Parallelisar las paginas cun cumenzar cun paginas pèras\nspread_even_label=Parallel pèr\n\n# Document properties dialog box\ndocument_properties.title=Caracteristicas dal document…\ndocument_properties_label=Caracteristicas dal document…\ndocument_properties_file_name=Num da la datoteca:\ndocument_properties_file_size=Grondezza da la datoteca:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Titel:\ndocument_properties_author=Autur:\ndocument_properties_subject=Tema:\ndocument_properties_keywords=Chavazzins:\ndocument_properties_creation_date=Data da creaziun:\ndocument_properties_modification_date=Data da modificaziun:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}} {{time}}\ndocument_properties_creator=Creà da:\ndocument_properties_producer=Creà il PDF cun:\ndocument_properties_version=Versiun da PDF:\ndocument_properties_page_count=Dumber da paginas:\ndocument_properties_page_size=Grondezza da la pagina:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=vertical\ndocument_properties_page_size_orientation_landscape=orizontal\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Fast Web View:\ndocument_properties_linearized_yes=Gea\ndocument_properties_linearized_no=Na\ndocument_properties_close=Serrar\n\nprint_progress_message=Preparar il document per stampar…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Interrumper\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Activar/deactivar la trav laterala\ntoggle_sidebar_notification.title=Activar/deactivar la trav laterala (structura dal document/agiuntas)\ntoggle_sidebar_label=Activar/deactivar la trav laterala\ndocument_outline.title=Mussar la structura dal document (cliccar duas giadas per extender/cumprimer tut ils elements)\ndocument_outline_label=Structura dal document\nattachments.title=Mussar agiuntas\nattachments_label=Agiuntas\nthumbs.title=Mussar las miniaturas\nthumbs_label=Miniaturas\nfindbar.title=Tschertgar en il document\nfindbar_label=Tschertgar\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pagina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura da la pagina {{page}}\n\n# Find panel button title and messages\nfind_input.title=Tschertgar\nfind_input.placeholder=Tschertgar en il document…\nfind_previous.title=Tschertgar la posiziun precedenta da l'expressiun\nfind_previous_label=Enavos\nfind_next.title=Tschertgar la proxima posiziun da l'expressiun\nfind_next_label=Enavant\nfind_highlight=Relevar tuts\nfind_match_case_label=Resguardar maiusclas/minusclas\nfind_entire_word_label=Pleds entirs\nfind_reached_top=Il cumenzament dal document è cuntanschì, la tschertga cuntinuescha a la fin dal document\nfind_reached_bottom=La fin dal document è cuntanschì, la tschertga cuntinuescha al cumenzament dal document\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} dad {{total}} correspundenza\nfind_match_count[two]={{current}} da {{total}} correspundenzas\nfind_match_count[few]={{current}} da {{total}} correspundenzas\nfind_match_count[many]={{current}} da {{total}} correspundenzas\nfind_match_count[other]={{current}} da {{total}} correspundenzas\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Dapli che {{limit}} correspundenzas\nfind_match_count_limit[one]=Dapli che {{limit}} correspundenza\nfind_match_count_limit[two]=Dapli che {{limit}} correspundenzas\nfind_match_count_limit[few]=Dapli che {{limit}} correspundenzas\nfind_match_count_limit[many]=Dapli che {{limit}} correspundenzas\nfind_match_count_limit[other]=Dapli che {{limit}} correspundenzas\nfind_not_found=Impussibel da chattar l'expressiun\n\n# Error panel labels\nerror_more_info=Dapli infurmaziuns\nerror_less_info=Damain infurmaziuns\nerror_close=Serrar\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Messadi: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Datoteca: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Lingia: {{line}}\nrendering_error=Ina errur è cumparida cun visualisar questa pagina.\n\n# Predefined zoom values\npage_scale_width=Ladezza da la pagina\npage_scale_fit=Entira pagina\npage_scale_auto=Zoom automatic\npage_scale_actual=Grondezza actuala\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Errur\nloading_error=Ina errur è cumparida cun chargiar il PDF.\ninvalid_file_error=Datoteca PDF nunvalida u donnegiada.\nmissing_file_error=Datoteca PDF manconta.\nunexpected_response_error=Resposta nunspetgada dal server.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Annotaziun da {{type}}]\npassword_label=Endatescha il pled-clav per avrir questa datoteca da PDF.\npassword_invalid=Pled-clav nunvalid. Emprova anc ina giada.\npassword_ok=OK\npassword_cancel=Interrumper\n\nprinting_not_supported=Attenziun: Il stampar na funcziunescha anc betg dal tut en quest navigatur.\nprinting_not_ready=Attenziun: Il PDF n'è betg chargià cumplettamain per stampar.\nweb_fonts_disabled=Scrittiras dal web èn deactivadas: impussibel dad utilisar las scrittiras integradas en il PDF.\ndocument_colors_not_allowed=Documents da PDF na dastgan betg duvrar las atgnas colurs: 'Permetter a paginas da tscherner lur atgna colur' è deactivà en il navigatur.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ro/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Pagina precedentă\nprevious_label=Înapoi\nnext.title=Pagina următoare\nnext_label=Înainte\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pagina\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=din {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} din {{pagesCount}})\n\nzoom_out.title=Micșorează\nzoom_out_label=Micșorează\nzoom_in.title=Mărește\nzoom_in_label=Mărește\nzoom.title=Zoom\npresentation_mode.title=Comută la modul de prezentare\npresentation_mode_label=Mod de prezentare\nopen_file.title=Deschide un fișier\nopen_file_label=Deschide\nprint.title=Tipărește\nprint_label=Tipărește\ndownload.title=Descarcă\ndownload_label=Descarcă\nbookmark.title=Vizualizare actuală (copiază sau deschide într-o fereastră nouă)\nbookmark_label=Vizualizare actuală\n\n# Secondary toolbar and context menu\ntools.title=Instrumente\ntools_label=Instrumente\nfirst_page.title=Mergi la prima pagină\nfirst_page.label=Mergi la prima pagină\nfirst_page_label=Mergi la prima pagină\nlast_page.title=Mergi la ultima pagină\nlast_page.label=Mergi la ultima pagină\nlast_page_label=Mergi la ultima pagină\npage_rotate_cw.title=Rotește în sensul acelor de ceasornic\npage_rotate_cw.label=Rotește în sensul acelor de ceasornic\npage_rotate_cw_label=Rotește în sensul acelor de ceasornic\npage_rotate_ccw.title=Rotește în sens invers al acelor de ceasornic\npage_rotate_ccw.label=Rotește în sens invers al acelor de ceasornic\npage_rotate_ccw_label=Rotește în sens invers al acelor de ceasornic\n\ncursor_text_select_tool.title=Activează instrumentul de selecție a textului\ncursor_text_select_tool_label=Instrumentul de selecție a textului\ncursor_hand_tool.title=Activează instrumentul mână\ncursor_hand_tool_label=Unealta mână\n\nscroll_vertical.title=Folosește derularea verticală\nscroll_vertical_label=Derulare verticală\nscroll_horizontal.title=Folosește derularea orizontală\nscroll_horizontal_label=Derulare orizontală\nscroll_wrapped.title=Folosește derularea încadrată\nscroll_wrapped_label=Derulare încadrată\n\nspread_none.title=Nu uni paginile broșate\nspread_none_label=Fără pagini broșate\nspread_odd.title=Unește paginile broșate începând cu cele impare\nspread_odd_label=Broșare pagini impare\nspread_even.title=Unește paginile broșate începând cu cele pare\nspread_even_label=Broșare pagini pare\n\n# Document properties dialog box\ndocument_properties.title=Proprietățile documentului…\ndocument_properties_label=Proprietățile documentului…\ndocument_properties_file_name=Numele fișierului:\ndocument_properties_file_size=Dimensiunea fișierului:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} byți)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} octeți)\ndocument_properties_title=Titlu:\ndocument_properties_author=Autor:\ndocument_properties_subject=Subiect:\ndocument_properties_keywords=Cuvinte cheie:\ndocument_properties_creation_date=Data creării:\ndocument_properties_modification_date=Data modificării:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Autor:\ndocument_properties_producer=Producător PDF:\ndocument_properties_version=Versiune PDF:\ndocument_properties_page_count=Număr de pagini:\ndocument_properties_page_size=Dimensiunea paginii:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portret\ndocument_properties_page_size_orientation_landscape=peisaj\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Literă\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Vizualizare web rapidă:\ndocument_properties_linearized_yes=Da\ndocument_properties_linearized_no=Nu\ndocument_properties_close=Închide\n\nprint_progress_message=Se pregătește documentul pentru tipărire…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Renunță\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Comută bara laterală\ntoggle_sidebar_notification.title=Comută bara laterală (documentul conține schițe/atașamente)\ntoggle_sidebar_label=Comută bara laterală\ndocument_outline.title=Afișează schița documentului (dublu-clic pentru a extinde/restrânge toate elementele)\ndocument_outline_label=Schița documentului\nattachments.title=Afișează atașamentele\nattachments_label=Atașamente\nthumbs.title=Afișează miniaturi\nthumbs_label=Miniaturi\nfindbar.title=Găsește în document\nfindbar_label=Caută\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pagina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatura paginii {{page}}\n\n# Find panel button title and messages\nfind_input.title=Caută\nfind_input.placeholder=Caută în document…\nfind_previous.title=Găsește instanța anterioară în frază\nfind_previous_label=Anterior\nfind_next.title=Găsește instanța următoare în frază\nfind_next_label=Următor\nfind_highlight=Evidențiază toate aparițiile\nfind_match_case_label=Potrivește literele mari și mici\nfind_entire_word_label=Cuvinte întregi\nfind_reached_top=Am ajuns la începutul documentului, continuă de la sfârșit\nfind_reached_bottom=Am ajuns la sfârșitul documentului, continuă de la început\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} din {{total}} rezultat\nfind_match_count[two]={{current}} din {{total}} rezultate\nfind_match_count[few]={{current}} din {{total}} rezultate\nfind_match_count[many]={{current}} din {{total}} de rezultate\nfind_match_count[other]={{current}} din {{total}} de rezultate\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Peste {{limit}} rezultate\nfind_match_count_limit[one]=Peste {{limit}} rezultat\nfind_match_count_limit[two]=Peste {{limit}} rezultate\nfind_match_count_limit[few]=Peste {{limit}} rezultate\nfind_match_count_limit[many]=Peste {{limit}} de rezultate\nfind_match_count_limit[other]=Peste {{limit}} de rezultate\nfind_not_found=Nu s-a găsit textul\n\n# Error panel labels\nerror_more_info=Mai multe informații\nerror_less_info=Mai puține informații\nerror_close=Închide\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (versiunea compilată: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mesaj: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stivă: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fișier: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Rând: {{line}}\nrendering_error=A intervenit o eroare la randarea paginii.\n\n# Predefined zoom values\npage_scale_width=Lățimea paginii\npage_scale_fit=Potrivire la pagină\npage_scale_auto=Zoom automat\npage_scale_actual=Dimensiune reală\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Eroare\nloading_error=A intervenit o eroare la încărcarea PDF-ului.\ninvalid_file_error=Fișier PDF nevalid sau corupt.\nmissing_file_error=Fișier PDF lipsă.\nunexpected_response_error=Răspuns neașteptat de la server.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Adnotare {{type}}]\npassword_label=Introdu parola pentru a deschide acest fișier PDF.\npassword_invalid=Parolă nevalidă. Te rugăm să încerci din nou.\npassword_ok=Ok\npassword_cancel=Renunță\n\nprinting_not_supported=Avertisment: Tipărirea nu este suportată în totalitate de acest browser.\nprinting_not_ready=Avertisment: PDF-ul nu este încărcat complet pentru tipărire.\nweb_fonts_disabled=Fonturile web sunt dezactivate: nu se pot folosi fonturile PDF încorporate.\ndocument_colors_not_allowed=Documentele PDF nu sunt autorizate să folosească propriile culori: „Permite paginilor să aleagă propriile culori” este dezactivat în browser.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ru/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Предыдущая страница\nprevious_label=Предыдущая\nnext.title=Следующая страница\nnext_label=Следующая\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Страница\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=из {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} из {{pagesCount}})\n\nzoom_out.title=Уменьшить\nzoom_out_label=Уменьшить\nzoom_in.title=Увеличить\nzoom_in_label=Увеличить\nzoom.title=Масштаб\npresentation_mode.title=Перейти в режим презентации\npresentation_mode_label=Режим презентации\nopen_file.title=Открыть файл\nopen_file_label=Открыть\nprint.title=Печать\nprint_label=Печать\ndownload.title=Загрузить\ndownload_label=Загрузить\nbookmark.title=Ссылка на текущий вид (скопировать или открыть в новом окне)\nbookmark_label=Текущий вид\n\n# Secondary toolbar and context menu\ntools.title=Инструменты\ntools_label=Инструменты\nfirst_page.title=Перейти на первую страницу\nfirst_page.label=Перейти на первую страницу\nfirst_page_label=Перейти на первую страницу\nlast_page.title=Перейти на последнюю страницу\nlast_page.label=Перейти на последнюю страницу\nlast_page_label=Перейти на последнюю страницу\npage_rotate_cw.title=Повернуть по часовой стрелке\npage_rotate_cw.label=Повернуть по часовой стрелке\npage_rotate_cw_label=Повернуть по часовой стрелке\npage_rotate_ccw.title=Повернуть против часовой стрелки\npage_rotate_ccw.label=Повернуть против часовой стрелки\npage_rotate_ccw_label=Повернуть против часовой стрелки\n\ncursor_text_select_tool.title=Включить Инструмент «Выделение текста»\ncursor_text_select_tool_label=Инструмент «Выделение текста»\ncursor_hand_tool.title=Включить Инструмент «Рука»\ncursor_hand_tool_label=Инструмент «Рука»\n\nscroll_vertical.title=Использовать вертикальную прокрутку\nscroll_vertical_label=Вертикальная прокрутка\nscroll_horizontal.title=Использовать горизонтальную прокрутку\nscroll_horizontal_label=Горизонтальная прокрутка\nscroll_wrapped.title=Использовать масштабируемую прокрутку\nscroll_wrapped_label=Масштабируемая прокрутка\n\nspread_none.title=Не использовать режим разворотов страниц\nspread_none_label=Без разворотов страниц\nspread_odd.title=Развороты начинаются с нечётных номеров страниц\nspread_odd_label=Нечётные страницы слева\nspread_even.title=Развороты начинаются с чётных номеров страниц\nspread_even_label=Чётные страницы слева\n\n# Document properties dialog box\ndocument_properties.title=Свойства документа…\ndocument_properties_label=Свойства документа…\ndocument_properties_file_name=Имя файла:\ndocument_properties_file_size=Размер файла:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} КБ ({{size_b}} байт)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} МБ ({{size_b}} байт)\ndocument_properties_title=Заголовок:\ndocument_properties_author=Автор:\ndocument_properties_subject=Тема:\ndocument_properties_keywords=Ключевые слова:\ndocument_properties_creation_date=Дата создания:\ndocument_properties_modification_date=Дата изменения:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Приложение:\ndocument_properties_producer=Производитель PDF:\ndocument_properties_version=Версия PDF:\ndocument_properties_page_count=Число страниц:\ndocument_properties_page_size=Размер страницы:\ndocument_properties_page_size_unit_inches=дюймов\ndocument_properties_page_size_unit_millimeters=мм\ndocument_properties_page_size_orientation_portrait=книжная\ndocument_properties_page_size_orientation_landscape=альбомная\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Быстрый просмотр в Web:\ndocument_properties_linearized_yes=Да\ndocument_properties_linearized_no=Нет\ndocument_properties_close=Закрыть\n\nprint_progress_message=Подготовка документа к печати…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Отмена\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Показать/скрыть боковую панель\ntoggle_sidebar_notification.title=Показать/скрыть боковую панель (документ имеет содержание/вложения)\ntoggle_sidebar_label=Показать/скрыть боковую панель\ndocument_outline.title=Показать содержание документа (двойной щелчок, чтобы развернуть/свернуть все элементы)\ndocument_outline_label=Содержание документа\nattachments.title=Показать вложения\nattachments_label=Вложения\nthumbs.title=Показать миниатюры\nthumbs_label=Миниатюры\nfindbar.title=Найти в документе\nfindbar_label=Найти\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Страница {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Миниатюра страницы {{page}}\n\n# Find panel button title and messages\nfind_input.title=Найти\nfind_input.placeholder=Найти в документе…\nfind_previous.title=Найти предыдущее вхождение фразы в текст\nfind_previous_label=Назад\nfind_next.title=Найти следующее вхождение фразы в текст\nfind_next_label=Далее\nfind_highlight=Подсветить все\nfind_match_case_label=С учётом регистра\nfind_entire_word_label=Слова целиком\nfind_reached_top=Достигнут верх документа, продолжено снизу\nfind_reached_bottom=Достигнут конец документа, продолжено сверху\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} из {{total}} совпадения\nfind_match_count[two]={{current}} из {{total}} совпадений\nfind_match_count[few]={{current}} из {{total}} совпадений\nfind_match_count[many]={{current}} из {{total}} совпадений\nfind_match_count[other]={{current}} из {{total}} совпадений\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Более {{limit}} совпадений\nfind_match_count_limit[one]=Более {{limit}} совпадения\nfind_match_count_limit[two]=Более {{limit}} совпадений\nfind_match_count_limit[few]=Более {{limit}} совпадений\nfind_match_count_limit[many]=Более {{limit}} совпадений\nfind_match_count_limit[other]=Более {{limit}} совпадений\nfind_not_found=Фраза не найдена\n\n# Error panel labels\nerror_more_info=Детали\nerror_less_info=Скрыть детали\nerror_close=Закрыть\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (сборка: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Сообщение: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Стeк: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Файл: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Строка: {{line}}\nrendering_error=При создании страницы произошла ошибка.\n\n# Predefined zoom values\npage_scale_width=По ширине страницы\npage_scale_fit=По размеру страницы\npage_scale_auto=Автоматически\npage_scale_actual=Реальный размер\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Ошибка\nloading_error=При загрузке PDF произошла ошибка.\ninvalid_file_error=Некорректный или повреждённый PDF-файл.\nmissing_file_error=PDF-файл отсутствует.\nunexpected_response_error=Неожиданный ответ сервера.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Аннотация {{type}}]\npassword_label=Введите пароль, чтобы открыть этот PDF-файл.\npassword_invalid=Неверный пароль. Пожалуйста, попробуйте снова.\npassword_ok=OK\npassword_cancel=Отмена\n\nprinting_not_supported=Предупреждение: В этом браузере не полностью поддерживается печать.\nprinting_not_ready=Предупреждение: PDF не полностью загружен для печати.\nweb_fonts_disabled=Веб-шрифты отключены: невозможно использовать встроенные PDF-шрифты.\ndocument_colors_not_allowed=PDF-документам не разрешено использовать свои цвета: в браузере отключён параметр «Разрешить веб-сайтам использовать свои цвета».\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/rw/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom.title=Ihindurangano\nopen_file.title=Gufungura Dosiye\nopen_file_label=Gufungura\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_title=Umutwe:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\n\n# Find panel button title and messages\nfind_previous.title=Gushaka aho uyu murongo ugaruka mbere y'aha\nfind_next.title=Gushaka aho uyu murongo wongera kugaruka\nfind_not_found=Umurongo ntubonetse\n\n# Error panel labels\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\n\n# Predefined zoom values\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Ikosa\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\npassword_invalid=Ijambo ry'ibanga ridahari. Wakongera ukagerageza\npassword_ok=YEGO\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/sah/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Инники сирэй\nprevious_label=Иннинээҕи\nnext.title=Аныгыскы сирэй\nnext_label=Аныгыскы\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Куччат\nzoom_out_label=Куччат\nzoom_in.title=Улаатыннар\nzoom_in_label=Улаатыннар\nzoom.title=Улаатыннар\npresentation_mode.title=Көрдөрөр эрэсиимҥэ\npresentation_mode_label=Көрдөрөр эрэсиим\nopen_file.title=Билэни арый\nopen_file_label=Ас\nprint.title=Бэчээт\nprint_label=Бэчээт\ndownload.title=Хачайдааһын\ndownload_label=Хачайдааһын\nbookmark.title=Билиҥҥи көстүүтэ (хатылаа эбэтэр саҥа түннүккэ арый)\nbookmark_label=Билиҥҥи көстүүтэ\n\n# Secondary toolbar and context menu\ntools.title=Тэриллэр\ntools_label=Тэриллэр\nfirst_page.title=Бастакы сирэйгэ көс\nfirst_page.label=Бастакы сирэйгэ көс\nfirst_page_label=Бастакы сирэйгэ көс\nlast_page.title=Тиһэх сирэйгэ көс\nlast_page.label=Тиһэх сирэйгэ көс\nlast_page_label=Тиһэх сирэйгэ көс\npage_rotate_cw.title=Чаһы хоту эргит\npage_rotate_cw.label=Чаһы хоту эргит\npage_rotate_cw_label=Чаһы хоту эргит\npage_rotate_ccw.title=Чаһы утары эргит\npage_rotate_ccw.label=Чаһы утары эргит\npage_rotate_ccw_label=Чаһы утары эргит\n\n\n# Document properties dialog box\ndocument_properties.title=Докумуон туруоруулара...\ndocument_properties_label=Докумуон туруоруулара...\\u0020\ndocument_properties_file_name=Билэ аата:\ndocument_properties_file_size=Билэ кээмэйэ:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} КБ ({{size_b}} баайт)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} МБ ({{size_b}} баайт)\ndocument_properties_title=Баһа:\ndocument_properties_author=Ааптар:\ndocument_properties_subject=Тиэмэ:\ndocument_properties_keywords=Күлүүс тыл:\ndocument_properties_creation_date=Оҥоһуллубут кэмэ:\ndocument_properties_modification_date=Уларытыллыбыт кэмэ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_producer=PDF оҥорооччу:\ndocument_properties_version=PDF барыла:\ndocument_properties_page_count=Сирэй ахсаана:\ndocument_properties_close=Сап\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Ойоҕос хапталы арый/сап\ntoggle_sidebar_label=Ойоҕос хапталы арый/сап\ndocument_outline_label=Дөкүмүөн иһинээҕитэ\nattachments.title=Кыбытыктары көрдөр\nattachments_label=Кыбытык\nthumbs.title=Ойуучааннары көрдөр\nthumbs_label=Ойуучааннар\nfindbar.title=Дөкүмүөнтэн бул\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Сирэй {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Сирэй ойуучаана {{page}}\n\n# Find panel button title and messages\nfind_previous.title=Этии тиэкискэ бу иннинээҕи киириитин бул\nfind_previous_label=Иннинээҕи\nfind_next.title=Этии тиэкискэ бу кэннинээҕи киириитин бул\nfind_next_label=Аныгыскы\nfind_highlight=Барытын сырдатан көрдөр\nfind_match_case_label=Буукуба улаханын-кыратын араар\nfind_reached_top=Сирэй үрдүгэр тиийдиҥ, салгыыта аллара\nfind_reached_bottom=Сирэй бүттэ, үөһэ салҕанна\nfind_not_found=Этии көстүбэтэ\n\n# Error panel labels\nerror_more_info=Сиһилии\nerror_less_info=Сиһилиитин кистээ\nerror_close=Сап\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (хомуйуута: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Этии: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Стeк: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Билэ: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Устуруока: {{line}}\nrendering_error=Сирэйи айарга алҕас таҕыста.\n\n# Predefined zoom values\npage_scale_width=Сирэй кэтитинэн\npage_scale_fit=Сирэй кээмэйинэн\npage_scale_auto=Аптамаатынан\npage_scale_actual=Дьиҥнээх кээмэйэ\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Алҕас\nloading_error=PDF-билэни хачайдыырга алҕас таҕыста.\ninvalid_file_error=Туох эрэ алҕастаах эбэтэр алдьаммыт PDF-билэ.\nmissing_file_error=PDF-билэ суох.\nunexpected_response_error=Сиэрбэр хоруйдаабат.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} туһунан]\npassword_label=Бу PDF-билэни арыйарга көмүскэл тылы киллэриэхтээхин.\npassword_invalid=Киирии тыл алҕастаах. Бука диэн, хатылаан көр.\npassword_ok=СӨП\n\nprinting_not_supported=Сэрэтии: Бу браузер бэчээттиири толору өйөөбөт.\nprinting_not_ready=Сэрэтии: PDF бэчээттииргэ толору хачайдана илик.\nweb_fonts_disabled=Ситим-бичиктэр араарыллыахтара: PDF бичиктэрэ кыайан көстүбэттэр.\ndocument_colors_not_allowed=PDF-дөкүмүөүннэргэ бэйэлэрин өҥнөрүн туттар көҥүллэммэтэ: \"Ситим-сирдэр бэйэлэрин өҥнөрүн тутталларын көҥүллүүргэ\" диэн браузерга арахса сылдьар эбит.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/sat/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=पा़हिलाक् साहटा\nnext.title=इना़ तायोम साहटा\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom.title=हुडिञ ला़टु तेयार\npresentation_mode.title=उदुक् सोदोर ओबोसता रे ओताय मे\npresentation_mode_label=उदुक् सोदोर ओबोसता\nopen_file.title=रेत् झिज मे\nopen_file_label=झिज मे झिच्\nbookmark.title=नितोगाक् ञेल (नावा विंडो रे नोकोल आर बाङ झिज मे )\nbookmark_label=नितोगाक् ञेंल\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\ndocument_properties_file_name=रेत् ञुतुम:\ndocument_properties_file_size=रेत् माराङ तेत्:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{माराङ तेत्_kb}} KB ({{माराङ तेत्_b}} बाइट्स)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{माराङ तेत्_mb}} MB ({{माराङ तेत्_b}} बाइट्स)\ndocument_properties_title=एम ञुतुम:\ndocument_properties_author=ओनोलिया़:\ndocument_properties_subject=बिसोय:\ndocument_properties_keywords=का़ठी बोर्ड:\ndocument_properties_creation_date=तेयार मा़हित्:\ndocument_properties_modification_date=बोदोल होचो मा़हित्:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{मा़हित्}}, {{ओकतो}}\ndocument_properties_creator=बेनाविच्:\ndocument_properties_producer=PDF तेयार ओडोकिच्:\ndocument_properties_version=PDF बार्सान:\ndocument_properties_page_count=साहटा लेखा:\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ndocument_outline_label=दोलिल तेयार तेत्\nattachments.title=लाठा सेलेद को उदुक् मे\nattachments_label=लाठा सेलेद को\nthumbs.title=चिता़र आहला को उदुगा मे\nthumbs_label=चिता़र आहला को\nfindbar.title=दोलिल रे ञाम\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=साहटा {{साहटा}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=साहटा रेयाक् चिता़र आहला {{साहटा}}\n\n# Find panel button title and messages\nfind_previous.title=आयात् हिंस रेयाक् पा़हिल सेदाक् ओडोक् ञाम मे\nfind_next.title=आयात् हिंस रेयाक् इना़ तायोम ओडोक् ञाम मे\nfind_highlight=जोतो उदुक् राकाब\nfind_match_case_label=जोड़ मामला\nfind_reached_top=दोलिल रेयाक् चोट रे सेटेर, लातार खोन लेताड़\nfind_reached_bottom=दोलिल रेयाक् मुचा़त् रे सेटेर, चोट खोन लेताड़\nfind_not_found=आयात् हिंस बाय ञाम लेना\n\n# Error panel labels\nerror_more_info=बाड़ती ला़य सोदोरढेर ला़य सोदोर\nerror_less_info=कोम ला़य सोदोर\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{बार्सान}} (तेयार: {{तेयार}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=खोबोर: {{खोबोर}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=डांग: {{डांग}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=रेत्: {{रेत्}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=गार: {{गार}}\nrendering_error=साहटा एम जोहोक मित् भुल हुय एना .\n\n# Predefined zoom values\npage_scale_width=साहटा ओसार\npage_scale_fit=साहटा खाप\npage_scale_auto=आच् आच् ते हुडिञ ला़टु तेयार\npage_scale_actual=ठिक माराङ तेत्\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=भुल\nloading_error=\\u0020PDFलादे जोहोक् मित् भुल हुय एना.\ninvalid_file_error=बाङ बाताव आर बाङ  PDF रेत्.\nmissing_file_error=आदाक् PDF रेत्.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{लेकान}} बेयान एम]\npassword_label=नोवा PDF रेत् झिज ला़गित् दानाङ साबाद आदेर मे.\npassword_invalid=बाङ बातावाक् दानाङ साबाद. दोहड़ा कुरुमुटुय मे.\npassword_ok=OK\n\nprinting_not_supported=होसियार: छापा नोवा पानतेयाक् दाराय ते पुरा़व बाय गोड़ोवाकाना .\nprinting_not_ready=होंसिया़र: छापा ला़गित्  PDF पुरा़ बाय लादे आकाना.\nweb_fonts_disabled=वेब फॉन्ट बाङ हुय होचो आकाना: भितिर थापोन PDF फॉन्ट्स बेभार बाङ हुय केया.\ndocument_colors_not_allowed=PDF दोलिल को आजाक् निजे रोङ बेभार बाताव बाय एमागाक् आ: 'आजाक् निजे रोङ को बाछाव ला़गित्  बाताव एम साहटा कोदो ब्राउजार रे बाय चोगोड़ होचोवा.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/si/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=මීට පෙර පිටුව\nprevious_label=පෙර\nnext.title=මීළඟ පිටුව\nnext_label=මීළඟ\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=පිටුව\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=කුඩා කරන්න\nzoom_out_label=කුඩා කරන්න\nzoom_in.title=විශාල කරන්න\nzoom_in_label=විශාල කරන්න\nzoom.title=විශාලණය\npresentation_mode.title=ඉදිරිපත්කිරීම් ප්‍රකාරය වෙත මාරුවන්න\npresentation_mode_label=ඉදිරිපත්කිරීම් ප්‍රකාරය\nopen_file.title=ගොනුව විවෘත කරන්න\nopen_file_label=විවෘත කරන්න\nprint.title=මුද්‍රණය\nprint_label=මුද්‍රණය\ndownload.title=බාගන්න\ndownload_label=බාගන්න\nbookmark.title=දැනට ඇති දසුන (පිටපත් කරන්න හෝ නව කවුළුවක විවෘත කරන්න)\nbookmark_label=දැනට ඇති දසුන\n\n# Secondary toolbar and context menu\ntools.title=මෙවලම්\ntools_label=මෙවලම්\nfirst_page.title=මුල් පිටුවට යන්න\nfirst_page.label=මුල් පිටුවට යන්න\nfirst_page_label=මුල් පිටුවට යන්න\nlast_page.title=අවසන් පිටුවට යන්න\nlast_page.label=අවසන් පිටුවට යන්න\nlast_page_label=අවසන් පිටුවට යන්න\npage_rotate_cw.title=දක්ශිණාවර්තව භ්‍රමණය\npage_rotate_cw.label=දක්ශිණාවර්තව භ්‍රමණය\npage_rotate_cw_label=දක්ශිණාවර්තව භ්‍රමණය\npage_rotate_ccw.title=වාමාවර්තව භ්‍රමණය\npage_rotate_ccw.label=වාමාවර්තව භ්‍රමණය\npage_rotate_ccw_label=වාමාවර්තව භ්‍රමණය\n\n\n# Document properties dialog box\ndocument_properties.title=ලේඛන වත්කම්...\ndocument_properties_label=ලේඛන වත්කම්...\ndocument_properties_file_name=ගොනු නම:\ndocument_properties_file_size=ගොනු ප්‍රමාණය:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} බයිට)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} බයිට)\ndocument_properties_title=සිරස්තලය:\ndocument_properties_author=කතෲ\ndocument_properties_subject=මාතෘකාව:\ndocument_properties_keywords=යතුරු වදන්:\ndocument_properties_creation_date=නිර්මිත දිනය:\ndocument_properties_modification_date=වෙනස්කල දිනය:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=නිර්මාපක:\ndocument_properties_producer=PDF නිශ්පාදක:\ndocument_properties_version=PDF නිකුතුව:\ndocument_properties_page_count=පිටු ගණන:\ndocument_properties_close=වසන්න\n\nprint_progress_message=ලේඛනය මුද්‍රණය සඳහා සූදානම් කරමින්…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_close=අවලංගු කරන්න\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=පැති තීරුවට මාරුවන්න\ntoggle_sidebar_label=පැති තීරුවට මාරුවන්න\nattachments.title=ඇමිණුම් පෙන්වන්න\nattachments_label=ඇමිණුම්\nthumbs.title=සිඟිති රූ පෙන්වන්න\nthumbs_label=සිඟිති රූ\nfindbar.title=ලේඛනය තුළ සොයන්න\nfindbar_label=සොයන්න\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=පිටුව {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=පිටුවෙ සිඟිත රූව {{page}}\n\n# Find panel button title and messages\nfind_previous.title=මේ වාක්‍ය ඛණ්ඩය මීට පෙර යෙදුණු ස්ථානය සොයන්න\nfind_previous_label=පෙර:\nfind_next.title=මේ වාක්‍ය ඛණ්ඩය මීළඟට යෙදෙන ස්ථානය සොයන්න\nfind_next_label=මීළඟ\nfind_highlight=සියල්ල උද්දීපනය\nfind_match_case_label=අකුරු ගළපන්න\nfind_reached_top=පිටුවේ ඉහළ කෙළවරට ලගාවිය, පහළ සිට ඉදිරියට යමින්\nfind_reached_bottom=පිටුවේ පහළ කෙළවරට ලගාවිය, ඉහළ සිට ඉදිරියට යමින්\nfind_not_found=ඔබ සෙව් වචන හමු නොවීය\n\n# Error panel labels\nerror_more_info=බොහෝ තොරතුරු\nerror_less_info=අවම තොරතුරු\nerror_close=වසන්න\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (නිකුතුව: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=පණිවිඩය: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ගොනුව: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=පේළිය: {{line}}\nrendering_error=පිටුව රෙන්ඩර් විමේදි ගැටලුවක් හට ගැනුණි.\n\n# Predefined zoom values\npage_scale_width=පිටුවේ පළල\npage_scale_fit=පිටුවට සුදුසු ලෙස\npage_scale_auto=ස්වයංක්‍රීය විශාලණය\npage_scale_actual=නියමිත ප්‍රමාණය\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=දෝෂය\nloading_error=PDF පූරණය විමේදි දෝෂයක් හට ගැනුණි.\ninvalid_file_error=දූශිත හෝ සාවද්‍ය PDF ගොනුව.\nmissing_file_error=නැතිවූ PDF ගොනුව.\nunexpected_response_error=බලාපොරොත්තු නොවූ සේවාදායක ප්‍රතිචාරය.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} විස්තරය]\npassword_label=මෙම PDF ගොනුව විවෘත කිරීමට මුරපදය ඇතුළත් කරන්න.\npassword_invalid=වැරදි මුරපදයක්. කරුණාකර නැවත උත්සහ කරන්න.\npassword_ok=හරි\npassword_cancel=එපා\n\nprinting_not_supported=අවවාදයයි: මෙම ගවේශකය මුද්‍රණය සඳහා සම්පූර්ණයෙන් සහය නොදක්වයි.\nprinting_not_ready=අවවාදයයි: මුද්‍රණය සඳහා PDF සම්පූර්ණයෙන් පූර්ණය වී නොමැත.\nweb_fonts_disabled=ජාල අකුරු අක්‍රීයයි: තිළැලි PDF අකුරු භාවිත කළ නොහැක.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/sk/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Predchádzajúca strana\nprevious_label=Predchádzajúca\nnext.title=Nasledujúca strana\nnext_label=Nasledujúca\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Strana\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=z {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} z {{pagesCount}})\n\nzoom_out.title=Zmenšiť veľkosť\nzoom_out_label=Zmenšiť veľkosť\nzoom_in.title=Zväčšiť veľkosť\nzoom_in_label=Zväčšiť veľkosť\nzoom.title=Nastavenie veľkosti\npresentation_mode.title=Prepnúť na režim prezentácie\npresentation_mode_label=Režim prezentácie\nopen_file.title=Otvoriť súbor\nopen_file_label=Otvoriť\nprint.title=Tlačiť\nprint_label=Tlačiť\ndownload.title=Prevziať\ndownload_label=Prevziať\nbookmark.title=Aktuálne zobrazenie (kopírovať alebo otvoriť v novom okne)\nbookmark_label=Aktuálne zobrazenie\n\n# Secondary toolbar and context menu\ntools.title=Nástroje\ntools_label=Nástroje\nfirst_page.title=Prejsť na prvú stranu\nfirst_page.label=Prejsť na prvú stranu\nfirst_page_label=Prejsť na prvú stranu\nlast_page.title=Prejsť na poslednú stranu\nlast_page.label=Prejsť na poslednú stranu\nlast_page_label=Prejsť na poslednú stranu\npage_rotate_cw.title=Otočiť v smere hodinových ručičiek\npage_rotate_cw.label=Otočiť v smere hodinových ručičiek\npage_rotate_cw_label=Otočiť v smere hodinových ručičiek\npage_rotate_ccw.title=Otočiť proti smeru hodinových ručičiek\npage_rotate_ccw.label=Otočiť proti smeru hodinových ručičiek\npage_rotate_ccw_label=Otočiť proti smeru hodinových ručičiek\n\ncursor_text_select_tool.title=Povoliť výber textu\ncursor_text_select_tool_label=Výber textu\ncursor_hand_tool.title=Povoliť nástroj ruka\ncursor_hand_tool_label=Nástroj ruka\n\nscroll_vertical.title=Používať zvislé posúvanie\nscroll_vertical_label=Zvislé posúvanie\nscroll_horizontal.title=Používať vodorovné posúvanie\nscroll_horizontal_label=Vodorovné posúvanie\nscroll_wrapped.title=Použiť postupné posúvanie\nscroll_wrapped_label=Postupné posúvanie\n\nspread_none.title=Nezdružovať stránky\nspread_none_label=Žiadne združovanie\nspread_odd.title=Združí stránky a umiestni nepárne stránky vľavo\nspread_odd_label=Združiť stránky (nepárne vľavo)\nspread_even.title=Združí stránky a umiestni párne stránky vľavo\nspread_even_label=Združiť stránky (párne vľavo)\n\n# Document properties dialog box\ndocument_properties.title=Vlastnosti dokumentu…\ndocument_properties_label=Vlastnosti dokumentu…\ndocument_properties_file_name=Názov súboru:\ndocument_properties_file_size=Veľkosť súboru:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} kB ({{size_b}} bajtov)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bajtov)\ndocument_properties_title=Názov:\ndocument_properties_author=Autor:\ndocument_properties_subject=Predmet:\ndocument_properties_keywords=Kľúčové slová:\ndocument_properties_creation_date=Dátum vytvorenia:\ndocument_properties_modification_date=Dátum úpravy:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Vytvoril:\ndocument_properties_producer=Tvorca PDF:\ndocument_properties_version=Verzia PDF:\ndocument_properties_page_count=Počet strán:\ndocument_properties_page_size=Veľkosť stránky:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=na výšku\ndocument_properties_page_size_orientation_landscape=na šírku\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=List\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Rýchle Web View:\ndocument_properties_linearized_yes=Áno\ndocument_properties_linearized_no=Nie\ndocument_properties_close=Zavrieť\n\nprint_progress_message=Príprava dokumentu na tlač…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Zrušiť\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Prepnúť bočný panel\ntoggle_sidebar_notification.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy)\ntoggle_sidebar_label=Prepnúť bočný panel\ndocument_outline.title=Zobraziť osnovu dokumentu (dvojitým kliknutím rozbalíte/zbalíte všetky položky)\ndocument_outline_label=Osnova dokumentu\nattachments.title=Zobraziť prílohy\nattachments_label=Prílohy\nthumbs.title=Zobraziť miniatúry\nthumbs_label=Miniatúry\nfindbar.title=Hľadať v dokumente\nfindbar_label=Hľadať\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Strana {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatúra strany {{page}}\n\n# Find panel button title and messages\nfind_input.title=Hľadať\nfind_input.placeholder=Hľadať v dokumente…\nfind_previous.title=Vyhľadať predchádzajúci výskyt reťazca\nfind_previous_label=Predchádzajúce\nfind_next.title=Vyhľadať ďalší výskyt reťazca\nfind_next_label=Ďalšie\nfind_highlight=Zvýrazniť všetky\nfind_match_case_label=Rozlišovať veľkosť písmen\nfind_entire_word_label=Celé slová\nfind_reached_top=Bol dosiahnutý začiatok stránky, pokračuje sa od konca\nfind_reached_bottom=Bol dosiahnutý koniec stránky, pokračuje sa od začiatku\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}}. z {{total}} výsledku\nfind_match_count[two]={{current}}. z {{total}} výsledkov\nfind_match_count[few]={{current}}. z {{total}} výsledkov\nfind_match_count[many]={{current}}. z {{total}} výsledkov\nfind_match_count[other]={{current}}. z {{total}} výsledkov\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Viac než {{limit}} výsledkov\nfind_match_count_limit[one]=Viac než {{limit}} výsledok\nfind_match_count_limit[two]=Viac než {{limit}} výsledky\nfind_match_count_limit[few]=Viac než {{limit}} výsledky\nfind_match_count_limit[many]=Viac než {{limit}} výsledkov\nfind_match_count_limit[other]=Viac než {{limit}} výsledkov\nfind_not_found=Výraz nebol nájdený\n\n# Error panel labels\nerror_more_info=Viac informácií\nerror_less_info=Menej informácií\nerror_close=Zavrieť\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (zostavenie: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Správa: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Zásobník: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Súbor: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Riadok: {{line}}\nrendering_error=Pri vykresľovaní stránky sa vyskytla chyba.\n\n# Predefined zoom values\npage_scale_width=Na šírku strany\npage_scale_fit=Na veľkosť strany\npage_scale_auto=Automatická veľkosť\npage_scale_actual=Skutočná veľkosť\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}} %\n\n# Loading indicator messages\nloading_error_indicator=Chyba\nloading_error=Počas načítavania dokumentu PDF sa vyskytla chyba.\ninvalid_file_error=Neplatný alebo poškodený súbor PDF.\nmissing_file_error=Chýbajúci súbor PDF.\nunexpected_response_error=Neočakávaná odpoveď zo servera.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Anotácia typu {{type}}]\npassword_label=Ak chcete otvoriť tento súbor PDF, zadajte jeho heslo.\npassword_invalid=Heslo nie je platné. Skúste to znova.\npassword_ok=OK\npassword_cancel=Zrušiť\n\nprinting_not_supported=Upozornenie: tlač nie je v tomto prehliadači plne podporovaná.\nprinting_not_ready=Upozornenie: súbor PDF nie je plne načítaný pre tlač.\nweb_fonts_disabled=Webové písma sú vypnuté: nie je možné použiť písma vložené do súboru PDF.\ndocument_colors_not_allowed=Dokumenty PDF nemajú povolené používať vlastné farby, pretože voľba \"Povoliť stránkam používať vlastné farby\" je v nastaveniach prehliadača vypnutá.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/sl/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Prejšnja stran\nprevious_label=Nazaj\nnext.title=Naslednja stran\nnext_label=Naprej\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Stran\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=od {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} od {{pagesCount}})\n\nzoom_out.title=Pomanjšaj\nzoom_out_label=Pomanjšaj\nzoom_in.title=Povečaj\nzoom_in_label=Povečaj\nzoom.title=Povečava\npresentation_mode.title=Preklopi v način predstavitve\npresentation_mode_label=Način predstavitve\nopen_file.title=Odpri datoteko\nopen_file_label=Odpri\nprint.title=Natisni\nprint_label=Natisni\ndownload.title=Prenesi\ndownload_label=Prenesi\nbookmark.title=Trenutni pogled (kopiraj ali odpri v novem oknu)\nbookmark_label=Trenutni pogled\n\n# Secondary toolbar and context menu\ntools.title=Orodja\ntools_label=Orodja\nfirst_page.title=Pojdi na prvo stran\nfirst_page.label=Pojdi na prvo stran\nfirst_page_label=Pojdi na prvo stran\nlast_page.title=Pojdi na zadnjo stran\nlast_page.label=Pojdi na zadnjo stran\nlast_page_label=Pojdi na zadnjo stran\npage_rotate_cw.title=Zavrti v smeri urninega kazalca\npage_rotate_cw.label=Zavrti v smeri urninega kazalca\npage_rotate_cw_label=Zavrti v smeri urninega kazalca\npage_rotate_ccw.title=Zavrti v nasprotni smeri urninega kazalca\npage_rotate_ccw.label=Zavrti v nasprotni smeri urninega kazalca\npage_rotate_ccw_label=Zavrti v nasprotni smeri urninega kazalca\n\ncursor_text_select_tool.title=Omogoči orodje za izbor besedila\ncursor_text_select_tool_label=Orodje za izbor besedila\ncursor_hand_tool.title=Omogoči roko\ncursor_hand_tool_label=Roka\n\nscroll_vertical.title=Uporabi navpično drsenje\nscroll_vertical_label=Navpično drsenje\nscroll_horizontal.title=Uporabi vodoravno drsenje\nscroll_horizontal_label=Vodoravno drsenje\nscroll_wrapped.title=Uporabi ovito drsenje\nscroll_wrapped_label=Ovito drsenje\n\nspread_none.title=Ne združuj razponov strani\nspread_none_label=Brez razponov\nspread_odd.title=Združuj razpone strani z začetkom pri lihih straneh\nspread_odd_label=Lihi razponi\nspread_even.title=Združuj razpone strani z začetkom pri sodih straneh\nspread_even_label=Sodi razponi\n\n# Document properties dialog box\ndocument_properties.title=Lastnosti dokumenta …\ndocument_properties_label=Lastnosti dokumenta …\ndocument_properties_file_name=Ime datoteke:\ndocument_properties_file_size=Velikost datoteke:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bajtov)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bajtov)\ndocument_properties_title=Ime:\ndocument_properties_author=Avtor:\ndocument_properties_subject=Tema:\ndocument_properties_keywords=Ključne besede:\ndocument_properties_creation_date=Datum nastanka:\ndocument_properties_modification_date=Datum spremembe:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Ustvaril:\ndocument_properties_producer=Izdelovalec PDF:\ndocument_properties_version=Različica PDF:\ndocument_properties_page_count=Število strani:\ndocument_properties_page_size=Velikost strani:\ndocument_properties_page_size_unit_inches=palcev\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=pokončno\ndocument_properties_page_size_orientation_landscape=ležeče\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Pismo\ndocument_properties_page_size_name_legal=Pravno\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Hitri spletni ogled:\ndocument_properties_linearized_yes=Da\ndocument_properties_linearized_no=Ne\ndocument_properties_close=Zapri\n\nprint_progress_message=Priprava dokumenta na tiskanje …\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}} %\nprint_progress_close=Prekliči\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Preklopi stransko vrstico\ntoggle_sidebar_notification.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke)\ntoggle_sidebar_label=Preklopi stransko vrstico\ndocument_outline.title=Prikaži oris dokumenta (dvokliknite za razširitev/strnitev vseh predmetov)\ndocument_outline_label=Oris dokumenta\nattachments.title=Prikaži priponke\nattachments_label=Priponke\nthumbs.title=Prikaži sličice\nthumbs_label=Sličice\nfindbar.title=Iskanje po dokumentu\nfindbar_label=Najdi\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Stran {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Sličica strani {{page}}\n\n# Find panel button title and messages\nfind_input.title=Najdi\nfind_input.placeholder=Najdi v dokumentu …\nfind_previous.title=Najdi prejšnjo ponovitev iskanega\nfind_previous_label=Najdi nazaj\nfind_next.title=Najdi naslednjo ponovitev iskanega\nfind_next_label=Najdi naprej\nfind_highlight=Označi vse\nfind_match_case_label=Razlikuj velike/male črke\nfind_entire_word_label=Cele besede\nfind_reached_top=Dosežen začetek dokumenta iz smeri konca\nfind_reached_bottom=Doseženo konec dokumenta iz smeri začetka\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]=Zadetek {{current}} od {{total}}\nfind_match_count[two]=Zadetek {{current}} od {{total}}\nfind_match_count[few]=Zadetek {{current}} od {{total}}\nfind_match_count[many]=Zadetek {{current}} od {{total}}\nfind_match_count[other]=Zadetek {{current}} od {{total}}\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Več kot {{limit}} zadetkov\nfind_match_count_limit[one]=Več kot {{limit}} zadetek\nfind_match_count_limit[two]=Več kot {{limit}} zadetka\nfind_match_count_limit[few]=Več kot {{limit}} zadetki\nfind_match_count_limit[many]=Več kot {{limit}} zadetkov\nfind_match_count_limit[other]=Več kot {{limit}} zadetkov\nfind_not_found=Iskanega ni mogoče najti\n\n# Error panel labels\nerror_more_info=Več informacij\nerror_less_info=Manj informacij\nerror_close=Zapri\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js r{{version}} (graditev: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Sporočilo: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Sklad: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Datoteka: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Vrstica: {{line}}\nrendering_error=Med pripravljanjem strani je prišlo do napake!\n\n# Predefined zoom values\npage_scale_width=Širina strani\npage_scale_fit=Prilagodi stran\npage_scale_auto=Samodejno\npage_scale_actual=Dejanska velikost\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}} %\n\n# Loading indicator messages\nloading_error_indicator=Napaka\nloading_error=Med nalaganjem datoteke PDF je prišlo do napake.\ninvalid_file_error=Neveljavna ali pokvarjena datoteka PDF.\nmissing_file_error=Ni datoteke PDF.\nunexpected_response_error=Nepričakovan odgovor strežnika.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Opomba vrste {{type}}]\npassword_label=Vnesite geslo za odpiranje te datoteke PDF.\npassword_invalid=Neveljavno geslo. Poskusite znova.\npassword_ok=V redu\npassword_cancel=Prekliči\n\nprinting_not_supported=Opozorilo: ta brskalnik ne podpira vseh možnosti tiskanja.\nprinting_not_ready=Opozorilo: PDF ni v celoti naložen za tiskanje.\nweb_fonts_disabled=Spletne pisave so onemogočene: vgradnih pisav za PDF ni mogoče uporabiti.\ndocument_colors_not_allowed=Dokumenti PDF ne smejo uporabljati svojih lastnih barv: možnost 'Dovoli stranem uporabo lastnih barv' je v brskalniku onemogočena.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/son/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Moo bisante\nprevious_label=Bisante\nnext.title=Jinehere moo\nnext_label=Jine\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Moo\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} ra\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} ka hun {{pagesCount}}) ra\n\nzoom_out.title=Nakasandi\nzoom_out_label=Nakasandi\nzoom_in.title=Bebbeerandi\nzoom_in_label=Bebbeerandi\nzoom.title=Bebbeerandi\npresentation_mode.title=Bere cebeyan alhaali\npresentation_mode_label=Cebeyan alhaali\nopen_file.title=Tuku feeri\nopen_file_label=Feeri\nprint.title=Kar\nprint_label=Kar\ndownload.title=Zumandi\ndownload_label=Zumandi\nbookmark.title=Sohõ gunarro (bere wala feeri zanfun taaga ra)\nbookmark_label=Sohõ gunaroo\n\n# Secondary toolbar and context menu\ntools.title=Goyjinawey\ntools_label=Goyjinawey\nfirst_page.title=Koy moo jinaa ga\nfirst_page.label=Koy moo jinaa ga\nfirst_page_label=Koy moo jinaa ga\nlast_page.title=Koy moo koraa ga\nlast_page.label=Koy moo koraa ga\nlast_page_label=Koy moo koraa ga\npage_rotate_cw.title=Kuubi kanbe guma here\npage_rotate_cw.label=Kuubi kanbe guma here\npage_rotate_cw_label=Kuubi kanbe guma here\npage_rotate_ccw.title=Kuubi kanbe wowa here\npage_rotate_ccw.label=Kuubi kanbe wowa here\npage_rotate_ccw_label=Kuubi kanbe wowa here\n\n\n# Document properties dialog box\ndocument_properties.title=Takadda mayrawey…\ndocument_properties_label=Takadda mayrawey…\ndocument_properties_file_name=Tuku maa:\ndocument_properties_file_size=Tuku adadu:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb=KB {{size_kb}} (cebsu-ize {{size_b}})\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb=MB {{size_mb}} (cebsu-ize {{size_b}})\ndocument_properties_title=Tiiramaa:\ndocument_properties_author=Hantumkaw:\ndocument_properties_subject=Dalil:\ndocument_properties_keywords=Kufalkalimawey:\ndocument_properties_creation_date=Teeyan han:\ndocument_properties_modification_date=Barmayan han:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Teekaw:\ndocument_properties_producer=PDF berandikaw:\ndocument_properties_version=PDF dumi:\ndocument_properties_page_count=Moo hinna:\ndocument_properties_close=Daabu\n\nprint_progress_message=Goo ma takaddaa soolu k'a kar se…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Naŋ\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Kanjari ceraw zuu\ntoggle_sidebar_notification.title=Kanjari ceraw-zuu (takaddaa goo nda filla-boŋ/hangandiyaŋ)\ntoggle_sidebar_label=Kanjari ceraw zuu\ndocument_outline.title=Takaddaa korfur alhaaloo cebe (naagu cee hinka ka haya-izey kul hayandi/kankamandi)\ndocument_outline_label=Takadda filla-boŋ\nattachments.title=Hangarey cebe\nattachments_label=Hangarey\nthumbs.title=Kabeboy biyey cebe\nthumbs_label=Kabeboy biyey\nfindbar.title=Ceeci takaddaa ra\nfindbar_label=Ceeci\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title={{page}} moo\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Kabeboy bii {{page}} moo še\n\n# Find panel button title and messages\nfind_input.title=Ceeci\nfind_input.placeholder=Ceeci takaddaa ra…\nfind_previous.title=Kalimaɲaŋoo bangayri bisantaa ceeci\nfind_previous_label=Bisante\nfind_next.title=Kalimaɲaŋoo hiino bangayroo ceeci\nfind_next_label=Jine\nfind_highlight=Ikul šilbay\nfind_match_case_label=Harfu-beeriyan hawgay\nfind_reached_top=A too moŋoo boŋoo, koy jine ka šinitin nda cewoo\nfind_reached_bottom=A too moɲoo cewoo, koy jine šintioo ga\nfind_not_found=Kalimaɲaa mana duwandi\n\n# Error panel labels\nerror_more_info=Alhabar tontoni\nerror_less_info=Alhabar tontoni\nerror_close=Daabu\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Alhabar: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Dekeri: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Tuku: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Žeeri: {{line}}\nrendering_error=Firka bangay kaŋ moɲoo goo ma willandi.\n\n# Predefined zoom values\npage_scale_width=Mooo hayyan\npage_scale_fit=Moo sawayan\npage_scale_auto=Boŋše azzaati barmayyan\npage_scale_actual=Adadu cimi\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Firka\nloading_error=Firka bangay kaŋ PDF goo ma zumandi.\ninvalid_file_error=PDF tuku laala wala laybante.\nmissing_file_error=PDF tuku kumante.\nunexpected_response_error=Manti feršikaw tuuruyan maatante.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt={{type}} maasa-caw]\npassword_label=Šennikufal dam ka PDF tukoo woo feeri.\npassword_invalid=Šennikufal laalo. Ceeci koyne taare.\npassword_ok=Ayyo\npassword_cancel=Naŋ\n\nprinting_not_supported=Yaamar: Karyan ši tee ka timme nda ceecikaa woo.\nprinting_not_ready=Yaamar: PDF ši zunbu ka timme karyan še.\nweb_fonts_disabled=Interneti šigirawey kay: ši hin ka goy nda PDF šigira hurantey.\ndocument_colors_not_allowed=PDF takaddawey ši duu fondo ka ngey boŋ noonawey zaa: “Naŋ moɲey ma ngey boŋ noonawey suuba” ši dira ceecikaa ga.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/sq/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Faqja e Mëparshme\nprevious_label=E mëparshmja\nnext.title=Faqja Pasuese\nnext_label=Pasuesja\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Faqe\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=nga {{pagesCount}} gjithsej\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} nga {{pagesCount}})\n\nzoom_out.title=Zvogëlim\nzoom_out_label=Zvogëlojini\nzoom_in.title=Zmadhim\nzoom_in_label=Zmadhojini\nzoom.title=Zoom\npresentation_mode.title=Kalo te Mënyra Paraqitje\npresentation_mode_label=Mënyra Paraqitje\nopen_file.title=Hapni Kartelë\nopen_file_label=Hape\nprint.title=Shtypje\nprint_label=Shtype\ndownload.title=Shkarkim\ndownload_label=Shkarkoje\nbookmark.title=Pamja e tanishme (kopjojeni ose hapeni në dritare të re)\nbookmark_label=Pamja e Tanishme\n\n# Secondary toolbar and context menu\ntools.title=Mjete\ntools_label=Mjete\nfirst_page.title=Kaloni te Faqja e Parë\nfirst_page.label=Kaloni te Faqja e Parë\nfirst_page_label=Kaloni te Faqja e Parë\nlast_page.title=Kaloni te Faqja e Fundit\nlast_page.label=Kaloni te Faqja e Fundit\nlast_page_label=Kaloni te Faqja e Fundit\npage_rotate_cw.title=Rrotullojeni Në Kahun Orar\npage_rotate_cw.label=Rrotulloje Në Kahun Orar\npage_rotate_cw_label=Rrotulloje Në Kahun Orar\npage_rotate_ccw.title=Rrotullojeni Në Kahun Kundërorar\npage_rotate_ccw.label=Rrotulloje Në Kahun Kundërorar\npage_rotate_ccw_label=Rrotulloje Në Kahun Kundërorar\n\ncursor_text_select_tool.title=Aktivizo Mjet Përzgjedhjeje Teksti\ncursor_text_select_tool_label=Mjet Përzgjedhjeje Teksti\ncursor_hand_tool.title=Aktivizo Mjetin Dorë\ncursor_hand_tool_label=Mjeti Dorë\n\nscroll_vertical.title=Përdor Rrëshqitje Vertikale\nscroll_vertical_label=Rrëshqitje Vertikale\nscroll_horizontal.title=Përdor Rrëshqitje Horizontale\nscroll_horizontal_label=Rrëshqitje Horizontale\n\n\n# Document properties dialog box\ndocument_properties.title=Veti Dokumenti…\ndocument_properties_label=Veti Dokumenti…\ndocument_properties_file_name=Emër kartele:\ndocument_properties_file_size=Madhësi kartele:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bajte)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bajte)\ndocument_properties_title=Titull:\ndocument_properties_author=Autor:\ndocument_properties_subject=Subjekt:\ndocument_properties_keywords=Fjalëkyçe:\ndocument_properties_creation_date=Datë Krijimi:\ndocument_properties_modification_date=Datë Ndryshimi:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Krijues:\ndocument_properties_producer=Prodhues PDF-je:\ndocument_properties_version=Version PDF-je:\ndocument_properties_page_count=Numër Faqesh:\ndocument_properties_page_size=Madhësi Faqeje:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portret\ndocument_properties_page_size_orientation_landscape=së gjeri\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=Po\ndocument_properties_linearized_no=Jo\ndocument_properties_close=Mbylleni\n\nprint_progress_message=Po përgatitet dokumenti për shtypje…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Anuloje\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Shfaqni/Fshihni Anështyllën\ntoggle_sidebar_notification.title=Shfaqni Anështyllën (dokumenti përmban përvijim/bashkëngjitje)\ntoggle_sidebar_label=Shfaq/Fshih Anështyllën\ndocument_outline.title=Shfaqni Përvijim Dokumenti (dyklikoni që të shfaqen/fshihen krejt elementët)\ndocument_outline_label=Përvijim Dokumenti\nattachments.title=Shfaqni Bashkëngjitje\nattachments_label=Bashkëngjitje\nthumbs.title=Shfaqni Miniatura\nthumbs_label=Miniatura\nfindbar.title=Gjeni në Dokument\nfindbar_label=Gjej\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Faqja {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniaturë e Faqes {{page}}\n\n# Find panel button title and messages\nfind_input.title=Gjeje\nfind_input.placeholder=Gjeni në dokument…\nfind_previous.title=Gjeni hasjen e mëparshme të togfjalëshit\nfind_previous_label=E mëparshmja\nfind_next.title=Gjeni hasjen pasuese të togfjalëshit\nfind_next_label=Pasuesja\nfind_highlight=Theksoji të tëra\nfind_match_case_label=Siç është shkruar\nfind_entire_word_label=Krejt fjalët\nfind_reached_top=U mbërrit në krye të dokumentit, vazhduar prej fundit\nfind_reached_bottom=U mbërrit në fund të dokumentit, vazhduar prej kreut\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} nga {{total}} përputhje gjithsej\nfind_match_count[two]={{current}} nga {{total}} përputhje gjithsej\nfind_match_count[few]={{current}} nga {{total}} përputhje gjithsej\nfind_match_count[many]={{current}} nga {{total}} përputhje gjithsej\nfind_match_count[other]={{current}} nga {{total}} përputhje gjithsej\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Më shumë se {{limit}} përputhje\nfind_match_count_limit[one]=Më shumë se {{limit}} përputhje\nfind_match_count_limit[two]=Më shumë se {{limit}} përputhje\nfind_match_count_limit[few]=Më shumë se {{limit}} përputhje\nfind_match_count_limit[many]=Më shumë se {{limit}} përputhje\nfind_match_count_limit[other]=Më shumë se {{limit}} përputhje\nfind_not_found=Togfjalësh që s’gjendet\n\n# Error panel labels\nerror_more_info=Më Tepër të Dhëna\nerror_less_info=Më Pak të Dhëna\nerror_close=Mbylleni\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mesazh: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Kartelë: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Rresht: {{line}}\nrendering_error=Ndodhi një gabim gjatë riprodhimit të faqes.\n\n# Predefined zoom values\npage_scale_width=Gjerësi Faqeje\npage_scale_fit=Sa Nxë Faqja\npage_scale_auto=Zoom i Vetvetishëm\npage_scale_actual=Madhësia Faktike\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Gabim\nloading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së.\ninvalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar.\nmissing_file_error=Kartelë PDF që mungon.\nunexpected_response_error=Përgjigje shërbyesi e papritur.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Nënvizim {{type}}]\npassword_label=Jepni fjalëkalimin që të hapet kjo kartelë PDF.\npassword_invalid=Fjalëkalim i pavlefshëm. Ju lutemi, riprovoni.\npassword_ok=OK\npassword_cancel=Anuloje\n\nprinting_not_supported=Kujdes: Shtypja s’mbulohet plotësisht nga ky shfletues.\nprinting_not_ready=Kujdes: PDF-ja s’është ngarkuar plotësisht që ta shtypni.\nweb_fonts_disabled=Shkronjat Web janë të çaktivizuara: s’arrihet të përdoren shkronja të trupëzuara në PDF.\ndocument_colors_not_allowed=Dokumenteve PDF s’u lejohet të përdorin ngjyrat e tyre: 'Lejoji faqet t’i zgjedhin vetë ngjyrat' është e çaktivizuar te shfletuesi.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/sr/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Претходна страница\nprevious_label=Претходна\nnext.title=Следећа страница\nnext_label=Следећа\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Страница\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=од {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} од {{pagesCount}})\n\nzoom_out.title=Умањи\nzoom_out_label=Умањи\nzoom_in.title=Увеличај\nzoom_in_label=Увеличај\nzoom.title=Увеличавање\npresentation_mode.title=Промени на приказ у режиму презентације\npresentation_mode_label=Режим презентације\nopen_file.title=Отвори датотеку\nopen_file_label=Отвори\nprint.title=Штампај\nprint_label=Штампај\ndownload.title=Преузми\ndownload_label=Преузми\nbookmark.title=Тренутни приказ (копирај или отвори нови прозор)\nbookmark_label=Тренутни приказ\n\n# Secondary toolbar and context menu\ntools.title=Алатке\ntools_label=Алатке\nfirst_page.title=Иди на прву страницу\nfirst_page.label=Иди на прву страницу\nfirst_page_label=Иди на прву страницу\nlast_page.title=Иди на последњу страницу\nlast_page.label=Иди на последњу страницу\nlast_page_label=Иди на последњу страницу\npage_rotate_cw.title=Ротирај у смеру казаљке на сату\npage_rotate_cw.label=Ротирај у смеру казаљке на сату\npage_rotate_cw_label=Ротирај у смеру казаљке на сату\npage_rotate_ccw.title=Ротирај у смеру супротном од казаљке на сату\npage_rotate_ccw.label=Ротирај у смеру супротном од казаљке на сату\npage_rotate_ccw_label=Ротирај у смеру супротном од казаљке на сату\n\ncursor_text_select_tool.title=Омогући алат за селектовање текста\ncursor_text_select_tool_label=Алат за селектовање текста\ncursor_hand_tool.title=Омогући алат за померање\ncursor_hand_tool_label=Алат за померање\n\nscroll_vertical.title=Користи вертикално скроловање\nscroll_vertical_label=Вертикално скроловање\nscroll_horizontal.title=Користи хоризонтално скроловање\nscroll_horizontal_label=Хоризонтално скроловање\nscroll_wrapped.title=Користи скроловање по омоту\nscroll_wrapped_label=Скроловање по омоту\n\nspread_none.title=Немој спајати ширења страница\nspread_none_label=Без распростирања\nspread_odd.title=Споји ширења страница које почињу непарним бројем\nspread_odd_label=Непарна распростирања\nspread_even.title=Споји ширења страница које почињу парним бројем\nspread_even_label=Парна распростирања\n\n# Document properties dialog box\ndocument_properties.title=Параметри документа…\ndocument_properties_label=Параметри документа…\ndocument_properties_file_name=Име датотеке:\ndocument_properties_file_size=Величина датотеке:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} B)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} B)\ndocument_properties_title=Наслов:\ndocument_properties_author=Аутор:\ndocument_properties_subject=Тема:\ndocument_properties_keywords=Кључне речи:\ndocument_properties_creation_date=Датум креирања:\ndocument_properties_modification_date=Датум модификације:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Стваралац:\ndocument_properties_producer=PDF произвођач:\ndocument_properties_version=PDF верзија:\ndocument_properties_page_count=Број страница:\ndocument_properties_page_size=Величина странице:\ndocument_properties_page_size_unit_inches=ин\ndocument_properties_page_size_unit_millimeters=мм\ndocument_properties_page_size_orientation_portrait=усправно\ndocument_properties_page_size_orientation_landscape=водоравно\ndocument_properties_page_size_name_a3=А3\ndocument_properties_page_size_name_a4=А4\ndocument_properties_page_size_name_letter=Слово\ndocument_properties_page_size_name_legal=Права\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Брз веб приказ:\ndocument_properties_linearized_yes=Да\ndocument_properties_linearized_no=Не\ndocument_properties_close=Затвори\n\nprint_progress_message=Припремам документ за штампање…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Откажи\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Прикажи додатну палету\ntoggle_sidebar_notification.title=Прикажи додатну траку (докуменат садржи оквире/прилоге)\ntoggle_sidebar_label=Прикажи додатну палету\ndocument_outline.title=Прикажи контуру документа (дупли клик за проширење/скупљање елемената)\ndocument_outline_label=Контура документа\nattachments.title=Прикажи прилоге\nattachments_label=Прилози\nthumbs.title=Прикажи сличице\nthumbs_label=Сличице\nfindbar.title=Пронађи у документу\nfindbar_label=Пронађи\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Страница {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Сличица од странице {{page}}\n\n# Find panel button title and messages\nfind_input.title=Пронађи\nfind_input.placeholder=Пронађи у документу…\nfind_previous.title=Пронађи претходну појаву фразе\nfind_previous_label=Претходна\nfind_next.title=Пронађи следећу појаву фразе\nfind_next_label=Следећа\nfind_highlight=Истакнути све\nfind_match_case_label=Подударања\nfind_reached_top=Достигнут врх документа, наставио са дна\nfind_reached_bottom=Достигнуто дно документа, наставио са врха\nfind_not_found=Фраза није пронађена\n\n# Error panel labels\nerror_more_info=Више информација\nerror_less_info=Мање информација\nerror_close=Затвори\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Порука: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Стек: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Датотека: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Линија: {{line}}\nrendering_error=Дошло је до грешке приликом рендеровања ове странице.\n\n# Predefined zoom values\npage_scale_width=Ширина странице\npage_scale_fit=Прилагоди страницу\npage_scale_auto=Аутоматско увеличавање\npage_scale_actual=Стварна величина\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Грешка\nloading_error=Дошло је до грешке приликом учитавања PDF-а.\ninvalid_file_error=PDF датотека је оштећена или је неисправна.\nmissing_file_error=PDF датотека није пронађена.\nunexpected_response_error=Неочекиван одговор од сервера.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} коментар]\npassword_label=Унесите лозинку да бисте отворили овај PDF докуменат.\npassword_invalid=Неисправна лозинка. Покушајте поново.\npassword_ok=У реду\npassword_cancel=Откажи\n\nprinting_not_supported=Упозорење: Штампање није у потпуности подржано у овом прегледачу.\nprinting_not_ready=Упозорење: PDF није у потпуности учитан за штампу.\nweb_fonts_disabled=Веб фонтови су онемогућени: не могу користити уграђене PDF фонтове.\ndocument_colors_not_allowed=PDF документи не могу да користе сопствене боје: “Дозволи страницама да изаберу своје боје” је деактивирано у прегледачу.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/sv-SE/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Föregående sida\nprevious_label=Föregående\nnext.title=Nästa sida\nnext_label=Nästa\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Sida\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=av {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} av {{pagesCount}})\n\nzoom_out.title=Zooma ut\nzoom_out_label=Zooma ut\nzoom_in.title=Zooma in\nzoom_in_label=Zooma in\nzoom.title=Zoom\npresentation_mode.title=Byt till presentationsläge\npresentation_mode_label=Presentationsläge\nopen_file.title=Öppna fil\nopen_file_label=Öppna\nprint.title=Skriv ut\nprint_label=Skriv ut\ndownload.title=Hämta\ndownload_label=Hämta\nbookmark.title=Aktuell vy (kopiera eller öppna i nytt fönster)\nbookmark_label=Aktuell vy\n\n# Secondary toolbar and context menu\ntools.title=Verktyg\ntools_label=Verktyg\nfirst_page.title=Gå till första sidan\nfirst_page.label=Gå till första sidan\nfirst_page_label=Gå till första sidan\nlast_page.title=Gå till sista sidan\nlast_page.label=Gå till sista sidan\nlast_page_label=Gå till sista sidan\npage_rotate_cw.title=Rotera medurs\npage_rotate_cw.label=Rotera medurs\npage_rotate_cw_label=Rotera medurs\npage_rotate_ccw.title=Rotera moturs\npage_rotate_ccw.label=Rotera moturs\npage_rotate_ccw_label=Rotera moturs\n\ncursor_text_select_tool.title=Aktivera textmarkeringsverktyg\ncursor_text_select_tool_label=Textmarkeringsverktyg\ncursor_hand_tool.title=Aktivera handverktyg\ncursor_hand_tool_label=Handverktyg\n\nscroll_vertical.title=Använd vertikal rullning\nscroll_vertical_label=Vertikal rullning\nscroll_horizontal.title=Använd horisontell rullning\nscroll_horizontal_label=Horisontell rullning\nscroll_wrapped.title=Använd överlappande rullning\nscroll_wrapped_label=Överlappande rullning\n\nspread_none.title=Visa enkelsidor\nspread_none_label=Enkelsidor\nspread_odd.title=Visa uppslag med olika sidnummer till vänster\nspread_odd_label=Uppslag med framsida\nspread_even.title=Visa uppslag med lika sidnummer till vänster\nspread_even_label=Uppslag utan framsida\n\n# Document properties dialog box\ndocument_properties.title=Dokumentegenskaper…\ndocument_properties_label=Dokumentegenskaper…\ndocument_properties_file_name=Filnamn:\ndocument_properties_file_size=Filstorlek:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} kB ({{size_b}} byte)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} byte)\ndocument_properties_title=Titel:\ndocument_properties_author=Författare:\ndocument_properties_subject=Ämne:\ndocument_properties_keywords=Nyckelord:\ndocument_properties_creation_date=Skapades:\ndocument_properties_modification_date=Ändrades:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Skapare:\ndocument_properties_producer=PDF-producent:\ndocument_properties_version=PDF-version:\ndocument_properties_page_count=Sidantal:\ndocument_properties_page_size=Pappersstorlek:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=porträtt\ndocument_properties_page_size_orientation_landscape=landskap\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Snabb webbvisning:\ndocument_properties_linearized_yes=Ja\ndocument_properties_linearized_no=Nej\ndocument_properties_close=Stäng\n\nprint_progress_message=Förbereder sidor för utskrift…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Avbryt\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Visa/dölj sidofält\ntoggle_sidebar_notification.title=Visa/dölj sidofält (dokument innehåller översikt/bilagor)\ntoggle_sidebar_label=Visa/dölj sidofält\ndocument_outline.title=Visa dokumentdisposition (dubbelklicka för att expandera/komprimera alla objekt)\ndocument_outline_label=Dokumentöversikt\nattachments.title=Visa Bilagor\nattachments_label=Bilagor\nthumbs.title=Visa miniatyrer\nthumbs_label=Miniatyrer\nfindbar.title=Sök i dokument\nfindbar_label=Sök\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Sida {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Miniatyr av sida {{page}}\n\n# Find panel button title and messages\nfind_input.title=Sök\nfind_input.placeholder=Sök i dokument…\nfind_previous.title=Hitta föregående förekomst av frasen\nfind_previous_label=Föregående\nfind_next.title=Hitta nästa förekomst av frasen\nfind_next_label=Nästa\nfind_highlight=Markera alla\nfind_match_case_label=Matcha versal/gemen\nfind_entire_word_label=Hela ord\nfind_reached_top=Nådde början av dokumentet, började från slutet\nfind_reached_bottom=Nådde slutet på dokumentet, började från början\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} av {{total}} träff\nfind_match_count[two]={{current}} av {{total}} träffar\nfind_match_count[few]={{current}} av {{total}} träffar\nfind_match_count[many]={{current}} av {{total}} träffar\nfind_match_count[other]={{current}} av {{total}} träffar\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Mer än {{limit}} träffar\nfind_match_count_limit[one]=Mer än {{limit}} träff\nfind_match_count_limit[two]=Mer än {{limit}} träffar\nfind_match_count_limit[few]=Mer än {{limit}} träffar\nfind_match_count_limit[many]=Mer än {{limit}} träffar\nfind_match_count_limit[other]=Mer än {{limit}} träffar\nfind_not_found=Frasen hittades inte\n\n# Error panel labels\nerror_more_info=Mer information\nerror_less_info=Mindre information\nerror_close=Stäng\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Meddelande: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fil: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Rad: {{line}}\nrendering_error=Ett fel uppstod vid visning av sidan.\n\n# Predefined zoom values\npage_scale_width=Sidbredd\npage_scale_fit=Anpassa sida\npage_scale_auto=Automatisk zoom\npage_scale_actual=Verklig storlek\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Fel\nloading_error=Ett fel uppstod vid laddning av PDF-filen.\ninvalid_file_error=Ogiltig eller korrupt PDF-fil.\nmissing_file_error=Saknad PDF-fil.\nunexpected_response_error=Oväntat svar från servern.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}}-annotering]\npassword_label=Skriv in lösenordet för att öppna PDF-filen.\npassword_invalid=Ogiltigt lösenord. Försök igen.\npassword_ok=OK\npassword_cancel=Avbryt\n\nprinting_not_supported=Varning: Utskrifter stöds inte helt av den här webbläsaren.\nprinting_not_ready=Varning: PDF:en är inte klar för utskrift.\nweb_fonts_disabled=Webbtypsnitt är inaktiverade: kan inte använda inbäddade PDF-typsnitt.\ndocument_colors_not_allowed=PDF-dokument tillåts inte använda egna färger: “Låt sidor använda egna färger” är inaktiverat i webbläsaren.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/sw/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Ukurasa Uliotangulia\nprevious_label=Iliyotangulia\nnext.title=Ukurasa Ufuatao\nnext_label=Ifuatayo\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Kuza Nje\nzoom_out_label=Kuza Nje\nzoom_in.title=Kuza Ndani\nzoom_in_label=Kuza Ndani\nzoom.title=Kuza\npresentation_mode.title=Badili kwa Hali ya Uwasilishaji\npresentation_mode_label=Hali ya Uwasilishaji\nopen_file.title=Fungua Faili\nopen_file_label=Fungua\nprint.title=Chapisha\nprint_label=Chapisha\ndownload.title=Pakua\ndownload_label=Pakua\nbookmark.title=Mwonekano wa sasa (nakili au ufungue katika dirisha mpya)\nbookmark_label=Mwonekano wa Sasa\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_title=Kichwa:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Kibiano cha Upau wa Kando\ntoggle_sidebar_label=Kibiano cha Upau wa Kando\ndocument_outline_label=Ufupisho wa Waraka\nthumbs.title=Onyesha Kijipicha\nthumbs_label=Vijipicha\nfindbar.title=Pata katika Waraka\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Ukurasa {{ukurasa}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Kijipicha cha ukurasa {{ukurasa}}\n\n# Find panel button title and messages\nfind_previous.title=Tafuta tukio kabla ya msemo huu\nfind_previous_label=Iliyotangulia\nfind_next.title=Tafuta tukio linalofuata la msemo\nfind_next_label=Ifuatayo\nfind_highlight=Angazia yote\nfind_match_case_label=Linganisha herufi\nfind_reached_top=Imefika juu ya waraka, imeendelea kutoka chini\nfind_reached_bottom=Imefika mwisho wa waraka, imeendelea kutoka juu\nfind_not_found=Msemo hukupatikana\n\n# Error panel labels\nerror_more_info=Maelezo Zaidi\nerror_less_info=Maelezo Kidogo\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (jenga: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Ujumbe: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Panganya: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Faili: {{faili}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Laini: {{laini}}\nrendering_error=Hitilafu lilitokea wajati wa kutoa ukurasa\n\n# Predefined zoom values\npage_scale_width=Upana wa Ukurasa\npage_scale_fit=Usawa wa Ukurasa\npage_scale_auto=Ukuzaji wa Kiotomatiki\npage_scale_actual=Ukubwa Halisi\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Hitilafu\nloading_error=Hitilafu lilitokea wakati wa kupakia PDF.\ninvalid_file_error=Faili ya PDF isiyohalali au potofu.\nmissing_file_error=Faili ya PDF isiyopo.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Ufafanuzi]\npassword_ok=SAWA\n\nprinting_not_supported=Onyo: Uchapishaji hauauniwi kabisa kwa kivinjari hiki.\nweb_fonts_disabled=Fonti za tovuti zimelemazwa: haziwezi kutumia fonti za PDF zilizopachikwa.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ta/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=முந்தைய பக்கம்\nprevious_label=முந்தையது\nnext.title=அடுத்த பக்கம்\nnext_label=அடுத்து\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=பக்கம்\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} இல்\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages={{pagesCount}}) இல் ({{pageNumber}}\n\nzoom_out.title=சிறிதாக்கு\nzoom_out_label=சிறிதாக்கு\nzoom_in.title=பெரிதாக்கு\nzoom_in_label=பெரிதாக்கு\nzoom.title=பெரிதாக்கு\npresentation_mode.title=விளக்ககாட்சி பயன்முறைக்கு மாறு\npresentation_mode_label=விளக்ககாட்சி பயன்முறை\nopen_file.title=கோப்பினை திற\nopen_file_label=திற\nprint.title=அச்சிடு\nprint_label=அச்சிடு\ndownload.title=பதிவிறக்கு\ndownload_label=பதிவிறக்கு\nbookmark.title=தற்போதைய காட்சி (புதிய சாளரத்திற்கு நகலெடு அல்லது புதிய சாளரத்தில் திற)\nbookmark_label=தற்போதைய காட்சி\n\n# Secondary toolbar and context menu\ntools.title=கருவிகள்\ntools_label=கருவிகள்\nfirst_page.title=முதல் பக்கத்திற்கு செல்லவும்\nfirst_page.label=முதல் பக்கத்திற்கு செல்லவும்\nfirst_page_label=முதல் பக்கத்திற்கு செல்லவும்\nlast_page.title=கடைசி பக்கத்திற்கு செல்லவும்\nlast_page.label=கடைசி பக்கத்திற்கு செல்லவும்\nlast_page_label=கடைசி பக்கத்திற்கு செல்லவும்\npage_rotate_cw.title=வலஞ்சுழியாக சுழற்று\npage_rotate_cw.label=வலஞ்சுழியாக சுழற்று\npage_rotate_cw_label=வலஞ்சுழியாக சுழற்று\npage_rotate_ccw.title=இடஞ்சுழியாக சுழற்று\npage_rotate_ccw.label=இடஞ்சுழியாக சுழற்று\npage_rotate_ccw_label=இடஞ்சுழியாக சுழற்று\n\ncursor_text_select_tool.title=உரைத் தெரிவு கருவியைச் செயல்படுத்து\ncursor_text_select_tool_label=உரைத் தெரிவு கருவி\ncursor_hand_tool.title=கைக் கருவிக்ச் செயற்படுத்து\ncursor_hand_tool_label=கைக்குருவி\n\n# Document properties dialog box\ndocument_properties.title=ஆவண பண்புகள்...\ndocument_properties_label=ஆவண பண்புகள்...\ndocument_properties_file_name=கோப்பு பெயர்:\ndocument_properties_file_size=கோப்பின் அளவு:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} கிபை ({{size_b}} பைட்டுகள்)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} மெபை ({{size_b}} பைட்டுகள்)\ndocument_properties_title=தலைப்பு:\ndocument_properties_author=எழுதியவர்\ndocument_properties_subject=பொருள்:\ndocument_properties_keywords=முக்கிய வார்த்தைகள்:\ndocument_properties_creation_date=படைத்த தேதி :\ndocument_properties_modification_date=திருத்திய தேதி:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=உருவாக்குபவர்:\ndocument_properties_producer=பிடிஎஃப் தயாரிப்பாளர்:\ndocument_properties_version=PDF பதிப்பு:\ndocument_properties_page_count=பக்க எண்ணிக்கை:\ndocument_properties_page_size=பக்க அளவு:\ndocument_properties_page_size_unit_inches=இதில்\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=நிலைபதிப்பு\ndocument_properties_page_size_orientation_landscape=நிலைபரப்பு\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=கடிதம்\ndocument_properties_page_size_name_legal=சட்டபூர்வ\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\ndocument_properties_close=மூடுக\n\nprint_progress_message=அச்சிடுவதற்கான ஆவணம் தயாராகிறது...\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=ரத்து\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=பக்கப் பட்டியை நிலைமாற்று\ntoggle_sidebar_notification.title=பக்கப்பட்டையை நிலைமாற்று (வெளிக்கோடு/இணைப்புகளை ஆவணம் கொண்டுள்ளது)\ntoggle_sidebar_label=பக்கப் பட்டியை நிலைமாற்று\ndocument_outline.title=ஆவண அடக்கத்தைக் காட்டு (இருமுறைச் சொடுக்கி அனைத்து உறுப்பிடிகளையும் விரி/சேர்)\ndocument_outline_label=ஆவண வெளிவரை\nattachments.title=இணைப்புகளை காண்பி\nattachments_label=இணைப்புகள்\nthumbs.title=சிறுபடங்களைக் காண்பி\nthumbs_label=சிறுபடங்கள்\nfindbar.title=ஆவணத்தில் கண்டறி\nfindbar_label=தேடு\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=பக்கம் {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=பக்கத்தின் சிறுபடம் {{page}}\n\n# Find panel button title and messages\nfind_input.title=கண்டுபிடி\nfind_input.placeholder=ஆவணத்தில் கண்டறி…\nfind_previous.title=இந்த சொற்றொடரின் முந்தைய நிகழ்வை தேடு\nfind_previous_label=முந்தையது\nfind_next.title=இந்த சொற்றொடரின் அடுத்த நிகழ்வை தேடு\nfind_next_label=அடுத்து\nfind_highlight=அனைத்தையும் தனிப்படுத்து\nfind_match_case_label=பேரெழுத்தாக்கத்தை உணர்\nfind_reached_top=ஆவணத்தின் மேல் பகுதியை அடைந்தது, அடிப்பக்கத்திலிருந்து தொடர்ந்தது\nfind_reached_bottom=ஆவணத்தின் முடிவை அடைந்தது, மேலிருந்து தொடர்ந்தது\nfind_not_found=சொற்றொடர் காணவில்லை\n\n# Error panel labels\nerror_more_info=கூடுதல் தகவல்\nerror_less_info=குறைந்த தகவல்\nerror_close=மூடுக\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=செய்தி: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=ஸ்டேக்: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=கோப்பு: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=வரி: {{line}}\nrendering_error=இந்தப் பக்கத்தை காட்சிப்படுத்தும் போது ஒரு பிழை ஏற்பட்டது.\n\n# Predefined zoom values\npage_scale_width=பக்க அகலம்\npage_scale_fit=பக்கப் பொருத்தம்\npage_scale_auto=தானியக்க பெரிதாக்கல்\npage_scale_actual=உண்மையான அளவு\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=பிழை\nloading_error=PDF ஐ ஏற்றும் போது ஒரு பிழை ஏற்பட்டது.\ninvalid_file_error=செல்லுபடியாகாத அல்லது சிதைந்த PDF கோப்பு.\nmissing_file_error=PDF கோப்பு காணவில்லை.\nunexpected_response_error=சேவகன் பதில் எதிர்பாரதது.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} விளக்கம்]\npassword_label=இந்த PDF கோப்பை திறக்க கடவுச்சொல்லை உள்ளிடவும்.\npassword_invalid=செல்லுபடியாகாத கடவுச்சொல், தயை செய்து மீண்டும் முயற்சி செய்க.\npassword_ok=சரி\npassword_cancel=ரத்து\n\nprinting_not_supported=எச்சரிக்கை: இந்த உலாவி அச்சிடுதலை முழுமையாக ஆதரிக்கவில்லை.\nprinting_not_ready=எச்சரிக்கை: PDF அச்சிட முழுவதுமாக ஏற்றப்படவில்லை.\nweb_fonts_disabled=வலை எழுத்துருக்கள் முடக்கப்பட்டுள்ளன: உட்பொதிக்கப்பட்ட PDF எழுத்துருக்களைப் பயன்படுத்த முடியவில்லை.\ndocument_colors_not_allowed=PDF ஆவணங்களுக்குச் சொந்த நிறங்களைப் பயன்படுத்த அனுமதியில்லை: உலாவியில் \"பக்கங்கள் தங்கள் சொந்த நிறங்களைத் தேர்வு செய்துகொள்ள அனுமதி\" என்னும் விருப்பம் முடக்கப்பட்டுள்ளது.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ta-LK/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom.title=அளவு\nopen_file.title=கோப்பினைத் திறக்க\nopen_file_label=திறக்க\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\n\n# Find panel button title and messages\nfind_previous.title=இந்த சொற்றொடரின் முன்னைய நிகழ்வை தேடு\nfind_next.title=இந்த சொற்றொடரின் அடுத்த நிகழ்வைத் தேடு\n\n# Error panel labels\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\n\n# Predefined zoom values\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\npassword_ok=ஆம்\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/te/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=మునుపటి పేజీ\nprevious_label=క్రితం\nnext.title=తరువాత పేజీ\nnext_label=తరువాత\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=పేజీ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=మొత్తం {{pagesCount}} లో\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=(మొత్తం {{pagesCount}} లో {{pageNumber}}వది)\n\nzoom_out.title=జూమ్ తగ్గించు\nzoom_out_label=జూమ్ తగ్గించు\nzoom_in.title=జూమ్ చేయి\nzoom_in_label=జూమ్ చేయి\nzoom.title=జూమ్\npresentation_mode.title=ప్రదర్శనా రీతికి మారు\npresentation_mode_label=ప్రదర్శనా రీతి\nopen_file.title=ఫైల్ తెరువు\nopen_file_label=తెరువు\nprint.title=ముద్రించు\nprint_label=ముద్రించు\ndownload.title=దింపుకోళ్ళు\ndownload_label=దింపుకోళ్ళు\nbookmark.title=ప్రస్తుత దర్శనం (కాపీ చేయి లేదా కొత్త విండోలో తెరువు)\nbookmark_label=ప్రస్తుత దర్శనం\n\n# Secondary toolbar and context menu\ntools.title=పనిముట్లు\ntools_label=పనిముట్లు\nfirst_page.title=మొదటి పేజీకి వెళ్ళు\nfirst_page.label=మొదటి పేజీకి వెళ్ళు\nfirst_page_label=మొదటి పేజీకి వెళ్ళు\nlast_page.title=చివరి పేజీకి వెళ్ళు\nlast_page.label=చివరి పేజీకి వెళ్ళు\nlast_page_label=చివరి పేజీకి వెళ్ళు\npage_rotate_cw.title=సవ్యదిశలో తిప్పు\npage_rotate_cw.label=సవ్యదిశలో తిప్పు\npage_rotate_cw_label=సవ్యదిశలో తిప్పు\npage_rotate_ccw.title=అపసవ్యదిశలో తిప్పు\npage_rotate_ccw.label=అపసవ్యదిశలో తిప్పు\npage_rotate_ccw_label=అపసవ్యదిశలో తిప్పు\n\ncursor_text_select_tool.title=టెక్స్ట్ ఎంపిక సాధనాన్ని ప్రారంభించండి\ncursor_text_select_tool_label=టెక్స్ట్ ఎంపిక సాధనం\ncursor_hand_tool.title=చేతి సాధనం చేతనించు\ncursor_hand_tool_label=చేతి సాధనం\n\nscroll_vertical_label=నిలువు స్క్రోలింగు\n\n\n# Document properties dialog box\ndocument_properties.title=పత్రము లక్షణాలు...\ndocument_properties_label=పత్రము లక్షణాలు...\ndocument_properties_file_name=దస్త్రం పేరు:\ndocument_properties_file_size=దస్త్రం పరిమాణం:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=శీర్షిక:\ndocument_properties_author=మూలకర్త:\ndocument_properties_subject=విషయం:\ndocument_properties_keywords=కీ పదాలు:\ndocument_properties_creation_date=సృష్టించిన తేదీ:\ndocument_properties_modification_date=సవరించిన తేదీ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=సృష్టికర్త:\ndocument_properties_producer=PDF ఉత్పాదకి:\ndocument_properties_version=PDF వర్షన్:\ndocument_properties_page_count=పేజీల సంఖ్య:\ndocument_properties_page_size=కాగితం పరిమాణం:\ndocument_properties_page_size_unit_inches=లో\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=నిలువుచిత్రం\ndocument_properties_page_size_orientation_landscape=అడ్డచిత్రం\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=లేఖ\ndocument_properties_page_size_name_legal=చట్టపరమైన\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=అవును\ndocument_properties_linearized_no=కాదు\ndocument_properties_close=మూసివేయి\n\nprint_progress_message=ముద్రించడానికి పత్రము సిద్ధమవుతున్నది…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=రద్దుచేయి\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=పక్కపట్టీ మార్చు\ntoggle_sidebar_label=పక్కపట్టీ మార్చు\ndocument_outline.title=పత్రము రూపము చూపించు (డబుల్ క్లిక్ చేసి అన్ని అంశాలను విస్తరించు/కూల్చు)\ndocument_outline_label=పత్రము అవుట్‌లైన్\nattachments.title=అనుబంధాలు చూపు\nattachments_label=అనుబంధాలు\nthumbs.title=థంబ్‌నైల్స్ చూపు\nthumbs_label=థంబ్‌నైల్స్\nfindbar.title=పత్రములో కనుగొనుము\nfindbar_label=కనుగొను\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=పేజీ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}} పేజీ నఖచిత్రం\n\n# Find panel button title and messages\nfind_input.title=కనుగొను\nfind_input.placeholder=పత్రములో కనుగొను…\nfind_previous.title=పదం యొక్క ముందు సంభవాన్ని కనుగొను\nfind_previous_label=మునుపటి\nfind_next.title=పదం యొక్క తర్వాతి సంభవాన్ని కనుగొను\nfind_next_label=తరువాత\nfind_highlight=అన్నిటిని ఉద్దీపనం చేయుము\nfind_match_case_label=అక్షరముల తేడాతో పోల్చు\nfind_entire_word_label=పూర్తి పదాలు\nfind_reached_top=పేజీ పైకి చేరుకున్నది, క్రింది నుండి కొనసాగించండి\nfind_reached_bottom=పేజీ చివరకు చేరుకున్నది, పైనుండి కొనసాగించండి\n# LOCALIZATION NOTE (find_matches_count): \"{{current}}\" and \"{{total}}\" will be\n# replaced by a number representing the index of the currently active find result,\n# respectively a number representing the total number of matches in the document.\n# LOCALIZATION NOTE (find_matches_count_limit): \"{{limit}}\" will be replaced by\n# a numerical value.\nfind_not_found=పదబంధం కనబడలేదు\n\n# Error panel labels\nerror_more_info=మరింత సమాచారం\nerror_less_info=తక్కువ సమాచారం\nerror_close=మూసివేయి\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=సందేశం: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=స్టాక్: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ఫైలు: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=వరుస: {{line}}\nrendering_error=పేజీను రెండర్ చేయుటలో ఒక దోషం ఎదురైంది.\n\n# Predefined zoom values\npage_scale_width=పేజీ వెడల్పు\npage_scale_fit=పేజీ అమర్పు\npage_scale_auto=స్వయంచాలక జూమ్\npage_scale_actual=యథార్ధ పరిమాణం\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=దోషం\nloading_error=PDF లోడవుచున్నప్పుడు ఒక దోషం ఎదురైంది.\ninvalid_file_error=చెల్లని లేదా పాడైన PDF ఫైలు.\nmissing_file_error=దొరకని PDF ఫైలు.\nunexpected_response_error=అనుకోని సర్వర్ స్పందన.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} టీకా]\npassword_label=ఈ PDF ఫైల్ తెరుచుటకు సంకేతపదం ప్రవేశపెట్టుము.\npassword_invalid=సంకేతపదం చెల్లదు. దయచేసి మళ్ళీ ప్రయత్నించండి.\npassword_ok=సరే\npassword_cancel=రద్దుచేయి\n\nprinting_not_supported=హెచ్చరిక: ఈ విహారిణి చేత ముద్రణ పూర్తిగా తోడ్పాటు లేదు.\nprinting_not_ready=హెచ్చరిక: ముద్రణ కొరకు ఈ PDF పూర్తిగా లోడవలేదు.\nweb_fonts_disabled=వెబ్ ఫాంట్లు అచేతనించబడెను: ఎంబెడెడ్ PDF ఫాంట్లు ఉపయోగించలేక పోయింది.\ndocument_colors_not_allowed=PDF పత్రాలు వాటి స్వంత రంగులను ఉపయోగించుకొనుటకు అనుమతించబడవు: విహరణి నందు “పేజీలను వాటి స్వంత రంగులను ఎంచుకొనుటకు అనుమతించు” అచేతనం చేయబడివుంది.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/th/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=หน้าก่อนหน้า\nprevious_label=ก่อนหน้า\nnext.title=หน้าถัดไป\nnext_label=ถัดไป\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=หน้า\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=จาก {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} จาก {{pagesCount}})\n\nzoom_out.title=ซูมออก\nzoom_out_label=ซูมออก\nzoom_in.title=ซูมเข้า\nzoom_in_label=ซูมเข้า\nzoom.title=ซูม\npresentation_mode.title=สลับเป็นโหมดการนำเสนอ\npresentation_mode_label=โหมดการนำเสนอ\nopen_file.title=เปิดไฟล์\nopen_file_label=เปิด\nprint.title=พิมพ์\nprint_label=พิมพ์\ndownload.title=ดาวน์โหลด\ndownload_label=ดาวน์โหลด\nbookmark.title=มุมมองปัจจุบัน (คัดลอกหรือเปิดในหน้าต่างใหม่)\nbookmark_label=มุมมองปัจจุบัน\n\n# Secondary toolbar and context menu\ntools.title=เครื่องมือ\ntools_label=เครื่องมือ\nfirst_page.title=ไปยังหน้าแรก\nfirst_page.label=ไปยังหน้าแรก\nfirst_page_label=ไปยังหน้าแรก\nlast_page.title=ไปยังหน้าสุดท้าย\nlast_page.label=ไปยังหน้าสุดท้าย\nlast_page_label=ไปยังหน้าสุดท้าย\npage_rotate_cw.title=หมุนตามเข็มนาฬิกา\npage_rotate_cw.label=หมุนตามเข็มนาฬิกา\npage_rotate_cw_label=หมุนตามเข็มนาฬิกา\npage_rotate_ccw.title=หมุนทวนเข็มนาฬิกา\npage_rotate_ccw.label=หมุนทวนเข็มนาฬิกา\npage_rotate_ccw_label=หมุนทวนเข็มนาฬิกา\n\ncursor_text_select_tool.title=เปิดใช้งานเครื่องมือการเลือกข้อความ\ncursor_text_select_tool_label=เครื่องมือการเลือกข้อความ\ncursor_hand_tool.title=เปิดใช้งานเครื่องมือมือ\ncursor_hand_tool_label=เครื่องมือมือ\n\nscroll_vertical.title=ใช้การเลื่อนแนวตั้ง\nscroll_vertical_label=การเลื่อนแนวตั้ง\nscroll_horizontal.title=ใช้การเลื่อนแนวนอน\nscroll_horizontal_label=การเลื่อนแนวนอน\nscroll_wrapped.title=ใช้การเลื่อนแบบคลุม\nscroll_wrapped_label=เลื่อนแบบคลุม\n\nspread_none.title=ไม่ต้องรวมการกระจายหน้า\nspread_none_label=ไม่กระจาย\nspread_odd.title=รวมการกระจายหน้าเริ่มจากหน้าคี่\nspread_odd_label=กระจายอย่างเหลือเศษ\nspread_even.title=รวมการกระจายหน้าเริ่มจากหน้าคู่\nspread_even_label=กระจายอย่างเท่าเทียม\n\n# Document properties dialog box\ndocument_properties.title=คุณสมบัติเอกสาร…\ndocument_properties_label=คุณสมบัติเอกสาร…\ndocument_properties_file_name=ชื่อไฟล์:\ndocument_properties_file_size=ขนาดไฟล์:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} ไบต์)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} ไบต์)\ndocument_properties_title=ชื่อ:\ndocument_properties_author=ผู้สร้าง:\ndocument_properties_subject=ชื่อเรื่อง:\ndocument_properties_keywords=คำสำคัญ:\ndocument_properties_creation_date=วันที่สร้าง:\ndocument_properties_modification_date=วันที่แก้ไข:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=ผู้สร้าง:\ndocument_properties_producer=ผู้ผลิต PDF:\ndocument_properties_version=รุ่น PDF:\ndocument_properties_page_count=จำนวนหน้า:\ndocument_properties_page_size=ขนาดหน้า:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=แนวตั้ง\ndocument_properties_page_size_orientation_landscape=แนวนอน\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=จดหมาย\ndocument_properties_page_size_name_legal=ข้อกฎหมาย\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=ใช่\ndocument_properties_linearized_no=ไม่\ndocument_properties_close=ปิด\n\nprint_progress_message=กำลังเตรียมเอกสารสำหรับการพิมพ์…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=ยกเลิก\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=เปิด/ปิดแถบข้าง\ntoggle_sidebar_notification.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ)\ntoggle_sidebar_label=เปิด/ปิดแถบข้าง\ndocument_outline.title=แสดงเค้าร่างเอกสาร (คลิกสองครั้งเพื่อขยาย/ยุบรายการทั้งหมด)\ndocument_outline_label=เค้าร่างเอกสาร\nattachments.title=แสดงไฟล์แนบ\nattachments_label=ไฟล์แนบ\nthumbs.title=แสดงภาพขนาดย่อ\nthumbs_label=ภาพขนาดย่อ\nfindbar.title=ค้นหาในเอกสาร\nfindbar_label=ค้นหา\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=หน้า {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=ภาพขนาดย่อของหน้า {{page}}\n\n# Find panel button title and messages\nfind_input.title=ค้นหา\nfind_input.placeholder=ค้นหาในเอกสาร…\nfind_previous.title=หาตำแหน่งก่อนหน้าของวลี\nfind_previous_label=ก่อนหน้า\nfind_next.title=หาตำแหน่งถัดไปของวลี\nfind_next_label=ถัดไป\nfind_highlight=เน้นสีทั้งหมด\nfind_match_case_label=ตัวพิมพ์ใหญ่เล็กตรงกัน\nfind_entire_word_label=ทั้งคำ\nfind_reached_top=ค้นหาถึงจุดเริ่มต้นของหน้า เริ่มค้นต่อจากด้านล่าง\nfind_reached_bottom=ค้นหาถึงจุดสิ้นสุดหน้า เริ่มค้นต่อจากด้านบน\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_not_found=ไม่พบวลี\n\n# Error panel labels\nerror_more_info=ข้อมูลเพิ่มเติม\nerror_less_info=ข้อมูลน้อยลง\nerror_close=ปิด\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=ข้อความ: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=สแตก: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=ไฟล์: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=บรรทัด: {{line}}\nrendering_error=เกิดข้อผิดพลาดขณะกำลังเรนเดอร์หน้า\n\n# Predefined zoom values\npage_scale_width=ความกว้างหน้า\npage_scale_fit=พอดีหน้า\npage_scale_auto=ซูมอัตโนมัติ\npage_scale_actual=ขนาดจริง\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=ข้อผิดพลาด\nloading_error=เกิดข้อผิดพลาดขณะกำลังโหลด PDF\ninvalid_file_error=ไฟล์ PDF ไม่ถูกต้องหรือเสียหาย\nmissing_file_error=ไฟล์ PDF หายไป\nunexpected_response_error=การตอบสนองของเซิร์ฟเวอร์ที่ไม่คาดคิด\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[คำอธิบายประกอบ {{type}}]\npassword_label=ป้อนรหัสผ่านเพื่อเปิดไฟล์ PDF นี้\npassword_invalid=รหัสผ่านไม่ถูกต้อง โปรดลองอีกครั้ง\npassword_ok=ตกลง\npassword_cancel=ยกเลิก\n\nprinting_not_supported=คำเตือน: เบราว์เซอร์นี้ไม่ได้สนับสนุนการพิมพ์อย่างเต็มที่\nprinting_not_ready=คำเตือน: PDF ไม่ได้รับการโหลดอย่างเต็มที่สำหรับการพิมพ์\nweb_fonts_disabled=แบบอักษรเว็บถูกปิดใช้งาน: ไม่สามารถใช้แบบอักษร PDF ฝังตัว\ndocument_colors_not_allowed=เอกสาร PDF ไม่ได้รับอนุญาตให้ใช้สีของตัวเอง: \"อนุญาตให้หน้าเอกสารสามารถเลือกสีของตัวเอง\" ถูกปิดใช้งานในเบราว์เซอร์\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/tl/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Naunang Pahina\nprevious_label=Nakaraan\nnext.title=Sunod na Pahina\nnext_label=Sunod\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Pahina\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=ng {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} ng {{pagesCount}})\n\nzoom_out.title=Mag-zom Out\nzoom_out_label=Paliitin\nzoom_in.title=Palakihin\nzoom_in_label=Palakihin\nzoom.title=Mag-zoom\nopen_file.title=Magbukas ng file\nopen_file_label=Buksan\nprint.title=i-Print\nprint_label=i-Print\ndownload.title=Download\ndownload_label=Download\nbookmark.title=Kasalukuyang tingin (kopyahin o buksan sa bagong window)\nbookmark_label=Kasalukuyang tingin\n\n# Secondary toolbar and context menu\ntools.title=Mga Tool\ntools_label=Mga Tool\nfirst_page.title=Pumunta sa Unang Pahina\nfirst_page.label=Pumunta sa Unang Pahina\nfirst_page_label=Pumunta sa Unang Pahina\nlast_page.title=Pumunta sa Huling Pahina\nlast_page.label=Pumunta sa Huling Pahina\nlast_page_label=Pumunta sa Huling Pahina\npage_rotate_cw.title=Paikutin ang Clockwise\npage_rotate_cw.label=Paikutin ang Clockwise\npage_rotate_cw_label=Paikutin ang Clockwise\npage_rotate_ccw.title=Paikutin ang Counterclockwise\npage_rotate_ccw.label=Paikutin ang Counterclockwise\npage_rotate_ccw_label=Paikutin ang Counterclockwise\n\n\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Pamagat:\ndocument_properties_keywords=Mga keyword:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=portrait\ndocument_properties_page_size_orientation_landscape=landscape\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=Oo\ndocument_properties_linearized_no=Hindi\ndocument_properties_close=Isara\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Kanselahin\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\nthumbs.title=Ipakita ang mga Thumbnails\nfindbar_label=Hanapin\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Pahina {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Thumbnail ng Pahina {{page}}\n\n# Find panel button title and messages\nfind_input.title=Hanapin\nfind_previous.title=Hanapin ang nakaraang pangyayari ng parirala\nfind_previous_label=Nakaraang\nfind_next.title=Hanapin ang susunod na pangyayari ng parirala\nfind_next_label=Susunod\nfind_highlight=I-highlight lahat\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_not_found=Hindi nakita ang prasko\n\n# Error panel labels\nerror_more_info=Maraming Inpormasyon\nerror_less_info=Maikling Inpormasyon\nerror_close=Sarado\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Mensahe: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=File: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Linya: {{line}}\nrendering_error=May naganap na pagkakamali habang pagsasalin sa pahina.\n\n# Predefined zoom values\npage_scale_width=Haba ng Pahina\npage_scale_fit=ang pahina ay angkop\npage_scale_auto=awtomatikong pag-imbulog\npage_scale_actual=Totoong sukat\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Error\nloading_error=May maling nangyari habang kinakarga ang PDF.\ninvalid_file_error=Di-wasto o masira ang PDF file.\nmissing_file_error=Nawawalang PDF file.\nunexpected_response_error=Hindi inaasahang tugon ng server.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=Ipasok ang password upang buksan ang PDF file na ito.\npassword_ok=OK\npassword_cancel=Kanselahin\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/tn/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom.title=Zuma/gogela\nopen_file.title=Bula Faele\nopen_file_label=Bula\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\ndocument_properties_file_name=Leina la faele:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_title=Leina:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\n\n# Find panel button title and messages\nfind_previous.title=Batla tiragalo e e fetileng ya setlhopha sa mafoko\nfind_next.title=Batla tiragalo e e latelang ya setlhopha sa mafoko\nfind_not_found=Setlhopha sa mafoko ga se a bonwa\n\n# Error panel labels\nerror_more_info=Tshedimosetso e Nngwe\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\n\n# Predefined zoom values\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Phoso\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\npassword_ok=Siame\n\nweb_fonts_disabled=Mefutatlhaka ya Webo ga e dire: ga e kgone go dirisa mofutatlhaka wa PDF o tsentsweng.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/tr/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Önceki sayfa\nprevious_label=Önceki\nnext.title=Sonraki sayfa\nnext_label=Sonraki\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Sayfa\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=/ {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} / {{pagesCount}})\n\nzoom_out.title=Uzaklaştır\nzoom_out_label=Uzaklaştır\nzoom_in.title=Yaklaştır\nzoom_in_label=Yaklaştır\nzoom.title=Yakınlaştırma\npresentation_mode.title=Sunum moduna geç\npresentation_mode_label=Sunum Modu\nopen_file.title=Dosya aç\nopen_file_label=Aç\nprint.title=Yazdır\nprint_label=Yazdır\ndownload.title=İndir\ndownload_label=İndir\nbookmark.title=Geçerli görünüm (kopyala veya yeni pencerede aç)\nbookmark_label=Geçerli görünüm\n\n# Secondary toolbar and context menu\ntools.title=Araçlar\ntools_label=Araçlar\nfirst_page.title=İlk sayfaya git\nfirst_page.label=İlk sayfaya git\nfirst_page_label=İlk sayfaya git\nlast_page.title=Son sayfaya git\nlast_page.label=Son sayfaya git\nlast_page_label=Son sayfaya git\npage_rotate_cw.title=Saat yönünde döndür\npage_rotate_cw.label=Saat yönünde döndür\npage_rotate_cw_label=Saat yönünde döndür\npage_rotate_ccw.title=Saat yönünün tersine döndür\npage_rotate_ccw.label=Saat yönünün tersine döndür\npage_rotate_ccw_label=Saat yönünün tersine döndür\n\ncursor_text_select_tool.title=Metin seçme aracını etkinleştir\ncursor_text_select_tool_label=Metin seçme aracı\ncursor_hand_tool.title=El aracını etkinleştir\ncursor_hand_tool_label=El aracı\n\nscroll_vertical.title=Dikey kaydırma kullan\nscroll_vertical_label=Dikey kaydırma\nscroll_horizontal.title=Yatay kaydırma kullan\nscroll_horizontal_label=Yatay kaydırma\nscroll_wrapped.title=Yan yana kaydırmayı kullan\nscroll_wrapped_label=Yan yana kaydırma\n\nspread_none.title=Yan yana sayfaları birleştirme\nspread_none_label=Birleştirme\nspread_odd.title=Yan yana sayfaları tek numaralı sayfalardan başlayarak birleştir\nspread_odd_label=Tek numaralı\nspread_even.title=Yan yana sayfaları çift numaralı sayfalardan başlayarak birleştir\nspread_even_label=Çift numaralı\n\n# Document properties dialog box\ndocument_properties.title=Belge özellikleri…\ndocument_properties_label=Belge özellikleri…\ndocument_properties_file_name=Dosya adı:\ndocument_properties_file_size=Dosya boyutu:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bayt)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bayt)\ndocument_properties_title=Başlık:\ndocument_properties_author=Yazar:\ndocument_properties_subject=Konu:\ndocument_properties_keywords=Anahtar kelimeler:\ndocument_properties_creation_date=Oluturma tarihi:\ndocument_properties_modification_date=Değiştirme tarihi:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}} {{time}}\ndocument_properties_creator=Oluşturan:\ndocument_properties_producer=PDF üreticisi:\ndocument_properties_version=PDF sürümü:\ndocument_properties_page_count=Sayfa sayısı:\ndocument_properties_page_size=Sayfa boyutu:\ndocument_properties_page_size_unit_inches=inç\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=dikey\ndocument_properties_page_size_orientation_landscape=yatay\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Hızlı web görünümü:\ndocument_properties_linearized_yes=Evet\ndocument_properties_linearized_no=Hayır\ndocument_properties_close=Kapat\n\nprint_progress_message=Belge yazdırılmaya hazırlanıyor…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent=%{{progress}}\nprint_progress_close=İptal\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Kenar çubuğunu aç/kapat\ntoggle_sidebar_notification.title=Kenar çubuğunu aç/kapat (Belge anahat/ekler içeriyor)\ntoggle_sidebar_label=Kenar çubuğunu aç/kapat\ndocument_outline.title=Belge şemasını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın)\ndocument_outline_label=Belge şeması\nattachments.title=Ekleri göster\nattachments_label=Ekler\nthumbs.title=Küçük resimleri göster\nthumbs_label=Küçük resimler\nfindbar.title=Belgede bul\nfindbar_label=Bul\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Sayfa {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}}. sayfanın küçük hâli\n\n# Find panel button title and messages\nfind_input.title=Bul\nfind_input.placeholder=Belgede bul…\nfind_previous.title=Önceki eşleşmeyi bul\nfind_previous_label=Önceki\nfind_next.title=Sonraki eşleşmeyi bul\nfind_next_label=Sonraki\nfind_highlight=Tümünü vurgula\nfind_match_case_label=Büyük-küçük harfe duyarlı\nfind_entire_word_label=Tam sözcükler\nfind_reached_top=Belgenin başına ulaşıldı, sonundan devam edildi\nfind_reached_bottom=Belgenin sonuna ulaşıldı, başından devam edildi\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{total}} eşleşmeden {{current}}. eşleşme\nfind_match_count[two]={{total}} eşleşmeden {{current}}. eşleşme\nfind_match_count[few]={{total}} eşleşmeden {{current}}. eşleşme\nfind_match_count[many]={{total}} eşleşmeden {{current}}. eşleşme\nfind_match_count[other]={{total}} eşleşmeden {{current}}. eşleşme\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]={{limit}} eşleşmeden fazla\nfind_match_count_limit[one]={{limit}} eşleşmeden fazla\nfind_match_count_limit[two]={{limit}} eşleşmeden fazla\nfind_match_count_limit[few]={{limit}} eşleşmeden fazla\nfind_match_count_limit[many]={{limit}} eşleşmeden fazla\nfind_match_count_limit[other]={{limit}} eşleşmeden fazla\nfind_not_found=Eşleşme bulunamadı\n\n# Error panel labels\nerror_more_info=Daha fazla bilgi al\nerror_less_info=Daha az bilgi\nerror_close=Kapat\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js sürüm {{version}} (yapı: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=İleti: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Yığın: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Dosya: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Satır: {{line}}\nrendering_error=Sayfa yorumlanırken bir hata oluştu.\n\n# Predefined zoom values\npage_scale_width=Sayfa genişliği\npage_scale_fit=Sayfayı sığdır\npage_scale_auto=Otomatik yakınlaştır\npage_scale_actual=Gerçek boyut\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent=%{{scale}}\n\n# Loading indicator messages\nloading_error_indicator=Hata\nloading_error=PDF yüklenirken bir hata oluştu.\ninvalid_file_error=Geçersiz veya bozulmuş PDF dosyası.\nmissing_file_error=PDF dosyası eksik.\nunexpected_response_error=Beklenmeyen sunucu yanıtı.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} işareti]\npassword_label=Bu PDF dosyasını açmak için parolasını yazın.\npassword_invalid=Geçersiz parola. Lütfen yeniden deneyin.\npassword_ok=Tamam\npassword_cancel=İptal\n\nprinting_not_supported=Uyarı: Yazdırma bu tarayıcı tarafından tam olarak desteklenmemektedir.\nprinting_not_ready=Uyarı: PDF tamamen yüklenmedi ve yazdırmaya hazır değil.\nweb_fonts_disabled=Web fontları devre dışı: Gömülü PDF fontları kullanılamıyor.\ndocument_colors_not_allowed=PDF belgelerinin kendi renklerini kullanması için izin verilmiyor: “Sayfalara kendi renklerini seçmesi için izin ver” tarayıcıda etkinleştirilmemiş.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/tsz/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom.title=jasi\nopen_file_label=Mitani\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\n\n# Find panel button title and messages\n\n# Error panel labels\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\n\n# Predefined zoom values\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\npassword_ok=Jo\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/uk/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Попередня сторінка\nprevious_label=Попередня\nnext.title=Наступна сторінка\nnext_label=Наступна\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Сторінка\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=із {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} із {{pagesCount}})\n\nzoom_out.title=Зменшити\nzoom_out_label=Зменшити\nzoom_in.title=Збільшити\nzoom_in_label=Збільшити\nzoom.title=Масштаб\npresentation_mode.title=Перейти в режим презентації\npresentation_mode_label=Режим презентації\nopen_file.title=Відкрити файл\nopen_file_label=Відкрити\nprint.title=Друк\nprint_label=Друк\ndownload.title=Завантажити\ndownload_label=Завантажити\nbookmark.title=Поточний вигляд (копіювати чи відкрити в новому вікні)\nbookmark_label=Поточний вигляд\n\n# Secondary toolbar and context menu\ntools.title=Інструменти\ntools_label=Інструменти\nfirst_page.title=На першу сторінку\nfirst_page.label=На першу сторінку\nfirst_page_label=На першу сторінку\nlast_page.title=На останню сторінку\nlast_page.label=На останню сторінку\nlast_page_label=На останню сторінку\npage_rotate_cw.title=Повернути за годинниковою стрілкою\npage_rotate_cw.label=Повернути за годинниковою стрілкою\npage_rotate_cw_label=Повернути за годинниковою стрілкою\npage_rotate_ccw.title=Повернути проти годинникової стрілки\npage_rotate_ccw.label=Повернути проти годинникової стрілки\npage_rotate_ccw_label=Повернути проти годинникової стрілки\n\ncursor_text_select_tool.title=Увімкнути інструмент вибору тексту\ncursor_text_select_tool_label=Інструмент вибору тексту\ncursor_hand_tool.title=Увімкнути інструмент «Рука»\ncursor_hand_tool_label=Інструмент «Рука»\n\nscroll_vertical.title=Використовувати вертикальне прокручування\nscroll_vertical_label=Вертикальне прокручування\nscroll_horizontal.title=Використовувати горизонтальне прокручування\nscroll_horizontal_label=Горизонтальне прокручування\nscroll_wrapped.title=Використовувати масштабоване прокручування\nscroll_wrapped_label=Масштабоване прокручування\n\nspread_none.title=Не використовувати розгорнуті сторінки\nspread_none_label=Без розгорнутих сторінок\nspread_odd.title=Розгорнуті сторінки починаються з непарних номерів\nspread_odd_label=Непарні сторінки зліва\nspread_even.title=Розгорнуті сторінки починаються з парних номерів\nspread_even_label=Парні сторінки зліва\n\n# Document properties dialog box\ndocument_properties.title=Властивості документа…\ndocument_properties_label=Властивості документа…\ndocument_properties_file_name=Назва файла:\ndocument_properties_file_size=Розмір файла:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} КБ ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} МБ ({{size_b}} bytes)\ndocument_properties_title=Заголовок:\ndocument_properties_author=Автор:\ndocument_properties_subject=Тема:\ndocument_properties_keywords=Ключові слова:\ndocument_properties_creation_date=Дата створення:\ndocument_properties_modification_date=Дата зміни:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Створено:\ndocument_properties_producer=Виробник PDF:\ndocument_properties_version=Версія PDF:\ndocument_properties_page_count=Кількість сторінок:\ndocument_properties_page_size=Розмір сторінки:\ndocument_properties_page_size_unit_inches=дюймів\ndocument_properties_page_size_unit_millimeters=мм\ndocument_properties_page_size_orientation_portrait=книжкова\ndocument_properties_page_size_orientation_landscape=альбомна\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=Швидкий перегляд в Інтернеті:\ndocument_properties_linearized_yes=Так\ndocument_properties_linearized_no=Ні\ndocument_properties_close=Закрити\n\nprint_progress_message=Підготовка документу до друку…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Скасувати\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Бічна панель\ntoggle_sidebar_notification.title=Перемкнути бічну панель (документ має вміст/вкладення)\ntoggle_sidebar_label=Перемкнути бічну панель\ndocument_outline.title=Показати схему документу (подвійний клік для розгортання/згортання елементів)\ndocument_outline_label=Схема документа\nattachments.title=Показати прикріплення\nattachments_label=Прикріплення\nthumbs.title=Показувати ескізи\nthumbs_label=Ескізи\nfindbar.title=Знайти в документі\nfindbar_label=Пошук\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Сторінка {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Ескіз сторінки {{page}}\n\n# Find panel button title and messages\nfind_input.title=Знайти\nfind_input.placeholder=Знайти в документі…\nfind_previous.title=Знайти попереднє входження фрази\nfind_previous_label=Попереднє\nfind_next.title=Знайти наступне входження фрази\nfind_next_label=Наступне\nfind_highlight=Підсвітити все\nfind_match_case_label=З урахуванням регістру\nfind_entire_word_label=Цілі слова\nfind_reached_top=Досягнуто початку документу, продовжено з кінця\nfind_reached_bottom=Досягнуто кінця документу, продовжено з початку\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]={{current}} збіг із {{total}}\nfind_match_count[two]={{current}} збіги з {{total}}\nfind_match_count[few]={{current}} збігів із {{total}}\nfind_match_count[many]={{current}} збігів із {{total}}\nfind_match_count[other]={{current}} збігів із {{total}}\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=Понад {{limit}} збігів\nfind_match_count_limit[one]=Більше, ніж {{limit}} збіг\nfind_match_count_limit[two]=Більше, ніж {{limit}} збіги\nfind_match_count_limit[few]=Більше, ніж {{limit}} збігів\nfind_match_count_limit[many]=Понад {{limit}} збігів\nfind_match_count_limit[other]=Понад {{limit}} збігів\nfind_not_found=Фразу не знайдено\n\n# Error panel labels\nerror_more_info=Більше інформації\nerror_less_info=Менше інформації\nerror_close=Закрити\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Повідомлення: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Стек: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Файл: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Рядок: {{line}}\nrendering_error=Під час виведення сторінки сталася помилка.\n\n# Predefined zoom values\npage_scale_width=За шириною\npage_scale_fit=Умістити\npage_scale_auto=Авто-масштаб\npage_scale_actual=Дійсний розмір\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Помилка\nloading_error=Під час завантаження PDF сталася помилка.\ninvalid_file_error=Недійсний або пошкоджений PDF-файл.\nmissing_file_error=Відсутній PDF-файл.\nunexpected_response_error=Неочікувана відповідь сервера.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}}-аннотація]\npassword_label=Введіть пароль для відкриття цього PDF-файла.\npassword_invalid=Невірний пароль. Спробуйте ще.\npassword_ok=Гаразд\npassword_cancel=Скасувати\n\nprinting_not_supported=Попередження: Цей браузер не повністю підтримує друк.\nprinting_not_ready=Попередження: PDF не повністю завантажений для друку.\nweb_fonts_disabled=Веб-шрифти вимкнено: неможливо використати вбудовані у PDF шрифти.\ndocument_colors_not_allowed=PDF-документам не дозволено використовувати власні кольори: в браузері вимкнено параметр «Дозволити сторінкам використовувати власні кольори».\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/ur/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=پچھلا صفحہ\nprevious_label=پچھلا\nnext.title=اگلا صفحہ\nnext_label=آگے\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=صفحہ\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages={{pagesCount}} کا\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} کا {{pagesCount}})\n\nzoom_out.title=باہر زوم کریں\nzoom_out_label=باہر زوم کریں\nzoom_in.title=اندر زوم کریں\nzoom_in_label=اندر زوم کریں\nzoom.title=زوم\npresentation_mode.title=پیشکش موڈ میں چلے جائیں\npresentation_mode_label=پیشکش موڈ\nopen_file.title=مسل کھولیں\nopen_file_label=کھولیں\nprint.title=چھاپیں\nprint_label=چھاپیں\ndownload.title=ڈاؤن لوڈ\ndownload_label=ڈاؤن لوڈ\nbookmark.title=حالیہ نظارہ (نۓ دریچہ میں نقل کریں یا کھولیں)\nbookmark_label=حالیہ نظارہ\n\n# Secondary toolbar and context menu\ntools.title=آلات\ntools_label=آلات\nfirst_page.title=پہلے صفحہ پر جائیں\nfirst_page.label=پہلے صفحہ پر جائیں\nfirst_page_label=پہلے صفحہ پر جائیں\nlast_page.title=آخری صفحہ پر جائیں\nlast_page.label=آخری صفحہ پر جائیں\nlast_page_label=آخری صفحہ پر جائیں\npage_rotate_cw.title=گھڑی وار گھمائیں\npage_rotate_cw.label=گھڑی وار گھمائیں\npage_rotate_cw_label=گھڑی وار گھمائیں\npage_rotate_ccw.title=ضد گھڑی وار گھمائیں\npage_rotate_ccw.label=ضد گھڑی وار گھمائیں\npage_rotate_ccw_label=ضد گھڑی وار گھمائیں\n\n\n\n\n# Document properties dialog box\ndocument_properties.title=دستاویز خواص…\ndocument_properties_label=دستاویز خواص…\\u0020\ndocument_properties_file_name=نام مسل:\ndocument_properties_file_size=مسل سائز:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=عنوان:\ndocument_properties_author=تخلیق کار:\ndocument_properties_subject=موضوع:\ndocument_properties_keywords=کلیدی الفاظ:\ndocument_properties_creation_date=تخلیق کی تاریخ:\ndocument_properties_modification_date=ترمیم کی تاریخ:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}، {{time}}\ndocument_properties_creator=تخلیق کار:\ndocument_properties_producer=PDF پیدا کار:\ndocument_properties_version=PDF ورژن:\ndocument_properties_page_count=صفحہ شمار:\ndocument_properties_page_size=صفہ کی لمبائ:\ndocument_properties_page_size_unit_inches=میں\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=عمودی انداز\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_legal=قانونی\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=ہاں\ndocument_properties_linearized_no=نہیں\ndocument_properties_close=بند کریں\n\nprint_progress_message=چھاپنے کرنے کے لیے دستاویز تیار کیے جا رھے ھیں\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent=*{{progress}}%*\nprint_progress_close=منسوخ کریں\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=سلائیڈ ٹوگل کریں\ntoggle_sidebar_label=سلائیڈ ٹوگل کریں\ndocument_outline.title=دستاویز کی سرخیاں دکھایں (تمام اشیاء وسیع / غائب کرنے کے لیے ڈبل کلک کریں)\ndocument_outline_label=دستاویز آؤٹ لائن\nattachments.title=منسلکات دکھائیں\nattachments_label=منسلکات\nthumbs.title=تھمبنیل دکھائیں\nthumbs_label=مجمل\nfindbar.title=دستاویز میں ڈھونڈیں\nfindbar_label=ڈھونڈیں\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=صفحہ {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=صفحے کا مجمل {{page}}\n\n# Find panel button title and messages\nfind_input.title=ڈھونڈیں\nfind_input.placeholder=دستاویز… میں ڈھونڈیں\nfind_previous.title=فقرے کا پچھلا وقوع ڈھونڈیں\nfind_previous_label=پچھلا\nfind_next.title=فقرے کا اگلہ وقوع ڈھونڈیں\nfind_next_label=آگے\nfind_highlight=تمام نمایاں کریں\nfind_match_case_label=حروف مشابہ کریں\nfind_reached_top=صفحہ کے شروع پر پہنچ گیا، نیچے سے جاری کیا\nfind_reached_bottom=صفحہ کے اختتام پر پہنچ گیا، اوپر سے جاری کیا\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_not_found=فقرا نہیں ملا\n\n# Error panel labels\nerror_more_info=مزید معلومات\nerror_less_info=کم معلومات\nerror_close=بند کریں\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=پیغام: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=سٹیک: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=مسل: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=لائن: {{line}}\nrendering_error=صفحہ بناتے ہوئے نقص آ گیا۔\n\n# Predefined zoom values\npage_scale_width=صفحہ چوڑائی\npage_scale_fit=صفحہ فٹنگ\npage_scale_auto=خودکار زوم\npage_scale_actual=اصل سائز\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=نقص\nloading_error=PDF لوڈ کرتے وقت نقص آ گیا۔\ninvalid_file_error=ناجائز یا خراب PDF مسل\nmissing_file_error=PDF مسل غائب ہے۔\nunexpected_response_error=غیرمتوقع پیش کار جواب\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} نوٹ]\npassword_label=PDF مسل کھولنے کے لیے پاس ورڈ داخل کریں.\npassword_invalid=ناجائز پاس ورڈ. براےؑ کرم دوبارہ کوشش کریں.\npassword_ok=سہی\npassword_cancel=منسوخ کریں\n\nprinting_not_supported=تنبیہ:چھاپنا اس براؤزر پر پوری طرح معاونت شدہ نہیں ہے۔\nprinting_not_ready=تنبیہ: PDF چھپائی کے لیے پوری طرح لوڈ نہیں ہوئی۔\nweb_fonts_disabled=ویب فانٹ نا اہل ہیں: شامل PDF فانٹ استعمال کرنے میں ناکام۔\ndocument_colors_not_allowed=PDF دستاویزات کو اپنے رنگ استعمال کرنے کی اجازت نہیں: 'صفحات کو اپنے رنگ چنیں' کی اِجازت براؤزر میں بے عمل ہے۔\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/uz/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Oldingi sahifa\nprevious_label=Oldingi\nnext.title=Keyingi sahifa\nnext_label=Keyingi\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=/{{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Kichiklashtirish\nzoom_out_label=Kichiklashtirish\nzoom_in.title=Kattalashtirish\nzoom_in_label=Kattalashtirish\nzoom.title=Masshtab\npresentation_mode.title=Namoyish usuliga oʻtish\npresentation_mode_label=Namoyish usuli\nopen_file.title=Faylni ochish\nopen_file_label=Ochish\nprint.title=Chop qilish\nprint_label=Chop qilish\ndownload.title=Yuklab olish\ndownload_label=Yuklab olish\nbookmark.title=Joriy koʻrinish (nusxa oling yoki yangi oynada oching)\nbookmark_label=Joriy koʻrinish\n\n# Secondary toolbar and context menu\ntools.title=Vositalar\ntools_label=Vositalar\nfirst_page.title=Birinchi sahifaga oʻtish\nfirst_page.label=Birinchi sahifaga oʻtish\nfirst_page_label=Birinchi sahifaga oʻtish\nlast_page.title=Soʻnggi sahifaga oʻtish\nlast_page.label=Soʻnggi sahifaga oʻtish\nlast_page_label=Soʻnggi sahifaga oʻtish\npage_rotate_cw.title=Soat yoʻnalishi boʻyicha burish\npage_rotate_cw.label=Soat yoʻnalishi boʻyicha burish\npage_rotate_cw_label=Soat yoʻnalishi boʻyicha burish\npage_rotate_ccw.title=Soat yoʻnalishiga qarshi burish\npage_rotate_ccw.label=Soat yoʻnalishiga qarshi burish\npage_rotate_ccw_label=Soat yoʻnalishiga qarshi burish\n\n\n# Document properties dialog box\ndocument_properties.title=Hujjat xossalari\ndocument_properties_label=Hujjat xossalari\ndocument_properties_file_name=Fayl nomi:\ndocument_properties_file_size=Fayl hajmi:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\ndocument_properties_title=Nomi:\ndocument_properties_author=Muallifi:\ndocument_properties_subject=Mavzusi:\ndocument_properties_keywords=Kalit so‘zlar\ndocument_properties_creation_date=Yaratilgan sanasi:\ndocument_properties_modification_date=O‘zgartirilgan sanasi\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Yaratuvchi:\ndocument_properties_producer=PDF ishlab chiqaruvchi:\ndocument_properties_version=PDF versiyasi:\ndocument_properties_page_count=Sahifa soni:\ndocument_properties_close=Yopish\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Yon panelni yoqib/oʻchirib qoʻyish\ntoggle_sidebar_label=Yon panelni yoqib/oʻchirib qoʻyish\ndocument_outline_label=Hujjat tuzilishi\nattachments.title=Ilovalarni ko‘rsatish\nattachments_label=Ilovalar\nthumbs.title=Nishonchalarni koʻrsatish\nthumbs_label=Nishoncha\nfindbar.title=Hujjat ichidan topish\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title={{page}} sahifa\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas={{page}} sahifa nishonchasi\n\n# Find panel button title and messages\nfind_previous.title=Soʻzlardagi oldingi hodisani topish\nfind_previous_label=Oldingi\nfind_next.title=Iboradagi keyingi hodisani topish\nfind_next_label=Keyingi\nfind_highlight=Barchasini ajratib koʻrsatish\nfind_match_case_label=Katta-kichik harflarni farqlash\nfind_reached_top=Hujjatning boshigacha yetib keldik, pastdan davom ettiriladi\nfind_reached_bottom=Hujjatning oxiriga yetib kelindi, yuqoridan davom ettirladi\nfind_not_found=Soʻzlar topilmadi\n\n# Error panel labels\nerror_more_info=Koʻproq ma`lumot\nerror_less_info=Kamroq ma`lumot\nerror_close=Yopish\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Xabar: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Toʻplam: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Fayl: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Satr: {{line}}\nrendering_error=Sahifa renderlanayotganda xato yuz berdi.\n\n# Predefined zoom values\npage_scale_width=Sahifa eni\npage_scale_fit=Sahifani moslashtirish\npage_scale_auto=Avtomatik masshtab\npage_scale_actual=Haqiqiy hajmi\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Xato\nloading_error=PDF yuklanayotganda xato yuz berdi.\ninvalid_file_error=Xato yoki buzuq PDF fayli.\nmissing_file_error=PDF fayl kerak.\nunexpected_response_error=Kutilmagan server javobi.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Annotation]\npassword_label=PDF faylni ochish uchun parolni kiriting.\npassword_invalid=Parol - notoʻgʻri. Qaytadan urinib koʻring.\npassword_ok=OK\n\nprinting_not_supported=Diqqat: chop qilish bruzer tomonidan toʻliq qoʻllab-quvvatlanmaydi.\nprinting_not_ready=Diqqat: PDF fayl chop qilish uchun toʻliq yuklanmadi.\nweb_fonts_disabled=Veb shriftlar oʻchirilgan: ichki PDF shriftlardan foydalanib boʻlmmaydi.\ndocument_colors_not_allowed=PDF hujjat oʻzining ranglaridan foydalanishga ruxsat bermaydi: 'Sahifalarga oʻzining rangidan foydalanishga ruxsat berish' ushbu brauzerda oʻchirib qoʻyilgan.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/vi/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Trang Trước\nprevious_label=Trước\nnext.title=Trang Sau\nnext_label=Tiếp\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Trang\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=trên {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} trên {{pagesCount}})\n\nzoom_out.title=Thu nhỏ\nzoom_out_label=Thu nhỏ\nzoom_in.title=Phóng to\nzoom_in_label=Phóng to\nzoom.title=Chỉnh kích thước\npresentation_mode.title=Chuyển sang chế độ trình chiếu\npresentation_mode_label=Chế độ trình chiếu\nopen_file.title=Mở tập tin\nopen_file_label=Mở tập tin\nprint.title=In\nprint_label=In\ndownload.title=Tải xuống\ndownload_label=Tải xuống\nbookmark.title=Góc nhìn hiện tại (copy hoặc mở trong cửa sổ mới)\nbookmark_label=Chế độ xem hiện tại\n\n# Secondary toolbar and context menu\ntools.title=Công cụ\ntools_label=Công cụ\nfirst_page.title=Về trang đầu\nfirst_page.label=Về trang đầu\nfirst_page_label=Về trang đầu\nlast_page.title=Đến trang cuối\nlast_page.label=Đến trang cuối\nlast_page_label=Đến trang cuối\npage_rotate_cw.title=Xoay theo chiều kim đồng hồ\npage_rotate_cw.label=Xoay theo chiều kim đồng hồ\npage_rotate_cw_label=Xoay theo chiều kim đồng hồ\npage_rotate_ccw.title=Xoay ngược chiều kim đồng hồ\npage_rotate_ccw.label=Xoay ngược chiều kim đồng hồ\npage_rotate_ccw_label=Xoay ngược chiều kim đồng hồ\n\ncursor_text_select_tool.title=Bật công cụ chọn vùng văn bản\ncursor_text_select_tool_label=Công cụ chọn vùng văn bản\ncursor_hand_tool.title=Bật công cụ con trỏ\ncursor_hand_tool_label=Công cụ con trỏ\n\n\n\n# Document properties dialog box\ndocument_properties.title=Thuộc tính của tài liệu…\ndocument_properties_label=Thuộc tính của tài liệu…\ndocument_properties_file_name=Tên tập tin:\ndocument_properties_file_size=Kích thước:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} byte)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} byte)\ndocument_properties_title=Tiêu đề:\ndocument_properties_author=Tác giả:\ndocument_properties_subject=Chủ đề:\ndocument_properties_keywords=Từ khóa:\ndocument_properties_creation_date=Ngày tạo:\ndocument_properties_modification_date=Ngày sửa đổi:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Người tạo:\ndocument_properties_producer=Phần mềm tạo PDF:\ndocument_properties_version=Phiên bản PDF:\ndocument_properties_page_count=Tổng số trang:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=khổ dọc\ndocument_properties_page_size_orientation_landscape=khổ ngang\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_legal=Pháp lý\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized_yes=Có\ndocument_properties_linearized_no=Không\ndocument_properties_close=Ðóng\n\nprint_progress_message=Chuẩn bị trang để in…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Hủy bỏ\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Bật/Tắt thanh lề\ntoggle_sidebar_notification.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm)\ntoggle_sidebar_label=Bật/Tắt thanh lề\ndocument_outline.title=Hiện tài liệu phác thảo (nhấp đúp vào để mở rộng/thu gọn tất cả các mục)\ndocument_outline_label=Bản phác tài liệu\nattachments.title=Hiện nội dung đính kèm\nattachments_label=Nội dung đính kèm\nthumbs.title=Hiển thị ảnh thu nhỏ\nthumbs_label=Ảnh thu nhỏ\nfindbar.title=Tìm trong tài liệu\nfindbar_label=Tìm\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Trang {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Ảnh thu nhỏ của trang {{page}}\n\n# Find panel button title and messages\nfind_input.title=Tìm\nfind_input.placeholder=Tìm trong tài liệu…\nfind_previous.title=Tìm cụm từ ở phần trước\nfind_previous_label=Trước\nfind_next.title=Tìm cụm từ ở phần sau\nfind_next_label=Tiếp\nfind_highlight=Tô sáng tất cả\nfind_match_case_label=Phân biệt hoa, thường\nfind_reached_top=Đã đến phần đầu tài liệu, quay trở lại từ cuối\nfind_reached_bottom=Đã đến phần cuối của tài liệu, quay trở lại từ đầu\nfind_not_found=Không tìm thấy cụm từ này\n\n# Error panel labels\nerror_more_info=Thông tin thêm\nerror_less_info=Hiển thị ít thông tin hơn\nerror_close=Đóng\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Thông điệp: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Stack: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Tập tin: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Dòng: {{line}}\nrendering_error=Lỗi khi hiển thị trang.\n\n# Predefined zoom values\npage_scale_width=Vừa chiều rộng\npage_scale_fit=Vừa chiều cao\npage_scale_auto=Tự động chọn kích thước\npage_scale_actual=Kích thước thực\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Lỗi\nloading_error=Lỗi khi tải tài liệu PDF.\ninvalid_file_error=Tập tin PDF hỏng hoặc không hợp lệ.\nmissing_file_error=Thiếu tập tin PDF.\nunexpected_response_error=Máy chủ có phản hồi lạ.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Chú thích]\npassword_label=Nhập mật khẩu để mở tập tin PDF này.\npassword_invalid=Mật khẩu không đúng. Vui lòng thử lại.\npassword_ok=OK\npassword_cancel=Hủy bỏ\n\nprinting_not_supported=Cảnh báo: In ấn không được hỗ trợ đầy đủ ở trình duyệt này.\nprinting_not_ready=Cảnh báo: PDF chưa được tải hết để in.\nweb_fonts_disabled=Phông chữ Web bị vô hiệu hóa: không thể sử dụng các phông chữ PDF được nhúng.\ndocument_colors_not_allowed=Tài liệu PDF không được cho phép dùng màu riêng: 'Cho phép trang chọn màu riêng' đã bị tắt trên trình duyệt.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/wo/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Xët wi jiitu\nprevious_label=Bi jiitu\nnext.title=Xët wi ci topp\nnext_label=Bi ci topp\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Wàññi\nzoom_out_label=Wàññi\nzoom_in.title=Yaatal\nzoom_in_label=Yaatal\nzoom.title=Yambalaŋ\npresentation_mode.title=Wañarñil ci anamu wone\npresentation_mode_label=Anamu Wone\nopen_file.title=Ubbi benn dencukaay\nopen_file_label=Ubbi\nprint.title=Móol\nprint_label=Móol\ndownload.title=Yeb yi\ndownload_label=Yeb yi\nbookmark.title=Wone bi taxaw (duppi walla ubbi palanteer bu bees)\nbookmark_label=Wone bi feeñ\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_title=Bopp:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\nthumbs.title=Wone nataal yu ndaw yi\nthumbs_label=Nataal yu ndaw yi\nfindbar.title=Gis ci biir jukki bi\nfindbar_label=Wut\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Xët {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Wiñet bu xët {{page}}\n\n# Find panel button title and messages\nfind_previous.title=Seet beneen kaddu bu ni mel te jiitu\nfind_previous_label=Bi jiitu\nfind_next.title=Seet beneen kaddu bu ni mel\nfind_next_label=Bi ci topp\nfind_highlight=Melaxal lépp\nfind_match_case_label=Sàmm jëmmalin wi\nfind_reached_top=Jot nañu ndorteel xët wi, kontine dale ko ci suuf\nfind_reached_bottom=Jot nañu jeexitalu xët wi, kontine ci ndorte\nfind_not_found=Gisiñu kaddu gi\n\n# Error panel labels\nerror_more_info=Xibaar yu gën bari\nerror_less_info=Xibaar yu gën bari\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Bataaxal: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Juug: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Dencukaay: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Rëdd : {{line}}\nrendering_error=Am njumte bu am bi xët bi di wonewu.\n\n# Predefined zoom values\npage_scale_width=Yaatuwaay bu mët\npage_scale_fit=Xët lëmm\npage_scale_auto=Yambalaŋ ci saa si\npage_scale_actual=Dayo bi am\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Njumte\nloading_error=Am na njumte ci yebum dencukaay PDF bi.\ninvalid_file_error=Dencukaay PDF bi baaxul walla mu sankar.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Karmat {{type}}]\npassword_ok=OK\npassword_cancel=Neenal\n\nprinting_not_supported=Artu: Joowkat bii nanguwul lool mool.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/xh/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Iphepha langaphambili\nprevious_label=Okwangaphambili\nnext.title=Iphepha elilandelayo\nnext_label=Okulandelayo\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=Iphepha\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=kwali- {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} kwali {{pagesCount}})\n\nzoom_out.title=Bhekelisela Kudana\nzoom_out_label=Bhekelisela Kudana\nzoom_in.title=Sondeza Kufuphi\nzoom_in_label=Sondeza Kufuphi\nzoom.title=Yandisa / Nciphisa\npresentation_mode.title=Tshintshela kwimo yonikezelo\npresentation_mode_label=Imo yonikezelo\nopen_file.title=Vula Ifayile\nopen_file_label=Vula\nprint.title=Printa\nprint_label=Printa\ndownload.title=Khuphela\ndownload_label=Khuphela\nbookmark.title=Imbonakalo ekhoyo (kopa okanye vula kwifestile entsha)\nbookmark_label=Imbonakalo ekhoyo\n\n# Secondary toolbar and context menu\ntools.title=Izixhobo zemiyalelo\ntools_label=Izixhobo zemiyalelo\nfirst_page.title=Yiya kwiphepha lokuqala\nfirst_page.label=Yiya kwiphepha lokuqala\nfirst_page_label=Yiya kwiphepha lokuqala\nlast_page.title=Yiya kwiphepha lokugqibela\nlast_page.label=Yiya kwiphepha lokugqibela\nlast_page_label=Yiya kwiphepha lokugqibela\npage_rotate_cw.title=Jikelisa ngasekunene\npage_rotate_cw.label=Jikelisa ngasekunene\npage_rotate_cw_label=Jikelisa ngasekunene\npage_rotate_ccw.title=Jikelisa ngasekhohlo\npage_rotate_ccw.label=Jikelisa ngasekhohlo\npage_rotate_ccw_label=Jikelisa ngasekhohlo\n\ncursor_text_select_tool.title=Vumela iSixhobo sokuKhetha iTeksti\ncursor_text_select_tool_label=ISixhobo sokuKhetha iTeksti\ncursor_hand_tool.title=Yenza iSixhobo seSandla siSebenze\ncursor_hand_tool_label=ISixhobo seSandla\n\n# Document properties dialog box\ndocument_properties.title=Iipropati zoxwebhu…\ndocument_properties_label=Iipropati zoxwebhu…\ndocument_properties_file_name=Igama lefayile:\ndocument_properties_file_size=Isayizi yefayile:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB (iibhayiti{{size_b}})\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB (iibhayithi{{size_b}})\ndocument_properties_title=Umxholo:\ndocument_properties_author=Umbhali:\ndocument_properties_subject=Umbandela:\ndocument_properties_keywords=Amagama aphambili:\ndocument_properties_creation_date=Umhla wokwenziwa kwayo:\ndocument_properties_modification_date=Umhla wokulungiswa kwayo:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=Umntu oyenzileyo:\ndocument_properties_producer=Umvelisi we-PDF:\ndocument_properties_version=Uhlelo lwe-PDF:\ndocument_properties_page_count=Inani lamaphepha:\ndocument_properties_close=Vala\n\nprint_progress_message=Ilungisa uxwebhu ukuze iprinte…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=Rhoxisa\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=Togola ngebha eseCaleni\ntoggle_sidebar_notification.title=ISidebar yeQhosha (uxwebhu lunolwandlalo/iziqhotyoshelwa)\ntoggle_sidebar_label=Togola ngebha eseCaleni\ndocument_outline.title=Bonisa uLwandlalo loXwebhu (cofa kabini ukuze wandise/diliza zonke izinto)\ndocument_outline_label=Isishwankathelo soxwebhu\nattachments.title=Bonisa iziqhotyoshelwa\nattachments_label=Iziqhoboshelo\nthumbs.title=Bonisa ukrobiso kumfanekiso\nthumbs_label=Ukrobiso kumfanekiso\nfindbar.title=Fumana kuXwebhu\nfindbar_label=Fumana\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Iphepha {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Ukrobiso kumfanekiso wephepha {{page}}\n\n# Find panel button title and messages\nfind_input.title=Fumana\nfind_input.placeholder=Fumana kuXwebhu…\nfind_previous.title=Fumanisa isenzeko sangaphambili sebinzana lamagama\nfind_previous_label=Okwangaphambili\nfind_next.title=Fumanisa isenzeko esilandelayo sebinzana lamagama\nfind_next_label=Okulandelayo\nfind_highlight=Qaqambisa konke\nfind_match_case_label=Tshatisa ngobukhulu bukanobumba\nfind_reached_top=Ufike ngaphezulu ephepheni, kusukwa ngezantsi\nfind_reached_bottom=Ufike ekupheleni kwephepha, kusukwa ngaphezulu\nfind_not_found=Ibinzana alifunyenwanga\n\n# Error panel labels\nerror_more_info=Inkcazelo Engakumbi\nerror_less_info=Inkcazelo Encinane\nerror_close=Vala\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=I-PDF.js v{{version}} (yakha: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Umyalezo: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Imfumba: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Ifayile: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Umgca: {{line}}\nrendering_error=Imposiso yenzekile xa bekunikezelwa iphepha.\n\n# Predefined zoom values\npage_scale_width=Ububanzi bephepha\npage_scale_fit=Ukulinganiswa kwephepha\npage_scale_auto=Ukwandisa/Ukunciphisa Ngokwayo\npage_scale_actual=Ubungakanani bokwenene\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=Imposiso\nloading_error=Imposiso yenzekile xa kulayishwa i-PDF.\ninvalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo.\nmissing_file_error=Ifayile ye-PDF edukileyo.\nunexpected_response_error=Impendulo yeseva engalindelekanga.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} Ubhalo-nqaku]\npassword_label=Faka ipasiwedi ukuze uvule le fayile yePDF.\npassword_invalid=Ipasiwedi ayisebenzi. Nceda uzame kwakhona.\npassword_ok=KULUNGILE\npassword_cancel=Rhoxisa\n\nprinting_not_supported=Isilumkiso: Ukuprinta akuxhaswa ngokupheleleyo yile bhrawuza.\nprinting_not_ready=Isilumkiso: IPDF ayihlohlwanga ngokupheleleyo ukwenzela ukuprinta.\nweb_fonts_disabled=Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa iifonti ze-PDF ezincanyathelisiweyo.\ndocument_colors_not_allowed=Amaxwebhu ePDF akavumelekanga ukuba asebenzise imibala yawo: 'Ukuvumela amaphepha ukuba asebenzise eyawo imibala' kuvaliwe ukuba kungasebenzi kwibhrawuza.\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/zam/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Lii lut ah\nzoom_out_label=Lii lut ah\nzoom_in.title=Lii mach ah\nzoom_in_label=Lii mach ah\nzoom.title=Xha niey\nopen_file.title=Xhal yets ndedizh\nopen_file_label=Xhal\n\n# Secondary toolbar and context menu\ntools.title=Koo lii chel\ntools_label=Koo lii chel\n\n\n# Document properties dialog box\ndocument_properties.title=Sá nìe yêtz...\ndocument_properties_label=Sá nìe yêtz...\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} bytes)\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_close=TòɁw\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\nattachments.title=Mb-&lòɁ yêtz\nthumbs_label=Thumbnails\nfindbar.title=GòzăɁl lèɁn yêtz\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\n\n# Find panel button title and messages\n\n# Error panel labels\nerror_close=TòɁw\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\n\n# Predefined zoom values\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\npassword_ok=Bliy\n\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/zh-CN/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=上一页\nprevious_label=上一页\nnext.title=下一页\nnext_label=下一页\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=页面\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=/ {{pagesCount}}\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=({{pageNumber}} / {{pagesCount}})\n\nzoom_out.title=缩小\nzoom_out_label=缩小\nzoom_in.title=放大\nzoom_in_label=放大\nzoom.title=缩放\npresentation_mode.title=切换到演示模式\npresentation_mode_label=演示模式\nopen_file.title=打开文件\nopen_file_label=打开\nprint.title=打印\nprint_label=打印\ndownload.title=下载\ndownload_label=下载\nbookmark.title=当前在看的内容（复制或在新窗口中打开）\nbookmark_label=当前在看\n\n# Secondary toolbar and context menu\ntools.title=工具\ntools_label=工具\nfirst_page.title=转到第一页\nfirst_page.label=转到第一页\nfirst_page_label=转到第一页\nlast_page.title=转到最后一页\nlast_page.label=转到最后一页\nlast_page_label=转到最后一页\npage_rotate_cw.title=顺时针旋转\npage_rotate_cw.label=顺时针旋转\npage_rotate_cw_label=顺时针旋转\npage_rotate_ccw.title=逆时针旋转\npage_rotate_ccw.label=逆时针旋转\npage_rotate_ccw_label=逆时针旋转\n\ncursor_text_select_tool.title=启用文本选择工具\ncursor_text_select_tool_label=文本选择工具\ncursor_hand_tool.title=启用手形工具\ncursor_hand_tool_label=手形工具\n\nscroll_vertical.title=使用垂直滚动\nscroll_vertical_label=垂直滚动\nscroll_horizontal.title=使用水平滚动\nscroll_horizontal_label=水平滚动\nscroll_wrapped.title=使用平铺滚动\nscroll_wrapped_label=平铺滚动\n\nspread_none.title=不加入衔接页\nspread_none_label=单页视图\nspread_odd.title=加入衔接页使奇数页作为起始页\nspread_odd_label=双页视图\nspread_even.title=加入衔接页使偶数页作为起始页\nspread_even_label=书籍视图\n\n# Document properties dialog box\ndocument_properties.title=文档属性…\ndocument_properties_label=文档属性…\ndocument_properties_file_name=文件名:\ndocument_properties_file_size=文件大小:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB ({{size_b}} 字节)\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB ({{size_b}} 字节)\ndocument_properties_title=标题:\ndocument_properties_author=作者:\ndocument_properties_subject=主题:\ndocument_properties_keywords=关键词:\ndocument_properties_creation_date=创建日期:\ndocument_properties_modification_date=修改日期:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=创建者:\ndocument_properties_producer=PDF 生成器：\ndocument_properties_version=PDF 版本:\ndocument_properties_page_count=页数:\ndocument_properties_page_size=页面大小：\ndocument_properties_page_size_unit_inches=英寸\ndocument_properties_page_size_unit_millimeters=毫米\ndocument_properties_page_size_orientation_portrait=纵向\ndocument_properties_page_size_orientation_landscape=横向\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=文本\ndocument_properties_page_size_name_legal=法律\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}（{{orientation}}）\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}}（{{name}}，{{orientation}}）\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=快速 Web 视图：\ndocument_properties_linearized_yes=是\ndocument_properties_linearized_no=否\ndocument_properties_close=关闭\n\nprint_progress_message=正在准备打印文档…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=取消\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=切换侧栏\ntoggle_sidebar_notification.title=切换侧栏（文档所含的大纲/附件）\ntoggle_sidebar_label=切换侧栏\ndocument_outline.title=显示文档大纲（双击展开/折叠所有项）\ndocument_outline_label=文档大纲\nattachments.title=显示附件\nattachments_label=附件\nthumbs.title=显示缩略图\nthumbs_label=缩略图\nfindbar.title=在文档中查找\nfindbar_label=查找\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=页码 {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=页面 {{page}} 的缩略图\n\n# Find panel button title and messages\nfind_input.title=查找\nfind_input.placeholder=在文档中查找…\nfind_previous.title=查找词语上一次出现的位置\nfind_previous_label=上一页\nfind_next.title=查找词语后一次出现的位置\nfind_next_label=下一页\nfind_highlight=全部高亮显示\nfind_match_case_label=区分大小写\nfind_entire_word_label=字词匹配\nfind_reached_top=到达文档开头，从末尾继续\nfind_reached_bottom=到达文档末尾，从开头继续\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]=第 {{current}} 项，共匹配 {{total}} 项\nfind_match_count[two]=第 {{current}} 项，共匹配 {{total}} 项\nfind_match_count[few]=第 {{current}} 项，共匹配 {{total}} 项\nfind_match_count[many]=第 {{current}} 项，共匹配 {{total}} 项\nfind_match_count[other]=第 {{current}} 项，共匹配 {{total}} 项\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=超过 {{limit}} 项匹配\nfind_match_count_limit[one]=超过 {{limit}} 项匹配\nfind_match_count_limit[two]=超过 {{limit}} 项匹配\nfind_match_count_limit[few]=超过 {{limit}} 项匹配\nfind_match_count_limit[many]=超过 {{limit}} 项匹配\nfind_match_count_limit[other]=超过 {{limit}} 项匹配\nfind_not_found=找不到指定词语\n\n# Error panel labels\nerror_more_info=更多信息\nerror_less_info=更少信息\nerror_close=关闭\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=信息：{{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=堆栈：{{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=文件：{{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=行号：{{line}}\nrendering_error=渲染页面时发生错误。\n\n# Predefined zoom values\npage_scale_width=适合页宽\npage_scale_fit=适合页面\npage_scale_auto=自动缩放\npage_scale_actual=实际大小\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=错误\nloading_error=载入 PDF 时发生错误。\ninvalid_file_error=无效或损坏的 PDF 文件。\nmissing_file_error=缺少 PDF 文件。\nunexpected_response_error=意外的服务器响应。\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} 注释]\npassword_label=输入密码以打开此 PDF 文件。\npassword_invalid=密码无效。请重试。\npassword_ok=确定\npassword_cancel=取消\n\nprinting_not_supported=警告：此浏览器尚未完整支持打印功能。\nprinting_not_ready=警告：该 PDF 未完全载入以供打印。\nweb_fonts_disabled=Web 字体已被禁用：无法使用嵌入的 PDF 字体。\ndocument_colors_not_allowed=PDF 文档无法使用自己的颜色：浏览器中“允许页面选择自己的颜色”的选项未被勾选。\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/zh-TW/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=上一頁\nprevious_label=上一頁\nnext.title=下一頁\nnext_label=下一頁\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\npage.title=第\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\nof_pages=頁，共 {{pagesCount}} 頁\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\npage_of_pages=（第 {{pageNumber}} 頁，共 {{pagesCount}} 頁）\n\nzoom_out.title=縮小\nzoom_out_label=縮小\nzoom_in.title=放大\nzoom_in_label=放大\nzoom.title=縮放\npresentation_mode.title=切換至簡報模式\npresentation_mode_label=簡報模式\nopen_file.title=開啟檔案\nopen_file_label=開啟\nprint.title=列印\nprint_label=列印\ndownload.title=下載\ndownload_label=下載\nbookmark.title=目前檢視的內容（複製或開啟於新視窗）\nbookmark_label=目前檢視\n\n# Secondary toolbar and context menu\ntools.title=工具\ntools_label=工具\nfirst_page.title=跳到第一頁\nfirst_page.label=跳到第一頁\nfirst_page_label=跳到第一頁\nlast_page.title=跳到最後一頁\nlast_page.label=跳到最後一頁\nlast_page_label=跳到最後一頁\npage_rotate_cw.title=順時針旋轉\npage_rotate_cw.label=順時針旋轉\npage_rotate_cw_label=順時針旋轉\npage_rotate_ccw.title=逆時針旋轉\npage_rotate_ccw.label=逆時針旋轉\npage_rotate_ccw_label=逆時針旋轉\n\ncursor_text_select_tool.title=開啟文字選擇工具\ncursor_text_select_tool_label=文字選擇工具\ncursor_hand_tool.title=開啟頁面移動工具\ncursor_hand_tool_label=頁面移動工具\n\nscroll_vertical.title=使用垂直捲動版面\nscroll_vertical_label=垂直捲動\nscroll_horizontal.title=使用水平捲動版面\nscroll_horizontal_label=水平捲動\nscroll_wrapped.title=使用多頁捲動版面\nscroll_wrapped_label=多頁捲動\n\nspread_none.title=不要進行跨頁顯示\nspread_none_label=不跨頁\nspread_odd.title=從奇數頁開始跨頁\nspread_odd_label=奇數跨頁\nspread_even.title=從偶數頁開始跨頁\nspread_even_label=偶數跨頁\n\n# Document properties dialog box\ndocument_properties.title=文件內容…\ndocument_properties_label=文件內容…\ndocument_properties_file_name=檔案名稱:\ndocument_properties_file_size=檔案大小:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\ndocument_properties_kb={{size_kb}} KB（{{size_b}} 位元組）\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_mb={{size_mb}} MB（{{size_b}} 位元組）\ndocument_properties_title=標題:\ndocument_properties_author=作者:\ndocument_properties_subject=主旨:\ndocument_properties_keywords=關鍵字:\ndocument_properties_creation_date=建立日期:\ndocument_properties_modification_date=修改日期:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\ndocument_properties_date_string={{date}}, {{time}}\ndocument_properties_creator=建立者:\ndocument_properties_producer=PDF 產生器:\ndocument_properties_version=PDF 版本:\ndocument_properties_page_count=頁數:\ndocument_properties_page_size=頁面大小:\ndocument_properties_page_size_unit_inches=in\ndocument_properties_page_size_unit_millimeters=mm\ndocument_properties_page_size_orientation_portrait=垂直\ndocument_properties_page_size_orientation_landscape=水平\ndocument_properties_page_size_name_a3=A3\ndocument_properties_page_size_name_a4=A4\ndocument_properties_page_size_name_letter=Letter\ndocument_properties_page_size_name_legal=Legal\n# LOCALIZATION NOTE (document_properties_page_size_dimension_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement and orientation, of the (current) page.\ndocument_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}（{{orientation}}）\n# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):\n# \"{{width}}\", \"{{height}}\", {{unit}}, {{name}}, and {{orientation}} will be replaced by\n# the size, respectively their unit of measurement, name, and orientation, of the (current) page.\ndocument_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}}（{{name}}，{{orientation}}）\n# LOCALIZATION NOTE (document_properties_linearized): The linearization status of\n# the document; usually called \"Fast Web View\" in English locales of Adobe software.\ndocument_properties_linearized=快速 Web 檢視:\ndocument_properties_linearized_yes=是\ndocument_properties_linearized_no=否\ndocument_properties_close=關閉\n\nprint_progress_message=正在準備列印文件…\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\nprint_progress_percent={{progress}}%\nprint_progress_close=取消\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=切換側邊欄\ntoggle_sidebar_notification.title=切換側邊攔（文件包含大綱或附件）\ntoggle_sidebar_label=切換側邊欄\ndocument_outline.title=顯示文件大綱（雙擊展開/摺疊所有項目）\ndocument_outline_label=文件大綱\nattachments.title=顯示附件\nattachments_label=附件\nthumbs.title=顯示縮圖\nthumbs_label=縮圖\nfindbar.title=在文件中尋找\nfindbar_label=尋找\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=頁 {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=頁 {{page}} 的縮圖\n\n# Find panel button title and messages\nfind_input.title=搜尋\nfind_input.placeholder=在文件中搜尋…\nfind_previous.title=尋找文字前次出現的位置\nfind_previous_label=上一個\nfind_next.title=尋找文字下次出現的位置\nfind_next_label=下一個\nfind_highlight=全部強調標示\nfind_match_case_label=區分大小寫\nfind_entire_word_label=符合整個字\nfind_reached_top=已搜尋至文件頂端，自底端繼續搜尋\nfind_reached_bottom=已搜尋至文件底端，自頂端繼續搜尋\n# LOCALIZATION NOTE (find_match_count): The supported plural forms are\n# [one|two|few|many|other], with [other] as the default value.\n# \"{{current}}\" and \"{{total}}\" will be replaced by a number representing the\n# index of the currently active find result, respectively a number representing\n# the total number of matches in the document.\nfind_match_count={[ plural(total) ]}\nfind_match_count[one]=第 {{current}} 筆，共找到 {{total}} 筆\nfind_match_count[two]=第 {{current}} 筆，共找到 {{total}} 筆\nfind_match_count[few]=第 {{current}} 筆，共找到 {{total}} 筆\nfind_match_count[many]=第 {{current}} 筆，共找到 {{total}} 筆\nfind_match_count[other]=第 {{current}} 筆，共找到 {{total}} 筆\n# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are\n# [zero|one|two|few|many|other], with [other] as the default value.\n# \"{{limit}}\" will be replaced by a numerical value.\nfind_match_count_limit={[ plural(limit) ]}\nfind_match_count_limit[zero]=找到超過 {{limit}} 筆\nfind_match_count_limit[one]=找到超過 {{limit}} 筆\nfind_match_count_limit[two]=找到超過 {{limit}} 筆\nfind_match_count_limit[few]=找到超過 {{limit}} 筆\nfind_match_count_limit[many]=找到超過 {{limit}} 筆\nfind_match_count_limit[other]=找到超過 {{limit}} 筆\nfind_not_found=找不到指定文字\n\n# Error panel labels\nerror_more_info=更多資訊\nerror_less_info=更少資訊\nerror_close=關閉\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=訊息: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=堆疊: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=檔案: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=行: {{line}}\nrendering_error=描繪頁面時發生錯誤。\n\n# Predefined zoom values\npage_scale_width=頁面寬度\npage_scale_fit=縮放至頁面大小\npage_scale_auto=自動縮放\npage_scale_actual=實際大小\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\npage_scale_percent={{scale}}%\n\n# Loading indicator messages\nloading_error_indicator=錯誤\nloading_error=載入 PDF 時發生錯誤。\ninvalid_file_error=無效或毀損的 PDF 檔案。\nmissing_file_error=找不到 PDF 檔案。\nunexpected_response_error=伺服器回應未預期的內容。\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[{{type}} 註解]\npassword_label=請輸入用來開啟此 PDF 檔案的密碼。\npassword_invalid=密碼不正確，請再試一次。\npassword_ok=確定\npassword_cancel=取消\n\nprinting_not_supported=警告: 此瀏覽器未完整支援列印功能。\nprinting_not_ready=警告: 此 PDF 未完成下載以供列印。\nweb_fonts_disabled=已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。\ndocument_colors_not_allowed=瀏覽器的「優先使用網頁指定的色彩」未被勾選，PDF 文件無法使用自己的色彩。\n"
  },
  {
    "path": "static/js/pdfjs/web/locale/zu/viewer.properties",
    "content": "# Copyright 2012 Mozilla Foundation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Main toolbar buttons (tooltips and alt text for images)\nprevious.title=Ikhasi eledlule\nprevious_label=Okudlule\nnext.title=Ikhasi elilandelayo\nnext_label=Okulandelayo\n\n# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.\n# LOCALIZATION NOTE (of_pages): \"{{pagesCount}}\" will be replaced by a number\n# representing the total number of pages in the document.\n# LOCALIZATION NOTE (page_of_pages): \"{{pageNumber}}\" and \"{{pagesCount}}\"\n# will be replaced by a number representing the currently visible page,\n# respectively a number representing the total number of pages in the document.\n\nzoom_out.title=Hlehlisela emuva\nzoom_out_label=Hlehlisela emuva\nzoom_in.title=Sondeza eduze\nzoom_in_label=Sondeza eduze\nzoom.title=Lwiza\npresentation_mode.title=Guqulela kwindlela yesethulo\npresentation_mode_label=Indlelo yesethulo\nopen_file.title=Vula ifayela\nopen_file_label=Vula\nprint.title=Phrinta\nprint_label=Phrinta\ndownload.title=Landa\ndownload_label=Landa\nbookmark.title=Ukubuka kwamanje (kopisha noma vula kwifasitela elisha)\nbookmark_label=Ukubuka kwamanje\n\n# Secondary toolbar and context menu\n\n\n# Document properties dialog box\ndocument_properties_file_name=Igama lefayela:\n# LOCALIZATION NOTE (document_properties_kb): \"{{size_kb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in kilobytes, respectively in bytes.\n# LOCALIZATION NOTE (document_properties_mb): \"{{size_mb}}\" and \"{{size_b}}\"\n# will be replaced by the PDF file size in megabytes, respectively in bytes.\ndocument_properties_title=Isihloko:\n# LOCALIZATION NOTE (document_properties_date_string): \"{{date}}\" and \"{{time}}\"\n# will be replaced by the creation/modification date, and time, of the PDF file.\n\n# LOCALIZATION NOTE (print_progress_percent): \"{{progress}}\" will be replaced by\n# a numerical per cent value.\n\n# Tooltips and alt text for side panel toolbar buttons\n# (the _label strings are alt text for the buttons, the .title strings are\n# tooltips)\ntoggle_sidebar.title=I-toggle yebha yaseceleni\ntoggle_sidebar_label=i-toggle yebha yaseceleni\ndocument_outline_label=Umugqa waseceleni wedokhumenti\nthumbs.title=Bonisa izithombe ezincane\nthumbs_label=Izithonjana\nfindbar.title=Thola kwidokhumenti\n\n# Thumbnails panel item (tooltip and alt text for images)\n# LOCALIZATION NOTE (thumb_page_title): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_title=Ikhasi {{page}}\n# LOCALIZATION NOTE (thumb_page_canvas): \"{{page}}\" will be replaced by the page\n# number.\nthumb_page_canvas=Isithonjana sekhasi {{page}}\n\n# Find panel button title and messages\nfind_previous.title=Thola indawo eyandulelayo okuvela kuyo lomshwana\nfind_previous_label=Okudlulile\nfind_next.title=Thola enye indawo okuvela kuyo lomshwana\nfind_next_label=Okulandelayo\nfind_highlight=Gqamisa konke\nfind_match_case_label=Fanisa ikheyisi\nfind_reached_top=Finyelele phezulu kwidokhumenti, qhubeka kusukaphansi\nfind_reached_bottom=Ifinyelele ekupheleni kwedokhumenti, qhubeka kusukaphezulu\nfind_not_found=Umshwana awutholakali\n\n# Error panel labels\nerror_more_info=Ukwaziswa Okwengeziwe\nerror_less_info=Ukwazi okuncane\n# LOCALIZATION NOTE (error_version_info): \"{{version}}\" and \"{{build}}\" will be\n# replaced by the PDF.JS version and build ID.\nerror_version_info=PDF.js v{{version}} (build: {{build}})\n# LOCALIZATION NOTE (error_message): \"{{message}}\" will be replaced by an\n# english string describing the error.\nerror_message=Umlayezo: {{message}}\n# LOCALIZATION NOTE (error_stack): \"{{stack}}\" will be replaced with a stack\n# trace.\nerror_stack=Isitaki: {{stack}}\n# LOCALIZATION NOTE (error_file): \"{{file}}\" will be replaced with a filename\nerror_file=Ifayela: {{file}}\n# LOCALIZATION NOTE (error_line): \"{{line}}\" will be replaced with a line number\nerror_line=Umugqa: {{line}}\nrendering_error=Iphutha lenzekile uma kunikwa ikhasi.\n\n# Predefined zoom values\npage_scale_width=Ububanzi bekhasi\npage_scale_fit=Ukulingana kwekhasi\npage_scale_auto=Ukulwiza okuzenzekalelayo\npage_scale_actual=Usayizi Wangempela\n# LOCALIZATION NOTE (page_scale_percent): \"{{scale}}\" will be replaced by a\n# numerical scale value.\n\n# Loading indicator messages\nloading_error_indicator=Iphutha\nloading_error=Kwenzeke iphutha uma kulayishwa i-PDF.\ninvalid_file_error=Ifayela le-PDF elingavumelekile noma elonakele.\nmissing_file_error=Ifayela le-PDF elilahlekile.\n\n# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.\n# \"{{type}}\" will be replaced with an annotation type from a list defined in\n# the PDF spec (32000-1:2008 Table 169 – Annotation types).\n# Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\ntext_annotation_type.alt=[Amazwibela e-{{type}}]\npassword_ok=Kulungile\n\nprinting_not_supported=Isixwayiso: Ukuphrinta akuxhasiwe yilesisiphequluli ngokugcwele.\nprinting_not_ready=Isixwayiso: I-PDF ayikalayishwa ngokuphelele yiPhrinta.\nweb_fonts_disabled=Amafonti e-webhu akutshaziwe: ayikwazi ukusebenzisa amafonti abekiwe e-PDF.\\u0020\ndocument_colors_not_allowed=Amadokhumenti we-PDF awavumelekile ukusebenzisa imibalo yayo: 'Vumela amakhasi ukukhetha imibala yayo' ayisebenzi kusiphequluli.\n"
  },
  {
    "path": "static/js/pdfjs/web/viewer.css",
    "content": "/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.textLayer {\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  overflow: hidden;\n  opacity: 0.2;\n  line-height: 1.0;\n}\n\n.textLayer > div {\n  color: transparent;\n  position: absolute;\n  white-space: pre;\n  cursor: text;\n  -webkit-transform-origin: 0% 0%;\n          transform-origin: 0% 0%;\n}\n\n.textLayer .highlight {\n  margin: -1px;\n  padding: 1px;\n\n  background-color: rgb(180, 0, 170);\n  border-radius: 4px;\n}\n\n.textLayer .highlight.begin {\n  border-radius: 4px 0px 0px 4px;\n}\n\n.textLayer .highlight.end {\n  border-radius: 0px 4px 4px 0px;\n}\n\n.textLayer .highlight.middle {\n  border-radius: 0px;\n}\n\n.textLayer .highlight.selected {\n  background-color: rgb(0, 100, 0);\n}\n\n.textLayer ::-moz-selection { background: rgb(0,0,255); }\n\n.textLayer ::selection { background: rgb(0,0,255); }\n\n.textLayer .endOfContent {\n  display: block;\n  position: absolute;\n  left: 0px;\n  top: 100%;\n  right: 0px;\n  bottom: 0px;\n  z-index: -1;\n  cursor: default;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n}\n\n.textLayer .endOfContent.active {\n  top: 0px;\n}\n\n\n.annotationLayer section {\n  position: absolute;\n}\n\n.annotationLayer .linkAnnotation > a,\n.annotationLayer .buttonWidgetAnnotation.pushButton > a {\n  position: absolute;\n  font-size: 1em;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.annotationLayer .linkAnnotation > a:hover,\n.annotationLayer .buttonWidgetAnnotation.pushButton > a:hover {\n  opacity: 0.2;\n  background: #ff0;\n  box-shadow: 0px 2px 10px #ff0;\n}\n\n.annotationLayer .textAnnotation img {\n  position: absolute;\n  cursor: pointer;\n}\n\n.annotationLayer .textWidgetAnnotation input,\n.annotationLayer .textWidgetAnnotation textarea,\n.annotationLayer .choiceWidgetAnnotation select,\n.annotationLayer .buttonWidgetAnnotation.checkBox input,\n.annotationLayer .buttonWidgetAnnotation.radioButton input {\n  background-color: rgba(0, 54, 255, 0.13);\n  border: 1px solid transparent;\n  box-sizing: border-box;\n  font-size: 9px;\n  height: 100%;\n  margin: 0;\n  padding: 0 3px;\n  vertical-align: top;\n  width: 100%;\n}\n\n.annotationLayer .choiceWidgetAnnotation select option {\n  padding: 0;\n}\n\n.annotationLayer .buttonWidgetAnnotation.radioButton input {\n  border-radius: 50%;\n}\n\n.annotationLayer .textWidgetAnnotation textarea {\n  font: message-box;\n  font-size: 9px;\n  resize: none;\n}\n\n.annotationLayer .textWidgetAnnotation input[disabled],\n.annotationLayer .textWidgetAnnotation textarea[disabled],\n.annotationLayer .choiceWidgetAnnotation select[disabled],\n.annotationLayer .buttonWidgetAnnotation.checkBox input[disabled],\n.annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] {\n  background: none;\n  border: 1px solid transparent;\n  cursor: not-allowed;\n}\n\n.annotationLayer .textWidgetAnnotation input:hover,\n.annotationLayer .textWidgetAnnotation textarea:hover,\n.annotationLayer .choiceWidgetAnnotation select:hover,\n.annotationLayer .buttonWidgetAnnotation.checkBox input:hover,\n.annotationLayer .buttonWidgetAnnotation.radioButton input:hover {\n  border: 1px solid #000;\n}\n\n.annotationLayer .textWidgetAnnotation input:focus,\n.annotationLayer .textWidgetAnnotation textarea:focus,\n.annotationLayer .choiceWidgetAnnotation select:focus {\n  background: none;\n  border: 1px solid transparent;\n}\n\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,\n.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before {\n  background-color: #000;\n  content: '';\n  display: block;\n  position: absolute;\n}\n\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after {\n  height: 80%;\n  left: 45%;\n  width: 1px;\n}\n\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before {\n  -webkit-transform: rotate(45deg);\n          transform: rotate(45deg);\n}\n\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after {\n  -webkit-transform: rotate(-45deg);\n          transform: rotate(-45deg);\n}\n\n.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before {\n  border-radius: 50%;\n  height: 50%;\n  left: 30%;\n  top: 20%;\n  width: 50%;\n}\n\n.annotationLayer .textWidgetAnnotation input.comb {\n  font-family: monospace;\n  padding-left: 2px;\n  padding-right: 0;\n}\n\n.annotationLayer .textWidgetAnnotation input.comb:focus {\n  /*\n   * Letter spacing is placed on the right side of each character. Hence, the\n   * letter spacing of the last character may be placed outside the visible\n   * area, causing horizontal scrolling. We avoid this by extending the width\n   * when the element has focus and revert this when it loses focus.\n   */\n  width: 115%;\n}\n\n.annotationLayer .buttonWidgetAnnotation.checkBox input,\n.annotationLayer .buttonWidgetAnnotation.radioButton input {\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none;\n  padding: 0;\n}\n\n.annotationLayer .popupWrapper {\n  position: absolute;\n  width: 20em;\n}\n\n.annotationLayer .popup {\n  position: absolute;\n  z-index: 200;\n  max-width: 20em;\n  background-color: #FFFF99;\n  box-shadow: 0px 2px 5px #333;\n  border-radius: 2px;\n  padding: 0.6em;\n  margin-left: 5px;\n  cursor: pointer;\n  font: message-box;\n  word-wrap: break-word;\n}\n\n.annotationLayer .popup h1 {\n  font-size: 1em;\n  border-bottom: 1px solid #000000;\n  margin: 0;\n  padding-bottom: 0.2em;\n}\n\n.annotationLayer .popup p {\n  margin: 0;\n  padding-top: 0.2em;\n}\n\n.annotationLayer .highlightAnnotation,\n.annotationLayer .underlineAnnotation,\n.annotationLayer .squigglyAnnotation,\n.annotationLayer .strikeoutAnnotation,\n.annotationLayer .lineAnnotation svg line,\n.annotationLayer .squareAnnotation svg rect,\n.annotationLayer .circleAnnotation svg ellipse,\n.annotationLayer .polylineAnnotation svg polyline,\n.annotationLayer .polygonAnnotation svg polygon,\n.annotationLayer .inkAnnotation svg polyline,\n.annotationLayer .stampAnnotation,\n.annotationLayer .fileAttachmentAnnotation {\n  cursor: pointer;\n}\n\n.pdfViewer .canvasWrapper {\n  overflow: hidden;\n}\n\n.pdfViewer .page {\n  direction: ltr;\n  width: 816px;\n  height: 1056px;\n  margin: 1px auto -8px auto;\n  position: relative;\n  overflow: visible;\n  border: 9px solid transparent;\n  background-clip: content-box;\n  -o-border-image: url(images/shadow.png) 9 9 repeat;\n     border-image: url(images/shadow.png) 9 9 repeat;\n  background-color: white;\n}\n\n.pdfViewer.removePageBorders .page {\n  margin: 0px auto 10px auto;\n  border: none;\n}\n\n.pdfViewer.singlePageView {\n  display: inline-block;\n}\n\n.pdfViewer.singlePageView .page {\n  margin: 0;\n  border: none;\n}\n\n.pdfViewer.scrollHorizontal, .pdfViewer.scrollWrapped, .spread {\n  margin-left: 3.5px;\n  margin-right: 3.5px;\n  text-align: center;\n}\n\n.pdfViewer.scrollHorizontal, .spread {\n  white-space: nowrap;\n}\n\n.pdfViewer.removePageBorders,\n.pdfViewer.scrollHorizontal .spread,\n.pdfViewer.scrollWrapped .spread {\n  margin-left: 0;\n  margin-right: 0;\n}\n\n.spread .page,\n.pdfViewer.scrollHorizontal .page,\n.pdfViewer.scrollWrapped .page,\n.pdfViewer.scrollHorizontal .spread,\n.pdfViewer.scrollWrapped .spread {\n  display: inline-block;\n  vertical-align: middle;\n}\n\n.spread .page,\n.pdfViewer.scrollHorizontal .page,\n.pdfViewer.scrollWrapped .page {\n  margin-left: -3.5px;\n  margin-right: -3.5px;\n}\n\n.pdfViewer.removePageBorders .spread .page,\n.pdfViewer.removePageBorders.scrollHorizontal .page,\n.pdfViewer.removePageBorders.scrollWrapped .page {\n  margin-left: 5px;\n  margin-right: 5px;\n}\n\n.pdfViewer .page canvas {\n  margin: 0;\n  display: block;\n}\n\n.pdfViewer .page canvas[hidden] {\n  display: none;\n}\n\n.pdfViewer .page .loadingIcon {\n  position: absolute;\n  display: block;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  background: url('images/loading-icon.gif') center no-repeat;\n}\n\n.pdfPresentationMode .pdfViewer {\n  margin-left: 0;\n  margin-right: 0;\n}\n\n.pdfPresentationMode .pdfViewer .page,\n.pdfPresentationMode .pdfViewer .spread {\n  display: block;\n}\n\n.pdfPresentationMode .pdfViewer .page,\n.pdfPresentationMode .pdfViewer.removePageBorders .page {\n  margin-left: auto;\n  margin-right: auto;\n}\n\n.pdfPresentationMode:-ms-fullscreen .pdfViewer .page {\n  margin-bottom: 100% !important;\n}\n\n.pdfPresentationMode:-webkit-full-screen .pdfViewer .page {\n  margin-bottom: 100%;\n  border: 0;\n}\n\n.pdfPresentationMode:-moz-full-screen .pdfViewer .page {\n  margin-bottom: 100%;\n  border: 0;\n}\n\n.pdfPresentationMode:fullscreen .pdfViewer .page {\n  margin-bottom: 100%;\n  border: 0;\n}\n\n:root {\n  --sidebar-width: 200px;\n}\n\n* {\n  padding: 0;\n  margin: 0;\n}\n\nhtml {\n  height: 100%;\n  width: 100%;\n  /* Font size is needed to make the activity bar the correct size. */\n  font-size: 10px;\n}\n\nbody {\n  height: 100%;\n  width: 100%;\n  background-color: #404040;\n  background-image: url(images/texture.png);\n}\n\nbody,\ninput,\nbutton,\nselect {\n  font: message-box;\n  outline: none;\n}\n\n.hidden {\n  display: none !important;\n}\n[hidden] {\n  display: none !important;\n}\n\n#viewerContainer.pdfPresentationMode:-ms-fullscreen {\n  top: 0px !important;\n  overflow: hidden !important;\n}\n\n#viewerContainer.pdfPresentationMode:-ms-fullscreen::-ms-backdrop {\n  background-color: #000;\n}\n\n#viewerContainer.pdfPresentationMode:-webkit-full-screen {\n  top: 0px;\n  border-top: 2px solid transparent;\n  background-color: #000;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  cursor: none;\n  -webkit-user-select: none;\n          user-select: none;\n}\n\n#viewerContainer.pdfPresentationMode:-moz-full-screen {\n  top: 0px;\n  border-top: 2px solid transparent;\n  background-color: #000;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  cursor: none;\n  -moz-user-select: none;\n       user-select: none;\n}\n\n#viewerContainer.pdfPresentationMode:-ms-fullscreen {\n  top: 0px;\n  border-top: 2px solid transparent;\n  background-color: #000;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  cursor: none;\n  -ms-user-select: none;\n      user-select: none;\n}\n\n#viewerContainer.pdfPresentationMode:fullscreen {\n  top: 0px;\n  border-top: 2px solid transparent;\n  background-color: #000;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  cursor: none;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n}\n\n.pdfPresentationMode:-webkit-full-screen a:not(.internalLink) {\n  display: none;\n}\n\n.pdfPresentationMode:-moz-full-screen a:not(.internalLink) {\n  display: none;\n}\n\n.pdfPresentationMode:-ms-fullscreen a:not(.internalLink) {\n  display: none;\n}\n\n.pdfPresentationMode:fullscreen a:not(.internalLink) {\n  display: none;\n}\n\n.pdfPresentationMode:-webkit-full-screen .textLayer > div {\n  cursor: none;\n}\n\n.pdfPresentationMode:-moz-full-screen .textLayer > div {\n  cursor: none;\n}\n\n.pdfPresentationMode:-ms-fullscreen .textLayer > div {\n  cursor: none;\n}\n\n.pdfPresentationMode:fullscreen .textLayer > div {\n  cursor: none;\n}\n\n.pdfPresentationMode.pdfPresentationModeControls > *,\n.pdfPresentationMode.pdfPresentationModeControls .textLayer > div {\n  cursor: default;\n}\n\n#outerContainer {\n  width: 100%;\n  height: 100%;\n  position: relative;\n}\n\n#sidebarContainer {\n  position: absolute;\n  top: 32px;\n  bottom: 0;\n  width: 200px; /* Here, and elsewhere below, keep the constant value for compatibility\n                   with older browsers that lack support for CSS variables. */\n  width: var(--sidebar-width);\n  visibility: hidden;\n  z-index: 100;\n  border-top: 1px solid #333;\n\n  transition-duration: 200ms;\n  transition-timing-function: ease;\n}\nhtml[dir='ltr'] #sidebarContainer {\n  transition-property: left;\n  left: -200px;\n  left: calc(-1 * var(--sidebar-width));\n}\nhtml[dir='rtl'] #sidebarContainer {\n  transition-property: right;\n  right: -200px;\n  right: calc(-1 * var(--sidebar-width));\n}\n\n.loadingInProgress #sidebarContainer {\n  top: 36px;\n}\n\n#outerContainer.sidebarResizing #sidebarContainer {\n  /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */\n  transition-duration: 0s;\n  /* Prevent e.g. the thumbnails being selected when the sidebar is resized. */\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n}\n\n#outerContainer.sidebarMoving #sidebarContainer,\n#outerContainer.sidebarOpen #sidebarContainer {\n  visibility: visible;\n}\nhtml[dir='ltr'] #outerContainer.sidebarOpen #sidebarContainer {\n  left: 0px;\n}\nhtml[dir='rtl'] #outerContainer.sidebarOpen #sidebarContainer {\n  right: 0px;\n}\n\n#mainContainer {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  min-width: 320px;\n}\n\n#sidebarContent {\n  top: 32px;\n  bottom: 0;\n  overflow: auto;\n  -webkit-overflow-scrolling: touch;\n  position: absolute;\n  width: 100%;\n  background-color: hsla(0,0%,0%,.1);\n}\nhtml[dir='ltr'] #sidebarContent {\n  left: 0;\n  box-shadow: inset -1px 0 0 hsla(0,0%,0%,.25);\n}\nhtml[dir='rtl'] #sidebarContent {\n  right: 0;\n  box-shadow: inset 1px 0 0 hsla(0,0%,0%,.25);\n}\n\n#viewerContainer {\n  overflow: auto;\n  -webkit-overflow-scrolling: touch;\n  position: absolute;\n  top: 32px;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  outline: none;\n}\n#viewerContainer:not(.pdfPresentationMode) {\n  transition-duration: 200ms;\n  transition-timing-function: ease;\n}\nhtml[dir='ltr'] #viewerContainer {\n  box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05);\n}\nhtml[dir='rtl'] #viewerContainer {\n  box-shadow: inset -1px 0 0 hsla(0,0%,100%,.05);\n}\n\n#outerContainer.sidebarResizing #viewerContainer {\n  /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */\n  transition-duration: 0s;\n}\n\nhtml[dir='ltr'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {\n  transition-property: left;\n  left: 200px;\n  left: var(--sidebar-width);\n}\nhtml[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {\n  transition-property: right;\n  right: 200px;\n  right: var(--sidebar-width);\n}\n\n.toolbar {\n  position: relative;\n  left: 0;\n  right: 0;\n  z-index: 9999;\n  cursor: default;\n}\n\n#toolbarContainer {\n  width: 100%;\n}\n\n#toolbarSidebar {\n  width: 100%;\n  height: 32px;\n  background-color: #424242; /* fallback */\n  background-image: url(images/texture.png),\n                    linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95));\n}\nhtml[dir='ltr'] #toolbarSidebar {\n  box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25),\n              inset 0 -1px 0 hsla(0,0%,100%,.05),\n              0 1px 0 hsla(0,0%,0%,.15),\n              0 0 1px hsla(0,0%,0%,.1);\n}\nhtml[dir='rtl'] #toolbarSidebar {\n  box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.25),\n              inset 0 1px 0 hsla(0,0%,100%,.05),\n              0 1px 0 hsla(0,0%,0%,.15),\n              0 0 1px hsla(0,0%,0%,.1);\n}\n\n#sidebarResizer {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  width: 6px;\n  z-index: 200;\n  cursor: ew-resize;\n}\nhtml[dir='ltr'] #sidebarResizer {\n  right: -6px;\n}\nhtml[dir='rtl'] #sidebarResizer {\n  left: -6px;\n}\n\n#toolbarContainer, .findbar, .secondaryToolbar {\n  position: relative;\n  height: 32px;\n  background-color: #474747; /* fallback */\n  background-image: url(images/texture.png),\n                    linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95));\n}\nhtml[dir='ltr'] #toolbarContainer, .findbar, .secondaryToolbar {\n  box-shadow: inset 0 1px 1px hsla(0,0%,0%,.15),\n              inset 0 -1px 0 hsla(0,0%,100%,.05),\n              0 1px 0 hsla(0,0%,0%,.15),\n              0 1px 1px hsla(0,0%,0%,.1);\n}\nhtml[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar {\n  box-shadow: inset 0 1px 1px hsla(0,0%,0%,.15),\n              inset 0 -1px 0 hsla(0,0%,100%,.05),\n              0 1px 0 hsla(0,0%,0%,.15),\n              0 1px 1px hsla(0,0%,0%,.1);\n}\n\n#toolbarViewer {\n  height: 32px;\n}\n\n#loadingBar {\n  position: relative;\n  width: 100%;\n  height: 4px;\n  background-color: #333;\n  border-bottom: 1px solid #333;\n}\n\n#loadingBar .progress {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 0%;\n  height: 100%;\n  background-color: #ddd;\n  overflow: hidden;\n  transition: width 200ms;\n}\n\n@-webkit-keyframes progressIndeterminate {\n  0% { left: -142px; }\n  100% { left: 0; }\n}\n\n@keyframes progressIndeterminate {\n  0% { left: -142px; }\n  100% { left: 0; }\n}\n\n#loadingBar .progress.indeterminate {\n  background-color: #999;\n  transition: none;\n}\n\n#loadingBar .progress.indeterminate .glimmer {\n  position: absolute;\n  top: 0;\n  left: 0;\n  height: 100%;\n  width: calc(100% + 150px);\n\n  background: repeating-linear-gradient(135deg,\n                                        #bbb 0, #999 5px,\n                                        #999 45px, #ddd 55px,\n                                        #ddd 95px, #bbb 100px);\n\n  -webkit-animation: progressIndeterminate 950ms linear infinite;\n\n          animation: progressIndeterminate 950ms linear infinite;\n}\n\n.findbar, .secondaryToolbar {\n  top: 32px;\n  position: absolute;\n  z-index: 10000;\n  height: auto;\n  min-width: 16px;\n  padding: 0px 6px 0px 6px;\n  margin: 4px 2px 4px 2px;\n  color: hsl(0,0%,85%);\n  font-size: 12px;\n  line-height: 14px;\n  text-align: left;\n  cursor: default;\n}\n\n.findbar {\n  min-width: 300px;\n}\n.findbar > div {\n  height: 32px;\n}\n.findbar.wrapContainers > div {\n  clear: both;\n}\n.findbar.wrapContainers > div#findbarMessageContainer {\n  height: auto;\n}\nhtml[dir='ltr'] .findbar {\n  left: 68px;\n}\nhtml[dir='rtl'] .findbar {\n  right: 68px;\n}\n\n.findbar label {\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n}\n\n#findInput {\n  width: 200px;\n}\n#findInput::-webkit-input-placeholder {\n  color: hsl(0, 0%, 75%);\n}\n#findInput:-ms-input-placeholder {\n  font-style: italic;\n}\n#findInput::-ms-input-placeholder {\n  font-style: italic;\n}\n#findInput::placeholder {\n  font-style: italic;\n}\n#findInput[data-status=\"pending\"] {\n  background-image: url(images/loading-small.png);\n  background-repeat: no-repeat;\n  background-position: right;\n}\nhtml[dir='rtl'] #findInput[data-status=\"pending\"] {\n  background-position: left;\n}\n\n.secondaryToolbar {\n  padding: 6px;\n  height: auto;\n  z-index: 30000;\n}\nhtml[dir='ltr'] .secondaryToolbar {\n  right: 4px;\n}\nhtml[dir='rtl'] .secondaryToolbar {\n  left: 4px;\n}\n\n#secondaryToolbarButtonContainer {\n  max-width: 200px;\n  max-height: 400px;\n  overflow-y: auto;\n  -webkit-overflow-scrolling: touch;\n  margin-bottom: -4px;\n}\n\n#secondaryToolbarButtonContainer.hiddenScrollModeButtons > .scrollModeButtons,\n#secondaryToolbarButtonContainer.hiddenSpreadModeButtons > .spreadModeButtons {\n  display: none !important;\n}\n\n.doorHanger,\n.doorHangerRight {\n  border: 1px solid hsla(0,0%,0%,.5);\n  border-radius: 2px;\n  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);\n}\n.doorHanger:after, .doorHanger:before,\n.doorHangerRight:after, .doorHangerRight:before {\n  bottom: 100%;\n  border: solid transparent;\n  content: \" \";\n  height: 0;\n  width: 0;\n  position: absolute;\n  pointer-events: none;\n}\n.doorHanger:after,\n.doorHangerRight:after {\n  border-bottom-color: hsla(0,0%,32%,.99);\n  border-width: 8px;\n}\n.doorHanger:before,\n.doorHangerRight:before {\n  border-bottom-color: hsla(0,0%,0%,.5);\n  border-width: 9px;\n}\n\nhtml[dir='ltr'] .doorHanger:after,\nhtml[dir='rtl'] .doorHangerRight:after {\n  left: 13px;\n  margin-left: -8px;\n}\n\nhtml[dir='ltr'] .doorHanger:before,\nhtml[dir='rtl'] .doorHangerRight:before {\n  left: 13px;\n  margin-left: -9px;\n}\n\nhtml[dir='rtl'] .doorHanger:after,\nhtml[dir='ltr'] .doorHangerRight:after {\n  right: 13px;\n  margin-right: -8px;\n}\n\nhtml[dir='rtl'] .doorHanger:before,\nhtml[dir='ltr'] .doorHangerRight:before {\n  right: 13px;\n  margin-right: -9px;\n}\n\n#findResultsCount {\n  background-color: hsl(0, 0%, 85%);\n  color: hsl(0, 0%, 32%);\n  text-align: center;\n  padding: 3px 4px;\n}\n\n#findMsg {\n  font-style: italic;\n  color: #A6B7D0;\n}\n#findMsg:empty {\n  display: none;\n}\n\n#findInput.notFound {\n  background-color: rgb(255, 102, 102);\n}\n\n#toolbarViewerMiddle {\n  position: absolute;\n  left: 50%;\n  -webkit-transform: translateX(-50%);\n          transform: translateX(-50%);\n}\n\nhtml[dir='ltr'] #toolbarViewerLeft,\nhtml[dir='rtl'] #toolbarViewerRight {\n  float: left;\n}\nhtml[dir='ltr'] #toolbarViewerRight,\nhtml[dir='rtl'] #toolbarViewerLeft {\n  float: right;\n}\nhtml[dir='ltr'] #toolbarViewerLeft > *,\nhtml[dir='ltr'] #toolbarViewerMiddle > *,\nhtml[dir='ltr'] #toolbarViewerRight > *,\nhtml[dir='ltr'] .findbar * {\n  position: relative;\n  float: left;\n}\nhtml[dir='rtl'] #toolbarViewerLeft > *,\nhtml[dir='rtl'] #toolbarViewerMiddle > *,\nhtml[dir='rtl'] #toolbarViewerRight > *,\nhtml[dir='rtl'] .findbar * {\n  position: relative;\n  float: right;\n}\n\nhtml[dir='ltr'] .splitToolbarButton {\n  margin: 3px 2px 4px 0;\n  display: inline-block;\n}\nhtml[dir='rtl'] .splitToolbarButton {\n  margin: 3px 0 4px 2px;\n  display: inline-block;\n}\nhtml[dir='ltr'] .splitToolbarButton > .toolbarButton {\n  border-radius: 0;\n  float: left;\n}\nhtml[dir='rtl'] .splitToolbarButton > .toolbarButton {\n  border-radius: 0;\n  float: right;\n}\n\n.toolbarButton,\n.secondaryToolbarButton,\n.overlayButton {\n  border: 0 none;\n  background: none;\n  width: 32px;\n  height: 25px;\n}\n\n.toolbarButton > span {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  overflow: hidden;\n}\n\n.toolbarButton[disabled],\n.secondaryToolbarButton[disabled],\n.overlayButton[disabled] {\n  opacity: .5;\n}\n\n.splitToolbarButton.toggled .toolbarButton {\n  margin: 0;\n}\n\n.splitToolbarButton:hover > .toolbarButton,\n.splitToolbarButton:focus > .toolbarButton,\n.splitToolbarButton.toggled > .toolbarButton,\n.toolbarButton.textButton {\n  background-color: hsla(0,0%,0%,.12);\n  background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));\n  background-clip: padding-box;\n  border: 1px solid hsla(0,0%,0%,.35);\n  border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);\n  box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,\n              0 0 1px hsla(0,0%,100%,.15) inset,\n              0 1px 0 hsla(0,0%,100%,.05);\n  transition-property: background-color, border-color, box-shadow;\n  transition-duration: 150ms;\n  transition-timing-function: ease;\n\n}\n.splitToolbarButton > .toolbarButton:hover,\n.splitToolbarButton > .toolbarButton:focus,\n.dropdownToolbarButton:hover,\n.overlayButton:hover,\n.overlayButton:focus,\n.toolbarButton.textButton:hover,\n.toolbarButton.textButton:focus {\n  background-color: hsla(0,0%,0%,.2);\n  box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,\n              0 0 1px hsla(0,0%,100%,.15) inset,\n              0 0 1px hsla(0,0%,0%,.05);\n  z-index: 199;\n}\n.splitToolbarButton > .toolbarButton {\n  position: relative;\n}\nhtml[dir='ltr'] .splitToolbarButton > .toolbarButton:first-child,\nhtml[dir='rtl'] .splitToolbarButton > .toolbarButton:last-child {\n  position: relative;\n  margin: 0;\n  margin-right: -1px;\n  border-top-left-radius: 2px;\n  border-bottom-left-radius: 2px;\n  border-right-color: transparent;\n}\nhtml[dir='ltr'] .splitToolbarButton > .toolbarButton:last-child,\nhtml[dir='rtl'] .splitToolbarButton > .toolbarButton:first-child {\n  position: relative;\n  margin: 0;\n  margin-left: -1px;\n  border-top-right-radius: 2px;\n  border-bottom-right-radius: 2px;\n  border-left-color: transparent;\n}\n.splitToolbarButtonSeparator {\n  padding: 8px 0;\n  width: 1px;\n  background-color: hsla(0,0%,0%,.5);\n  z-index: 99;\n  box-shadow: 0 0 0 1px hsla(0,0%,100%,.08);\n  display: inline-block;\n  margin: 5px 0;\n}\nhtml[dir='ltr'] .splitToolbarButtonSeparator {\n  float: left;\n}\nhtml[dir='rtl'] .splitToolbarButtonSeparator {\n  float: right;\n}\n.splitToolbarButton:hover > .splitToolbarButtonSeparator,\n.splitToolbarButton.toggled > .splitToolbarButtonSeparator {\n  padding: 12px 0;\n  margin: 1px 0;\n  box-shadow: 0 0 0 1px hsla(0,0%,100%,.03);\n  transition-property: padding;\n  transition-duration: 10ms;\n  transition-timing-function: ease;\n}\n\n.toolbarButton,\n.dropdownToolbarButton,\n.secondaryToolbarButton,\n.overlayButton {\n  min-width: 16px;\n  padding: 2px 6px 0;\n  border: 1px solid transparent;\n  border-radius: 2px;\n  color: hsla(0,0%,100%,.8);\n  font-size: 12px;\n  line-height: 14px;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  /* Opera does not support user-select, use <... unselectable=\"on\"> instead */\n  cursor: default;\n  transition-property: background-color, border-color, box-shadow;\n  transition-duration: 150ms;\n  transition-timing-function: ease;\n}\n\nhtml[dir='ltr'] .toolbarButton,\nhtml[dir='ltr'] .overlayButton,\nhtml[dir='ltr'] .dropdownToolbarButton {\n  margin: 3px 2px 4px 0;\n}\nhtml[dir='rtl'] .toolbarButton,\nhtml[dir='rtl'] .overlayButton,\nhtml[dir='rtl'] .dropdownToolbarButton {\n  margin: 3px 0 4px 2px;\n}\n\n.toolbarButton:hover,\n.toolbarButton:focus,\n.dropdownToolbarButton,\n.overlayButton,\n.secondaryToolbarButton:hover,\n.secondaryToolbarButton:focus {\n  background-color: hsla(0,0%,0%,.12);\n  background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));\n  background-clip: padding-box;\n  border: 1px solid hsla(0,0%,0%,.35);\n  border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);\n  box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,\n              0 0 1px hsla(0,0%,100%,.15) inset,\n              0 1px 0 hsla(0,0%,100%,.05);\n}\n\n.toolbarButton:hover:active,\n.overlayButton:hover:active,\n.dropdownToolbarButton:hover:active,\n.secondaryToolbarButton:hover:active {\n  background-color: hsla(0,0%,0%,.2);\n  background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));\n  border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45);\n  box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset,\n              0 0 1px hsla(0,0%,0%,.2) inset,\n              0 1px 0 hsla(0,0%,100%,.05);\n  transition-property: background-color, border-color, box-shadow;\n  transition-duration: 10ms;\n  transition-timing-function: linear;\n}\n\n.toolbarButton.toggled,\n.splitToolbarButton.toggled > .toolbarButton.toggled,\n.secondaryToolbarButton.toggled {\n  background-color: hsla(0,0%,0%,.3);\n  background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));\n  border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5);\n  box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset,\n              0 0 1px hsla(0,0%,0%,.2) inset,\n              0 1px 0 hsla(0,0%,100%,.05);\n  transition-property: background-color, border-color, box-shadow;\n  transition-duration: 10ms;\n  transition-timing-function: linear;\n}\n\n.toolbarButton.toggled:hover:active,\n.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active,\n.secondaryToolbarButton.toggled:hover:active {\n  background-color: hsla(0,0%,0%,.4);\n  border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.5) hsla(0,0%,0%,.55);\n  box-shadow: 0 1px 1px hsla(0,0%,0%,.2) inset,\n              0 0 1px hsla(0,0%,0%,.3) inset,\n              0 1px 0 hsla(0,0%,100%,.05);\n}\n\n.dropdownToolbarButton {\n  width: 120px;\n  max-width: 120px;\n  padding: 0;\n  overflow: hidden;\n  background: url(images/toolbarButton-menuArrows.png) no-repeat;\n}\nhtml[dir='ltr'] .dropdownToolbarButton {\n  background-position: 95%;\n}\nhtml[dir='rtl'] .dropdownToolbarButton {\n  background-position: 5%;\n}\n\n.dropdownToolbarButton > select {\n  min-width: 140px;\n  font-size: 12px;\n  color: hsl(0,0%,95%);\n  margin: 0;\n  padding: 3px 2px 2px;\n  border: none;\n  background: rgba(0,0,0,0); /* Opera does not support 'transparent' <select> background */\n}\n\n.dropdownToolbarButton > select > option {\n  background: hsl(0,0%,24%);\n}\n\n#customScaleOption {\n  display: none;\n}\n\n#pageWidthOption {\n  border-bottom: 1px rgba(255, 255, 255, .5) solid;\n}\n\nhtml[dir='ltr'] .splitToolbarButton:first-child,\nhtml[dir='ltr'] .toolbarButton:first-child,\nhtml[dir='rtl'] .splitToolbarButton:last-child,\nhtml[dir='rtl'] .toolbarButton:last-child {\n  margin-left: 4px;\n}\nhtml[dir='ltr'] .splitToolbarButton:last-child,\nhtml[dir='ltr'] .toolbarButton:last-child,\nhtml[dir='rtl'] .splitToolbarButton:first-child,\nhtml[dir='rtl'] .toolbarButton:first-child {\n  margin-right: 4px;\n}\n\n.toolbarButtonSpacer {\n  width: 30px;\n  display: inline-block;\n  height: 1px;\n}\n\nhtml[dir='ltr'] #findPrevious {\n  margin-left: 3px;\n}\nhtml[dir='ltr'] #findNext {\n  margin-right: 3px;\n}\n\nhtml[dir='rtl'] #findPrevious {\n  margin-right: 3px;\n}\nhtml[dir='rtl'] #findNext {\n  margin-left: 3px;\n}\n\n.toolbarButton::before,\n.secondaryToolbarButton::before {\n  /* All matching images have a size of 16x16\n   * All relevant containers have a size of 32x25 */\n  position: absolute;\n  display: inline-block;\n  top: 4px;\n  left: 7px;\n}\n\nhtml[dir=\"ltr\"] .secondaryToolbarButton::before {\n  left: 4px;\n}\nhtml[dir=\"rtl\"] .secondaryToolbarButton::before {\n  right: 4px;\n}\n\nhtml[dir='ltr'] .toolbarButton#sidebarToggle::before {\n  content: url(images/toolbarButton-sidebarToggle.png);\n}\nhtml[dir='rtl'] .toolbarButton#sidebarToggle::before {\n  content: url(images/toolbarButton-sidebarToggle-rtl.png);\n}\n\nhtml[dir='ltr'] .toolbarButton#secondaryToolbarToggle::before {\n  content: url(images/toolbarButton-secondaryToolbarToggle.png);\n}\nhtml[dir='rtl'] .toolbarButton#secondaryToolbarToggle::before {\n  content: url(images/toolbarButton-secondaryToolbarToggle-rtl.png);\n}\n\nhtml[dir='ltr'] .toolbarButton.findPrevious::before {\n  content: url(images/findbarButton-previous.png);\n}\nhtml[dir='rtl'] .toolbarButton.findPrevious::before {\n  content: url(images/findbarButton-previous-rtl.png);\n}\n\nhtml[dir='ltr'] .toolbarButton.findNext::before {\n  content: url(images/findbarButton-next.png);\n}\nhtml[dir='rtl'] .toolbarButton.findNext::before {\n  content: url(images/findbarButton-next-rtl.png);\n}\n\nhtml[dir='ltr'] .toolbarButton.pageUp::before {\n  content: url(images/toolbarButton-pageUp.png);\n}\nhtml[dir='rtl'] .toolbarButton.pageUp::before {\n  content: url(images/toolbarButton-pageUp-rtl.png);\n}\n\nhtml[dir='ltr'] .toolbarButton.pageDown::before {\n  content: url(images/toolbarButton-pageDown.png);\n}\nhtml[dir='rtl'] .toolbarButton.pageDown::before {\n  content: url(images/toolbarButton-pageDown-rtl.png);\n}\n\n.toolbarButton.zoomOut::before {\n  content: url(images/toolbarButton-zoomOut.png);\n}\n\n.toolbarButton.zoomIn::before {\n  content: url(images/toolbarButton-zoomIn.png);\n}\n\n.toolbarButton.presentationMode::before,\n.secondaryToolbarButton.presentationMode::before {\n  content: url(images/toolbarButton-presentationMode.png);\n}\n\n.toolbarButton.print::before,\n.secondaryToolbarButton.print::before {\n  content: url(images/toolbarButton-print.png);\n}\n\n.toolbarButton.openFile::before,\n.secondaryToolbarButton.openFile::before {\n  content: url(images/toolbarButton-openFile.png);\n}\n\n.toolbarButton.download::before,\n.secondaryToolbarButton.download::before {\n  content: url(images/toolbarButton-download.png);\n}\n\n.toolbarButton.bookmark,\n.secondaryToolbarButton.bookmark {\n  box-sizing: border-box;\n  outline: none;\n  padding-top: 4px;\n  text-decoration: none;\n}\n.secondaryToolbarButton.bookmark {\n  padding-top: 5px;\n}\n\n.bookmark[href='#'] {\n  opacity: .5;\n  pointer-events: none;\n}\n\n.toolbarButton.bookmark::before,\n.secondaryToolbarButton.bookmark::before {\n  content: url(images/toolbarButton-bookmark.png);\n}\n\n#viewThumbnail.toolbarButton::before {\n  content: url(images/toolbarButton-viewThumbnail.png);\n}\n\nhtml[dir=\"ltr\"] #viewOutline.toolbarButton::before {\n  content: url(images/toolbarButton-viewOutline.png);\n}\nhtml[dir=\"rtl\"] #viewOutline.toolbarButton::before {\n  content: url(images/toolbarButton-viewOutline-rtl.png);\n}\n\n#viewAttachments.toolbarButton::before {\n  content: url(images/toolbarButton-viewAttachments.png);\n}\n\n#viewFind.toolbarButton::before {\n  content: url(images/toolbarButton-search.png);\n}\n\n.toolbarButton.pdfSidebarNotification::after {\n  position: absolute;\n  display: inline-block;\n  top: 1px;\n  /* Create a filled circle, with a diameter of 9 pixels, using only CSS: */\n  content: '';\n  background-color: #70DB55;\n  height: 9px;\n  width: 9px;\n  border-radius: 50%;\n}\nhtml[dir='ltr'] .toolbarButton.pdfSidebarNotification::after {\n  left: 17px;\n}\nhtml[dir='rtl'] .toolbarButton.pdfSidebarNotification::after {\n  right: 17px;\n}\n\n.secondaryToolbarButton {\n  position: relative;\n  margin: 0 0 4px 0;\n  padding: 3px 0 1px 0;\n  height: auto;\n  min-height: 25px;\n  width: auto;\n  min-width: 100%;\n  white-space: normal;\n}\nhtml[dir=\"ltr\"] .secondaryToolbarButton {\n  padding-left: 24px;\n  text-align: left;\n}\nhtml[dir=\"rtl\"] .secondaryToolbarButton {\n  padding-right: 24px;\n  text-align: right;\n}\nhtml[dir=\"ltr\"] .secondaryToolbarButton.bookmark {\n  padding-left: 27px;\n}\nhtml[dir=\"rtl\"] .secondaryToolbarButton.bookmark {\n  padding-right: 27px;\n}\n\nhtml[dir=\"ltr\"] .secondaryToolbarButton > span {\n  padding-right: 4px;\n}\nhtml[dir=\"rtl\"] .secondaryToolbarButton > span {\n  padding-left: 4px;\n}\n\n.secondaryToolbarButton.firstPage::before {\n  content: url(images/secondaryToolbarButton-firstPage.png);\n}\n\n.secondaryToolbarButton.lastPage::before {\n  content: url(images/secondaryToolbarButton-lastPage.png);\n}\n\n.secondaryToolbarButton.rotateCcw::before {\n  content: url(images/secondaryToolbarButton-rotateCcw.png);\n}\n\n.secondaryToolbarButton.rotateCw::before {\n  content: url(images/secondaryToolbarButton-rotateCw.png);\n}\n\n.secondaryToolbarButton.selectTool::before {\n  content: url(images/secondaryToolbarButton-selectTool.png);\n}\n\n.secondaryToolbarButton.handTool::before {\n  content: url(images/secondaryToolbarButton-handTool.png);\n}\n\n.secondaryToolbarButton.scrollVertical::before {\n  content: url(images/secondaryToolbarButton-scrollVertical.png);\n}\n\n.secondaryToolbarButton.scrollHorizontal::before {\n  content: url(images/secondaryToolbarButton-scrollHorizontal.png);\n}\n\n.secondaryToolbarButton.scrollWrapped::before {\n  content: url(images/secondaryToolbarButton-scrollWrapped.png);\n}\n\n.secondaryToolbarButton.spreadNone::before {\n  content: url(images/secondaryToolbarButton-spreadNone.png);\n}\n\n.secondaryToolbarButton.spreadOdd::before {\n  content: url(images/secondaryToolbarButton-spreadOdd.png);\n}\n\n.secondaryToolbarButton.spreadEven::before {\n  content: url(images/secondaryToolbarButton-spreadEven.png);\n}\n\n.secondaryToolbarButton.documentProperties::before {\n  content: url(images/secondaryToolbarButton-documentProperties.png);\n}\n\n.verticalToolbarSeparator {\n  display: block;\n  padding: 8px 0;\n  margin: 8px 4px;\n  width: 1px;\n  background-color: hsla(0,0%,0%,.5);\n  box-shadow: 0 0 0 1px hsla(0,0%,100%,.08);\n}\nhtml[dir='ltr'] .verticalToolbarSeparator {\n  margin-left: 2px;\n}\nhtml[dir='rtl'] .verticalToolbarSeparator {\n  margin-right: 2px;\n}\n\n.horizontalToolbarSeparator {\n  display: block;\n  margin: 0 0 4px 0;\n  height: 1px;\n  width: 100%;\n  background-color: hsla(0,0%,0%,.5);\n  box-shadow: 0 0 0 1px hsla(0,0%,100%,.08);\n}\n\n.toolbarField {\n  padding: 3px 6px;\n  margin: 4px 0 4px 0;\n  border: 1px solid transparent;\n  border-radius: 2px;\n  background-color: hsla(0,0%,100%,.09);\n  background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));\n  background-clip: padding-box;\n  border: 1px solid hsla(0,0%,0%,.35);\n  border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);\n  box-shadow: 0 1px 0 hsla(0,0%,0%,.05) inset,\n              0 1px 0 hsla(0,0%,100%,.05);\n  color: hsl(0,0%,95%);\n  font-size: 12px;\n  line-height: 14px;\n  outline-style: none;\n  transition-property: background-color, border-color, box-shadow;\n  transition-duration: 150ms;\n  transition-timing-function: ease;\n}\n\n.toolbarField[type=checkbox] {\n  display: inline-block;\n  margin: 8px 0px;\n}\n\n.toolbarField.pageNumber {\n  -moz-appearance: textfield; /* hides the spinner in moz */\n  min-width: 16px;\n  text-align: right;\n  width: 40px;\n}\n\n.toolbarField.pageNumber.visiblePageIsLoading {\n  background-image: url(images/loading-small.png);\n  background-repeat: no-repeat;\n  background-position: 1px;\n}\n\n.toolbarField.pageNumber::-webkit-inner-spin-button,\n.toolbarField.pageNumber::-webkit-outer-spin-button {\n    -webkit-appearance: none;\n    margin: 0;\n}\n\n.toolbarField:hover {\n  background-color: hsla(0,0%,100%,.11);\n  border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.43) hsla(0,0%,0%,.45);\n}\n\n.toolbarField:focus {\n  background-color: hsla(0,0%,100%,.15);\n  border-color: hsla(204,100%,65%,.8) hsla(204,100%,65%,.85) hsla(204,100%,65%,.9);\n}\n\n.toolbarLabel {\n  min-width: 16px;\n  padding: 3px 6px 3px 2px;\n  margin: 4px 2px 4px 0;\n  border: 1px solid transparent;\n  border-radius: 2px;\n  color: hsl(0,0%,85%);\n  font-size: 12px;\n  line-height: 14px;\n  text-align: left;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  cursor: default;\n}\n\n#thumbnailView {\n  position: absolute;\n  width: calc(100% - 60px);\n  top: 0;\n  bottom: 0;\n  padding: 10px 30px 0;\n  overflow: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n.thumbnail {\n  margin: 0 10px 5px 10px;\n}\nhtml[dir='ltr'] .thumbnail {\n  float: left;\n}\nhtml[dir='rtl'] .thumbnail {\n  float: right;\n}\n\n#thumbnailView > a:last-of-type > .thumbnail {\n  margin-bottom: 10px;\n}\n\n#thumbnailView > a:last-of-type > .thumbnail:not([data-loaded]) {\n  margin-bottom: 9px;\n}\n\n.thumbnail:not([data-loaded]) {\n  border: 1px dashed rgba(255, 255, 255, 0.5);\n  margin: -1px 9px 4px 9px;\n}\n\n.thumbnailImage {\n  border: 1px solid transparent;\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.3);\n  opacity: 0.8;\n  z-index: 99;\n  background-color: white;\n  background-clip: content-box;\n}\n\n.thumbnailSelectionRing {\n  border-radius: 2px;\n  padding: 7px;\n}\n\na:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage,\n.thumbnail:hover > .thumbnailSelectionRing > .thumbnailImage {\n  opacity: .9;\n}\n\na:focus > .thumbnail > .thumbnailSelectionRing,\n.thumbnail:hover > .thumbnailSelectionRing {\n  background-color: hsla(0,0%,100%,.15);\n  background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));\n  background-clip: padding-box;\n  box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,\n              0 0 1px hsla(0,0%,100%,.2) inset,\n              0 0 1px hsla(0,0%,0%,.2);\n  color: hsla(0,0%,100%,.9);\n}\n\n.thumbnail.selected > .thumbnailSelectionRing > .thumbnailImage {\n  box-shadow: 0 0 0 1px hsla(0,0%,0%,.5);\n  opacity: 1;\n}\n\n.thumbnail.selected > .thumbnailSelectionRing {\n  background-color: hsla(0,0%,100%,.3);\n  background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));\n  background-clip: padding-box;\n  box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,\n              0 0 1px hsla(0,0%,100%,.1) inset,\n              0 0 1px hsla(0,0%,0%,.2);\n  color: hsla(0,0%,100%,1);\n}\n\n#outlineView,\n#attachmentsView {\n  position: absolute;\n  width: calc(100% - 8px);\n  top: 0;\n  bottom: 0;\n  overflow: auto;\n  -webkit-overflow-scrolling: touch;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n}\n\n#outlineView {\n  padding: 4px 4px 0;\n}\n#attachmentsView {\n  padding: 3px 4px 0;\n}\n\nhtml[dir='ltr'] .outlineWithDeepNesting > .outlineItem,\nhtml[dir='ltr'] .outlineItem > .outlineItems {\n  margin-left: 20px;\n}\n\nhtml[dir='rtl'] .outlineWithDeepNesting > .outlineItem,\nhtml[dir='rtl'] .outlineItem > .outlineItems {\n  margin-right: 20px;\n}\n\n.outlineItem > a,\n.attachmentsItem > button {\n  text-decoration: none;\n  display: inline-block;\n  min-width: 95%;\n  min-width: calc(100% - 4px); /* Subtract the right padding (left, in RTL mode)\n                                  of the container. */\n  height: auto;\n  margin-bottom: 1px;\n  border-radius: 2px;\n  color: hsla(0,0%,100%,.8);\n  font-size: 13px;\n  line-height: 15px;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  white-space: normal;\n}\n\n.attachmentsItem > button {\n  border: 0 none;\n  background: none;\n  cursor: pointer;\n  width: 100%;\n}\n\nhtml[dir='ltr'] .outlineItem > a {\n  padding: 2px 0 5px 4px;\n}\nhtml[dir='ltr'] .attachmentsItem > button {\n  padding: 2px 0 3px 7px;\n  text-align: left;\n}\n\nhtml[dir='rtl'] .outlineItem > a {\n  padding: 2px 4px 5px 0;\n}\nhtml[dir='rtl'] .attachmentsItem > button {\n  padding: 2px 7px 3px 0;\n  text-align: right;\n}\n\n.outlineItemToggler {\n  position: relative;\n  height: 0;\n  width: 0;\n  color: hsla(0,0%,100%,.5);\n}\n.outlineItemToggler::before {\n  content: url(images/treeitem-expanded.png);\n  display: inline-block;\n  position: absolute;\n}\nhtml[dir='ltr'] .outlineItemToggler.outlineItemsHidden::before {\n  content: url(images/treeitem-collapsed.png);\n}\nhtml[dir='rtl'] .outlineItemToggler.outlineItemsHidden::before {\n  content: url(images/treeitem-collapsed-rtl.png);\n}\n.outlineItemToggler.outlineItemsHidden ~ .outlineItems {\n  display: none;\n}\nhtml[dir='ltr'] .outlineItemToggler {\n  float: left;\n}\nhtml[dir='rtl'] .outlineItemToggler {\n  float: right;\n}\nhtml[dir='ltr'] .outlineItemToggler::before {\n  right: 4px;\n}\nhtml[dir='rtl'] .outlineItemToggler::before {\n  left: 4px;\n}\n\n.outlineItemToggler:hover,\n.outlineItemToggler:hover + a,\n.outlineItemToggler:hover ~ .outlineItems,\n.outlineItem > a:hover,\n.attachmentsItem > button:hover {\n  background-color: hsla(0,0%,100%,.02);\n  background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));\n  background-clip: padding-box;\n  box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,\n              0 0 1px hsla(0,0%,100%,.2) inset,\n              0 0 1px hsla(0,0%,0%,.2);\n  border-radius: 2px;\n  color: hsla(0,0%,100%,.9);\n}\n\n.outlineItem.selected {\n  background-color: hsla(0,0%,100%,.08);\n  background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));\n  background-clip: padding-box;\n  box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,\n              0 0 1px hsla(0,0%,100%,.1) inset,\n              0 0 1px hsla(0,0%,0%,.2);\n  color: hsla(0,0%,100%,1);\n}\n\n.noResults {\n  font-size: 12px;\n  color: hsla(0,0%,100%,.8);\n  font-style: italic;\n  cursor: default;\n}\n\n/* TODO: file FF bug to support ::-moz-selection:window-inactive\n   so we can override the opaque grey background when the window is inactive;\n   see https://bugzilla.mozilla.org/show_bug.cgi?id=706209 */\n::-moz-selection { background: rgba(0,0,255,0.3); }\n::selection { background: rgba(0,0,255,0.3); }\n\n#errorWrapper {\n  background: none repeat scroll 0 0 #FF5555;\n  color: white;\n  left: 0;\n  position: absolute;\n  right: 0;\n  z-index: 1000;\n  padding: 3px;\n  font-size: 0.8em;\n}\n.loadingInProgress #errorWrapper {\n  top: 37px;\n}\n\n#errorMessageLeft {\n  float: left;\n}\n\n#errorMessageRight {\n  float: right;\n}\n\n#errorMoreInfo {\n  background-color: #FFFFFF;\n  color: black;\n  padding: 3px;\n  margin: 3px;\n  width: 98%;\n}\n\n.overlayButton {\n  width: auto;\n  margin: 3px 4px 2px 4px !important;\n  padding: 2px 6px 3px 6px;\n}\n\n#overlayContainer {\n  display: table;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  background-color: hsla(0,0%,0%,.2);\n  z-index: 40000;\n}\n#overlayContainer > * {\n  overflow: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n#overlayContainer > .container {\n  display: table-cell;\n  vertical-align: middle;\n  text-align: center;\n}\n\n#overlayContainer > .container > .dialog {\n  display: inline-block;\n  padding: 15px;\n  border-spacing: 4px;\n  color: hsl(0,0%,85%);\n  font-size: 12px;\n  line-height: 14px;\n  background-color: #474747; /* fallback */\n  background-image: url(images/texture.png),\n                    linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95));\n  box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08),\n              inset 0 1px 1px hsla(0,0%,0%,.15),\n              inset 0 -1px 0 hsla(0,0%,100%,.05),\n              0 1px 0 hsla(0,0%,0%,.15),\n              0 1px 1px hsla(0,0%,0%,.1);\n  border: 1px solid hsla(0,0%,0%,.5);\n  border-radius: 4px;\n  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);\n}\n\n.dialog > .row {\n  display: table-row;\n}\n\n.dialog > .row > * {\n  display: table-cell;\n}\n\n.dialog .toolbarField {\n  margin: 5px 0;\n}\n\n.dialog .separator {\n  display: block;\n  margin: 4px 0 4px 0;\n  height: 1px;\n  width: 100%;\n  background-color: hsla(0,0%,0%,.5);\n  box-shadow: 0 0 0 1px hsla(0,0%,100%,.08);\n}\n\n.dialog .buttonRow {\n  text-align: center;\n  vertical-align: middle;\n}\n\n.dialog :link {\n  color: white;\n}\n\n#passwordOverlay > .dialog {\n  text-align: center;\n}\n#passwordOverlay .toolbarField {\n  width: 200px;\n}\n\n#documentPropertiesOverlay > .dialog {\n  text-align: left;\n}\n#documentPropertiesOverlay .row > * {\n  min-width: 100px;\n}\nhtml[dir='ltr'] #documentPropertiesOverlay .row > * {\n  text-align: left;\n}\nhtml[dir='rtl'] #documentPropertiesOverlay .row > * {\n  text-align: right;\n}\n#documentPropertiesOverlay .row > span {\n  width: 125px;\n  word-wrap: break-word;\n}\n#documentPropertiesOverlay .row > p {\n  max-width: 225px;\n  word-wrap: break-word;\n}\n#documentPropertiesOverlay .buttonRow {\n  margin-top: 10px;\n}\n\n.clearBoth {\n  clear: both;\n}\n\n.fileInput {\n  background: white;\n  color: black;\n  margin-top: 5px;\n  visibility: hidden;\n  position: fixed;\n  right: 0;\n  top: 0;\n}\n\n#PDFBug {\n  background: none repeat scroll 0 0 white;\n  border: 1px solid #666666;\n  position: fixed;\n  top: 32px;\n  right: 0;\n  bottom: 0;\n  font-size: 10px;\n  padding: 0;\n  width: 300px;\n}\n#PDFBug .controls {\n    background:#EEEEEE;\n    border-bottom: 1px solid #666666;\n    padding: 3px;\n}\n#PDFBug .panels {\n  bottom: 0;\n  left: 0;\n  overflow: auto;\n  -webkit-overflow-scrolling: touch;\n  position: absolute;\n  right: 0;\n  top: 27px;\n}\n#PDFBug button.active {\n  font-weight: bold;\n}\n.debuggerShowText {\n  background: none repeat scroll 0 0 yellow;\n  color: blue;\n}\n.debuggerHideText:hover {\n  background: none repeat scroll 0 0 yellow;\n}\n#PDFBug .stats {\n  font-family: courier;\n  font-size: 10px;\n  white-space: pre;\n}\n#PDFBug .stats .title {\n    font-weight: bold;\n}\n#PDFBug table {\n  font-size: 10px;\n}\n\n#viewer.textLayer-visible .textLayer {\n  opacity: 1.0;\n}\n\n#viewer.textLayer-visible .canvasWrapper {\n  background-color: rgb(128,255,128);\n}\n\n#viewer.textLayer-visible .canvasWrapper canvas {\n  mix-blend-mode: screen;\n}\n\n#viewer.textLayer-visible .textLayer > div {\n  background-color: rgba(255, 255, 0, 0.1);\n  color: black;\n  border: solid 1px rgba(255, 0, 0, 0.5);\n  box-sizing: border-box;\n}\n\n#viewer.textLayer-hover .textLayer > div:hover {\n  background-color: white;\n  color: black;\n}\n\n#viewer.textLayer-shadow .textLayer > div {\n  background-color: rgba(255,255,255, .6);\n  color: black;\n}\n\n.grab-to-pan-grab {\n  cursor: url(\"images/grab.cur\"), move !important;\n  cursor: -webkit-grab !important;\n  cursor: grab !important;\n}\n.grab-to-pan-grab *:not(input):not(textarea):not(button):not(select):not(:link) {\n  cursor: inherit !important;\n}\n.grab-to-pan-grab:active,\n.grab-to-pan-grabbing {\n  cursor: url(\"images/grabbing.cur\"), move !important;\n  cursor: -webkit-grabbing !important;\n  cursor: grabbing !important;\n\n  position: fixed;\n  background: transparent;\n  display: block;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  overflow: hidden;\n  z-index: 50000; /* should be higher than anything else in PDF.js! */\n}\n\n@page {\n  margin: 0;\n}\n\n#printContainer {\n  display: none;\n}\n\n@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (min-resolution: 2dppx) {\n  /* Rules for Retina screens */\n  .toolbarButton::before {\n    -webkit-transform: scale(0.5);\n            transform: scale(0.5);\n    top: -5px;\n  }\n\n  .secondaryToolbarButton::before {\n    -webkit-transform: scale(0.5);\n            transform: scale(0.5);\n    top: -4px;\n  }\n\n  html[dir='ltr'] .toolbarButton::before,\n  html[dir='rtl'] .toolbarButton::before {\n    left: -1px;\n  }\n\n  html[dir='ltr'] .secondaryToolbarButton::before {\n    left: -2px;\n  }\n  html[dir='rtl'] .secondaryToolbarButton::before {\n    left: 186px;\n  }\n\n  .toolbarField.pageNumber.visiblePageIsLoading,\n  #findInput[data-status=\"pending\"] {\n    background-image: url(images/loading-small@2x.png);\n    background-size: 16px 17px;\n  }\n\n  .dropdownToolbarButton {\n    background: url(images/toolbarButton-menuArrows@2x.png) no-repeat;\n    background-size: 7px 16px;\n  }\n\n  html[dir='ltr'] .toolbarButton#sidebarToggle::before {\n    content: url(images/toolbarButton-sidebarToggle@2x.png);\n  }\n  html[dir='rtl'] .toolbarButton#sidebarToggle::before {\n    content: url(images/toolbarButton-sidebarToggle-rtl@2x.png);\n  }\n\n  html[dir='ltr'] .toolbarButton#secondaryToolbarToggle::before {\n    content: url(images/toolbarButton-secondaryToolbarToggle@2x.png);\n  }\n  html[dir='rtl'] .toolbarButton#secondaryToolbarToggle::before {\n    content: url(images/toolbarButton-secondaryToolbarToggle-rtl@2x.png);\n  }\n\n  html[dir='ltr'] .toolbarButton.findPrevious::before {\n    content: url(images/findbarButton-previous@2x.png);\n  }\n  html[dir='rtl'] .toolbarButton.findPrevious::before {\n    content: url(images/findbarButton-previous-rtl@2x.png);\n  }\n\n  html[dir='ltr'] .toolbarButton.findNext::before {\n    content: url(images/findbarButton-next@2x.png);\n  }\n  html[dir='rtl'] .toolbarButton.findNext::before {\n    content: url(images/findbarButton-next-rtl@2x.png);\n  }\n\n  html[dir='ltr'] .toolbarButton.pageUp::before {\n    content: url(images/toolbarButton-pageUp@2x.png);\n  }\n  html[dir='rtl'] .toolbarButton.pageUp::before {\n    content: url(images/toolbarButton-pageUp-rtl@2x.png);\n  }\n\n  html[dir='ltr'] .toolbarButton.pageDown::before {\n    content: url(images/toolbarButton-pageDown@2x.png);\n  }\n  html[dir='rtl'] .toolbarButton.pageDown::before {\n    content: url(images/toolbarButton-pageDown-rtl@2x.png);\n  }\n\n  .toolbarButton.zoomIn::before {\n    content: url(images/toolbarButton-zoomIn@2x.png);\n  }\n\n  .toolbarButton.zoomOut::before {\n    content: url(images/toolbarButton-zoomOut@2x.png);\n  }\n\n  .toolbarButton.presentationMode::before,\n  .secondaryToolbarButton.presentationMode::before {\n    content: url(images/toolbarButton-presentationMode@2x.png);\n  }\n\n  .toolbarButton.print::before,\n  .secondaryToolbarButton.print::before {\n    content: url(images/toolbarButton-print@2x.png);\n  }\n\n  .toolbarButton.openFile::before,\n  .secondaryToolbarButton.openFile::before {\n    content: url(images/toolbarButton-openFile@2x.png);\n  }\n\n  .toolbarButton.download::before,\n  .secondaryToolbarButton.download::before {\n    content: url(images/toolbarButton-download@2x.png);\n  }\n\n  .toolbarButton.bookmark::before,\n  .secondaryToolbarButton.bookmark::before {\n    content: url(images/toolbarButton-bookmark@2x.png);\n  }\n\n  #viewThumbnail.toolbarButton::before {\n    content: url(images/toolbarButton-viewThumbnail@2x.png);\n  }\n\n  html[dir=\"ltr\"] #viewOutline.toolbarButton::before {\n    content: url(images/toolbarButton-viewOutline@2x.png);\n  }\n  html[dir=\"rtl\"] #viewOutline.toolbarButton::before {\n    content: url(images/toolbarButton-viewOutline-rtl@2x.png);\n  }\n\n  #viewAttachments.toolbarButton::before {\n    content: url(images/toolbarButton-viewAttachments@2x.png);\n  }\n\n  #viewFind.toolbarButton::before {\n    content: url(images/toolbarButton-search@2x.png);\n  }\n\n  .secondaryToolbarButton.firstPage::before {\n    content: url(images/secondaryToolbarButton-firstPage@2x.png);\n  }\n\n  .secondaryToolbarButton.lastPage::before {\n    content: url(images/secondaryToolbarButton-lastPage@2x.png);\n  }\n\n  .secondaryToolbarButton.rotateCcw::before {\n    content: url(images/secondaryToolbarButton-rotateCcw@2x.png);\n  }\n\n  .secondaryToolbarButton.rotateCw::before {\n    content: url(images/secondaryToolbarButton-rotateCw@2x.png);\n  }\n\n  .secondaryToolbarButton.selectTool::before {\n    content: url(images/secondaryToolbarButton-selectTool@2x.png);\n  }\n\n  .secondaryToolbarButton.handTool::before {\n    content: url(images/secondaryToolbarButton-handTool@2x.png);\n  }\n\n  .secondaryToolbarButton.scrollVertical::before {\n    content: url(images/secondaryToolbarButton-scrollVertical@2x.png);\n  }\n\n  .secondaryToolbarButton.scrollHorizontal::before {\n    content: url(images/secondaryToolbarButton-scrollHorizontal@2x.png);\n  }\n\n  .secondaryToolbarButton.scrollWrapped::before {\n    content: url(images/secondaryToolbarButton-scrollWrapped@2x.png);\n  }\n\n  .secondaryToolbarButton.spreadNone::before {\n    content: url(images/secondaryToolbarButton-spreadNone@2x.png);\n  }\n\n  .secondaryToolbarButton.spreadOdd::before {\n    content: url(images/secondaryToolbarButton-spreadOdd@2x.png);\n  }\n\n  .secondaryToolbarButton.spreadEven::before {\n    content: url(images/secondaryToolbarButton-spreadEven@2x.png);\n  }\n\n  .secondaryToolbarButton.documentProperties::before {\n    content: url(images/secondaryToolbarButton-documentProperties@2x.png);\n  }\n\n  .outlineItemToggler::before {\n    -webkit-transform: scale(0.5);\n            transform: scale(0.5);\n    top: -1px;\n    content: url(images/treeitem-expanded@2x.png);\n  }\n  html[dir='ltr'] .outlineItemToggler.outlineItemsHidden::before {\n    content: url(images/treeitem-collapsed@2x.png);\n  }\n  html[dir='rtl'] .outlineItemToggler.outlineItemsHidden::before {\n    content: url(images/treeitem-collapsed-rtl@2x.png);\n  }\n  html[dir='ltr'] .outlineItemToggler::before {\n    right: 0;\n  }\n  html[dir='rtl'] .outlineItemToggler::before {\n    left: 0;\n  }\n}\n\n@media print {\n  /* General rules for printing. */\n  body {\n    background: transparent none;\n  }\n\n  /* Rules for browsers that don't support mozPrintCallback. */\n  #sidebarContainer, #secondaryToolbar, .toolbar, #loadingBox, #errorWrapper, .textLayer {\n    display: none;\n  }\n  #viewerContainer {\n    overflow: visible;\n  }\n\n  #mainContainer, #viewerContainer, .page, .page canvas {\n    position: static;\n    padding: 0;\n    margin: 0;\n  }\n\n  .page {\n    float: left;\n    display: none;\n    border: none;\n    box-shadow: none;\n    background-clip: content-box;\n    background-color: white;\n  }\n\n  .page[data-loaded] {\n    display: block;\n  }\n\n  .fileInput {\n    display: none;\n  }\n\n  /* Rules for browsers that support PDF.js printing */\n  body[data-pdfjsprinting] #outerContainer {\n    display: none;\n  }\n  body[data-pdfjsprinting] #printContainer {\n    display: block;\n  }\n  #printContainer {\n    height: 100%;\n  }\n  /* wrapper around (scaled) print canvas elements */\n  #printContainer > div {\n    position: relative;\n    top: 0;\n    left: 0;\n    width: 1px;\n    height: 1px;\n    overflow: visible;\n    page-break-after: always;\n    page-break-inside: avoid;\n  }\n  #printContainer canvas,\n  #printContainer img {\n    display: block;\n  }\n}\n\n.visibleLargeView,\n.visibleMediumView,\n.visibleSmallView {\n  display: none;\n}\n\n@media all and (max-width: 900px) {\n  #toolbarViewerMiddle {\n    display: table;\n    margin: auto;\n    left: auto;\n    position: inherit;\n    -webkit-transform: none;\n            transform: none;\n  }\n}\n\n@media all and (max-width: 840px) {\n  #sidebarContent {\n    background-color: hsla(0,0%,0%,.7);\n  }\n\n  html[dir='ltr'] #outerContainer.sidebarOpen #viewerContainer {\n    left: 0px !important;\n  }\n  html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer {\n    right: 0px !important;\n  }\n\n  #outerContainer .hiddenLargeView,\n  #outerContainer .hiddenMediumView {\n    display: inherit;\n  }\n  #outerContainer .visibleLargeView,\n  #outerContainer .visibleMediumView {\n    display: none;\n  }\n}\n\n@media all and (max-width: 770px) {\n  #outerContainer .hiddenLargeView {\n    display: none;\n  }\n  #outerContainer .visibleLargeView {\n    display: inherit;\n  }\n}\n\n@media all and (max-width: 700px) {\n  #outerContainer .hiddenMediumView {\n    display: none;\n  }\n  #outerContainer .visibleMediumView {\n    display: inherit;\n  }\n}\n\n@media all and (max-width: 640px) {\n  .hiddenSmallView, .hiddenSmallView * {\n    display: none;\n  }\n  .visibleSmallView {\n    display: inherit;\n  }\n  .toolbarButtonSpacer {\n    width: 0;\n  }\n  html[dir='ltr'] .findbar {\n    left: 38px;\n  }\n  html[dir='rtl'] .findbar {\n    right: 38px;\n  }\n}\n\n@media all and (max-width: 535px) {\n  #scaleSelectContainer {\n    display: none;\n  }\n}\n"
  },
  {
    "path": "static/js/pdfjs/web/viewer.html",
    "content": "<!DOCTYPE html>\n<!--\nCopyright 2012 Mozilla Foundation\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\nAdobe CMap resources are covered by their own copyright but the same license:\n\n    Copyright 1990-2015 Adobe Systems Incorporated.\n\nSee https://github.com/adobe-type-tools/cmap-resources\n-->\n<html dir=\"ltr\" mozdisallowselectionprint>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">\n    <meta name=\"google\" content=\"notranslate\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <title>PDF.js viewer</title>\n\n\n    <link rel=\"stylesheet\" href=\"viewer.css\">\n\n\n<!-- This snippet is used in production (included from viewer.html) -->\n<link rel=\"resource\" type=\"application/l10n\" href=\"locale/locale.properties\">\n<script src=\"../build/pdf.js\"></script>\n\n\n    <script src=\"viewer.js\"></script>\n\n  </head>\n\n  <body tabindex=\"1\" class=\"loadingInProgress\">\n    <div id=\"outerContainer\">\n\n      <div id=\"sidebarContainer\">\n        <div id=\"toolbarSidebar\">\n          <div class=\"splitToolbarButton toggled\">\n            <button id=\"viewThumbnail\" class=\"toolbarButton toggled\" title=\"Show Thumbnails\" tabindex=\"2\" data-l10n-id=\"thumbs\">\n               <span data-l10n-id=\"thumbs_label\">Thumbnails</span>\n            </button>\n            <button id=\"viewOutline\" class=\"toolbarButton\" title=\"Show Document Outline (double-click to expand/collapse all items)\" tabindex=\"3\" data-l10n-id=\"document_outline\">\n               <span data-l10n-id=\"document_outline_label\">Document Outline</span>\n            </button>\n            <button id=\"viewAttachments\" class=\"toolbarButton\" title=\"Show Attachments\" tabindex=\"4\" data-l10n-id=\"attachments\">\n               <span data-l10n-id=\"attachments_label\">Attachments</span>\n            </button>\n          </div>\n        </div>\n        <div id=\"sidebarContent\">\n          <div id=\"thumbnailView\">\n          </div>\n          <div id=\"outlineView\" class=\"hidden\">\n          </div>\n          <div id=\"attachmentsView\" class=\"hidden\">\n          </div>\n        </div>\n        <div id=\"sidebarResizer\" class=\"hidden\"></div>\n      </div>  <!-- sidebarContainer -->\n\n      <div id=\"mainContainer\">\n        <div class=\"findbar hidden doorHanger\" id=\"findbar\">\n          <div id=\"findbarInputContainer\">\n            <input id=\"findInput\" class=\"toolbarField\" title=\"Find\" placeholder=\"Find in document…\" tabindex=\"91\" data-l10n-id=\"find_input\">\n            <div class=\"splitToolbarButton\">\n              <button id=\"findPrevious\" class=\"toolbarButton findPrevious\" title=\"Find the previous occurrence of the phrase\" tabindex=\"92\" data-l10n-id=\"find_previous\">\n                <span data-l10n-id=\"find_previous_label\">Previous</span>\n              </button>\n              <div class=\"splitToolbarButtonSeparator\"></div>\n              <button id=\"findNext\" class=\"toolbarButton findNext\" title=\"Find the next occurrence of the phrase\" tabindex=\"93\" data-l10n-id=\"find_next\">\n                <span data-l10n-id=\"find_next_label\">Next</span>\n              </button>\n            </div>\n          </div>\n\n          <div id=\"findbarOptionsOneContainer\">\n            <input type=\"checkbox\" id=\"findHighlightAll\" class=\"toolbarField\" tabindex=\"94\">\n            <label for=\"findHighlightAll\" class=\"toolbarLabel\" data-l10n-id=\"find_highlight\">Highlight all</label>\n            <input type=\"checkbox\" id=\"findMatchCase\" class=\"toolbarField\" tabindex=\"95\">\n            <label for=\"findMatchCase\" class=\"toolbarLabel\" data-l10n-id=\"find_match_case_label\">Match case</label>\n          </div>\n          <div id=\"findbarOptionsTwoContainer\">\n            <input type=\"checkbox\" id=\"findEntireWord\" class=\"toolbarField\" tabindex=\"96\">\n            <label for=\"findEntireWord\" class=\"toolbarLabel\" data-l10n-id=\"find_entire_word_label\">Whole words</label>\n            <span id=\"findResultsCount\" class=\"toolbarLabel hidden\"></span>\n          </div>\n\n          <div id=\"findbarMessageContainer\">\n            <span id=\"findMsg\" class=\"toolbarLabel\"></span>\n          </div>\n        </div>  <!-- findbar -->\n\n        <div id=\"secondaryToolbar\" class=\"secondaryToolbar hidden doorHangerRight\">\n          <div id=\"secondaryToolbarButtonContainer\">\n            <button id=\"secondaryPresentationMode\" class=\"secondaryToolbarButton presentationMode visibleLargeView\" title=\"Switch to Presentation Mode\" tabindex=\"51\" data-l10n-id=\"presentation_mode\">\n              <span data-l10n-id=\"presentation_mode_label\">Presentation Mode</span>\n            </button>\n\n            <button id=\"secondaryOpenFile\" class=\"secondaryToolbarButton openFile visibleLargeView\" title=\"Open File\" tabindex=\"52\" data-l10n-id=\"open_file\">\n              <span data-l10n-id=\"open_file_label\">Open</span>\n            </button>\n\n            <button id=\"secondaryPrint\" class=\"secondaryToolbarButton print visibleMediumView\" title=\"Print\" tabindex=\"53\" data-l10n-id=\"print\">\n              <span data-l10n-id=\"print_label\">Print</span>\n            </button>\n\n            <button id=\"secondaryDownload\" class=\"secondaryToolbarButton download visibleMediumView\" title=\"Download\" tabindex=\"54\" data-l10n-id=\"download\">\n              <span data-l10n-id=\"download_label\">Download</span>\n            </button>\n\n            <a href=\"#\" id=\"secondaryViewBookmark\" class=\"secondaryToolbarButton bookmark visibleSmallView\" title=\"Current view (copy or open in new window)\" tabindex=\"55\" data-l10n-id=\"bookmark\">\n              <span data-l10n-id=\"bookmark_label\">Current View</span>\n            </a>\n\n            <div class=\"horizontalToolbarSeparator visibleLargeView\"></div>\n\n            <button id=\"firstPage\" class=\"secondaryToolbarButton firstPage\" title=\"Go to First Page\" tabindex=\"56\" data-l10n-id=\"first_page\">\n              <span data-l10n-id=\"first_page_label\">Go to First Page</span>\n            </button>\n            <button id=\"lastPage\" class=\"secondaryToolbarButton lastPage\" title=\"Go to Last Page\" tabindex=\"57\" data-l10n-id=\"last_page\">\n              <span data-l10n-id=\"last_page_label\">Go to Last Page</span>\n            </button>\n\n            <div class=\"horizontalToolbarSeparator\"></div>\n\n            <button id=\"pageRotateCw\" class=\"secondaryToolbarButton rotateCw\" title=\"Rotate Clockwise\" tabindex=\"58\" data-l10n-id=\"page_rotate_cw\">\n              <span data-l10n-id=\"page_rotate_cw_label\">Rotate Clockwise</span>\n            </button>\n            <button id=\"pageRotateCcw\" class=\"secondaryToolbarButton rotateCcw\" title=\"Rotate Counterclockwise\" tabindex=\"59\" data-l10n-id=\"page_rotate_ccw\">\n              <span data-l10n-id=\"page_rotate_ccw_label\">Rotate Counterclockwise</span>\n            </button>\n\n            <div class=\"horizontalToolbarSeparator\"></div>\n\n            <button id=\"cursorSelectTool\" class=\"secondaryToolbarButton selectTool toggled\" title=\"Enable Text Selection Tool\" tabindex=\"60\" data-l10n-id=\"cursor_text_select_tool\">\n              <span data-l10n-id=\"cursor_text_select_tool_label\">Text Selection Tool</span>\n            </button>\n            <button id=\"cursorHandTool\" class=\"secondaryToolbarButton handTool\" title=\"Enable Hand Tool\" tabindex=\"61\" data-l10n-id=\"cursor_hand_tool\">\n              <span data-l10n-id=\"cursor_hand_tool_label\">Hand Tool</span>\n            </button>\n\n            <div class=\"horizontalToolbarSeparator\"></div>\n\n            <button id=\"scrollVertical\" class=\"secondaryToolbarButton scrollModeButtons scrollVertical toggled\" title=\"Use Vertical Scrolling\" tabindex=\"62\" data-l10n-id=\"scroll_vertical\">\n              <span data-l10n-id=\"scroll_vertical_label\">Vertical Scrolling</span>\n            </button>\n            <button id=\"scrollHorizontal\" class=\"secondaryToolbarButton scrollModeButtons scrollHorizontal\" title=\"Use Horizontal Scrolling\" tabindex=\"63\" data-l10n-id=\"scroll_horizontal\">\n              <span data-l10n-id=\"scroll_horizontal_label\">Horizontal Scrolling</span>\n            </button>\n            <button id=\"scrollWrapped\" class=\"secondaryToolbarButton scrollModeButtons scrollWrapped\" title=\"Use Wrapped Scrolling\" tabindex=\"64\" data-l10n-id=\"scroll_wrapped\">\n              <span data-l10n-id=\"scroll_wrapped_label\">Wrapped Scrolling</span>\n            </button>\n\n            <div class=\"horizontalToolbarSeparator scrollModeButtons\"></div>\n\n            <button id=\"spreadNone\" class=\"secondaryToolbarButton spreadModeButtons spreadNone toggled\" title=\"Do not join page spreads\" tabindex=\"65\" data-l10n-id=\"spread_none\">\n              <span data-l10n-id=\"spread_none_label\">No Spreads</span>\n            </button>\n            <button id=\"spreadOdd\" class=\"secondaryToolbarButton spreadModeButtons spreadOdd\" title=\"Join page spreads starting with odd-numbered pages\" tabindex=\"66\" data-l10n-id=\"spread_odd\">\n              <span data-l10n-id=\"spread_odd_label\">Odd Spreads</span>\n            </button>\n            <button id=\"spreadEven\" class=\"secondaryToolbarButton spreadModeButtons spreadEven\" title=\"Join page spreads starting with even-numbered pages\" tabindex=\"67\" data-l10n-id=\"spread_even\">\n              <span data-l10n-id=\"spread_even_label\">Even Spreads</span>\n            </button>\n\n            <div class=\"horizontalToolbarSeparator spreadModeButtons\"></div>\n\n            <button id=\"documentProperties\" class=\"secondaryToolbarButton documentProperties\" title=\"Document Properties…\" tabindex=\"68\" data-l10n-id=\"document_properties\">\n              <span data-l10n-id=\"document_properties_label\">Document Properties…</span>\n            </button>\n          </div>\n        </div>  <!-- secondaryToolbar -->\n\n        <div class=\"toolbar\">\n          <div id=\"toolbarContainer\">\n            <div id=\"toolbarViewer\">\n              <div id=\"toolbarViewerLeft\">\n                <button id=\"sidebarToggle\" class=\"toolbarButton\" title=\"Toggle Sidebar\" tabindex=\"11\" data-l10n-id=\"toggle_sidebar\">\n                  <span data-l10n-id=\"toggle_sidebar_label\">Toggle Sidebar</span>\n                </button>\n                <div class=\"toolbarButtonSpacer\"></div>\n                <button id=\"viewFind\" class=\"toolbarButton\" title=\"Find in Document\" tabindex=\"12\" data-l10n-id=\"findbar\">\n                  <span data-l10n-id=\"findbar_label\">Find</span>\n                </button>\n                <div class=\"splitToolbarButton hiddenSmallView\">\n                  <button class=\"toolbarButton pageUp\" title=\"Previous Page\" id=\"previous\" tabindex=\"13\" data-l10n-id=\"previous\">\n                    <span data-l10n-id=\"previous_label\">Previous</span>\n                  </button>\n                  <div class=\"splitToolbarButtonSeparator\"></div>\n                  <button class=\"toolbarButton pageDown\" title=\"Next Page\" id=\"next\" tabindex=\"14\" data-l10n-id=\"next\">\n                    <span data-l10n-id=\"next_label\">Next</span>\n                  </button>\n                </div>\n                <input type=\"number\" id=\"pageNumber\" class=\"toolbarField pageNumber\" title=\"Page\" value=\"1\" size=\"4\" min=\"1\" tabindex=\"15\" data-l10n-id=\"page\">\n                <span id=\"numPages\" class=\"toolbarLabel\"></span>\n              </div>\n              <div id=\"toolbarViewerRight\">\n                <button id=\"presentationMode\" class=\"toolbarButton presentationMode hiddenLargeView\" title=\"Switch to Presentation Mode\" tabindex=\"31\" data-l10n-id=\"presentation_mode\">\n                  <span data-l10n-id=\"presentation_mode_label\">Presentation Mode</span>\n                </button>\n\n                <button id=\"openFile\" class=\"toolbarButton openFile hiddenLargeView\" title=\"Open File\" tabindex=\"32\" data-l10n-id=\"open_file\">\n                  <span data-l10n-id=\"open_file_label\">Open</span>\n                </button>\n\n                <button id=\"print\" class=\"toolbarButton print hiddenMediumView\" title=\"Print\" tabindex=\"33\" data-l10n-id=\"print\">\n                  <span data-l10n-id=\"print_label\">Print</span>\n                </button>\n\n                <button id=\"download\" class=\"toolbarButton download hiddenMediumView\" title=\"Download\" tabindex=\"34\" data-l10n-id=\"download\">\n                  <span data-l10n-id=\"download_label\">Download</span>\n                </button>\n                <a href=\"#\" id=\"viewBookmark\" class=\"toolbarButton bookmark hiddenSmallView\" title=\"Current view (copy or open in new window)\" tabindex=\"35\" data-l10n-id=\"bookmark\">\n                  <span data-l10n-id=\"bookmark_label\">Current View</span>\n                </a>\n\n                <div class=\"verticalToolbarSeparator hiddenSmallView\"></div>\n\n                <button id=\"secondaryToolbarToggle\" class=\"toolbarButton\" title=\"Tools\" tabindex=\"36\" data-l10n-id=\"tools\">\n                  <span data-l10n-id=\"tools_label\">Tools</span>\n                </button>\n              </div>\n              <div id=\"toolbarViewerMiddle\">\n                <div class=\"splitToolbarButton\">\n                  <button id=\"zoomOut\" class=\"toolbarButton zoomOut\" title=\"Zoom Out\" tabindex=\"21\" data-l10n-id=\"zoom_out\">\n                    <span data-l10n-id=\"zoom_out_label\">Zoom Out</span>\n                  </button>\n                  <div class=\"splitToolbarButtonSeparator\"></div>\n                  <button id=\"zoomIn\" class=\"toolbarButton zoomIn\" title=\"Zoom In\" tabindex=\"22\" data-l10n-id=\"zoom_in\">\n                    <span data-l10n-id=\"zoom_in_label\">Zoom In</span>\n                   </button>\n                </div>\n                <span id=\"scaleSelectContainer\" class=\"dropdownToolbarButton\">\n                  <select id=\"scaleSelect\" title=\"Zoom\" tabindex=\"23\" data-l10n-id=\"zoom\">\n                    <option id=\"pageAutoOption\" title=\"\" value=\"auto\" selected=\"selected\" data-l10n-id=\"page_scale_auto\">Automatic Zoom</option>\n                    <option id=\"pageActualOption\" title=\"\" value=\"page-actual\" data-l10n-id=\"page_scale_actual\">Actual Size</option>\n                    <option id=\"pageFitOption\" title=\"\" value=\"page-fit\" data-l10n-id=\"page_scale_fit\">Page Fit</option>\n                    <option id=\"pageWidthOption\" title=\"\" value=\"page-width\" data-l10n-id=\"page_scale_width\">Page Width</option>\n                    <option id=\"customScaleOption\" title=\"\" value=\"custom\" disabled=\"disabled\" hidden=\"true\"></option>\n                    <option title=\"\" value=\"0.5\" data-l10n-id=\"page_scale_percent\" data-l10n-args='{ \"scale\": 50 }'>50%</option>\n                    <option title=\"\" value=\"0.75\" data-l10n-id=\"page_scale_percent\" data-l10n-args='{ \"scale\": 75 }'>75%</option>\n                    <option title=\"\" value=\"1\" data-l10n-id=\"page_scale_percent\" data-l10n-args='{ \"scale\": 100 }'>100%</option>\n                    <option title=\"\" value=\"1.25\" data-l10n-id=\"page_scale_percent\" data-l10n-args='{ \"scale\": 125 }'>125%</option>\n                    <option title=\"\" value=\"1.5\" data-l10n-id=\"page_scale_percent\" data-l10n-args='{ \"scale\": 150 }'>150%</option>\n                    <option title=\"\" value=\"2\" data-l10n-id=\"page_scale_percent\" data-l10n-args='{ \"scale\": 200 }'>200%</option>\n                    <option title=\"\" value=\"3\" data-l10n-id=\"page_scale_percent\" data-l10n-args='{ \"scale\": 300 }'>300%</option>\n                    <option title=\"\" value=\"4\" data-l10n-id=\"page_scale_percent\" data-l10n-args='{ \"scale\": 400 }'>400%</option>\n                  </select>\n                </span>\n              </div>\n            </div>\n            <div id=\"loadingBar\">\n              <div class=\"progress\">\n                <div class=\"glimmer\">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <menu type=\"context\" id=\"viewerContextMenu\">\n          <menuitem id=\"contextFirstPage\" label=\"First Page\"\n                    data-l10n-id=\"first_page\"></menuitem>\n          <menuitem id=\"contextLastPage\" label=\"Last Page\"\n                    data-l10n-id=\"last_page\"></menuitem>\n          <menuitem id=\"contextPageRotateCw\" label=\"Rotate Clockwise\"\n                    data-l10n-id=\"page_rotate_cw\"></menuitem>\n          <menuitem id=\"contextPageRotateCcw\" label=\"Rotate Counter-Clockwise\"\n                    data-l10n-id=\"page_rotate_ccw\"></menuitem>\n        </menu>\n\n        <div id=\"viewerContainer\" tabindex=\"0\">\n          <div id=\"viewer\" class=\"pdfViewer\"></div>\n        </div>\n\n        <div id=\"errorWrapper\" hidden='true'>\n          <div id=\"errorMessageLeft\">\n            <span id=\"errorMessage\"></span>\n            <button id=\"errorShowMore\" data-l10n-id=\"error_more_info\">\n              More Information\n            </button>\n            <button id=\"errorShowLess\" data-l10n-id=\"error_less_info\" hidden='true'>\n              Less Information\n            </button>\n          </div>\n          <div id=\"errorMessageRight\">\n            <button id=\"errorClose\" data-l10n-id=\"error_close\">\n              Close\n            </button>\n          </div>\n          <div class=\"clearBoth\"></div>\n          <textarea id=\"errorMoreInfo\" hidden='true' readonly=\"readonly\"></textarea>\n        </div>\n      </div> <!-- mainContainer -->\n\n      <div id=\"overlayContainer\" class=\"hidden\">\n        <div id=\"passwordOverlay\" class=\"container hidden\">\n          <div class=\"dialog\">\n            <div class=\"row\">\n              <p id=\"passwordText\" data-l10n-id=\"password_label\">Enter the password to open this PDF file:</p>\n            </div>\n            <div class=\"row\">\n              <input type=\"password\" id=\"password\" class=\"toolbarField\">\n            </div>\n            <div class=\"buttonRow\">\n              <button id=\"passwordCancel\" class=\"overlayButton\"><span data-l10n-id=\"password_cancel\">Cancel</span></button>\n              <button id=\"passwordSubmit\" class=\"overlayButton\"><span data-l10n-id=\"password_ok\">OK</span></button>\n            </div>\n          </div>\n        </div>\n        <div id=\"documentPropertiesOverlay\" class=\"container hidden\">\n          <div class=\"dialog\">\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_file_name\">File name:</span> <p id=\"fileNameField\">-</p>\n            </div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_file_size\">File size:</span> <p id=\"fileSizeField\">-</p>\n            </div>\n            <div class=\"separator\"></div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_title\">Title:</span> <p id=\"titleField\">-</p>\n            </div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_author\">Author:</span> <p id=\"authorField\">-</p>\n            </div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_subject\">Subject:</span> <p id=\"subjectField\">-</p>\n            </div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_keywords\">Keywords:</span> <p id=\"keywordsField\">-</p>\n            </div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_creation_date\">Creation Date:</span> <p id=\"creationDateField\">-</p>\n            </div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_modification_date\">Modification Date:</span> <p id=\"modificationDateField\">-</p>\n            </div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_creator\">Creator:</span> <p id=\"creatorField\">-</p>\n            </div>\n            <div class=\"separator\"></div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_producer\">PDF Producer:</span> <p id=\"producerField\">-</p>\n            </div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_version\">PDF Version:</span> <p id=\"versionField\">-</p>\n            </div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_page_count\">Page Count:</span> <p id=\"pageCountField\">-</p>\n            </div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_page_size\">Page Size:</span> <p id=\"pageSizeField\">-</p>\n            </div>\n            <div class=\"separator\"></div>\n            <div class=\"row\">\n              <span data-l10n-id=\"document_properties_linearized\">Fast Web View:</span> <p id=\"linearizedField\">-</p>\n            </div>\n            <div class=\"buttonRow\">\n              <button id=\"documentPropertiesClose\" class=\"overlayButton\"><span data-l10n-id=\"document_properties_close\">Close</span></button>\n            </div>\n          </div>\n        </div>\n        <div id=\"printServiceOverlay\" class=\"container hidden\">\n          <div class=\"dialog\">\n            <div class=\"row\">\n              <span data-l10n-id=\"print_progress_message\">Preparing document for printing…</span>\n            </div>\n            <div class=\"row\">\n              <progress value=\"0\" max=\"100\"></progress>\n              <span data-l10n-id=\"print_progress_percent\" data-l10n-args='{ \"progress\": 0 }' class=\"relative-progress\">0%</span>\n            </div>\n            <div class=\"buttonRow\">\n              <button id=\"printCancel\" class=\"overlayButton\"><span data-l10n-id=\"print_progress_close\">Cancel</span></button>\n            </div>\n          </div>\n        </div>\n      </div>  <!-- overlayContainer -->\n\n    </div> <!-- outerContainer -->\n    <div id=\"printContainer\"></div>\n  </body>\n</html>\n\n"
  },
  {
    "path": "static/js/pdfjs/web/viewer.js",
    "content": "/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n;\nvar pdfjsWebApp = void 0,\n    pdfjsWebAppOptions = void 0;\n{\n  pdfjsWebApp = __webpack_require__(1);\n  pdfjsWebAppOptions = __webpack_require__(12);\n}\n;\n{\n  __webpack_require__(38);\n}\n;\n{\n  __webpack_require__(43);\n}\nfunction getViewerConfiguration() {\n  return {\n    appContainer: document.body,\n    mainContainer: document.getElementById('viewerContainer'),\n    viewerContainer: document.getElementById('viewer'),\n    eventBus: null,\n    toolbar: {\n      container: document.getElementById('toolbarViewer'),\n      numPages: document.getElementById('numPages'),\n      pageNumber: document.getElementById('pageNumber'),\n      scaleSelectContainer: document.getElementById('scaleSelectContainer'),\n      scaleSelect: document.getElementById('scaleSelect'),\n      customScaleOption: document.getElementById('customScaleOption'),\n      previous: document.getElementById('previous'),\n      next: document.getElementById('next'),\n      zoomIn: document.getElementById('zoomIn'),\n      zoomOut: document.getElementById('zoomOut'),\n      viewFind: document.getElementById('viewFind'),\n      openFile: document.getElementById('openFile'),\n      print: document.getElementById('print'),\n      presentationModeButton: document.getElementById('presentationMode'),\n      download: document.getElementById('download'),\n      viewBookmark: document.getElementById('viewBookmark')\n    },\n    secondaryToolbar: {\n      toolbar: document.getElementById('secondaryToolbar'),\n      toggleButton: document.getElementById('secondaryToolbarToggle'),\n      toolbarButtonContainer: document.getElementById('secondaryToolbarButtonContainer'),\n      presentationModeButton: document.getElementById('secondaryPresentationMode'),\n      openFileButton: document.getElementById('secondaryOpenFile'),\n      printButton: document.getElementById('secondaryPrint'),\n      downloadButton: document.getElementById('secondaryDownload'),\n      viewBookmarkButton: document.getElementById('secondaryViewBookmark'),\n      firstPageButton: document.getElementById('firstPage'),\n      lastPageButton: document.getElementById('lastPage'),\n      pageRotateCwButton: document.getElementById('pageRotateCw'),\n      pageRotateCcwButton: document.getElementById('pageRotateCcw'),\n      cursorSelectToolButton: document.getElementById('cursorSelectTool'),\n      cursorHandToolButton: document.getElementById('cursorHandTool'),\n      scrollVerticalButton: document.getElementById('scrollVertical'),\n      scrollHorizontalButton: document.getElementById('scrollHorizontal'),\n      scrollWrappedButton: document.getElementById('scrollWrapped'),\n      spreadNoneButton: document.getElementById('spreadNone'),\n      spreadOddButton: document.getElementById('spreadOdd'),\n      spreadEvenButton: document.getElementById('spreadEven'),\n      documentPropertiesButton: document.getElementById('documentProperties')\n    },\n    fullscreen: {\n      contextFirstPage: document.getElementById('contextFirstPage'),\n      contextLastPage: document.getElementById('contextLastPage'),\n      contextPageRotateCw: document.getElementById('contextPageRotateCw'),\n      contextPageRotateCcw: document.getElementById('contextPageRotateCcw')\n    },\n    sidebar: {\n      outerContainer: document.getElementById('outerContainer'),\n      viewerContainer: document.getElementById('viewerContainer'),\n      toggleButton: document.getElementById('sidebarToggle'),\n      thumbnailButton: document.getElementById('viewThumbnail'),\n      outlineButton: document.getElementById('viewOutline'),\n      attachmentsButton: document.getElementById('viewAttachments'),\n      thumbnailView: document.getElementById('thumbnailView'),\n      outlineView: document.getElementById('outlineView'),\n      attachmentsView: document.getElementById('attachmentsView')\n    },\n    sidebarResizer: {\n      outerContainer: document.getElementById('outerContainer'),\n      resizer: document.getElementById('sidebarResizer')\n    },\n    findBar: {\n      bar: document.getElementById('findbar'),\n      toggleButton: document.getElementById('viewFind'),\n      findField: document.getElementById('findInput'),\n      highlightAllCheckbox: document.getElementById('findHighlightAll'),\n      caseSensitiveCheckbox: document.getElementById('findMatchCase'),\n      entireWordCheckbox: document.getElementById('findEntireWord'),\n      findMsg: document.getElementById('findMsg'),\n      findResultsCount: document.getElementById('findResultsCount'),\n      findPreviousButton: document.getElementById('findPrevious'),\n      findNextButton: document.getElementById('findNext')\n    },\n    passwordOverlay: {\n      overlayName: 'passwordOverlay',\n      container: document.getElementById('passwordOverlay'),\n      label: document.getElementById('passwordText'),\n      input: document.getElementById('password'),\n      submitButton: document.getElementById('passwordSubmit'),\n      cancelButton: document.getElementById('passwordCancel')\n    },\n    documentProperties: {\n      overlayName: 'documentPropertiesOverlay',\n      container: document.getElementById('documentPropertiesOverlay'),\n      closeButton: document.getElementById('documentPropertiesClose'),\n      fields: {\n        'fileName': document.getElementById('fileNameField'),\n        'fileSize': document.getElementById('fileSizeField'),\n        'title': document.getElementById('titleField'),\n        'author': document.getElementById('authorField'),\n        'subject': document.getElementById('subjectField'),\n        'keywords': document.getElementById('keywordsField'),\n        'creationDate': document.getElementById('creationDateField'),\n        'modificationDate': document.getElementById('modificationDateField'),\n        'creator': document.getElementById('creatorField'),\n        'producer': document.getElementById('producerField'),\n        'version': document.getElementById('versionField'),\n        'pageCount': document.getElementById('pageCountField'),\n        'pageSize': document.getElementById('pageSizeField'),\n        'linearized': document.getElementById('linearizedField')\n      }\n    },\n    errorWrapper: {\n      container: document.getElementById('errorWrapper'),\n      errorMessage: document.getElementById('errorMessage'),\n      closeButton: document.getElementById('errorClose'),\n      errorMoreInfo: document.getElementById('errorMoreInfo'),\n      moreInfoButton: document.getElementById('errorShowMore'),\n      lessInfoButton: document.getElementById('errorShowLess')\n    },\n    printContainer: document.getElementById('printContainer'),\n    openFileInputName: 'fileInput',\n    debuggerScriptPath: './debugger.js'\n  };\n}\nfunction webViewerLoad() {\n  var config = getViewerConfiguration();\n  window.PDFViewerApplication = pdfjsWebApp.PDFViewerApplication;\n  window.PDFViewerApplicationOptions = pdfjsWebAppOptions.AppOptions;\n  pdfjsWebApp.PDFViewerApplication.run(config);\n}\nif (document.readyState === 'interactive' || document.readyState === 'complete') {\n  webViewerLoad();\n} else {\n  document.addEventListener('DOMContentLoaded', webViewerLoad, true);\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFPrintServiceFactory = exports.DefaultExternalServices = exports.PDFViewerApplication = undefined;\n\nvar _regenerator = __webpack_require__(2);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdfjsLib = __webpack_require__(7);\n\nvar _pdf_cursor_tools = __webpack_require__(8);\n\nvar _pdf_rendering_queue = __webpack_require__(10);\n\nvar _pdf_sidebar = __webpack_require__(11);\n\nvar _app_options = __webpack_require__(12);\n\nvar _dom_events = __webpack_require__(14);\n\nvar _overlay_manager = __webpack_require__(15);\n\nvar _password_prompt = __webpack_require__(16);\n\nvar _pdf_attachment_viewer = __webpack_require__(17);\n\nvar _pdf_document_properties = __webpack_require__(18);\n\nvar _pdf_find_bar = __webpack_require__(19);\n\nvar _pdf_find_controller = __webpack_require__(20);\n\nvar _pdf_history = __webpack_require__(22);\n\nvar _pdf_link_service = __webpack_require__(23);\n\nvar _pdf_outline_viewer = __webpack_require__(24);\n\nvar _pdf_presentation_mode = __webpack_require__(25);\n\nvar _pdf_sidebar_resizer = __webpack_require__(26);\n\nvar _pdf_thumbnail_viewer = __webpack_require__(27);\n\nvar _pdf_viewer = __webpack_require__(29);\n\nvar _secondary_toolbar = __webpack_require__(34);\n\nvar _toolbar = __webpack_require__(36);\n\nvar _view_history = __webpack_require__(37);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nvar DEFAULT_SCALE_DELTA = 1.1;\nvar DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000;\nvar FORCE_PAGES_LOADED_TIMEOUT = 10000;\nvar DefaultExternalServices = {\n  updateFindControlState: function updateFindControlState(data) {},\n  updateFindMatchesCount: function updateFindMatchesCount(data) {},\n  initPassiveLoading: function initPassiveLoading(callbacks) {},\n  fallback: function fallback(data, callback) {},\n  reportTelemetry: function reportTelemetry(data) {},\n  createDownloadManager: function createDownloadManager(options) {\n    throw new Error('Not implemented: createDownloadManager');\n  },\n  createPreferences: function createPreferences() {\n    throw new Error('Not implemented: createPreferences');\n  },\n  createL10n: function createL10n(options) {\n    throw new Error('Not implemented: createL10n');\n  },\n\n  supportsIntegratedFind: false,\n  supportsDocumentFonts: true,\n  supportsDocumentColors: true,\n  supportedMouseWheelZoomModifierKeys: {\n    ctrlKey: true,\n    metaKey: true\n  }\n};\nvar PDFViewerApplication = {\n  initialBookmark: document.location.hash.substring(1),\n  initialized: false,\n  fellback: false,\n  appConfig: null,\n  pdfDocument: null,\n  pdfLoadingTask: null,\n  printService: null,\n  pdfViewer: null,\n  pdfThumbnailViewer: null,\n  pdfRenderingQueue: null,\n  pdfPresentationMode: null,\n  pdfDocumentProperties: null,\n  pdfLinkService: null,\n  pdfHistory: null,\n  pdfSidebar: null,\n  pdfSidebarResizer: null,\n  pdfOutlineViewer: null,\n  pdfAttachmentViewer: null,\n  pdfCursorTools: null,\n  store: null,\n  downloadManager: null,\n  overlayManager: null,\n  preferences: null,\n  toolbar: null,\n  secondaryToolbar: null,\n  eventBus: null,\n  l10n: null,\n  isInitialViewSet: false,\n  downloadComplete: false,\n  isViewerEmbedded: window.parent !== window,\n  url: '',\n  baseUrl: '',\n  externalServices: DefaultExternalServices,\n  _boundEvents: {},\n  contentDispositionFilename: null,\n  initialize: function () {\n    var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(appConfig) {\n      var _this = this;\n\n      var appContainer;\n      return _regenerator2.default.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              this.preferences = this.externalServices.createPreferences();\n              this.appConfig = appConfig;\n              _context.next = 4;\n              return this._readPreferences();\n\n            case 4:\n              _context.next = 6;\n              return this._parseHashParameters();\n\n            case 6:\n              _context.next = 8;\n              return this._initializeL10n();\n\n            case 8:\n              if (this.isViewerEmbedded && _app_options.AppOptions.get('externalLinkTarget') === _pdfjsLib.LinkTarget.NONE) {\n                _app_options.AppOptions.set('externalLinkTarget', _pdfjsLib.LinkTarget.TOP);\n              }\n              _context.next = 11;\n              return this._initializeViewerComponents();\n\n            case 11:\n              this.bindEvents();\n              this.bindWindowEvents();\n              appContainer = appConfig.appContainer || document.documentElement;\n\n              this.l10n.translate(appContainer).then(function () {\n                _this.eventBus.dispatch('localized', { source: _this });\n              });\n              this.initialized = true;\n\n            case 16:\n            case 'end':\n              return _context.stop();\n          }\n        }\n      }, _callee, this);\n    }));\n\n    function initialize(_x) {\n      return _ref.apply(this, arguments);\n    }\n\n    return initialize;\n  }(),\n  _readPreferences: function () {\n    var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n      var OVERRIDES, prefs, name;\n      return _regenerator2.default.wrap(function _callee2$(_context2) {\n        while (1) {\n          switch (_context2.prev = _context2.next) {\n            case 0:\n              OVERRIDES = {\n                disableFontFace: true,\n                disableRange: true,\n                disableStream: true,\n                textLayerMode: _ui_utils.TextLayerMode.DISABLE\n              };\n              _context2.prev = 1;\n              _context2.next = 4;\n              return this.preferences.getAll();\n\n            case 4:\n              prefs = _context2.sent;\n              _context2.t0 = _regenerator2.default.keys(prefs);\n\n            case 6:\n              if ((_context2.t1 = _context2.t0()).done) {\n                _context2.next = 13;\n                break;\n              }\n\n              name = _context2.t1.value;\n\n              if (!(name in OVERRIDES && _app_options.AppOptions.get(name) === OVERRIDES[name])) {\n                _context2.next = 10;\n                break;\n              }\n\n              return _context2.abrupt('continue', 6);\n\n            case 10:\n              _app_options.AppOptions.set(name, prefs[name]);\n              _context2.next = 6;\n              break;\n\n            case 13:\n              _context2.next = 17;\n              break;\n\n            case 15:\n              _context2.prev = 15;\n              _context2.t2 = _context2['catch'](1);\n\n            case 17:\n            case 'end':\n              return _context2.stop();\n          }\n        }\n      }, _callee2, this, [[1, 15]]);\n    }));\n\n    function _readPreferences() {\n      return _ref2.apply(this, arguments);\n    }\n\n    return _readPreferences;\n  }(),\n  _parseHashParameters: function () {\n    var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n      var waitOn, hash, hashParams, viewer, enabled;\n      return _regenerator2.default.wrap(function _callee3$(_context3) {\n        while (1) {\n          switch (_context3.prev = _context3.next) {\n            case 0:\n              if (_app_options.AppOptions.get('pdfBugEnabled')) {\n                _context3.next = 2;\n                break;\n              }\n\n              return _context3.abrupt('return');\n\n            case 2:\n              waitOn = [];\n              hash = document.location.hash.substring(1);\n              hashParams = (0, _ui_utils.parseQueryString)(hash);\n\n              if ('disableworker' in hashParams && hashParams['disableworker'] === 'true') {\n                waitOn.push(loadFakeWorker());\n              }\n              if ('disablerange' in hashParams) {\n                _app_options.AppOptions.set('disableRange', hashParams['disablerange'] === 'true');\n              }\n              if ('disablestream' in hashParams) {\n                _app_options.AppOptions.set('disableStream', hashParams['disablestream'] === 'true');\n              }\n              if ('disableautofetch' in hashParams) {\n                _app_options.AppOptions.set('disableAutoFetch', hashParams['disableautofetch'] === 'true');\n              }\n              if ('disablefontface' in hashParams) {\n                _app_options.AppOptions.set('disableFontFace', hashParams['disablefontface'] === 'true');\n              }\n              if ('disablehistory' in hashParams) {\n                _app_options.AppOptions.set('disableHistory', hashParams['disablehistory'] === 'true');\n              }\n              if ('webgl' in hashParams) {\n                _app_options.AppOptions.set('enableWebGL', hashParams['webgl'] === 'true');\n              }\n              if ('useonlycsszoom' in hashParams) {\n                _app_options.AppOptions.set('useOnlyCssZoom', hashParams['useonlycsszoom'] === 'true');\n              }\n              if ('verbosity' in hashParams) {\n                _app_options.AppOptions.set('verbosity', hashParams['verbosity'] | 0);\n              }\n\n              if (!('textlayer' in hashParams)) {\n                _context3.next = 23;\n                break;\n              }\n\n              _context3.t0 = hashParams['textlayer'];\n              _context3.next = _context3.t0 === 'off' ? 18 : _context3.t0 === 'visible' ? 20 : _context3.t0 === 'shadow' ? 20 : _context3.t0 === 'hover' ? 20 : 23;\n              break;\n\n            case 18:\n              _app_options.AppOptions.set('textLayerMode', _ui_utils.TextLayerMode.DISABLE);\n              return _context3.abrupt('break', 23);\n\n            case 20:\n              viewer = this.appConfig.viewerContainer;\n\n              viewer.classList.add('textLayer-' + hashParams['textlayer']);\n              return _context3.abrupt('break', 23);\n\n            case 23:\n              if ('pdfbug' in hashParams) {\n                _app_options.AppOptions.set('pdfBug', true);\n                enabled = hashParams['pdfbug'].split(',');\n\n                waitOn.push(loadAndEnablePDFBug(enabled));\n              }\n              if ('locale' in hashParams) {\n                _app_options.AppOptions.set('locale', hashParams['locale']);\n              }\n              return _context3.abrupt('return', Promise.all(waitOn).catch(function (reason) {\n                console.error('_parseHashParameters: \"' + reason.message + '\".');\n              }));\n\n            case 26:\n            case 'end':\n              return _context3.stop();\n          }\n        }\n      }, _callee3, this);\n    }));\n\n    function _parseHashParameters() {\n      return _ref3.apply(this, arguments);\n    }\n\n    return _parseHashParameters;\n  }(),\n  _initializeL10n: function () {\n    var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n      var dir;\n      return _regenerator2.default.wrap(function _callee4$(_context4) {\n        while (1) {\n          switch (_context4.prev = _context4.next) {\n            case 0:\n              this.l10n = this.externalServices.createL10n({ locale: _app_options.AppOptions.get('locale') });\n              _context4.next = 3;\n              return this.l10n.getDirection();\n\n            case 3:\n              dir = _context4.sent;\n\n              document.getElementsByTagName('html')[0].dir = dir;\n\n            case 5:\n            case 'end':\n              return _context4.stop();\n          }\n        }\n      }, _callee4, this);\n    }));\n\n    function _initializeL10n() {\n      return _ref4.apply(this, arguments);\n    }\n\n    return _initializeL10n;\n  }(),\n  _initializeViewerComponents: function () {\n    var _ref5 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n      var appConfig, dispatchToDOM, eventBus, pdfRenderingQueue, pdfLinkService, downloadManager, findController, container, viewer, thumbnailContainer, sidebarConfig;\n      return _regenerator2.default.wrap(function _callee5$(_context5) {\n        while (1) {\n          switch (_context5.prev = _context5.next) {\n            case 0:\n              appConfig = this.appConfig;\n\n              this.overlayManager = new _overlay_manager.OverlayManager();\n              dispatchToDOM = _app_options.AppOptions.get('eventBusDispatchToDOM');\n              eventBus = appConfig.eventBus || (0, _dom_events.getGlobalEventBus)(dispatchToDOM);\n\n              this.eventBus = eventBus;\n              pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();\n\n              pdfRenderingQueue.onIdle = this.cleanup.bind(this);\n              this.pdfRenderingQueue = pdfRenderingQueue;\n              pdfLinkService = new _pdf_link_service.PDFLinkService({\n                eventBus: eventBus,\n                externalLinkTarget: _app_options.AppOptions.get('externalLinkTarget'),\n                externalLinkRel: _app_options.AppOptions.get('externalLinkRel')\n              });\n\n              this.pdfLinkService = pdfLinkService;\n              downloadManager = this.externalServices.createDownloadManager({ disableCreateObjectURL: _app_options.AppOptions.get('disableCreateObjectURL') });\n\n              this.downloadManager = downloadManager;\n              findController = new _pdf_find_controller.PDFFindController({\n                linkService: pdfLinkService,\n                eventBus: eventBus\n              });\n\n              this.findController = findController;\n              container = appConfig.mainContainer;\n              viewer = appConfig.viewerContainer;\n\n              this.pdfViewer = new _pdf_viewer.PDFViewer({\n                container: container,\n                viewer: viewer,\n                eventBus: eventBus,\n                renderingQueue: pdfRenderingQueue,\n                linkService: pdfLinkService,\n                downloadManager: downloadManager,\n                findController: findController,\n                renderer: _app_options.AppOptions.get('renderer'),\n                enableWebGL: _app_options.AppOptions.get('enableWebGL'),\n                l10n: this.l10n,\n                textLayerMode: _app_options.AppOptions.get('textLayerMode'),\n                imageResourcesPath: _app_options.AppOptions.get('imageResourcesPath'),\n                renderInteractiveForms: _app_options.AppOptions.get('renderInteractiveForms'),\n                enablePrintAutoRotate: _app_options.AppOptions.get('enablePrintAutoRotate'),\n                useOnlyCssZoom: _app_options.AppOptions.get('useOnlyCssZoom'),\n                maxCanvasPixels: _app_options.AppOptions.get('maxCanvasPixels')\n              });\n              pdfRenderingQueue.setViewer(this.pdfViewer);\n              pdfLinkService.setViewer(this.pdfViewer);\n              thumbnailContainer = appConfig.sidebar.thumbnailView;\n\n              this.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({\n                container: thumbnailContainer,\n                renderingQueue: pdfRenderingQueue,\n                linkService: pdfLinkService,\n                l10n: this.l10n\n              });\n              pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);\n              this.pdfHistory = new _pdf_history.PDFHistory({\n                linkService: pdfLinkService,\n                eventBus: eventBus\n              });\n              pdfLinkService.setHistory(this.pdfHistory);\n              this.findBar = new _pdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n);\n              this.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, this.l10n);\n              this.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({\n                container: container,\n                eventBus: eventBus,\n                cursorToolOnLoad: _app_options.AppOptions.get('cursorToolOnLoad')\n              });\n              this.toolbar = new _toolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n);\n              this.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus);\n              if (this.supportsFullscreen) {\n                this.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({\n                  container: container,\n                  viewer: viewer,\n                  pdfViewer: this.pdfViewer,\n                  eventBus: eventBus,\n                  contextMenuItems: appConfig.fullscreen\n                });\n              }\n              this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.l10n);\n              this.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({\n                container: appConfig.sidebar.outlineView,\n                eventBus: eventBus,\n                linkService: pdfLinkService\n              });\n              this.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({\n                container: appConfig.sidebar.attachmentsView,\n                eventBus: eventBus,\n                downloadManager: downloadManager\n              });\n              sidebarConfig = Object.create(appConfig.sidebar);\n\n              sidebarConfig.pdfViewer = this.pdfViewer;\n              sidebarConfig.pdfThumbnailViewer = this.pdfThumbnailViewer;\n              this.pdfSidebar = new _pdf_sidebar.PDFSidebar(sidebarConfig, eventBus, this.l10n);\n              this.pdfSidebar.onToggled = this.forceRendering.bind(this);\n              this.pdfSidebarResizer = new _pdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer, eventBus, this.l10n);\n\n            case 39:\n            case 'end':\n              return _context5.stop();\n          }\n        }\n      }, _callee5, this);\n    }));\n\n    function _initializeViewerComponents() {\n      return _ref5.apply(this, arguments);\n    }\n\n    return _initializeViewerComponents;\n  }(),\n  run: function run(config) {\n    this.initialize(config).then(webViewerInitialized);\n  },\n  zoomIn: function zoomIn(ticks) {\n    var newScale = this.pdfViewer.currentScale;\n    do {\n      newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);\n      newScale = Math.ceil(newScale * 10) / 10;\n      newScale = Math.min(_ui_utils.MAX_SCALE, newScale);\n    } while (--ticks > 0 && newScale < _ui_utils.MAX_SCALE);\n    this.pdfViewer.currentScaleValue = newScale;\n  },\n  zoomOut: function zoomOut(ticks) {\n    var newScale = this.pdfViewer.currentScale;\n    do {\n      newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);\n      newScale = Math.floor(newScale * 10) / 10;\n      newScale = Math.max(_ui_utils.MIN_SCALE, newScale);\n    } while (--ticks > 0 && newScale > _ui_utils.MIN_SCALE);\n    this.pdfViewer.currentScaleValue = newScale;\n  },\n\n  get pagesCount() {\n    return this.pdfDocument ? this.pdfDocument.numPages : 0;\n  },\n  set page(val) {\n    this.pdfViewer.currentPageNumber = val;\n  },\n  get page() {\n    return this.pdfViewer.currentPageNumber;\n  },\n  get printing() {\n    return !!this.printService;\n  },\n  get supportsPrinting() {\n    return PDFPrintServiceFactory.instance.supportsPrinting;\n  },\n  get supportsFullscreen() {\n    var support = void 0;\n    var doc = document.documentElement;\n    support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen || doc.msRequestFullscreen);\n    if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false || document.msFullscreenEnabled === false) {\n      support = false;\n    }\n    return (0, _pdfjsLib.shadow)(this, 'supportsFullscreen', support);\n  },\n  get supportsIntegratedFind() {\n    return this.externalServices.supportsIntegratedFind;\n  },\n  get supportsDocumentFonts() {\n    return this.externalServices.supportsDocumentFonts;\n  },\n  get supportsDocumentColors() {\n    return this.externalServices.supportsDocumentColors;\n  },\n  get loadingBar() {\n    var bar = new _ui_utils.ProgressBar('#loadingBar');\n    return (0, _pdfjsLib.shadow)(this, 'loadingBar', bar);\n  },\n  get supportedMouseWheelZoomModifierKeys() {\n    return this.externalServices.supportedMouseWheelZoomModifierKeys;\n  },\n  initPassiveLoading: function initPassiveLoading() {\n    throw new Error('Not implemented: initPassiveLoading');\n  },\n  setTitleUsingUrl: function setTitleUsingUrl() {\n    var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n    this.url = url;\n    this.baseUrl = url.split('#')[0];\n    var title = (0, _ui_utils.getPDFFileNameFromURL)(url, '');\n    if (!title) {\n      try {\n        title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url;\n      } catch (ex) {\n        title = url;\n      }\n    }\n    this.setTitle(title);\n  },\n  setTitle: function setTitle(title) {\n    if (this.isViewerEmbedded) {\n      return;\n    }\n    document.title = title;\n  },\n  close: function () {\n    var _ref6 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n      var errorWrapper, promise;\n      return _regenerator2.default.wrap(function _callee6$(_context6) {\n        while (1) {\n          switch (_context6.prev = _context6.next) {\n            case 0:\n              errorWrapper = this.appConfig.errorWrapper.container;\n\n              errorWrapper.setAttribute('hidden', 'true');\n\n              if (this.pdfLoadingTask) {\n                _context6.next = 4;\n                break;\n              }\n\n              return _context6.abrupt('return');\n\n            case 4:\n              promise = this.pdfLoadingTask.destroy();\n\n              this.pdfLoadingTask = null;\n              if (this.pdfDocument) {\n                this.pdfDocument = null;\n                this.pdfThumbnailViewer.setDocument(null);\n                this.pdfViewer.setDocument(null);\n                this.pdfLinkService.setDocument(null);\n                this.pdfDocumentProperties.setDocument(null);\n              }\n              this.store = null;\n              this.isInitialViewSet = false;\n              this.downloadComplete = false;\n              this.url = '';\n              this.baseUrl = '';\n              this.contentDispositionFilename = null;\n              this.pdfSidebar.reset();\n              this.pdfOutlineViewer.reset();\n              this.pdfAttachmentViewer.reset();\n              this.findBar.reset();\n              this.toolbar.reset();\n              this.secondaryToolbar.reset();\n              if (typeof PDFBug !== 'undefined') {\n                PDFBug.cleanup();\n              }\n              return _context6.abrupt('return', promise);\n\n            case 21:\n            case 'end':\n              return _context6.stop();\n          }\n        }\n      }, _callee6, this);\n    }));\n\n    function close() {\n      return _ref6.apply(this, arguments);\n    }\n\n    return close;\n  }(),\n  open: function () {\n    var _ref7 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee7(file, args) {\n      var _this2 = this;\n\n      var workerParameters, key, parameters, apiParameters, _key, prop, loadingTask;\n\n      return _regenerator2.default.wrap(function _callee7$(_context7) {\n        while (1) {\n          switch (_context7.prev = _context7.next) {\n            case 0:\n              if (!this.pdfLoadingTask) {\n                _context7.next = 3;\n                break;\n              }\n\n              _context7.next = 3;\n              return this.close();\n\n            case 3:\n              workerParameters = _app_options.AppOptions.getAll('worker');\n\n              for (key in workerParameters) {\n                _pdfjsLib.GlobalWorkerOptions[key] = workerParameters[key];\n              }\n              parameters = Object.create(null);\n\n              if (typeof file === 'string') {\n                this.setTitleUsingUrl(file);\n                parameters.url = file;\n              } else if (file && 'byteLength' in file) {\n                parameters.data = file;\n              } else if (file.url && file.originalUrl) {\n                this.setTitleUsingUrl(file.originalUrl);\n                parameters.url = file.url;\n              }\n              apiParameters = _app_options.AppOptions.getAll('api');\n\n              for (_key in apiParameters) {\n                parameters[_key] = apiParameters[_key];\n              }\n              if (args) {\n                for (prop in args) {\n                  if (prop === 'length') {\n                    this.pdfDocumentProperties.setFileSize(args[prop]);\n                  }\n                  parameters[prop] = args[prop];\n                }\n              }\n              loadingTask = (0, _pdfjsLib.getDocument)(parameters);\n\n              this.pdfLoadingTask = loadingTask;\n              loadingTask.onPassword = function (updateCallback, reason) {\n                _this2.passwordPrompt.setUpdateCallback(updateCallback, reason);\n                _this2.passwordPrompt.open();\n              };\n              loadingTask.onProgress = function (_ref8) {\n                var loaded = _ref8.loaded,\n                    total = _ref8.total;\n\n                _this2.progress(loaded / total);\n              };\n              loadingTask.onUnsupportedFeature = this.fallback.bind(this);\n              return _context7.abrupt('return', loadingTask.promise.then(function (pdfDocument) {\n                _this2.load(pdfDocument);\n              }, function (exception) {\n                if (loadingTask !== _this2.pdfLoadingTask) {\n                  return;\n                }\n                var message = exception && exception.message;\n                var loadingErrorMessage = void 0;\n                if (exception instanceof _pdfjsLib.InvalidPDFException) {\n                  loadingErrorMessage = _this2.l10n.get('invalid_file_error', null, 'Invalid or corrupted PDF file.');\n                } else if (exception instanceof _pdfjsLib.MissingPDFException) {\n                  loadingErrorMessage = _this2.l10n.get('missing_file_error', null, 'Missing PDF file.');\n                } else if (exception instanceof _pdfjsLib.UnexpectedResponseException) {\n                  loadingErrorMessage = _this2.l10n.get('unexpected_response_error', null, 'Unexpected server response.');\n                } else {\n                  loadingErrorMessage = _this2.l10n.get('loading_error', null, 'An error occurred while loading the PDF.');\n                }\n                return loadingErrorMessage.then(function (msg) {\n                  _this2.error(msg, { message: message });\n                  throw new Error(msg);\n                });\n              }));\n\n            case 16:\n            case 'end':\n              return _context7.stop();\n          }\n        }\n      }, _callee7, this);\n    }));\n\n    function open(_x3, _x4) {\n      return _ref7.apply(this, arguments);\n    }\n\n    return open;\n  }(),\n  download: function download() {\n    var _this3 = this;\n\n    function downloadByUrl() {\n      downloadManager.downloadUrl(url, filename);\n    }\n    var url = this.baseUrl;\n    var filename = this.contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url);\n    var downloadManager = this.downloadManager;\n    downloadManager.onerror = function (err) {\n      _this3.error('PDF failed to download: ' + err);\n    };\n    if (!this.pdfDocument || !this.downloadComplete) {\n      downloadByUrl();\n      return;\n    }\n    this.pdfDocument.getData().then(function (data) {\n      var blob = new Blob([data], { type: 'application/pdf' });\n      downloadManager.download(blob, url, filename);\n    }).catch(downloadByUrl);\n  },\n  fallback: function fallback(featureId) {},\n  error: function error(message, moreInfo) {\n    var moreInfoText = [this.l10n.get('error_version_info', {\n      version: _pdfjsLib.version || '?',\n      build: _pdfjsLib.build || '?'\n    }, 'PDF.js v{{version}} (build: {{build}})')];\n    if (moreInfo) {\n      moreInfoText.push(this.l10n.get('error_message', { message: moreInfo.message }, 'Message: {{message}}'));\n      if (moreInfo.stack) {\n        moreInfoText.push(this.l10n.get('error_stack', { stack: moreInfo.stack }, 'Stack: {{stack}}'));\n      } else {\n        if (moreInfo.filename) {\n          moreInfoText.push(this.l10n.get('error_file', { file: moreInfo.filename }, 'File: {{file}}'));\n        }\n        if (moreInfo.lineNumber) {\n          moreInfoText.push(this.l10n.get('error_line', { line: moreInfo.lineNumber }, 'Line: {{line}}'));\n        }\n      }\n    }\n    var errorWrapperConfig = this.appConfig.errorWrapper;\n    var errorWrapper = errorWrapperConfig.container;\n    errorWrapper.removeAttribute('hidden');\n    var errorMessage = errorWrapperConfig.errorMessage;\n    errorMessage.textContent = message;\n    var closeButton = errorWrapperConfig.closeButton;\n    closeButton.onclick = function () {\n      errorWrapper.setAttribute('hidden', 'true');\n    };\n    var errorMoreInfo = errorWrapperConfig.errorMoreInfo;\n    var moreInfoButton = errorWrapperConfig.moreInfoButton;\n    var lessInfoButton = errorWrapperConfig.lessInfoButton;\n    moreInfoButton.onclick = function () {\n      errorMoreInfo.removeAttribute('hidden');\n      moreInfoButton.setAttribute('hidden', 'true');\n      lessInfoButton.removeAttribute('hidden');\n      errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px';\n    };\n    lessInfoButton.onclick = function () {\n      errorMoreInfo.setAttribute('hidden', 'true');\n      moreInfoButton.removeAttribute('hidden');\n      lessInfoButton.setAttribute('hidden', 'true');\n    };\n    moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler;\n    lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler;\n    closeButton.oncontextmenu = _ui_utils.noContextMenuHandler;\n    moreInfoButton.removeAttribute('hidden');\n    lessInfoButton.setAttribute('hidden', 'true');\n    Promise.all(moreInfoText).then(function (parts) {\n      errorMoreInfo.value = parts.join('\\n');\n    });\n  },\n  progress: function progress(level) {\n    var _this4 = this;\n\n    if (this.downloadComplete) {\n      return;\n    }\n    var percent = Math.round(level * 100);\n    if (percent > this.loadingBar.percent || isNaN(percent)) {\n      this.loadingBar.percent = percent;\n      var disableAutoFetch = this.pdfDocument ? this.pdfDocument.loadingParams['disableAutoFetch'] : _app_options.AppOptions.get('disableAutoFetch');\n      if (disableAutoFetch && percent) {\n        if (this.disableAutoFetchLoadingBarTimeout) {\n          clearTimeout(this.disableAutoFetchLoadingBarTimeout);\n          this.disableAutoFetchLoadingBarTimeout = null;\n        }\n        this.loadingBar.show();\n        this.disableAutoFetchLoadingBarTimeout = setTimeout(function () {\n          _this4.loadingBar.hide();\n          _this4.disableAutoFetchLoadingBarTimeout = null;\n        }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT);\n      }\n    }\n  },\n  load: function load(pdfDocument) {\n    var _this5 = this;\n\n    this.pdfDocument = pdfDocument;\n    pdfDocument.getDownloadInfo().then(function () {\n      _this5.downloadComplete = true;\n      _this5.loadingBar.hide();\n      firstPagePromise.then(function () {\n        _this5.eventBus.dispatch('documentloaded', { source: _this5 });\n        _this5.eventBus.dispatch('documentload', { source: _this5 });\n      });\n    });\n    var pageModePromise = pdfDocument.getPageMode().catch(function () {});\n    this.toolbar.setPagesCount(pdfDocument.numPages, false);\n    this.secondaryToolbar.setPagesCount(pdfDocument.numPages);\n    var store = this.store = new _view_history.ViewHistory(pdfDocument.fingerprint);\n    var baseDocumentUrl = void 0;\n    baseDocumentUrl = null;\n    this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);\n    this.pdfDocumentProperties.setDocument(pdfDocument, this.url);\n    var pdfViewer = this.pdfViewer;\n    pdfViewer.setDocument(pdfDocument);\n    var firstPagePromise = pdfViewer.firstPagePromise;\n    var pagesPromise = pdfViewer.pagesPromise;\n    var onePageRendered = pdfViewer.onePageRendered;\n    var pdfThumbnailViewer = this.pdfThumbnailViewer;\n    pdfThumbnailViewer.setDocument(pdfDocument);\n    firstPagePromise.then(function (pdfPage) {\n      _this5.loadingBar.setWidth(_this5.appConfig.viewerContainer);\n      if (!_app_options.AppOptions.get('disableHistory') && !_this5.isViewerEmbedded) {\n        var resetHistory = !_app_options.AppOptions.get('showPreviousViewOnLoad');\n        _this5.pdfHistory.initialize(pdfDocument.fingerprint, resetHistory);\n        if (_this5.pdfHistory.initialBookmark) {\n          _this5.initialBookmark = _this5.pdfHistory.initialBookmark;\n          _this5.initialRotation = _this5.pdfHistory.initialRotation;\n        }\n      }\n      var storePromise = store.getMultiple({\n        page: null,\n        zoom: _ui_utils.DEFAULT_SCALE_VALUE,\n        scrollLeft: '0',\n        scrollTop: '0',\n        rotation: null,\n        sidebarView: _pdf_sidebar.SidebarView.NONE,\n        scrollMode: null,\n        spreadMode: null\n      }).catch(function () {});\n      Promise.all([storePromise, pageModePromise]).then(function () {\n        var _ref10 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee8(_ref9) {\n          var _ref11 = _slicedToArray(_ref9, 2),\n              _ref11$ = _ref11[0],\n              values = _ref11$ === undefined ? {} : _ref11$,\n              pageMode = _ref11[1];\n\n          var initialBookmark, zoom, hash, rotation, sidebarView, scrollMode, spreadMode;\n          return _regenerator2.default.wrap(function _callee8$(_context8) {\n            while (1) {\n              switch (_context8.prev = _context8.next) {\n                case 0:\n                  initialBookmark = _this5.initialBookmark;\n                  zoom = _app_options.AppOptions.get('defaultZoomValue');\n                  hash = zoom ? 'zoom=' + zoom : null;\n                  rotation = null;\n                  sidebarView = _app_options.AppOptions.get('sidebarViewOnLoad');\n                  scrollMode = _app_options.AppOptions.get('scrollModeOnLoad');\n                  spreadMode = _app_options.AppOptions.get('spreadModeOnLoad');\n\n                  if (values.page && _app_options.AppOptions.get('showPreviousViewOnLoad')) {\n                    hash = 'page=' + values.page + '&zoom=' + (zoom || values.zoom) + ',' + values.scrollLeft + ',' + values.scrollTop;\n                    rotation = parseInt(values.rotation, 10);\n                    sidebarView = sidebarView || values.sidebarView | 0;\n                    scrollMode = scrollMode || values.scrollMode | 0;\n                    spreadMode = spreadMode || values.spreadMode | 0;\n                  }\n                  if (pageMode && !_app_options.AppOptions.get('disablePageMode')) {\n                    sidebarView = sidebarView || apiPageModeToSidebarView(pageMode);\n                  }\n                  _this5.setInitialView(hash, {\n                    rotation: rotation,\n                    sidebarView: sidebarView,\n                    scrollMode: scrollMode,\n                    spreadMode: spreadMode\n                  });\n                  _this5.eventBus.dispatch('documentinit', { source: _this5 });\n                  if (!_this5.isViewerEmbedded) {\n                    pdfViewer.focus();\n                  }\n                  _context8.next = 14;\n                  return Promise.race([pagesPromise, new Promise(function (resolve) {\n                    setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);\n                  })]);\n\n                case 14:\n                  if (!(!initialBookmark && !hash)) {\n                    _context8.next = 16;\n                    break;\n                  }\n\n                  return _context8.abrupt('return');\n\n                case 16:\n                  if (!pdfViewer.hasEqualPageSizes) {\n                    _context8.next = 18;\n                    break;\n                  }\n\n                  return _context8.abrupt('return');\n\n                case 18:\n                  _this5.initialBookmark = initialBookmark;\n                  pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;\n                  _this5.setInitialView(hash);\n\n                case 21:\n                case 'end':\n                  return _context8.stop();\n              }\n            }\n          }, _callee8, _this5);\n        }));\n\n        return function (_x5) {\n          return _ref10.apply(this, arguments);\n        };\n      }()).then(function () {\n        pdfViewer.update();\n      });\n    });\n    pdfDocument.getPageLabels().then(function (labels) {\n      if (!labels || _app_options.AppOptions.get('disablePageLabels')) {\n        return;\n      }\n      var i = 0,\n          numLabels = labels.length;\n      if (numLabels !== _this5.pagesCount) {\n        console.error('The number of Page Labels does not match ' + 'the number of pages in the document.');\n        return;\n      }\n      while (i < numLabels && labels[i] === (i + 1).toString()) {\n        i++;\n      }\n      if (i === numLabels) {\n        return;\n      }\n      pdfViewer.setPageLabels(labels);\n      pdfThumbnailViewer.setPageLabels(labels);\n      _this5.toolbar.setPagesCount(pdfDocument.numPages, true);\n      _this5.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);\n    });\n    pagesPromise.then(function () {\n      if (!_this5.supportsPrinting) {\n        return;\n      }\n      pdfDocument.getJavaScript().then(function (javaScript) {\n        if (!javaScript) {\n          return;\n        }\n        javaScript.some(function (js) {\n          if (!js) {\n            return false;\n          }\n          console.warn('Warning: JavaScript is not supported');\n          _this5.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript);\n          return true;\n        });\n        var regex = /\\bprint\\s*\\(/;\n        for (var i = 0, ii = javaScript.length; i < ii; i++) {\n          var js = javaScript[i];\n          if (js && regex.test(js)) {\n            setTimeout(function () {\n              window.print();\n            });\n            return;\n          }\n        }\n      });\n    });\n    Promise.all([onePageRendered, _ui_utils.animationStarted]).then(function () {\n      pdfDocument.getOutline().then(function (outline) {\n        _this5.pdfOutlineViewer.render({ outline: outline });\n      });\n      pdfDocument.getAttachments().then(function (attachments) {\n        _this5.pdfAttachmentViewer.render({ attachments: attachments });\n      });\n    });\n    pdfDocument.getMetadata().then(function (_ref12) {\n      var info = _ref12.info,\n          metadata = _ref12.metadata,\n          contentDispositionFilename = _ref12.contentDispositionFilename;\n\n      _this5.documentInfo = info;\n      _this5.metadata = metadata;\n      _this5.contentDispositionFilename = contentDispositionFilename;\n      console.log('PDF ' + pdfDocument.fingerprint + ' [' + info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + ' / ' + (info.Creator || '-').trim() + ']' + ' (PDF.js: ' + (_pdfjsLib.version || '-') + (_app_options.AppOptions.get('enableWebGL') ? ' [WebGL]' : '') + ')');\n      var pdfTitle = void 0;\n      if (metadata && metadata.has('dc:title')) {\n        var title = metadata.get('dc:title');\n        if (title !== 'Untitled') {\n          pdfTitle = title;\n        }\n      }\n      if (!pdfTitle && info && info['Title']) {\n        pdfTitle = info['Title'];\n      }\n      if (pdfTitle) {\n        _this5.setTitle(pdfTitle + ' - ' + (contentDispositionFilename || document.title));\n      } else if (contentDispositionFilename) {\n        _this5.setTitle(contentDispositionFilename);\n      }\n      if (info.IsAcroFormPresent) {\n        console.warn('Warning: AcroForm/XFA is not supported');\n        _this5.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);\n      }\n    });\n  },\n  setInitialView: function setInitialView(storedHash) {\n    var _this6 = this;\n\n    var _ref13 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        rotation = _ref13.rotation,\n        sidebarView = _ref13.sidebarView,\n        scrollMode = _ref13.scrollMode,\n        spreadMode = _ref13.spreadMode;\n\n    var setRotation = function setRotation(angle) {\n      if ((0, _ui_utils.isValidRotation)(angle)) {\n        _this6.pdfViewer.pagesRotation = angle;\n      }\n    };\n    var setViewerModes = function setViewerModes(scroll, spread) {\n      if (Number.isInteger(scroll)) {\n        _this6.pdfViewer.scrollMode = scroll;\n      }\n      if (Number.isInteger(spread)) {\n        _this6.pdfViewer.spreadMode = spread;\n      }\n    };\n    setViewerModes(scrollMode, spreadMode);\n    this.isInitialViewSet = true;\n    this.pdfSidebar.setInitialView(sidebarView);\n    if (this.initialBookmark) {\n      setRotation(this.initialRotation);\n      delete this.initialRotation;\n      this.pdfLinkService.setHash(this.initialBookmark);\n      this.initialBookmark = null;\n    } else if (storedHash) {\n      setRotation(rotation);\n      this.pdfLinkService.setHash(storedHash);\n    }\n    this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel);\n    this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber);\n    if (!this.pdfViewer.currentScaleValue) {\n      this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;\n    }\n  },\n  cleanup: function cleanup() {\n    if (!this.pdfDocument) {\n      return;\n    }\n    this.pdfViewer.cleanup();\n    this.pdfThumbnailViewer.cleanup();\n    if (this.pdfViewer.renderer !== _ui_utils.RendererType.SVG) {\n      this.pdfDocument.cleanup();\n    }\n  },\n  forceRendering: function forceRendering() {\n    this.pdfRenderingQueue.printing = this.printing;\n    this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible;\n    this.pdfRenderingQueue.renderHighestPriority();\n  },\n  beforePrint: function beforePrint() {\n    var _this7 = this;\n\n    if (this.printService) {\n      return;\n    }\n    if (!this.supportsPrinting) {\n      this.l10n.get('printing_not_supported', null, 'Warning: Printing is not fully supported by ' + 'this browser.').then(function (printMessage) {\n        _this7.error(printMessage);\n      });\n      return;\n    }\n    if (!this.pdfViewer.pageViewsReady) {\n      this.l10n.get('printing_not_ready', null, 'Warning: The PDF is not fully loaded for printing.').then(function (notReadyMessage) {\n        window.alert(notReadyMessage);\n      });\n      return;\n    }\n    var pagesOverview = this.pdfViewer.getPagesOverview();\n    var printContainer = this.appConfig.printContainer;\n    var printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, this.l10n);\n    this.printService = printService;\n    this.forceRendering();\n    printService.layout();\n  },\n\n  afterPrint: function pdfViewSetupAfterPrint() {\n    if (this.printService) {\n      this.printService.destroy();\n      this.printService = null;\n    }\n    this.forceRendering();\n  },\n  rotatePages: function rotatePages(delta) {\n    if (!this.pdfDocument) {\n      return;\n    }\n    var newRotation = (this.pdfViewer.pagesRotation + 360 + delta) % 360;\n    this.pdfViewer.pagesRotation = newRotation;\n  },\n  requestPresentationMode: function requestPresentationMode() {\n    if (!this.pdfPresentationMode) {\n      return;\n    }\n    this.pdfPresentationMode.request();\n  },\n  bindEvents: function bindEvents() {\n    var eventBus = this.eventBus,\n        _boundEvents = this._boundEvents;\n\n    _boundEvents.beforePrint = this.beforePrint.bind(this);\n    _boundEvents.afterPrint = this.afterPrint.bind(this);\n    eventBus.on('resize', webViewerResize);\n    eventBus.on('hashchange', webViewerHashchange);\n    eventBus.on('beforeprint', _boundEvents.beforePrint);\n    eventBus.on('afterprint', _boundEvents.afterPrint);\n    eventBus.on('pagerendered', webViewerPageRendered);\n    eventBus.on('textlayerrendered', webViewerTextLayerRendered);\n    eventBus.on('updateviewarea', webViewerUpdateViewarea);\n    eventBus.on('pagechanging', webViewerPageChanging);\n    eventBus.on('scalechanging', webViewerScaleChanging);\n    eventBus.on('rotationchanging', webViewerRotationChanging);\n    eventBus.on('sidebarviewchanged', webViewerSidebarViewChanged);\n    eventBus.on('pagemode', webViewerPageMode);\n    eventBus.on('namedaction', webViewerNamedAction);\n    eventBus.on('presentationmodechanged', webViewerPresentationModeChanged);\n    eventBus.on('presentationmode', webViewerPresentationMode);\n    eventBus.on('openfile', webViewerOpenFile);\n    eventBus.on('print', webViewerPrint);\n    eventBus.on('download', webViewerDownload);\n    eventBus.on('firstpage', webViewerFirstPage);\n    eventBus.on('lastpage', webViewerLastPage);\n    eventBus.on('nextpage', webViewerNextPage);\n    eventBus.on('previouspage', webViewerPreviousPage);\n    eventBus.on('zoomin', webViewerZoomIn);\n    eventBus.on('zoomout', webViewerZoomOut);\n    eventBus.on('pagenumberchanged', webViewerPageNumberChanged);\n    eventBus.on('scalechanged', webViewerScaleChanged);\n    eventBus.on('rotatecw', webViewerRotateCw);\n    eventBus.on('rotateccw', webViewerRotateCcw);\n    eventBus.on('switchscrollmode', webViewerSwitchScrollMode);\n    eventBus.on('scrollmodechanged', webViewerScrollModeChanged);\n    eventBus.on('switchspreadmode', webViewerSwitchSpreadMode);\n    eventBus.on('spreadmodechanged', webViewerSpreadModeChanged);\n    eventBus.on('documentproperties', webViewerDocumentProperties);\n    eventBus.on('find', webViewerFind);\n    eventBus.on('findfromurlhash', webViewerFindFromUrlHash);\n    eventBus.on('updatefindmatchescount', webViewerUpdateFindMatchesCount);\n    eventBus.on('updatefindcontrolstate', webViewerUpdateFindControlState);\n    eventBus.on('fileinputchange', webViewerFileInputChange);\n  },\n  bindWindowEvents: function bindWindowEvents() {\n    var eventBus = this.eventBus,\n        _boundEvents = this._boundEvents;\n\n    _boundEvents.windowResize = function () {\n      eventBus.dispatch('resize', { source: window });\n    };\n    _boundEvents.windowHashChange = function () {\n      eventBus.dispatch('hashchange', {\n        source: window,\n        hash: document.location.hash.substring(1)\n      });\n    };\n    _boundEvents.windowBeforePrint = function () {\n      eventBus.dispatch('beforeprint', { source: window });\n    };\n    _boundEvents.windowAfterPrint = function () {\n      eventBus.dispatch('afterprint', { source: window });\n    };\n    window.addEventListener('wheel', webViewerWheel);\n    window.addEventListener('click', webViewerClick);\n    window.addEventListener('keydown', webViewerKeyDown);\n    window.addEventListener('resize', _boundEvents.windowResize);\n    window.addEventListener('hashchange', _boundEvents.windowHashChange);\n    window.addEventListener('beforeprint', _boundEvents.windowBeforePrint);\n    window.addEventListener('afterprint', _boundEvents.windowAfterPrint);\n  },\n  unbindEvents: function unbindEvents() {\n    var eventBus = this.eventBus,\n        _boundEvents = this._boundEvents;\n\n    eventBus.off('resize', webViewerResize);\n    eventBus.off('hashchange', webViewerHashchange);\n    eventBus.off('beforeprint', _boundEvents.beforePrint);\n    eventBus.off('afterprint', _boundEvents.afterPrint);\n    eventBus.off('pagerendered', webViewerPageRendered);\n    eventBus.off('textlayerrendered', webViewerTextLayerRendered);\n    eventBus.off('updateviewarea', webViewerUpdateViewarea);\n    eventBus.off('pagechanging', webViewerPageChanging);\n    eventBus.off('scalechanging', webViewerScaleChanging);\n    eventBus.off('rotationchanging', webViewerRotationChanging);\n    eventBus.off('sidebarviewchanged', webViewerSidebarViewChanged);\n    eventBus.off('pagemode', webViewerPageMode);\n    eventBus.off('namedaction', webViewerNamedAction);\n    eventBus.off('presentationmodechanged', webViewerPresentationModeChanged);\n    eventBus.off('presentationmode', webViewerPresentationMode);\n    eventBus.off('openfile', webViewerOpenFile);\n    eventBus.off('print', webViewerPrint);\n    eventBus.off('download', webViewerDownload);\n    eventBus.off('firstpage', webViewerFirstPage);\n    eventBus.off('lastpage', webViewerLastPage);\n    eventBus.off('nextpage', webViewerNextPage);\n    eventBus.off('previouspage', webViewerPreviousPage);\n    eventBus.off('zoomin', webViewerZoomIn);\n    eventBus.off('zoomout', webViewerZoomOut);\n    eventBus.off('pagenumberchanged', webViewerPageNumberChanged);\n    eventBus.off('scalechanged', webViewerScaleChanged);\n    eventBus.off('rotatecw', webViewerRotateCw);\n    eventBus.off('rotateccw', webViewerRotateCcw);\n    eventBus.off('switchscrollmode', webViewerSwitchScrollMode);\n    eventBus.off('scrollmodechanged', webViewerScrollModeChanged);\n    eventBus.off('switchspreadmode', webViewerSwitchSpreadMode);\n    eventBus.off('spreadmodechanged', webViewerSpreadModeChanged);\n    eventBus.off('documentproperties', webViewerDocumentProperties);\n    eventBus.off('find', webViewerFind);\n    eventBus.off('findfromurlhash', webViewerFindFromUrlHash);\n    eventBus.off('updatefindmatchescount', webViewerUpdateFindMatchesCount);\n    eventBus.off('updatefindcontrolstate', webViewerUpdateFindControlState);\n    eventBus.off('fileinputchange', webViewerFileInputChange);\n    _boundEvents.beforePrint = null;\n    _boundEvents.afterPrint = null;\n  },\n  unbindWindowEvents: function unbindWindowEvents() {\n    var _boundEvents = this._boundEvents;\n\n    window.removeEventListener('wheel', webViewerWheel);\n    window.removeEventListener('click', webViewerClick);\n    window.removeEventListener('keydown', webViewerKeyDown);\n    window.removeEventListener('resize', _boundEvents.windowResize);\n    window.removeEventListener('hashchange', _boundEvents.windowHashChange);\n    window.removeEventListener('beforeprint', _boundEvents.windowBeforePrint);\n    window.removeEventListener('afterprint', _boundEvents.windowAfterPrint);\n    _boundEvents.windowResize = null;\n    _boundEvents.windowHashChange = null;\n    _boundEvents.windowBeforePrint = null;\n    _boundEvents.windowAfterPrint = null;\n  }\n};\nvar validateFileURL = void 0;\n{\n  var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];\n  validateFileURL = function validateFileURL(file) {\n    if (file === undefined) {\n      return;\n    }\n    try {\n      var viewerOrigin = new _pdfjsLib.URL(window.location.href).origin || 'null';\n      if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {\n        return;\n      }\n\n      var _ref14 = new _pdfjsLib.URL(file, window.location.href),\n          origin = _ref14.origin,\n          protocol = _ref14.protocol;\n\n      if (origin !== viewerOrigin && protocol !== 'blob:') {\n        throw new Error('file origin does not match viewer\\'s');\n      }\n    } catch (ex) {\n      var message = ex && ex.message;\n      PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while loading the PDF.').then(function (loadingErrorMessage) {\n        PDFViewerApplication.error(loadingErrorMessage, { message: message });\n      });\n      throw ex;\n    }\n  };\n}\nfunction loadFakeWorker() {\n  if (!_pdfjsLib.GlobalWorkerOptions.workerSrc) {\n    _pdfjsLib.GlobalWorkerOptions.workerSrc = _app_options.AppOptions.get('workerSrc');\n  }\n  return (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.getWorkerSrc());\n}\nfunction loadAndEnablePDFBug(enabledTabs) {\n  var appConfig = PDFViewerApplication.appConfig;\n  return (0, _pdfjsLib.loadScript)(appConfig.debuggerScriptPath).then(function () {\n    PDFBug.enable(enabledTabs);\n    PDFBug.init({\n      OPS: _pdfjsLib.OPS,\n      createObjectURL: _pdfjsLib.createObjectURL\n    }, appConfig.mainContainer);\n  });\n}\nfunction webViewerInitialized() {\n  var appConfig = PDFViewerApplication.appConfig;\n  var file = void 0;\n  var queryString = document.location.search.substring(1);\n  var params = (0, _ui_utils.parseQueryString)(queryString);\n  file = 'file' in params ? params.file : _app_options.AppOptions.get('defaultUrl');\n  validateFileURL(file);\n  var fileInput = document.createElement('input');\n  fileInput.id = appConfig.openFileInputName;\n  fileInput.className = 'fileInput';\n  fileInput.setAttribute('type', 'file');\n  fileInput.oncontextmenu = _ui_utils.noContextMenuHandler;\n  document.body.appendChild(fileInput);\n  if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {\n    appConfig.toolbar.openFile.setAttribute('hidden', 'true');\n    appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true');\n  } else {\n    fileInput.value = null;\n  }\n  fileInput.addEventListener('change', function (evt) {\n    var files = evt.target.files;\n    if (!files || files.length === 0) {\n      return;\n    }\n    PDFViewerApplication.eventBus.dispatch('fileinputchange', {\n      source: this,\n      fileInput: evt.target\n    });\n  });\n  appConfig.mainContainer.addEventListener('dragover', function (evt) {\n    evt.preventDefault();\n    evt.dataTransfer.dropEffect = 'move';\n  });\n  appConfig.mainContainer.addEventListener('drop', function (evt) {\n    evt.preventDefault();\n    var files = evt.dataTransfer.files;\n    if (!files || files.length === 0) {\n      return;\n    }\n    PDFViewerApplication.eventBus.dispatch('fileinputchange', {\n      source: this,\n      fileInput: evt.dataTransfer\n    });\n  });\n  if (!PDFViewerApplication.supportsPrinting) {\n    appConfig.toolbar.print.classList.add('hidden');\n    appConfig.secondaryToolbar.printButton.classList.add('hidden');\n  }\n  if (!PDFViewerApplication.supportsFullscreen) {\n    appConfig.toolbar.presentationModeButton.classList.add('hidden');\n    appConfig.secondaryToolbar.presentationModeButton.classList.add('hidden');\n  }\n  if (PDFViewerApplication.supportsIntegratedFind) {\n    appConfig.toolbar.viewFind.classList.add('hidden');\n  }\n  appConfig.mainContainer.addEventListener('transitionend', function (evt) {\n    if (evt.target === this) {\n      PDFViewerApplication.eventBus.dispatch('resize', { source: this });\n    }\n  }, true);\n  appConfig.sidebar.toggleButton.addEventListener('click', function () {\n    PDFViewerApplication.pdfSidebar.toggle();\n  });\n  try {\n    webViewerOpenFileViaURL(file);\n  } catch (reason) {\n    PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while loading the PDF.').then(function (msg) {\n      PDFViewerApplication.error(msg, reason);\n    });\n  }\n}\nvar webViewerOpenFileViaURL = void 0;\n{\n  webViewerOpenFileViaURL = function webViewerOpenFileViaURL(file) {\n    if (file && file.lastIndexOf('file:', 0) === 0) {\n      PDFViewerApplication.setTitleUsingUrl(file);\n      var xhr = new XMLHttpRequest();\n      xhr.onload = function () {\n        PDFViewerApplication.open(new Uint8Array(xhr.response));\n      };\n      try {\n        xhr.open('GET', file);\n        xhr.responseType = 'arraybuffer';\n        xhr.send();\n      } catch (ex) {\n        throw ex;\n      }\n      return;\n    }\n    if (file) {\n      PDFViewerApplication.open(file);\n    }\n  };\n}\nfunction webViewerPageRendered(evt) {\n  var pageNumber = evt.pageNumber;\n  var pageIndex = pageNumber - 1;\n  var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex);\n  if (pageNumber === PDFViewerApplication.page) {\n    PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);\n  }\n  if (!pageView) {\n    return;\n  }\n  if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n    var thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageIndex);\n    thumbnailView.setImage(pageView);\n  }\n  if (typeof Stats !== 'undefined' && Stats.enabled && pageView.stats) {\n    Stats.add(pageNumber, pageView.stats);\n  }\n  if (pageView.error) {\n    PDFViewerApplication.l10n.get('rendering_error', null, 'An error occurred while rendering the page.').then(function (msg) {\n      PDFViewerApplication.error(msg, pageView.error);\n    });\n  }\n}\nfunction webViewerTextLayerRendered(evt) {}\nfunction webViewerPageMode(evt) {\n  var mode = evt.mode,\n      view = void 0;\n  switch (mode) {\n    case 'thumbs':\n      view = _pdf_sidebar.SidebarView.THUMBS;\n      break;\n    case 'bookmarks':\n    case 'outline':\n      view = _pdf_sidebar.SidebarView.OUTLINE;\n      break;\n    case 'attachments':\n      view = _pdf_sidebar.SidebarView.ATTACHMENTS;\n      break;\n    case 'none':\n      view = _pdf_sidebar.SidebarView.NONE;\n      break;\n    default:\n      console.error('Invalid \"pagemode\" hash parameter: ' + mode);\n      return;\n  }\n  PDFViewerApplication.pdfSidebar.switchView(view, true);\n}\nfunction webViewerNamedAction(evt) {\n  var action = evt.action;\n  switch (action) {\n    case 'GoToPage':\n      PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n      break;\n    case 'Find':\n      if (!PDFViewerApplication.supportsIntegratedFind) {\n        PDFViewerApplication.findBar.toggle();\n      }\n      break;\n  }\n}\nfunction webViewerPresentationModeChanged(evt) {\n  var active = evt.active,\n      switchInProgress = evt.switchInProgress;\n\n  PDFViewerApplication.pdfViewer.presentationModeState = switchInProgress ? _ui_utils.PresentationModeState.CHANGING : active ? _ui_utils.PresentationModeState.FULLSCREEN : _ui_utils.PresentationModeState.NORMAL;\n}\nfunction webViewerSidebarViewChanged(evt) {\n  PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;\n  var store = PDFViewerApplication.store;\n  if (store && PDFViewerApplication.isInitialViewSet) {\n    store.set('sidebarView', evt.view).catch(function () {});\n  }\n}\nfunction webViewerUpdateViewarea(evt) {\n  var location = evt.location,\n      store = PDFViewerApplication.store;\n  if (store && PDFViewerApplication.isInitialViewSet) {\n    store.setMultiple({\n      'page': location.pageNumber,\n      'zoom': location.scale,\n      'scrollLeft': location.left,\n      'scrollTop': location.top,\n      'rotation': location.rotation\n    }).catch(function () {});\n  }\n  var href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams);\n  PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;\n  PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href;\n  var currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1);\n  var loading = currentPage.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED;\n  PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);\n}\nfunction webViewerScrollModeChanged(evt) {\n  var store = PDFViewerApplication.store;\n  if (store && PDFViewerApplication.isInitialViewSet) {\n    store.set('scrollMode', evt.mode).catch(function () {});\n  }\n}\nfunction webViewerSpreadModeChanged(evt) {\n  var store = PDFViewerApplication.store;\n  if (store && PDFViewerApplication.isInitialViewSet) {\n    store.set('spreadMode', evt.mode).catch(function () {});\n  }\n}\nfunction webViewerResize() {\n  var pdfDocument = PDFViewerApplication.pdfDocument,\n      pdfViewer = PDFViewerApplication.pdfViewer;\n\n  if (!pdfDocument) {\n    return;\n  }\n  var currentScaleValue = pdfViewer.currentScaleValue;\n  if (currentScaleValue === 'auto' || currentScaleValue === 'page-fit' || currentScaleValue === 'page-width') {\n    pdfViewer.currentScaleValue = currentScaleValue;\n  }\n  pdfViewer.update();\n}\nfunction webViewerHashchange(evt) {\n  var hash = evt.hash;\n  if (!hash) {\n    return;\n  }\n  if (!PDFViewerApplication.isInitialViewSet) {\n    PDFViewerApplication.initialBookmark = hash;\n  } else if (!PDFViewerApplication.pdfHistory.popStateInProgress) {\n    PDFViewerApplication.pdfLinkService.setHash(hash);\n  }\n}\nvar webViewerFileInputChange = void 0;\n{\n  webViewerFileInputChange = function webViewerFileInputChange(evt) {\n    if (PDFViewerApplication.pdfViewer && PDFViewerApplication.pdfViewer.isInPresentationMode) {\n      return;\n    }\n    var file = evt.fileInput.files[0];\n    if (_pdfjsLib.URL.createObjectURL && !_app_options.AppOptions.get('disableCreateObjectURL')) {\n      var _url = _pdfjsLib.URL.createObjectURL(file);\n      if (file.name) {\n        _url = {\n          url: _url,\n          originalUrl: file.name\n        };\n      }\n      PDFViewerApplication.open(_url);\n    } else {\n      PDFViewerApplication.setTitleUsingUrl(file.name);\n      var fileReader = new FileReader();\n      fileReader.onload = function webViewerChangeFileReaderOnload(evt) {\n        var buffer = evt.target.result;\n        PDFViewerApplication.open(new Uint8Array(buffer));\n      };\n      fileReader.readAsArrayBuffer(file);\n    }\n    var appConfig = PDFViewerApplication.appConfig;\n    appConfig.toolbar.viewBookmark.setAttribute('hidden', 'true');\n    appConfig.secondaryToolbar.viewBookmarkButton.setAttribute('hidden', 'true');\n    appConfig.toolbar.download.setAttribute('hidden', 'true');\n    appConfig.secondaryToolbar.downloadButton.setAttribute('hidden', 'true');\n  };\n}\nfunction webViewerPresentationMode() {\n  PDFViewerApplication.requestPresentationMode();\n}\nfunction webViewerOpenFile() {\n  var openFileInputName = PDFViewerApplication.appConfig.openFileInputName;\n  document.getElementById(openFileInputName).click();\n}\nfunction webViewerPrint() {\n  window.print();\n}\nfunction webViewerDownload() {\n  PDFViewerApplication.download();\n}\nfunction webViewerFirstPage() {\n  if (PDFViewerApplication.pdfDocument) {\n    PDFViewerApplication.page = 1;\n  }\n}\nfunction webViewerLastPage() {\n  if (PDFViewerApplication.pdfDocument) {\n    PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n  }\n}\nfunction webViewerNextPage() {\n  PDFViewerApplication.page++;\n}\nfunction webViewerPreviousPage() {\n  PDFViewerApplication.page--;\n}\nfunction webViewerZoomIn() {\n  PDFViewerApplication.zoomIn();\n}\nfunction webViewerZoomOut() {\n  PDFViewerApplication.zoomOut();\n}\nfunction webViewerPageNumberChanged(evt) {\n  var pdfViewer = PDFViewerApplication.pdfViewer;\n  pdfViewer.currentPageLabel = evt.value;\n  if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) {\n    PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);\n  }\n}\nfunction webViewerScaleChanged(evt) {\n  PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;\n}\nfunction webViewerRotateCw() {\n  PDFViewerApplication.rotatePages(90);\n}\nfunction webViewerRotateCcw() {\n  PDFViewerApplication.rotatePages(-90);\n}\nfunction webViewerSwitchScrollMode(evt) {\n  PDFViewerApplication.pdfViewer.scrollMode = evt.mode;\n}\nfunction webViewerSwitchSpreadMode(evt) {\n  PDFViewerApplication.pdfViewer.spreadMode = evt.mode;\n}\nfunction webViewerDocumentProperties() {\n  PDFViewerApplication.pdfDocumentProperties.open();\n}\nfunction webViewerFind(evt) {\n  PDFViewerApplication.findController.executeCommand('find' + evt.type, {\n    query: evt.query,\n    phraseSearch: evt.phraseSearch,\n    caseSensitive: evt.caseSensitive,\n    entireWord: evt.entireWord,\n    highlightAll: evt.highlightAll,\n    findPrevious: evt.findPrevious\n  });\n}\nfunction webViewerFindFromUrlHash(evt) {\n  PDFViewerApplication.findController.executeCommand('find', {\n    query: evt.query,\n    phraseSearch: evt.phraseSearch,\n    caseSensitive: false,\n    entireWord: false,\n    highlightAll: true,\n    findPrevious: false\n  });\n}\nfunction webViewerUpdateFindMatchesCount(_ref15) {\n  var matchesCount = _ref15.matchesCount;\n\n  if (PDFViewerApplication.supportsIntegratedFind) {\n    PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);\n  } else {\n    PDFViewerApplication.findBar.updateResultsCount(matchesCount);\n  }\n}\nfunction webViewerUpdateFindControlState(_ref16) {\n  var state = _ref16.state,\n      previous = _ref16.previous,\n      matchesCount = _ref16.matchesCount;\n\n  if (PDFViewerApplication.supportsIntegratedFind) {\n    PDFViewerApplication.externalServices.updateFindControlState({\n      result: state,\n      findPrevious: previous,\n      matchesCount: matchesCount\n    });\n  } else {\n    PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount);\n  }\n}\nfunction webViewerScaleChanging(evt) {\n  PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale);\n  PDFViewerApplication.pdfViewer.update();\n}\nfunction webViewerRotationChanging(evt) {\n  PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;\n  PDFViewerApplication.forceRendering();\n  PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;\n}\nfunction webViewerPageChanging(evt) {\n  var page = evt.pageNumber;\n  PDFViewerApplication.toolbar.setPageNumber(page, evt.pageLabel || null);\n  PDFViewerApplication.secondaryToolbar.setPageNumber(page);\n  if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n    PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);\n  }\n  if (typeof Stats !== 'undefined' && Stats.enabled) {\n    var pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1);\n    if (pageView && pageView.stats) {\n      Stats.add(page, pageView.stats);\n    }\n  }\n}\nvar zoomDisabled = false,\n    zoomDisabledTimeout = void 0;\nfunction webViewerWheel(evt) {\n  var pdfViewer = PDFViewerApplication.pdfViewer;\n  if (pdfViewer.isInPresentationMode) {\n    return;\n  }\n  if (evt.ctrlKey || evt.metaKey) {\n    var support = PDFViewerApplication.supportedMouseWheelZoomModifierKeys;\n    if (evt.ctrlKey && !support.ctrlKey || evt.metaKey && !support.metaKey) {\n      return;\n    }\n    evt.preventDefault();\n    if (zoomDisabled) {\n      return;\n    }\n    var previousScale = pdfViewer.currentScale;\n    var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);\n    var MOUSE_WHEEL_DELTA_PER_PAGE_SCALE = 3.0;\n    var ticks = delta * MOUSE_WHEEL_DELTA_PER_PAGE_SCALE;\n    if (ticks < 0) {\n      PDFViewerApplication.zoomOut(-ticks);\n    } else {\n      PDFViewerApplication.zoomIn(ticks);\n    }\n    var currentScale = pdfViewer.currentScale;\n    if (previousScale !== currentScale) {\n      var scaleCorrectionFactor = currentScale / previousScale - 1;\n      var rect = pdfViewer.container.getBoundingClientRect();\n      var dx = evt.clientX - rect.left;\n      var dy = evt.clientY - rect.top;\n      pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor;\n      pdfViewer.container.scrollTop += dy * scaleCorrectionFactor;\n    }\n  } else {\n    zoomDisabled = true;\n    clearTimeout(zoomDisabledTimeout);\n    zoomDisabledTimeout = setTimeout(function () {\n      zoomDisabled = false;\n    }, 1000);\n  }\n}\nfunction webViewerClick(evt) {\n  if (!PDFViewerApplication.secondaryToolbar.isOpen) {\n    return;\n  }\n  var appConfig = PDFViewerApplication.appConfig;\n  if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) {\n    PDFViewerApplication.secondaryToolbar.close();\n  }\n}\nfunction webViewerKeyDown(evt) {\n  if (PDFViewerApplication.overlayManager.active) {\n    return;\n  }\n  var handled = false,\n      ensureViewerFocused = false;\n  var cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0);\n  var pdfViewer = PDFViewerApplication.pdfViewer;\n  var isViewerInPresentationMode = pdfViewer && pdfViewer.isInPresentationMode;\n  if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {\n    switch (evt.keyCode) {\n      case 70:\n        if (!PDFViewerApplication.supportsIntegratedFind) {\n          PDFViewerApplication.findBar.open();\n          handled = true;\n        }\n        break;\n      case 71:\n        if (!PDFViewerApplication.supportsIntegratedFind) {\n          var findState = PDFViewerApplication.findController.state;\n          if (findState) {\n            PDFViewerApplication.findController.executeCommand('findagain', {\n              query: findState.query,\n              phraseSearch: findState.phraseSearch,\n              caseSensitive: findState.caseSensitive,\n              entireWord: findState.entireWord,\n              highlightAll: findState.highlightAll,\n              findPrevious: cmd === 5 || cmd === 12\n            });\n          }\n          handled = true;\n        }\n        break;\n      case 61:\n      case 107:\n      case 187:\n      case 171:\n        if (!isViewerInPresentationMode) {\n          PDFViewerApplication.zoomIn();\n        }\n        handled = true;\n        break;\n      case 173:\n      case 109:\n      case 189:\n        if (!isViewerInPresentationMode) {\n          PDFViewerApplication.zoomOut();\n        }\n        handled = true;\n        break;\n      case 48:\n      case 96:\n        if (!isViewerInPresentationMode) {\n          setTimeout(function () {\n            pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;\n          });\n          handled = false;\n        }\n        break;\n      case 38:\n        if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n          PDFViewerApplication.page = 1;\n          handled = true;\n          ensureViewerFocused = true;\n        }\n        break;\n      case 40:\n        if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) {\n          PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n          handled = true;\n          ensureViewerFocused = true;\n        }\n        break;\n    }\n  }\n  if (cmd === 1 || cmd === 8) {\n    switch (evt.keyCode) {\n      case 83:\n        PDFViewerApplication.download();\n        handled = true;\n        break;\n    }\n  }\n  if (cmd === 3 || cmd === 10) {\n    switch (evt.keyCode) {\n      case 80:\n        PDFViewerApplication.requestPresentationMode();\n        handled = true;\n        break;\n      case 71:\n        PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n        handled = true;\n        break;\n    }\n  }\n  if (handled) {\n    if (ensureViewerFocused && !isViewerInPresentationMode) {\n      pdfViewer.focus();\n    }\n    evt.preventDefault();\n    return;\n  }\n  var curElement = document.activeElement || document.querySelector(':focus');\n  var curElementTagName = curElement && curElement.tagName.toUpperCase();\n  if (curElementTagName === 'INPUT' || curElementTagName === 'TEXTAREA' || curElementTagName === 'SELECT') {\n    if (evt.keyCode !== 27) {\n      return;\n    }\n  }\n  if (cmd === 0) {\n    var turnPage = 0,\n        turnOnlyIfPageFit = false;\n    switch (evt.keyCode) {\n      case 38:\n      case 33:\n        if (pdfViewer.isVerticalScrollbarEnabled) {\n          turnOnlyIfPageFit = true;\n        }\n        turnPage = -1;\n        break;\n      case 8:\n        if (!isViewerInPresentationMode) {\n          turnOnlyIfPageFit = true;\n        }\n        turnPage = -1;\n        break;\n      case 37:\n        if (pdfViewer.isHorizontalScrollbarEnabled) {\n          turnOnlyIfPageFit = true;\n        }\n      case 75:\n      case 80:\n        turnPage = -1;\n        break;\n      case 27:\n        if (PDFViewerApplication.secondaryToolbar.isOpen) {\n          PDFViewerApplication.secondaryToolbar.close();\n          handled = true;\n        }\n        if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) {\n          PDFViewerApplication.findBar.close();\n          handled = true;\n        }\n        break;\n      case 40:\n      case 34:\n        if (pdfViewer.isVerticalScrollbarEnabled) {\n          turnOnlyIfPageFit = true;\n        }\n        turnPage = 1;\n        break;\n      case 13:\n      case 32:\n        if (!isViewerInPresentationMode) {\n          turnOnlyIfPageFit = true;\n        }\n        turnPage = 1;\n        break;\n      case 39:\n        if (pdfViewer.isHorizontalScrollbarEnabled) {\n          turnOnlyIfPageFit = true;\n        }\n      case 74:\n      case 78:\n        turnPage = 1;\n        break;\n      case 36:\n        if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n          PDFViewerApplication.page = 1;\n          handled = true;\n          ensureViewerFocused = true;\n        }\n        break;\n      case 35:\n        if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) {\n          PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n          handled = true;\n          ensureViewerFocused = true;\n        }\n        break;\n      case 83:\n        PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.SELECT);\n        break;\n      case 72:\n        PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.HAND);\n        break;\n      case 82:\n        PDFViewerApplication.rotatePages(90);\n        break;\n    }\n    if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === 'page-fit')) {\n      if (turnPage > 0) {\n        if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) {\n          PDFViewerApplication.page++;\n        }\n      } else {\n        if (PDFViewerApplication.page > 1) {\n          PDFViewerApplication.page--;\n        }\n      }\n      handled = true;\n    }\n  }\n  if (cmd === 4) {\n    switch (evt.keyCode) {\n      case 13:\n      case 32:\n        if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') {\n          break;\n        }\n        if (PDFViewerApplication.page > 1) {\n          PDFViewerApplication.page--;\n        }\n        handled = true;\n        break;\n      case 82:\n        PDFViewerApplication.rotatePages(-90);\n        break;\n    }\n  }\n  if (!handled && !isViewerInPresentationMode) {\n    if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== 'BUTTON') {\n      ensureViewerFocused = true;\n    }\n  }\n  if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {\n    pdfViewer.focus();\n  }\n  if (handled) {\n    evt.preventDefault();\n  }\n}\nfunction apiPageModeToSidebarView(mode) {\n  switch (mode) {\n    case 'UseNone':\n      return _pdf_sidebar.SidebarView.NONE;\n    case 'UseThumbs':\n      return _pdf_sidebar.SidebarView.THUMBS;\n    case 'UseOutlines':\n      return _pdf_sidebar.SidebarView.OUTLINE;\n    case 'UseAttachments':\n      return _pdf_sidebar.SidebarView.ATTACHMENTS;\n    case 'UseOC':\n  }\n  return _pdf_sidebar.SidebarView.NONE;\n}\nvar PDFPrintServiceFactory = {\n  instance: {\n    supportsPrinting: false,\n    createPrintService: function createPrintService() {\n      throw new Error('Not implemented: createPrintService');\n    }\n  }\n};\nexports.PDFViewerApplication = PDFViewerApplication;\nexports.DefaultExternalServices = DefaultExternalServices;\nexports.PDFPrintServiceFactory = PDFPrintServiceFactory;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(3);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar g = function () {\n  return this;\n}() || Function(\"return this\")();\nvar hadRuntime = g.regeneratorRuntime && Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\ng.regeneratorRuntime = undefined;\nmodule.exports = __webpack_require__(4);\nif (hadRuntime) {\n  g.regeneratorRuntime = oldRuntime;\n} else {\n  try {\n    delete g.regeneratorRuntime;\n  } catch (e) {\n    g.regeneratorRuntime = undefined;\n  }\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n!function (global) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined;\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n  var inModule = ( false ? undefined : _typeof(module)) === \"object\";\n  var runtime = global.regeneratorRuntime;\n  if (runtime) {\n    if (inModule) {\n      module.exports = runtime;\n    }\n    return;\n  }\n  runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n    return generator;\n  }\n  runtime.wrap = wrap;\n  function tryCatch(fn, obj, arg) {\n    try {\n      return {\n        type: \"normal\",\n        arg: fn.call(obj, arg)\n      };\n    } catch (err) {\n      return {\n        type: \"throw\",\n        arg: err\n      };\n    }\n  }\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n  var ContinueSentinel = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\";\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function (method) {\n      prototype[method] = function (arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n  runtime.isGeneratorFunction = function (genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n  };\n  runtime.mark = function (genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n  runtime.awrap = function (arg) {\n    return { __await: arg };\n  };\n  function AsyncIterator(generator) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) === \"object\" && hasOwn.call(value, \"__await\")) {\n          return Promise.resolve(value.__await).then(function (value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function (err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n        return Promise.resolve(value).then(function (unwrapped) {\n          result.value = unwrapped;\n          resolve(result);\n        }, reject);\n      }\n    }\n    var previousPromise;\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new Promise(function (resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n      return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n    }\n    this._invoke = enqueue;\n  }\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  runtime.AsyncIterator = AsyncIterator;\n  runtime.async = function (innerFn, outerFn, self, tryLocsList) {\n    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));\n    return runtime.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n      return result.done ? result.value : iter.next();\n    });\n  };\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n        return doneResult();\n      }\n      context.method = method;\n      context.arg = arg;\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n        if (context.method === \"next\") {\n          context.sent = context._sent = context.arg;\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n          context.dispatchException(context.arg);\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n        state = GenStateExecuting;\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n          return {\n            value: record.arg,\n            done: context.done\n          };\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      context.delegate = null;\n      if (context.method === \"throw\") {\n        if (delegate.iterator.return) {\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n          if (context.method === \"throw\") {\n            return ContinueSentinel;\n          }\n        }\n        context.method = \"throw\";\n        context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n      }\n      return ContinueSentinel;\n    }\n    var record = tryCatch(method, delegate.iterator, context.arg);\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n    var info = record.arg;\n    if (!info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n    if (info.done) {\n      context[delegate.resultName] = info.value;\n      context.next = delegate.nextLoc;\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n    } else {\n      return info;\n    }\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n  defineIteratorMethods(Gp);\n  Gp[toStringTagSymbol] = \"Generator\";\n  Gp[iteratorSymbol] = function () {\n    return this;\n  };\n  Gp.toString = function () {\n    return \"[object Generator]\";\n  };\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n    this.tryEntries.push(entry);\n  }\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n  function Context(tryLocsList) {\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n  runtime.keys = function (object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n      next.done = true;\n      return next;\n    };\n  };\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n      if (!isNaN(iterable.length)) {\n        var i = -1,\n            next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n          next.value = undefined;\n          next.done = true;\n          return next;\n        };\n        return next.next = next;\n      }\n    }\n    return { next: doneResult };\n  }\n  runtime.values = values;\n  function doneResult() {\n    return {\n      value: undefined,\n      done: true\n    };\n  }\n  Context.prototype = {\n    constructor: Context,\n    reset: function reset(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n      this.method = \"next\";\n      this.arg = undefined;\n      this.tryEntries.forEach(resetTryEntry);\n      if (!skipTempReset) {\n        for (var name in this) {\n          if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n    stop: function stop() {\n      this.done = true;\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n      return this.rval;\n    },\n    dispatchException: function dispatchException(exception) {\n      if (this.done) {\n        throw exception;\n      }\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n        if (caught) {\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n        return !!caught;\n      }\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n        if (entry.tryLoc === \"root\") {\n          return handle(\"end\");\n        }\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n      if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n        finallyEntry = null;\n      }\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n      return this.complete(record);\n    },\n    complete: function complete(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n      if (record.type === \"break\" || record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n      return ContinueSentinel;\n    },\n    finish: function finish(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n    \"catch\": function _catch(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n      throw new Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n      if (this.method === \"next\") {\n        this.arg = undefined;\n      }\n      return ContinueSentinel;\n    }\n  };\n}(function () {\n  return this;\n}() || Function(\"return this\")());\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)(module)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (module) {\n  if (!module.webpackPolyfill) {\n    module.deprecate = function () {};\n    module.paths = [];\n    if (!module.children) module.children = [];\n    Object.defineProperty(module, \"loaded\", {\n      enumerable: true,\n      get: function get() {\n        return module.l;\n      }\n    });\n    Object.defineProperty(module, \"id\", {\n      enumerable: true,\n      get: function get() {\n        return module.i;\n      }\n    });\n    module.webpackPolyfill = 1;\n  }\n  return module;\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.moveToEndOfArray = exports.waitOnEventOrTimeout = exports.WaitOnType = exports.animationStarted = exports.normalizeWheelEventDelta = exports.binarySearchFirstItem = exports.watchScroll = exports.scrollIntoView = exports.getOutputScale = exports.approximateFraction = exports.getPageSizeInches = exports.roundToDivide = exports.getVisibleElements = exports.backtrackBeforeAllVisibleElements = exports.parseQueryString = exports.noContextMenuHandler = exports.getPDFFileNameFromURL = exports.ProgressBar = exports.EventBus = exports.NullL10n = exports.TextLayerMode = exports.RendererType = exports.PresentationModeState = exports.isPortraitOrientation = exports.isValidRotation = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = undefined;\n\nvar _regenerator = __webpack_require__(2);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nvar CSS_UNITS = 96.0 / 72.0;\nvar DEFAULT_SCALE_VALUE = 'auto';\nvar DEFAULT_SCALE = 1.0;\nvar MIN_SCALE = 0.10;\nvar MAX_SCALE = 10.0;\nvar UNKNOWN_SCALE = 0;\nvar MAX_AUTO_SCALE = 1.25;\nvar SCROLLBAR_PADDING = 40;\nvar VERTICAL_PADDING = 5;\nvar PresentationModeState = {\n  UNKNOWN: 0,\n  NORMAL: 1,\n  CHANGING: 2,\n  FULLSCREEN: 3\n};\nvar RendererType = {\n  CANVAS: 'canvas',\n  SVG: 'svg'\n};\nvar TextLayerMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_ENHANCE: 2\n};\nfunction formatL10nValue(text, args) {\n  if (!args) {\n    return text;\n  }\n  return text.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, function (all, name) {\n    return name in args ? args[name] : '{{' + name + '}}';\n  });\n}\nvar NullL10n = {\n  getLanguage: function () {\n    var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n      return _regenerator2.default.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              return _context.abrupt('return', 'en-us');\n\n            case 1:\n            case 'end':\n              return _context.stop();\n          }\n        }\n      }, _callee, this);\n    }));\n\n    function getLanguage() {\n      return _ref.apply(this, arguments);\n    }\n\n    return getLanguage;\n  }(),\n  getDirection: function () {\n    var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n      return _regenerator2.default.wrap(function _callee2$(_context2) {\n        while (1) {\n          switch (_context2.prev = _context2.next) {\n            case 0:\n              return _context2.abrupt('return', 'ltr');\n\n            case 1:\n            case 'end':\n              return _context2.stop();\n          }\n        }\n      }, _callee2, this);\n    }));\n\n    function getDirection() {\n      return _ref2.apply(this, arguments);\n    }\n\n    return getDirection;\n  }(),\n  get: function () {\n    var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(property, args, fallback) {\n      return _regenerator2.default.wrap(function _callee3$(_context3) {\n        while (1) {\n          switch (_context3.prev = _context3.next) {\n            case 0:\n              return _context3.abrupt('return', formatL10nValue(fallback, args));\n\n            case 1:\n            case 'end':\n              return _context3.stop();\n          }\n        }\n      }, _callee3, this);\n    }));\n\n    function get(_x, _x2, _x3) {\n      return _ref3.apply(this, arguments);\n    }\n\n    return get;\n  }(),\n  translate: function () {\n    var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(element) {\n      return _regenerator2.default.wrap(function _callee4$(_context4) {\n        while (1) {\n          switch (_context4.prev = _context4.next) {\n            case 0:\n            case 'end':\n              return _context4.stop();\n          }\n        }\n      }, _callee4, this);\n    }));\n\n    function translate(_x4) {\n      return _ref4.apply(this, arguments);\n    }\n\n    return translate;\n  }()\n};\nfunction getOutputScale(ctx) {\n  var devicePixelRatio = window.devicePixelRatio || 1;\n  var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;\n  var pixelRatio = devicePixelRatio / backingStoreRatio;\n  return {\n    sx: pixelRatio,\n    sy: pixelRatio,\n    scaled: pixelRatio !== 1\n  };\n}\nfunction scrollIntoView(element, spot) {\n  var skipOverflowHiddenElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var parent = element.offsetParent;\n  if (!parent) {\n    console.error('offsetParent is not set -- cannot scroll');\n    return;\n  }\n  var offsetY = element.offsetTop + element.clientTop;\n  var offsetX = element.offsetLeft + element.clientLeft;\n  while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || skipOverflowHiddenElements && getComputedStyle(parent).overflow === 'hidden') {\n    if (parent.dataset._scaleY) {\n      offsetY /= parent.dataset._scaleY;\n      offsetX /= parent.dataset._scaleX;\n    }\n    offsetY += parent.offsetTop;\n    offsetX += parent.offsetLeft;\n    parent = parent.offsetParent;\n    if (!parent) {\n      return;\n    }\n  }\n  if (spot) {\n    if (spot.top !== undefined) {\n      offsetY += spot.top;\n    }\n    if (spot.left !== undefined) {\n      offsetX += spot.left;\n      parent.scrollLeft = offsetX;\n    }\n  }\n  parent.scrollTop = offsetY;\n}\nfunction watchScroll(viewAreaElement, callback) {\n  var debounceScroll = function debounceScroll(evt) {\n    if (rAF) {\n      return;\n    }\n    rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\n      rAF = null;\n      var currentX = viewAreaElement.scrollLeft;\n      var lastX = state.lastX;\n      if (currentX !== lastX) {\n        state.right = currentX > lastX;\n      }\n      state.lastX = currentX;\n      var currentY = viewAreaElement.scrollTop;\n      var lastY = state.lastY;\n      if (currentY !== lastY) {\n        state.down = currentY > lastY;\n      }\n      state.lastY = currentY;\n      callback(state);\n    });\n  };\n  var state = {\n    right: true,\n    down: true,\n    lastX: viewAreaElement.scrollLeft,\n    lastY: viewAreaElement.scrollTop,\n    _eventHandler: debounceScroll\n  };\n  var rAF = null;\n  viewAreaElement.addEventListener('scroll', debounceScroll, true);\n  return state;\n}\nfunction parseQueryString(query) {\n  var parts = query.split('&');\n  var params = Object.create(null);\n  for (var i = 0, ii = parts.length; i < ii; ++i) {\n    var param = parts[i].split('=');\n    var key = param[0].toLowerCase();\n    var value = param.length > 1 ? param[1] : null;\n    params[decodeURIComponent(key)] = decodeURIComponent(value);\n  }\n  return params;\n}\nfunction binarySearchFirstItem(items, condition) {\n  var minIndex = 0;\n  var maxIndex = items.length - 1;\n  if (items.length === 0 || !condition(items[maxIndex])) {\n    return items.length;\n  }\n  if (condition(items[minIndex])) {\n    return minIndex;\n  }\n  while (minIndex < maxIndex) {\n    var currentIndex = minIndex + maxIndex >> 1;\n    var currentItem = items[currentIndex];\n    if (condition(currentItem)) {\n      maxIndex = currentIndex;\n    } else {\n      minIndex = currentIndex + 1;\n    }\n  }\n  return minIndex;\n}\nfunction approximateFraction(x) {\n  if (Math.floor(x) === x) {\n    return [x, 1];\n  }\n  var xinv = 1 / x;\n  var limit = 8;\n  if (xinv > limit) {\n    return [1, limit];\n  } else if (Math.floor(xinv) === xinv) {\n    return [1, xinv];\n  }\n  var x_ = x > 1 ? xinv : x;\n  var a = 0,\n      b = 1,\n      c = 1,\n      d = 1;\n  while (true) {\n    var p = a + c,\n        q = b + d;\n    if (q > limit) {\n      break;\n    }\n    if (x_ <= p / q) {\n      c = p;\n      d = q;\n    } else {\n      a = p;\n      b = q;\n    }\n  }\n  var result = void 0;\n  if (x_ - a / b < c / d - x_) {\n    result = x_ === x ? [a, b] : [b, a];\n  } else {\n    result = x_ === x ? [c, d] : [d, c];\n  }\n  return result;\n}\nfunction roundToDivide(x, div) {\n  var r = x % div;\n  return r === 0 ? x : Math.round(x - r + div);\n}\nfunction getPageSizeInches(_ref5) {\n  var view = _ref5.view,\n      userUnit = _ref5.userUnit,\n      rotate = _ref5.rotate;\n\n  var _view = _slicedToArray(view, 4),\n      x1 = _view[0],\n      y1 = _view[1],\n      x2 = _view[2],\n      y2 = _view[3];\n\n  var changeOrientation = rotate % 180 !== 0;\n  var width = (x2 - x1) / 72 * userUnit;\n  var height = (y2 - y1) / 72 * userUnit;\n  return {\n    width: changeOrientation ? height : width,\n    height: changeOrientation ? width : height\n  };\n}\nfunction backtrackBeforeAllVisibleElements(index, views, top) {\n  if (index < 2) {\n    return index;\n  }\n  var elt = views[index].div;\n  var pageTop = elt.offsetTop + elt.clientTop;\n  if (pageTop >= top) {\n    elt = views[index - 1].div;\n    pageTop = elt.offsetTop + elt.clientTop;\n  }\n  for (var i = index - 2; i >= 0; --i) {\n    elt = views[i].div;\n    if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {\n      break;\n    }\n    index = i;\n  }\n  return index;\n}\nfunction getVisibleElements(scrollEl, views) {\n  var sortByVisibility = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var horizontal = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n  var top = scrollEl.scrollTop,\n      bottom = top + scrollEl.clientHeight;\n  var left = scrollEl.scrollLeft,\n      right = left + scrollEl.clientWidth;\n  function isElementBottomAfterViewTop(view) {\n    var element = view.div;\n    var elementBottom = element.offsetTop + element.clientTop + element.clientHeight;\n    return elementBottom > top;\n  }\n  function isElementRightAfterViewLeft(view) {\n    var element = view.div;\n    var elementRight = element.offsetLeft + element.clientLeft + element.clientWidth;\n    return elementRight > left;\n  }\n  var visible = [],\n      view = void 0,\n      element = void 0;\n  var currentHeight = void 0,\n      viewHeight = void 0,\n      viewBottom = void 0,\n      hiddenHeight = void 0;\n  var currentWidth = void 0,\n      viewWidth = void 0,\n      viewRight = void 0,\n      hiddenWidth = void 0;\n  var percentVisible = void 0;\n  var firstVisibleElementInd = views.length === 0 ? 0 : binarySearchFirstItem(views, horizontal ? isElementRightAfterViewLeft : isElementBottomAfterViewTop);\n  if (views.length > 0 && !horizontal) {\n    firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top);\n  }\n  var lastEdge = horizontal ? right : -1;\n  for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) {\n    view = views[i];\n    element = view.div;\n    currentWidth = element.offsetLeft + element.clientLeft;\n    currentHeight = element.offsetTop + element.clientTop;\n    viewWidth = element.clientWidth;\n    viewHeight = element.clientHeight;\n    viewRight = currentWidth + viewWidth;\n    viewBottom = currentHeight + viewHeight;\n    if (lastEdge === -1) {\n      if (viewBottom >= bottom) {\n        lastEdge = viewBottom;\n      }\n    } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {\n      break;\n    }\n    if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) {\n      continue;\n    }\n    hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);\n    hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);\n    percentVisible = (viewHeight - hiddenHeight) * (viewWidth - hiddenWidth) * 100 / viewHeight / viewWidth | 0;\n    visible.push({\n      id: view.id,\n      x: currentWidth,\n      y: currentHeight,\n      view: view,\n      percent: percentVisible\n    });\n  }\n  var first = visible[0];\n  var last = visible[visible.length - 1];\n  if (sortByVisibility) {\n    visible.sort(function (a, b) {\n      var pc = a.percent - b.percent;\n      if (Math.abs(pc) > 0.001) {\n        return -pc;\n      }\n      return a.id - b.id;\n    });\n  }\n  return {\n    first: first,\n    last: last,\n    views: visible\n  };\n}\nfunction noContextMenuHandler(evt) {\n  evt.preventDefault();\n}\nfunction isDataSchema(url) {\n  var i = 0,\n      ii = url.length;\n  while (i < ii && url[i].trim() === '') {\n    i++;\n  }\n  return url.substring(i, i + 5).toLowerCase() === 'data:';\n}\nfunction getPDFFileNameFromURL(url) {\n  var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'document.pdf';\n\n  if (typeof url !== 'string') {\n    return defaultFilename;\n  }\n  if (isDataSchema(url)) {\n    console.warn('getPDFFileNameFromURL: ' + 'ignoring \"data:\" URL for performance reasons.');\n    return defaultFilename;\n  }\n  var reURI = /^(?:(?:[^:]+:)?\\/\\/[^\\/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n  var reFilename = /[^\\/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n  var splitURI = reURI.exec(url);\n  var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n  if (suggestedFilename) {\n    suggestedFilename = suggestedFilename[0];\n    if (suggestedFilename.includes('%')) {\n      try {\n        suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n      } catch (ex) {}\n    }\n  }\n  return suggestedFilename || defaultFilename;\n}\nfunction normalizeWheelEventDelta(evt) {\n  var delta = Math.sqrt(evt.deltaX * evt.deltaX + evt.deltaY * evt.deltaY);\n  var angle = Math.atan2(evt.deltaY, evt.deltaX);\n  if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {\n    delta = -delta;\n  }\n  var MOUSE_DOM_DELTA_PIXEL_MODE = 0;\n  var MOUSE_DOM_DELTA_LINE_MODE = 1;\n  var MOUSE_PIXELS_PER_LINE = 30;\n  var MOUSE_LINES_PER_PAGE = 30;\n  if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {\n    delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\n  } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {\n    delta /= MOUSE_LINES_PER_PAGE;\n  }\n  return delta;\n}\nfunction isValidRotation(angle) {\n  return Number.isInteger(angle) && angle % 90 === 0;\n}\nfunction isPortraitOrientation(size) {\n  return size.width <= size.height;\n}\nvar WaitOnType = {\n  EVENT: 'event',\n  TIMEOUT: 'timeout'\n};\nfunction waitOnEventOrTimeout(_ref6) {\n  var target = _ref6.target,\n      name = _ref6.name,\n      _ref6$delay = _ref6.delay,\n      delay = _ref6$delay === undefined ? 0 : _ref6$delay;\n\n  return new Promise(function (resolve, reject) {\n    if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) !== 'object' || !(name && typeof name === 'string') || !(Number.isInteger(delay) && delay >= 0)) {\n      throw new Error('waitOnEventOrTimeout - invalid parameters.');\n    }\n    function handler(type) {\n      if (target instanceof EventBus) {\n        target.off(name, eventHandler);\n      } else {\n        target.removeEventListener(name, eventHandler);\n      }\n      if (timeout) {\n        clearTimeout(timeout);\n      }\n      resolve(type);\n    }\n    var eventHandler = handler.bind(null, WaitOnType.EVENT);\n    if (target instanceof EventBus) {\n      target.on(name, eventHandler);\n    } else {\n      target.addEventListener(name, eventHandler);\n    }\n    var timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);\n    var timeout = setTimeout(timeoutHandler, delay);\n  });\n}\nvar animationStarted = new Promise(function (resolve) {\n  window.requestAnimationFrame(resolve);\n});\n\nvar EventBus = function () {\n  function EventBus() {\n    var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        _ref7$dispatchToDOM = _ref7.dispatchToDOM,\n        dispatchToDOM = _ref7$dispatchToDOM === undefined ? false : _ref7$dispatchToDOM;\n\n    _classCallCheck(this, EventBus);\n\n    this._listeners = Object.create(null);\n    this._dispatchToDOM = dispatchToDOM === true;\n  }\n\n  _createClass(EventBus, [{\n    key: 'on',\n    value: function on(eventName, listener) {\n      var eventListeners = this._listeners[eventName];\n      if (!eventListeners) {\n        eventListeners = [];\n        this._listeners[eventName] = eventListeners;\n      }\n      eventListeners.push(listener);\n    }\n  }, {\n    key: 'off',\n    value: function off(eventName, listener) {\n      var eventListeners = this._listeners[eventName];\n      var i = void 0;\n      if (!eventListeners || (i = eventListeners.indexOf(listener)) < 0) {\n        return;\n      }\n      eventListeners.splice(i, 1);\n    }\n  }, {\n    key: 'dispatch',\n    value: function dispatch(eventName) {\n      var eventListeners = this._listeners[eventName];\n      if (!eventListeners || eventListeners.length === 0) {\n        if (this._dispatchToDOM) {\n          var _args5 = Array.prototype.slice.call(arguments, 1);\n          this._dispatchDOMEvent(eventName, _args5);\n        }\n        return;\n      }\n      var args = Array.prototype.slice.call(arguments, 1);\n      eventListeners.slice(0).forEach(function (listener) {\n        listener.apply(null, args);\n      });\n      if (this._dispatchToDOM) {\n        this._dispatchDOMEvent(eventName, args);\n      }\n    }\n  }, {\n    key: '_dispatchDOMEvent',\n    value: function _dispatchDOMEvent(eventName) {\n      var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      if (!this._dispatchToDOM) {\n        return;\n      }\n      var details = Object.create(null);\n      if (args && args.length > 0) {\n        var obj = args[0];\n        for (var key in obj) {\n          var value = obj[key];\n          if (key === 'source') {\n            if (value === window || value === document) {\n              return;\n            }\n            continue;\n          }\n          details[key] = value;\n        }\n      }\n      var event = document.createEvent('CustomEvent');\n      event.initCustomEvent(eventName, true, true, details);\n      document.dispatchEvent(event);\n    }\n  }]);\n\n  return EventBus;\n}();\n\nfunction clamp(v, min, max) {\n  return Math.min(Math.max(v, min), max);\n}\n\nvar ProgressBar = function () {\n  function ProgressBar(id) {\n    var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        height = _ref8.height,\n        width = _ref8.width,\n        units = _ref8.units;\n\n    _classCallCheck(this, ProgressBar);\n\n    this.visible = true;\n    this.div = document.querySelector(id + ' .progress');\n    this.bar = this.div.parentNode;\n    this.height = height || 100;\n    this.width = width || 100;\n    this.units = units || '%';\n    this.div.style.height = this.height + this.units;\n    this.percent = 0;\n  }\n\n  _createClass(ProgressBar, [{\n    key: '_updateBar',\n    value: function _updateBar() {\n      if (this._indeterminate) {\n        this.div.classList.add('indeterminate');\n        this.div.style.width = this.width + this.units;\n        return;\n      }\n      this.div.classList.remove('indeterminate');\n      var progressSize = this.width * this._percent / 100;\n      this.div.style.width = progressSize + this.units;\n    }\n  }, {\n    key: 'setWidth',\n    value: function setWidth(viewer) {\n      if (!viewer) {\n        return;\n      }\n      var container = viewer.parentNode;\n      var scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\n      if (scrollbarWidth > 0) {\n        this.bar.setAttribute('style', 'width: calc(100% - ' + scrollbarWidth + 'px);');\n      }\n    }\n  }, {\n    key: 'hide',\n    value: function hide() {\n      if (!this.visible) {\n        return;\n      }\n      this.visible = false;\n      this.bar.classList.add('hidden');\n      document.body.classList.remove('loadingInProgress');\n    }\n  }, {\n    key: 'show',\n    value: function show() {\n      if (this.visible) {\n        return;\n      }\n      this.visible = true;\n      document.body.classList.add('loadingInProgress');\n      this.bar.classList.remove('hidden');\n    }\n  }, {\n    key: 'percent',\n    get: function get() {\n      return this._percent;\n    },\n    set: function set(val) {\n      this._indeterminate = isNaN(val);\n      this._percent = clamp(val, 0, 100);\n      this._updateBar();\n    }\n  }]);\n\n  return ProgressBar;\n}();\n\nfunction moveToEndOfArray(arr, condition) {\n  var moved = [],\n      len = arr.length;\n  var write = 0;\n  for (var read = 0; read < len; ++read) {\n    if (condition(arr[read])) {\n      moved.push(arr[read]);\n    } else {\n      arr[write] = arr[read];\n      ++write;\n    }\n  }\n  for (var _read = 0; write < len; ++_read, ++write) {\n    arr[write] = moved[_read];\n  }\n}\nexports.CSS_UNITS = CSS_UNITS;\nexports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE;\nexports.DEFAULT_SCALE = DEFAULT_SCALE;\nexports.MIN_SCALE = MIN_SCALE;\nexports.MAX_SCALE = MAX_SCALE;\nexports.UNKNOWN_SCALE = UNKNOWN_SCALE;\nexports.MAX_AUTO_SCALE = MAX_AUTO_SCALE;\nexports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;\nexports.VERTICAL_PADDING = VERTICAL_PADDING;\nexports.isValidRotation = isValidRotation;\nexports.isPortraitOrientation = isPortraitOrientation;\nexports.PresentationModeState = PresentationModeState;\nexports.RendererType = RendererType;\nexports.TextLayerMode = TextLayerMode;\nexports.NullL10n = NullL10n;\nexports.EventBus = EventBus;\nexports.ProgressBar = ProgressBar;\nexports.getPDFFileNameFromURL = getPDFFileNameFromURL;\nexports.noContextMenuHandler = noContextMenuHandler;\nexports.parseQueryString = parseQueryString;\nexports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;\nexports.getVisibleElements = getVisibleElements;\nexports.roundToDivide = roundToDivide;\nexports.getPageSizeInches = getPageSizeInches;\nexports.approximateFraction = approximateFraction;\nexports.getOutputScale = getOutputScale;\nexports.scrollIntoView = scrollIntoView;\nexports.watchScroll = watchScroll;\nexports.binarySearchFirstItem = binarySearchFirstItem;\nexports.normalizeWheelEventDelta = normalizeWheelEventDelta;\nexports.animationStarted = animationStarted;\nexports.WaitOnType = WaitOnType;\nexports.waitOnEventOrTimeout = waitOnEventOrTimeout;\nexports.moveToEndOfArray = moveToEndOfArray;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar pdfjsLib = void 0;\nif (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) {\n  pdfjsLib = window['pdfjs-dist/build/pdf'];\n} else {\n  pdfjsLib = require('../build/pdf.js');\n}\nmodule.exports = pdfjsLib;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFCursorTools = exports.CursorTool = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _grab_to_pan = __webpack_require__(9);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar CursorTool = {\n  SELECT: 0,\n  HAND: 1,\n  ZOOM: 2\n};\n\nvar PDFCursorTools = function () {\n  function PDFCursorTools(_ref) {\n    var _this = this;\n\n    var container = _ref.container,\n        eventBus = _ref.eventBus,\n        _ref$cursorToolOnLoad = _ref.cursorToolOnLoad,\n        cursorToolOnLoad = _ref$cursorToolOnLoad === undefined ? CursorTool.SELECT : _ref$cursorToolOnLoad;\n\n    _classCallCheck(this, PDFCursorTools);\n\n    this.container = container;\n    this.eventBus = eventBus;\n    this.active = CursorTool.SELECT;\n    this.activeBeforePresentationMode = null;\n    this.handTool = new _grab_to_pan.GrabToPan({ element: this.container });\n    this._addEventListeners();\n    Promise.resolve().then(function () {\n      _this.switchTool(cursorToolOnLoad);\n    });\n  }\n\n  _createClass(PDFCursorTools, [{\n    key: 'switchTool',\n    value: function switchTool(tool) {\n      var _this2 = this;\n\n      if (this.activeBeforePresentationMode !== null) {\n        return;\n      }\n      if (tool === this.active) {\n        return;\n      }\n      var disableActiveTool = function disableActiveTool() {\n        switch (_this2.active) {\n          case CursorTool.SELECT:\n            break;\n          case CursorTool.HAND:\n            _this2.handTool.deactivate();\n            break;\n          case CursorTool.ZOOM:\n        }\n      };\n      switch (tool) {\n        case CursorTool.SELECT:\n          disableActiveTool();\n          break;\n        case CursorTool.HAND:\n          disableActiveTool();\n          this.handTool.activate();\n          break;\n        case CursorTool.ZOOM:\n        default:\n          console.error('switchTool: \"' + tool + '\" is an unsupported value.');\n          return;\n      }\n      this.active = tool;\n      this._dispatchEvent();\n    }\n  }, {\n    key: '_dispatchEvent',\n    value: function _dispatchEvent() {\n      this.eventBus.dispatch('cursortoolchanged', {\n        source: this,\n        tool: this.active\n      });\n    }\n  }, {\n    key: '_addEventListeners',\n    value: function _addEventListeners() {\n      var _this3 = this;\n\n      this.eventBus.on('switchcursortool', function (evt) {\n        _this3.switchTool(evt.tool);\n      });\n      this.eventBus.on('presentationmodechanged', function (evt) {\n        if (evt.switchInProgress) {\n          return;\n        }\n        var previouslyActive = void 0;\n        if (evt.active) {\n          previouslyActive = _this3.active;\n          _this3.switchTool(CursorTool.SELECT);\n          _this3.activeBeforePresentationMode = previouslyActive;\n        } else {\n          previouslyActive = _this3.activeBeforePresentationMode;\n          _this3.activeBeforePresentationMode = null;\n          _this3.switchTool(previouslyActive);\n        }\n      });\n    }\n  }, {\n    key: 'activeTool',\n    get: function get() {\n      return this.active;\n    }\n  }]);\n\n  return PDFCursorTools;\n}();\n\nexports.CursorTool = CursorTool;\nexports.PDFCursorTools = PDFCursorTools;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction GrabToPan(options) {\n  this.element = options.element;\n  this.document = options.element.ownerDocument;\n  if (typeof options.ignoreTarget === 'function') {\n    this.ignoreTarget = options.ignoreTarget;\n  }\n  this.onActiveChanged = options.onActiveChanged;\n  this.activate = this.activate.bind(this);\n  this.deactivate = this.deactivate.bind(this);\n  this.toggle = this.toggle.bind(this);\n  this._onmousedown = this._onmousedown.bind(this);\n  this._onmousemove = this._onmousemove.bind(this);\n  this._endPan = this._endPan.bind(this);\n  var overlay = this.overlay = document.createElement('div');\n  overlay.className = 'grab-to-pan-grabbing';\n}\nGrabToPan.prototype = {\n  CSS_CLASS_GRAB: 'grab-to-pan-grab',\n  activate: function GrabToPan_activate() {\n    if (!this.active) {\n      this.active = true;\n      this.element.addEventListener('mousedown', this._onmousedown, true);\n      this.element.classList.add(this.CSS_CLASS_GRAB);\n      if (this.onActiveChanged) {\n        this.onActiveChanged(true);\n      }\n    }\n  },\n  deactivate: function GrabToPan_deactivate() {\n    if (this.active) {\n      this.active = false;\n      this.element.removeEventListener('mousedown', this._onmousedown, true);\n      this._endPan();\n      this.element.classList.remove(this.CSS_CLASS_GRAB);\n      if (this.onActiveChanged) {\n        this.onActiveChanged(false);\n      }\n    }\n  },\n  toggle: function GrabToPan_toggle() {\n    if (this.active) {\n      this.deactivate();\n    } else {\n      this.activate();\n    }\n  },\n  ignoreTarget: function GrabToPan_ignoreTarget(node) {\n    return node[matchesSelector]('a[href], a[href] *, input, textarea, button, button *, select, option');\n  },\n  _onmousedown: function GrabToPan__onmousedown(event) {\n    if (event.button !== 0 || this.ignoreTarget(event.target)) {\n      return;\n    }\n    if (event.originalTarget) {\n      try {\n        event.originalTarget.tagName;\n      } catch (e) {\n        return;\n      }\n    }\n    this.scrollLeftStart = this.element.scrollLeft;\n    this.scrollTopStart = this.element.scrollTop;\n    this.clientXStart = event.clientX;\n    this.clientYStart = event.clientY;\n    this.document.addEventListener('mousemove', this._onmousemove, true);\n    this.document.addEventListener('mouseup', this._endPan, true);\n    this.element.addEventListener('scroll', this._endPan, true);\n    event.preventDefault();\n    event.stopPropagation();\n    var focusedElement = document.activeElement;\n    if (focusedElement && !focusedElement.contains(event.target)) {\n      focusedElement.blur();\n    }\n  },\n  _onmousemove: function GrabToPan__onmousemove(event) {\n    this.element.removeEventListener('scroll', this._endPan, true);\n    if (isLeftMouseReleased(event)) {\n      this._endPan();\n      return;\n    }\n    var xDiff = event.clientX - this.clientXStart;\n    var yDiff = event.clientY - this.clientYStart;\n    var scrollTop = this.scrollTopStart - yDiff;\n    var scrollLeft = this.scrollLeftStart - xDiff;\n    if (this.element.scrollTo) {\n      this.element.scrollTo({\n        top: scrollTop,\n        left: scrollLeft,\n        behavior: 'instant'\n      });\n    } else {\n      this.element.scrollTop = scrollTop;\n      this.element.scrollLeft = scrollLeft;\n    }\n    if (!this.overlay.parentNode) {\n      document.body.appendChild(this.overlay);\n    }\n  },\n  _endPan: function GrabToPan__endPan() {\n    this.element.removeEventListener('scroll', this._endPan, true);\n    this.document.removeEventListener('mousemove', this._onmousemove, true);\n    this.document.removeEventListener('mouseup', this._endPan, true);\n    this.overlay.remove();\n  }\n};\nvar matchesSelector;\n['webkitM', 'mozM', 'msM', 'oM', 'm'].some(function (prefix) {\n  var name = prefix + 'atches';\n  if (name in document.documentElement) {\n    matchesSelector = name;\n  }\n  name += 'Selector';\n  if (name in document.documentElement) {\n    matchesSelector = name;\n  }\n  return matchesSelector;\n});\nvar isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9;\nvar chrome = window.chrome;\nvar isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app);\nvar isSafari6plus = /Apple/.test(navigator.vendor) && /Version\\/([6-9]\\d*|[1-5]\\d+)/.test(navigator.userAgent);\nfunction isLeftMouseReleased(event) {\n  if ('buttons' in event && isNotIEorIsIE10plus) {\n    return !(event.buttons & 1);\n  }\n  if (isChrome15OrOpera15plus || isSafari6plus) {\n    return event.which === 0;\n  }\n}\nexports.GrabToPan = GrabToPan;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar CLEANUP_TIMEOUT = 30000;\nvar RenderingStates = {\n  INITIAL: 0,\n  RUNNING: 1,\n  PAUSED: 2,\n  FINISHED: 3\n};\n\nvar PDFRenderingQueue = function () {\n  function PDFRenderingQueue() {\n    _classCallCheck(this, PDFRenderingQueue);\n\n    this.pdfViewer = null;\n    this.pdfThumbnailViewer = null;\n    this.onIdle = null;\n    this.highestPriorityPage = null;\n    this.idleTimeout = null;\n    this.printing = false;\n    this.isThumbnailViewEnabled = false;\n  }\n\n  _createClass(PDFRenderingQueue, [{\n    key: \"setViewer\",\n    value: function setViewer(pdfViewer) {\n      this.pdfViewer = pdfViewer;\n    }\n  }, {\n    key: \"setThumbnailViewer\",\n    value: function setThumbnailViewer(pdfThumbnailViewer) {\n      this.pdfThumbnailViewer = pdfThumbnailViewer;\n    }\n  }, {\n    key: \"isHighestPriority\",\n    value: function isHighestPriority(view) {\n      return this.highestPriorityPage === view.renderingId;\n    }\n  }, {\n    key: \"renderHighestPriority\",\n    value: function renderHighestPriority(currentlyVisiblePages) {\n      if (this.idleTimeout) {\n        clearTimeout(this.idleTimeout);\n        this.idleTimeout = null;\n      }\n      if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {\n        return;\n      }\n      if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) {\n        if (this.pdfThumbnailViewer.forceRendering()) {\n          return;\n        }\n      }\n      if (this.printing) {\n        return;\n      }\n      if (this.onIdle) {\n        this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);\n      }\n    }\n  }, {\n    key: \"getHighestPriority\",\n    value: function getHighestPriority(visible, views, scrolledDown) {\n      var visibleViews = visible.views;\n      var numVisible = visibleViews.length;\n      if (numVisible === 0) {\n        return false;\n      }\n      for (var i = 0; i < numVisible; ++i) {\n        var view = visibleViews[i].view;\n        if (!this.isViewFinished(view)) {\n          return view;\n        }\n      }\n      if (scrolledDown) {\n        var nextPageIndex = visible.last.id;\n        if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) {\n          return views[nextPageIndex];\n        }\n      } else {\n        var previousPageIndex = visible.first.id - 2;\n        if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) {\n          return views[previousPageIndex];\n        }\n      }\n      return null;\n    }\n  }, {\n    key: \"isViewFinished\",\n    value: function isViewFinished(view) {\n      return view.renderingState === RenderingStates.FINISHED;\n    }\n  }, {\n    key: \"renderView\",\n    value: function renderView(view) {\n      var _this = this;\n\n      switch (view.renderingState) {\n        case RenderingStates.FINISHED:\n          return false;\n        case RenderingStates.PAUSED:\n          this.highestPriorityPage = view.renderingId;\n          view.resume();\n          break;\n        case RenderingStates.RUNNING:\n          this.highestPriorityPage = view.renderingId;\n          break;\n        case RenderingStates.INITIAL:\n          this.highestPriorityPage = view.renderingId;\n          var continueRendering = function continueRendering() {\n            _this.renderHighestPriority();\n          };\n          view.draw().then(continueRendering, continueRendering);\n          break;\n      }\n      return true;\n    }\n  }]);\n\n  return PDFRenderingQueue;\n}();\n\nexports.RenderingStates = RenderingStates;\nexports.PDFRenderingQueue = PDFRenderingQueue;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFSidebar = exports.SidebarView = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdf_rendering_queue = __webpack_require__(10);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar UI_NOTIFICATION_CLASS = 'pdfSidebarNotification';\nvar SidebarView = {\n  NONE: 0,\n  THUMBS: 1,\n  OUTLINE: 2,\n  ATTACHMENTS: 3\n};\n\nvar PDFSidebar = function () {\n  function PDFSidebar(options, eventBus) {\n    var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;\n\n    _classCallCheck(this, PDFSidebar);\n\n    this.isOpen = false;\n    this.active = SidebarView.THUMBS;\n    this.isInitialViewSet = false;\n    this.onToggled = null;\n    this.pdfViewer = options.pdfViewer;\n    this.pdfThumbnailViewer = options.pdfThumbnailViewer;\n    this.outerContainer = options.outerContainer;\n    this.viewerContainer = options.viewerContainer;\n    this.toggleButton = options.toggleButton;\n    this.thumbnailButton = options.thumbnailButton;\n    this.outlineButton = options.outlineButton;\n    this.attachmentsButton = options.attachmentsButton;\n    this.thumbnailView = options.thumbnailView;\n    this.outlineView = options.outlineView;\n    this.attachmentsView = options.attachmentsView;\n    this.disableNotification = options.disableNotification || false;\n    this.eventBus = eventBus;\n    this.l10n = l10n;\n    this._addEventListeners();\n  }\n\n  _createClass(PDFSidebar, [{\n    key: 'reset',\n    value: function reset() {\n      this.isInitialViewSet = false;\n      this._hideUINotification(null);\n      this.switchView(SidebarView.THUMBS);\n      this.outlineButton.disabled = false;\n      this.attachmentsButton.disabled = false;\n    }\n  }, {\n    key: 'setInitialView',\n    value: function setInitialView() {\n      var view = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SidebarView.NONE;\n\n      if (this.isInitialViewSet) {\n        return;\n      }\n      this.isInitialViewSet = true;\n      if (this.isOpen && view === SidebarView.NONE) {\n        this._dispatchEvent();\n        return;\n      }\n      var isViewPreserved = view === this.visibleView;\n      this.switchView(view, true);\n      if (isViewPreserved) {\n        this._dispatchEvent();\n      }\n    }\n  }, {\n    key: 'switchView',\n    value: function switchView(view) {\n      var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (view === SidebarView.NONE) {\n        this.close();\n        return;\n      }\n      var isViewChanged = view !== this.active;\n      var shouldForceRendering = false;\n      switch (view) {\n        case SidebarView.THUMBS:\n          this.thumbnailButton.classList.add('toggled');\n          this.outlineButton.classList.remove('toggled');\n          this.attachmentsButton.classList.remove('toggled');\n          this.thumbnailView.classList.remove('hidden');\n          this.outlineView.classList.add('hidden');\n          this.attachmentsView.classList.add('hidden');\n          if (this.isOpen && isViewChanged) {\n            this._updateThumbnailViewer();\n            shouldForceRendering = true;\n          }\n          break;\n        case SidebarView.OUTLINE:\n          if (this.outlineButton.disabled) {\n            return;\n          }\n          this.thumbnailButton.classList.remove('toggled');\n          this.outlineButton.classList.add('toggled');\n          this.attachmentsButton.classList.remove('toggled');\n          this.thumbnailView.classList.add('hidden');\n          this.outlineView.classList.remove('hidden');\n          this.attachmentsView.classList.add('hidden');\n          break;\n        case SidebarView.ATTACHMENTS:\n          if (this.attachmentsButton.disabled) {\n            return;\n          }\n          this.thumbnailButton.classList.remove('toggled');\n          this.outlineButton.classList.remove('toggled');\n          this.attachmentsButton.classList.add('toggled');\n          this.thumbnailView.classList.add('hidden');\n          this.outlineView.classList.add('hidden');\n          this.attachmentsView.classList.remove('hidden');\n          break;\n        default:\n          console.error('PDFSidebar_switchView: \"' + view + '\" is an unsupported value.');\n          return;\n      }\n      this.active = view | 0;\n      if (forceOpen && !this.isOpen) {\n        this.open();\n        return;\n      }\n      if (shouldForceRendering) {\n        this._forceRendering();\n      }\n      if (isViewChanged) {\n        this._dispatchEvent();\n      }\n      this._hideUINotification(this.active);\n    }\n  }, {\n    key: 'open',\n    value: function open() {\n      if (this.isOpen) {\n        return;\n      }\n      this.isOpen = true;\n      this.toggleButton.classList.add('toggled');\n      this.outerContainer.classList.add('sidebarMoving');\n      this.outerContainer.classList.add('sidebarOpen');\n      if (this.active === SidebarView.THUMBS) {\n        this._updateThumbnailViewer();\n      }\n      this._forceRendering();\n      this._dispatchEvent();\n      this._hideUINotification(this.active);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      if (!this.isOpen) {\n        return;\n      }\n      this.isOpen = false;\n      this.toggleButton.classList.remove('toggled');\n      this.outerContainer.classList.add('sidebarMoving');\n      this.outerContainer.classList.remove('sidebarOpen');\n      this._forceRendering();\n      this._dispatchEvent();\n    }\n  }, {\n    key: 'toggle',\n    value: function toggle() {\n      if (this.isOpen) {\n        this.close();\n      } else {\n        this.open();\n      }\n    }\n  }, {\n    key: '_dispatchEvent',\n    value: function _dispatchEvent() {\n      this.eventBus.dispatch('sidebarviewchanged', {\n        source: this,\n        view: this.visibleView\n      });\n    }\n  }, {\n    key: '_forceRendering',\n    value: function _forceRendering() {\n      if (this.onToggled) {\n        this.onToggled();\n      } else {\n        this.pdfViewer.forceRendering();\n        this.pdfThumbnailViewer.forceRendering();\n      }\n    }\n  }, {\n    key: '_updateThumbnailViewer',\n    value: function _updateThumbnailViewer() {\n      var pdfViewer = this.pdfViewer,\n          pdfThumbnailViewer = this.pdfThumbnailViewer;\n\n      var pagesCount = pdfViewer.pagesCount;\n      for (var pageIndex = 0; pageIndex < pagesCount; pageIndex++) {\n        var pageView = pdfViewer.getPageView(pageIndex);\n        if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) {\n          var thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);\n          thumbnailView.setImage(pageView);\n        }\n      }\n      pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);\n    }\n  }, {\n    key: '_showUINotification',\n    value: function _showUINotification(view) {\n      var _this = this;\n\n      if (this.disableNotification) {\n        return;\n      }\n      this.l10n.get('toggle_sidebar_notification.title', null, 'Toggle Sidebar (document contains outline/attachments)').then(function (msg) {\n        _this.toggleButton.title = msg;\n      });\n      if (!this.isOpen) {\n        this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);\n      } else if (view === this.active) {\n        return;\n      }\n      switch (view) {\n        case SidebarView.OUTLINE:\n          this.outlineButton.classList.add(UI_NOTIFICATION_CLASS);\n          break;\n        case SidebarView.ATTACHMENTS:\n          this.attachmentsButton.classList.add(UI_NOTIFICATION_CLASS);\n          break;\n      }\n    }\n  }, {\n    key: '_hideUINotification',\n    value: function _hideUINotification(view) {\n      var _this2 = this;\n\n      if (this.disableNotification) {\n        return;\n      }\n      var removeNotification = function removeNotification(view) {\n        switch (view) {\n          case SidebarView.OUTLINE:\n            _this2.outlineButton.classList.remove(UI_NOTIFICATION_CLASS);\n            break;\n          case SidebarView.ATTACHMENTS:\n            _this2.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS);\n            break;\n        }\n      };\n      if (!this.isOpen && view !== null) {\n        return;\n      }\n      this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);\n      if (view !== null) {\n        removeNotification(view);\n        return;\n      }\n      for (view in SidebarView) {\n        removeNotification(SidebarView[view]);\n      }\n      this.l10n.get('toggle_sidebar.title', null, 'Toggle Sidebar').then(function (msg) {\n        _this2.toggleButton.title = msg;\n      });\n    }\n  }, {\n    key: '_addEventListeners',\n    value: function _addEventListeners() {\n      var _this3 = this;\n\n      this.viewerContainer.addEventListener('transitionend', function (evt) {\n        if (evt.target === _this3.viewerContainer) {\n          _this3.outerContainer.classList.remove('sidebarMoving');\n        }\n      });\n      this.thumbnailButton.addEventListener('click', function () {\n        _this3.switchView(SidebarView.THUMBS);\n      });\n      this.outlineButton.addEventListener('click', function () {\n        _this3.switchView(SidebarView.OUTLINE);\n      });\n      this.outlineButton.addEventListener('dblclick', function () {\n        _this3.eventBus.dispatch('toggleoutlinetree', { source: _this3 });\n      });\n      this.attachmentsButton.addEventListener('click', function () {\n        _this3.switchView(SidebarView.ATTACHMENTS);\n      });\n      this.eventBus.on('outlineloaded', function (evt) {\n        var outlineCount = evt.outlineCount;\n        _this3.outlineButton.disabled = !outlineCount;\n        if (outlineCount) {\n          _this3._showUINotification(SidebarView.OUTLINE);\n        } else if (_this3.active === SidebarView.OUTLINE) {\n          _this3.switchView(SidebarView.THUMBS);\n        }\n      });\n      this.eventBus.on('attachmentsloaded', function (evt) {\n        if (evt.attachmentsCount) {\n          _this3.attachmentsButton.disabled = false;\n          _this3._showUINotification(SidebarView.ATTACHMENTS);\n          return;\n        }\n        Promise.resolve().then(function () {\n          if (_this3.attachmentsView.hasChildNodes()) {\n            return;\n          }\n          _this3.attachmentsButton.disabled = true;\n          if (_this3.active === SidebarView.ATTACHMENTS) {\n            _this3.switchView(SidebarView.THUMBS);\n          }\n        });\n      });\n      this.eventBus.on('presentationmodechanged', function (evt) {\n        if (!evt.active && !evt.switchInProgress && _this3.isThumbnailViewVisible) {\n          _this3._updateThumbnailViewer();\n        }\n      });\n    }\n  }, {\n    key: 'visibleView',\n    get: function get() {\n      return this.isOpen ? this.active : SidebarView.NONE;\n    }\n  }, {\n    key: 'isThumbnailViewVisible',\n    get: function get() {\n      return this.isOpen && this.active === SidebarView.THUMBS;\n    }\n  }, {\n    key: 'isOutlineViewVisible',\n    get: function get() {\n      return this.isOpen && this.active === SidebarView.OUTLINE;\n    }\n  }, {\n    key: 'isAttachmentsViewVisible',\n    get: function get() {\n      return this.isOpen && this.active === SidebarView.ATTACHMENTS;\n    }\n  }]);\n\n  return PDFSidebar;\n}();\n\nexports.SidebarView = SidebarView;\nexports.PDFSidebar = PDFSidebar;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.OptionKind = exports.AppOptions = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _pdfjsLib = __webpack_require__(7);\n\nvar _viewer_compatibility = __webpack_require__(13);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OptionKind = {\n  VIEWER: 'viewer',\n  API: 'api',\n  WORKER: 'worker'\n};\nvar defaultOptions = {\n  cursorToolOnLoad: {\n    value: 0,\n    kind: OptionKind.VIEWER\n  },\n  defaultUrl: {\n    value: 'compressed.tracemonkey-pldi-09.pdf',\n    kind: OptionKind.VIEWER\n  },\n  defaultZoomValue: {\n    value: '',\n    kind: OptionKind.VIEWER\n  },\n  disableHistory: {\n    value: false,\n    kind: OptionKind.VIEWER\n  },\n  disablePageLabels: {\n    value: false,\n    kind: OptionKind.VIEWER\n  },\n  disablePageMode: {\n    value: false,\n    kind: OptionKind.VIEWER\n  },\n  enablePrintAutoRotate: {\n    value: false,\n    kind: OptionKind.VIEWER\n  },\n  enableWebGL: {\n    value: false,\n    kind: OptionKind.VIEWER\n  },\n  eventBusDispatchToDOM: {\n    value: false,\n    kind: OptionKind.VIEWER\n  },\n  externalLinkRel: {\n    value: 'noopener noreferrer nofollow',\n    kind: OptionKind.VIEWER\n  },\n  externalLinkTarget: {\n    value: 0,\n    kind: OptionKind.VIEWER\n  },\n  imageResourcesPath: {\n    value: './images/',\n    kind: OptionKind.VIEWER\n  },\n  maxCanvasPixels: {\n    value: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216,\n    kind: OptionKind.VIEWER\n  },\n  pdfBugEnabled: {\n    value: false,\n    kind: OptionKind.VIEWER\n  },\n  renderer: {\n    value: 'canvas',\n    kind: OptionKind.VIEWER\n  },\n  renderInteractiveForms: {\n    value: false,\n    kind: OptionKind.VIEWER\n  },\n  showPreviousViewOnLoad: {\n    value: true,\n    kind: OptionKind.VIEWER\n  },\n  sidebarViewOnLoad: {\n    value: 0,\n    kind: OptionKind.VIEWER\n  },\n  scrollModeOnLoad: {\n    value: 0,\n    kind: OptionKind.VIEWER\n  },\n  spreadModeOnLoad: {\n    value: 0,\n    kind: OptionKind.VIEWER\n  },\n  textLayerMode: {\n    value: 1,\n    kind: OptionKind.VIEWER\n  },\n  useOnlyCssZoom: {\n    value: false,\n    kind: OptionKind.VIEWER\n  },\n  cMapPacked: {\n    value: true,\n    kind: OptionKind.API\n  },\n  cMapUrl: {\n    value: '../web/cmaps/',\n    kind: OptionKind.API\n  },\n  disableAutoFetch: {\n    value: false,\n    kind: OptionKind.API\n  },\n  disableCreateObjectURL: {\n    value: _pdfjsLib.apiCompatibilityParams.disableCreateObjectURL || false,\n    kind: OptionKind.API\n  },\n  disableFontFace: {\n    value: false,\n    kind: OptionKind.API\n  },\n  disableRange: {\n    value: false,\n    kind: OptionKind.API\n  },\n  disableStream: {\n    value: false,\n    kind: OptionKind.API\n  },\n  isEvalSupported: {\n    value: true,\n    kind: OptionKind.API\n  },\n  maxImageSize: {\n    value: -1,\n    kind: OptionKind.API\n  },\n  pdfBug: {\n    value: false,\n    kind: OptionKind.API\n  },\n  postMessageTransfers: {\n    value: true,\n    kind: OptionKind.API\n  },\n  verbosity: {\n    value: 1,\n    kind: OptionKind.API\n  },\n  workerPort: {\n    value: null,\n    kind: OptionKind.WORKER\n  },\n  workerSrc: {\n    value: '../build/pdf.worker.js',\n    kind: OptionKind.WORKER\n  }\n};\n{\n  defaultOptions.locale = {\n    value: typeof navigator !== 'undefined' ? navigator.language : 'en-US',\n    kind: OptionKind.VIEWER\n  };\n}\nvar userOptions = Object.create(null);\n\nvar AppOptions = function () {\n  function AppOptions() {\n    _classCallCheck(this, AppOptions);\n\n    throw new Error('Cannot initialize AppOptions.');\n  }\n\n  _createClass(AppOptions, null, [{\n    key: 'get',\n    value: function get(name) {\n      var defaultOption = defaultOptions[name],\n          userOption = userOptions[name];\n      if (userOption !== undefined) {\n        return userOption;\n      }\n      return defaultOption !== undefined ? defaultOption.value : undefined;\n    }\n  }, {\n    key: 'getAll',\n    value: function getAll() {\n      var kind = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      var options = Object.create(null);\n      for (var name in defaultOptions) {\n        var defaultOption = defaultOptions[name],\n            userOption = userOptions[name];\n        if (kind && defaultOption.kind !== kind) {\n          continue;\n        }\n        options[name] = userOption !== undefined ? userOption : defaultOption.value;\n      }\n      return options;\n    }\n  }, {\n    key: 'set',\n    value: function set(name, value) {\n      userOptions[name] = value;\n    }\n  }, {\n    key: 'remove',\n    value: function remove(name) {\n      delete userOptions[name];\n    }\n  }]);\n\n  return AppOptions;\n}();\n\nexports.AppOptions = AppOptions;\nexports.OptionKind = OptionKind;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar compatibilityParams = Object.create(null);\n{\n  var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || '';\n  var isAndroid = /Android/.test(userAgent);\n  var isIOS = /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent);\n  (function checkCanvasSizeLimitation() {\n    if (isIOS || isAndroid) {\n      compatibilityParams.maxCanvasPixels = 5242880;\n    }\n  })();\n}\nexports.viewerCompatibilityParams = Object.freeze(compatibilityParams);\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getGlobalEventBus = exports.attachDOMEventsToEventBus = undefined;\n\nvar _ui_utils = __webpack_require__(6);\n\nfunction attachDOMEventsToEventBus(eventBus) {\n  eventBus.on('documentload', function () {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('documentload', true, true, {});\n    window.dispatchEvent(event);\n  });\n  eventBus.on('pagerendered', function (evt) {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('pagerendered', true, true, {\n      pageNumber: evt.pageNumber,\n      cssTransform: evt.cssTransform\n    });\n    evt.source.div.dispatchEvent(event);\n  });\n  eventBus.on('textlayerrendered', function (evt) {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('textlayerrendered', true, true, { pageNumber: evt.pageNumber });\n    evt.source.textLayerDiv.dispatchEvent(event);\n  });\n  eventBus.on('pagechange', function (evt) {\n    var event = document.createEvent('UIEvents');\n    event.initUIEvent('pagechange', true, true, window, 0);\n    event.pageNumber = evt.pageNumber;\n    evt.source.container.dispatchEvent(event);\n  });\n  eventBus.on('pagesinit', function (evt) {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('pagesinit', true, true, null);\n    evt.source.container.dispatchEvent(event);\n  });\n  eventBus.on('pagesloaded', function (evt) {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('pagesloaded', true, true, { pagesCount: evt.pagesCount });\n    evt.source.container.dispatchEvent(event);\n  });\n  eventBus.on('scalechange', function (evt) {\n    var event = document.createEvent('UIEvents');\n    event.initUIEvent('scalechange', true, true, window, 0);\n    event.scale = evt.scale;\n    event.presetValue = evt.presetValue;\n    evt.source.container.dispatchEvent(event);\n  });\n  eventBus.on('updateviewarea', function (evt) {\n    var event = document.createEvent('UIEvents');\n    event.initUIEvent('updateviewarea', true, true, window, 0);\n    event.location = evt.location;\n    evt.source.container.dispatchEvent(event);\n  });\n  eventBus.on('find', function (evt) {\n    if (evt.source === window) {\n      return;\n    }\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('find' + evt.type, true, true, {\n      query: evt.query,\n      phraseSearch: evt.phraseSearch,\n      caseSensitive: evt.caseSensitive,\n      highlightAll: evt.highlightAll,\n      findPrevious: evt.findPrevious\n    });\n    window.dispatchEvent(event);\n  });\n  eventBus.on('attachmentsloaded', function (evt) {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('attachmentsloaded', true, true, { attachmentsCount: evt.attachmentsCount });\n    evt.source.container.dispatchEvent(event);\n  });\n  eventBus.on('sidebarviewchanged', function (evt) {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('sidebarviewchanged', true, true, { view: evt.view });\n    evt.source.outerContainer.dispatchEvent(event);\n  });\n  eventBus.on('pagemode', function (evt) {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('pagemode', true, true, { mode: evt.mode });\n    evt.source.pdfViewer.container.dispatchEvent(event);\n  });\n  eventBus.on('namedaction', function (evt) {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('namedaction', true, true, { action: evt.action });\n    evt.source.pdfViewer.container.dispatchEvent(event);\n  });\n  eventBus.on('presentationmodechanged', function (evt) {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('presentationmodechanged', true, true, {\n      active: evt.active,\n      switchInProgress: evt.switchInProgress\n    });\n    window.dispatchEvent(event);\n  });\n  eventBus.on('outlineloaded', function (evt) {\n    var event = document.createEvent('CustomEvent');\n    event.initCustomEvent('outlineloaded', true, true, { outlineCount: evt.outlineCount });\n    evt.source.container.dispatchEvent(event);\n  });\n}\nvar globalEventBus = null;\nfunction getGlobalEventBus() {\n  var dispatchToDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n  if (!globalEventBus) {\n    globalEventBus = new _ui_utils.EventBus({ dispatchToDOM: dispatchToDOM });\n    if (!dispatchToDOM) {\n      attachDOMEventsToEventBus(globalEventBus);\n    }\n  }\n  return globalEventBus;\n}\nexports.attachDOMEventsToEventBus = attachDOMEventsToEventBus;\nexports.getGlobalEventBus = getGlobalEventBus;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.OverlayManager = undefined;\n\nvar _regenerator = __webpack_require__(2);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OverlayManager = function () {\n  function OverlayManager() {\n    _classCallCheck(this, OverlayManager);\n\n    this._overlays = {};\n    this._active = null;\n    this._keyDownBound = this._keyDown.bind(this);\n  }\n\n  _createClass(OverlayManager, [{\n    key: 'register',\n    value: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(name, element) {\n        var callerCloseMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        var canForceClose = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n        var container;\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                container = void 0;\n\n                if (!(!name || !element || !(container = element.parentNode))) {\n                  _context.next = 5;\n                  break;\n                }\n\n                throw new Error('Not enough parameters.');\n\n              case 5:\n                if (!this._overlays[name]) {\n                  _context.next = 7;\n                  break;\n                }\n\n                throw new Error('The overlay is already registered.');\n\n              case 7:\n                this._overlays[name] = {\n                  element: element,\n                  container: container,\n                  callerCloseMethod: callerCloseMethod,\n                  canForceClose: canForceClose\n                };\n\n              case 8:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function register(_x3, _x4) {\n        return _ref.apply(this, arguments);\n      }\n\n      return register;\n    }()\n  }, {\n    key: 'unregister',\n    value: function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(name) {\n        return _regenerator2.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                if (this._overlays[name]) {\n                  _context2.next = 4;\n                  break;\n                }\n\n                throw new Error('The overlay does not exist.');\n\n              case 4:\n                if (!(this._active === name)) {\n                  _context2.next = 6;\n                  break;\n                }\n\n                throw new Error('The overlay cannot be removed while it is active.');\n\n              case 6:\n                delete this._overlays[name];\n\n              case 7:\n              case 'end':\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function unregister(_x5) {\n        return _ref2.apply(this, arguments);\n      }\n\n      return unregister;\n    }()\n  }, {\n    key: 'open',\n    value: function () {\n      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(name) {\n        return _regenerator2.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                if (this._overlays[name]) {\n                  _context3.next = 4;\n                  break;\n                }\n\n                throw new Error('The overlay does not exist.');\n\n              case 4:\n                if (!this._active) {\n                  _context3.next = 14;\n                  break;\n                }\n\n                if (!this._overlays[name].canForceClose) {\n                  _context3.next = 9;\n                  break;\n                }\n\n                this._closeThroughCaller();\n                _context3.next = 14;\n                break;\n\n              case 9:\n                if (!(this._active === name)) {\n                  _context3.next = 13;\n                  break;\n                }\n\n                throw new Error('The overlay is already active.');\n\n              case 13:\n                throw new Error('Another overlay is currently active.');\n\n              case 14:\n                this._active = name;\n                this._overlays[this._active].element.classList.remove('hidden');\n                this._overlays[this._active].container.classList.remove('hidden');\n                window.addEventListener('keydown', this._keyDownBound);\n\n              case 18:\n              case 'end':\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function open(_x6) {\n        return _ref3.apply(this, arguments);\n      }\n\n      return open;\n    }()\n  }, {\n    key: 'close',\n    value: function () {\n      var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(name) {\n        return _regenerator2.default.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                if (this._overlays[name]) {\n                  _context4.next = 4;\n                  break;\n                }\n\n                throw new Error('The overlay does not exist.');\n\n              case 4:\n                if (this._active) {\n                  _context4.next = 8;\n                  break;\n                }\n\n                throw new Error('The overlay is currently not active.');\n\n              case 8:\n                if (!(this._active !== name)) {\n                  _context4.next = 10;\n                  break;\n                }\n\n                throw new Error('Another overlay is currently active.');\n\n              case 10:\n                this._overlays[this._active].container.classList.add('hidden');\n                this._overlays[this._active].element.classList.add('hidden');\n                this._active = null;\n                window.removeEventListener('keydown', this._keyDownBound);\n\n              case 14:\n              case 'end':\n                return _context4.stop();\n            }\n          }\n        }, _callee4, this);\n      }));\n\n      function close(_x7) {\n        return _ref4.apply(this, arguments);\n      }\n\n      return close;\n    }()\n  }, {\n    key: '_keyDown',\n    value: function _keyDown(evt) {\n      if (this._active && evt.keyCode === 27) {\n        this._closeThroughCaller();\n        evt.preventDefault();\n      }\n    }\n  }, {\n    key: '_closeThroughCaller',\n    value: function _closeThroughCaller() {\n      if (this._overlays[this._active].callerCloseMethod) {\n        this._overlays[this._active].callerCloseMethod();\n      }\n      if (this._active) {\n        this.close(this._active);\n      }\n    }\n  }, {\n    key: 'active',\n    get: function get() {\n      return this._active;\n    }\n  }]);\n\n  return OverlayManager;\n}();\n\nexports.OverlayManager = OverlayManager;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PasswordPrompt = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdfjsLib = __webpack_require__(7);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PasswordPrompt = function () {\n  function PasswordPrompt(options, overlayManager) {\n    var _this = this;\n\n    var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;\n\n    _classCallCheck(this, PasswordPrompt);\n\n    this.overlayName = options.overlayName;\n    this.container = options.container;\n    this.label = options.label;\n    this.input = options.input;\n    this.submitButton = options.submitButton;\n    this.cancelButton = options.cancelButton;\n    this.overlayManager = overlayManager;\n    this.l10n = l10n;\n    this.updateCallback = null;\n    this.reason = null;\n    this.submitButton.addEventListener('click', this.verify.bind(this));\n    this.cancelButton.addEventListener('click', this.close.bind(this));\n    this.input.addEventListener('keydown', function (e) {\n      if (e.keyCode === 13) {\n        _this.verify();\n      }\n    });\n    this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true);\n  }\n\n  _createClass(PasswordPrompt, [{\n    key: 'open',\n    value: function open() {\n      var _this2 = this;\n\n      this.overlayManager.open(this.overlayName).then(function () {\n        _this2.input.focus();\n        var promptString = void 0;\n        if (_this2.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) {\n          promptString = _this2.l10n.get('password_invalid', null, 'Invalid password. Please try again.');\n        } else {\n          promptString = _this2.l10n.get('password_label', null, 'Enter the password to open this PDF file.');\n        }\n        promptString.then(function (msg) {\n          _this2.label.textContent = msg;\n        });\n      });\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      var _this3 = this;\n\n      this.overlayManager.close(this.overlayName).then(function () {\n        _this3.input.value = '';\n      });\n    }\n  }, {\n    key: 'verify',\n    value: function verify() {\n      var password = this.input.value;\n      if (password && password.length > 0) {\n        this.close();\n        return this.updateCallback(password);\n      }\n    }\n  }, {\n    key: 'setUpdateCallback',\n    value: function setUpdateCallback(updateCallback, reason) {\n      this.updateCallback = updateCallback;\n      this.reason = reason;\n    }\n  }]);\n\n  return PasswordPrompt;\n}();\n\nexports.PasswordPrompt = PasswordPrompt;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFAttachmentViewer = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _pdfjsLib = __webpack_require__(7);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PDFAttachmentViewer = function () {\n  function PDFAttachmentViewer(_ref) {\n    var container = _ref.container,\n        eventBus = _ref.eventBus,\n        downloadManager = _ref.downloadManager;\n\n    _classCallCheck(this, PDFAttachmentViewer);\n\n    this.container = container;\n    this.eventBus = eventBus;\n    this.downloadManager = downloadManager;\n    this.reset();\n    this.eventBus.on('fileattachmentannotation', this._appendAttachment.bind(this));\n  }\n\n  _createClass(PDFAttachmentViewer, [{\n    key: 'reset',\n    value: function reset() {\n      var keepRenderedCapability = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      this.attachments = null;\n      this.container.textContent = '';\n      if (!keepRenderedCapability) {\n        this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)();\n      }\n    }\n  }, {\n    key: '_dispatchEvent',\n    value: function _dispatchEvent(attachmentsCount) {\n      this._renderedCapability.resolve();\n      this.eventBus.dispatch('attachmentsloaded', {\n        source: this,\n        attachmentsCount: attachmentsCount\n      });\n    }\n  }, {\n    key: '_bindPdfLink',\n    value: function _bindPdfLink(button, content, filename) {\n      if (this.downloadManager.disableCreateObjectURL) {\n        throw new Error('bindPdfLink: Unsupported \"disableCreateObjectURL\" value.');\n      }\n      var blobUrl = void 0;\n      button.onclick = function () {\n        if (!blobUrl) {\n          blobUrl = (0, _pdfjsLib.createObjectURL)(content, 'application/pdf');\n        }\n        var viewerUrl = void 0;\n        viewerUrl = '?file=' + encodeURIComponent(blobUrl + '#' + filename);\n        window.open(viewerUrl);\n        return false;\n      };\n    }\n  }, {\n    key: '_bindLink',\n    value: function _bindLink(button, content, filename) {\n      var _this = this;\n\n      button.onclick = function () {\n        _this.downloadManager.downloadData(content, filename, '');\n        return false;\n      };\n    }\n  }, {\n    key: 'render',\n    value: function render(_ref2) {\n      var attachments = _ref2.attachments,\n          _ref2$keepRenderedCap = _ref2.keepRenderedCapability,\n          keepRenderedCapability = _ref2$keepRenderedCap === undefined ? false : _ref2$keepRenderedCap;\n\n      var attachmentsCount = 0;\n      if (this.attachments) {\n        this.reset(keepRenderedCapability === true);\n      }\n      this.attachments = attachments || null;\n      if (!attachments) {\n        this._dispatchEvent(attachmentsCount);\n        return;\n      }\n      var names = Object.keys(attachments).sort(function (a, b) {\n        return a.toLowerCase().localeCompare(b.toLowerCase());\n      });\n      attachmentsCount = names.length;\n      for (var i = 0; i < attachmentsCount; i++) {\n        var item = attachments[names[i]];\n        var filename = (0, _pdfjsLib.removeNullCharacters)((0, _pdfjsLib.getFilenameFromUrl)(item.filename));\n        var div = document.createElement('div');\n        div.className = 'attachmentsItem';\n        var button = document.createElement('button');\n        button.textContent = filename;\n        if (/\\.pdf$/i.test(filename) && !this.downloadManager.disableCreateObjectURL) {\n          this._bindPdfLink(button, item.content, filename);\n        } else {\n          this._bindLink(button, item.content, filename);\n        }\n        div.appendChild(button);\n        this.container.appendChild(div);\n      }\n      this._dispatchEvent(attachmentsCount);\n    }\n  }, {\n    key: '_appendAttachment',\n    value: function _appendAttachment(_ref3) {\n      var _this2 = this;\n\n      var id = _ref3.id,\n          filename = _ref3.filename,\n          content = _ref3.content;\n\n      this._renderedCapability.promise.then(function () {\n        var attachments = _this2.attachments;\n        if (!attachments) {\n          attachments = Object.create(null);\n        } else {\n          for (var name in attachments) {\n            if (id === name) {\n              return;\n            }\n          }\n        }\n        attachments[id] = {\n          filename: filename,\n          content: content\n        };\n        _this2.render({\n          attachments: attachments,\n          keepRenderedCapability: true\n        });\n      });\n    }\n  }]);\n\n  return PDFAttachmentViewer;\n}();\n\nexports.PDFAttachmentViewer = PDFAttachmentViewer;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFDocumentProperties = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdfjsLib = __webpack_require__(7);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DEFAULT_FIELD_CONTENT = '-';\nvar NON_METRIC_LOCALES = ['en-us', 'en-lr', 'my'];\nvar US_PAGE_NAMES = {\n  '8.5x11': 'Letter',\n  '8.5x14': 'Legal'\n};\nvar METRIC_PAGE_NAMES = {\n  '297x420': 'A3',\n  '210x297': 'A4'\n};\nfunction getPageName(size, isPortrait, pageNames) {\n  var width = isPortrait ? size.width : size.height;\n  var height = isPortrait ? size.height : size.width;\n  return pageNames[width + 'x' + height];\n}\n\nvar PDFDocumentProperties = function () {\n  function PDFDocumentProperties(_ref, overlayManager, eventBus) {\n    var overlayName = _ref.overlayName,\n        fields = _ref.fields,\n        container = _ref.container,\n        closeButton = _ref.closeButton;\n\n    var _this = this;\n\n    var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n;\n\n    _classCallCheck(this, PDFDocumentProperties);\n\n    this.overlayName = overlayName;\n    this.fields = fields;\n    this.container = container;\n    this.overlayManager = overlayManager;\n    this.l10n = l10n;\n    this._reset();\n    if (closeButton) {\n      closeButton.addEventListener('click', this.close.bind(this));\n    }\n    this.overlayManager.register(this.overlayName, this.container, this.close.bind(this));\n    if (eventBus) {\n      eventBus.on('pagechanging', function (evt) {\n        _this._currentPageNumber = evt.pageNumber;\n      });\n      eventBus.on('rotationchanging', function (evt) {\n        _this._pagesRotation = evt.pagesRotation;\n      });\n    }\n    this._isNonMetricLocale = true;\n    l10n.getLanguage().then(function (locale) {\n      _this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);\n    });\n  }\n\n  _createClass(PDFDocumentProperties, [{\n    key: 'open',\n    value: function open() {\n      var _this2 = this;\n\n      var freezeFieldData = function freezeFieldData(data) {\n        Object.defineProperty(_this2, 'fieldData', {\n          value: Object.freeze(data),\n          writable: false,\n          enumerable: true,\n          configurable: true\n        });\n      };\n      Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(function () {\n        var currentPageNumber = _this2._currentPageNumber;\n        var pagesRotation = _this2._pagesRotation;\n        if (_this2.fieldData && currentPageNumber === _this2.fieldData['_currentPageNumber'] && pagesRotation === _this2.fieldData['_pagesRotation']) {\n          _this2._updateUI();\n          return;\n        }\n        _this2.pdfDocument.getMetadata().then(function (_ref2) {\n          var info = _ref2.info,\n              metadata = _ref2.metadata,\n              contentDispositionFilename = _ref2.contentDispositionFilename;\n\n          return Promise.all([info, metadata, contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(_this2.url || ''), _this2._parseFileSize(_this2.maybeFileSize), _this2._parseDate(info.CreationDate), _this2._parseDate(info.ModDate), _this2.pdfDocument.getPage(currentPageNumber).then(function (pdfPage) {\n            return _this2._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);\n          }), _this2._parseLinearization(info.IsLinearized)]);\n        }).then(function (_ref3) {\n          var _ref4 = _slicedToArray(_ref3, 8),\n              info = _ref4[0],\n              metadata = _ref4[1],\n              fileName = _ref4[2],\n              fileSize = _ref4[3],\n              creationDate = _ref4[4],\n              modDate = _ref4[5],\n              pageSize = _ref4[6],\n              isLinearized = _ref4[7];\n\n          freezeFieldData({\n            'fileName': fileName,\n            'fileSize': fileSize,\n            'title': info.Title,\n            'author': info.Author,\n            'subject': info.Subject,\n            'keywords': info.Keywords,\n            'creationDate': creationDate,\n            'modificationDate': modDate,\n            'creator': info.Creator,\n            'producer': info.Producer,\n            'version': info.PDFFormatVersion,\n            'pageCount': _this2.pdfDocument.numPages,\n            'pageSize': pageSize,\n            'linearized': isLinearized,\n            '_currentPageNumber': currentPageNumber,\n            '_pagesRotation': pagesRotation\n          });\n          _this2._updateUI();\n          return _this2.pdfDocument.getDownloadInfo();\n        }).then(function (_ref5) {\n          var length = _ref5.length;\n\n          _this2.maybeFileSize = length;\n          return _this2._parseFileSize(length);\n        }).then(function (fileSize) {\n          if (fileSize === _this2.fieldData['fileSize']) {\n            return;\n          }\n          var data = Object.assign(Object.create(null), _this2.fieldData);\n          data['fileSize'] = fileSize;\n          freezeFieldData(data);\n          _this2._updateUI();\n        });\n      });\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      this.overlayManager.close(this.overlayName);\n    }\n  }, {\n    key: 'setDocument',\n    value: function setDocument(pdfDocument) {\n      var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      if (this.pdfDocument) {\n        this._reset();\n        this._updateUI(true);\n      }\n      if (!pdfDocument) {\n        return;\n      }\n      this.pdfDocument = pdfDocument;\n      this.url = url;\n      this._dataAvailableCapability.resolve();\n    }\n  }, {\n    key: 'setFileSize',\n    value: function setFileSize(fileSize) {\n      if (Number.isInteger(fileSize) && fileSize > 0) {\n        this.maybeFileSize = fileSize;\n      }\n    }\n  }, {\n    key: '_reset',\n    value: function _reset() {\n      this.pdfDocument = null;\n      this.url = null;\n      this.maybeFileSize = 0;\n      delete this.fieldData;\n      this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)();\n      this._currentPageNumber = 1;\n      this._pagesRotation = 0;\n    }\n  }, {\n    key: '_updateUI',\n    value: function _updateUI() {\n      var reset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (reset || !this.fieldData) {\n        for (var id in this.fields) {\n          this.fields[id].textContent = DEFAULT_FIELD_CONTENT;\n        }\n        return;\n      }\n      if (this.overlayManager.active !== this.overlayName) {\n        return;\n      }\n      for (var _id in this.fields) {\n        var content = this.fieldData[_id];\n        this.fields[_id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT;\n      }\n    }\n  }, {\n    key: '_parseFileSize',\n    value: function _parseFileSize() {\n      var fileSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      var kb = fileSize / 1024;\n      if (!kb) {\n        return Promise.resolve(undefined);\n      } else if (kb < 1024) {\n        return this.l10n.get('document_properties_kb', {\n          size_kb: (+kb.toPrecision(3)).toLocaleString(),\n          size_b: fileSize.toLocaleString()\n        }, '{{size_kb}} KB ({{size_b}} bytes)');\n      }\n      return this.l10n.get('document_properties_mb', {\n        size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(),\n        size_b: fileSize.toLocaleString()\n      }, '{{size_mb}} MB ({{size_b}} bytes)');\n    }\n  }, {\n    key: '_parsePageSize',\n    value: function _parsePageSize(pageSizeInches, pagesRotation) {\n      var _this3 = this;\n\n      if (!pageSizeInches) {\n        return Promise.resolve(undefined);\n      }\n      if (pagesRotation % 180 !== 0) {\n        pageSizeInches = {\n          width: pageSizeInches.height,\n          height: pageSizeInches.width\n        };\n      }\n      var isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches);\n      var sizeInches = {\n        width: Math.round(pageSizeInches.width * 100) / 100,\n        height: Math.round(pageSizeInches.height * 100) / 100\n      };\n      var sizeMillimeters = {\n        width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,\n        height: Math.round(pageSizeInches.height * 25.4 * 10) / 10\n      };\n      var pageName = null;\n      var name = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);\n      if (!name && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) {\n        var exactMillimeters = {\n          width: pageSizeInches.width * 25.4,\n          height: pageSizeInches.height * 25.4\n        };\n        var intMillimeters = {\n          width: Math.round(sizeMillimeters.width),\n          height: Math.round(sizeMillimeters.height)\n        };\n        if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) {\n          name = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);\n          if (name) {\n            sizeInches = {\n              width: Math.round(intMillimeters.width / 25.4 * 100) / 100,\n              height: Math.round(intMillimeters.height / 25.4 * 100) / 100\n            };\n            sizeMillimeters = intMillimeters;\n          }\n        }\n      }\n      if (name) {\n        pageName = this.l10n.get('document_properties_page_size_name_' + name.toLowerCase(), null, name);\n      }\n      return Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get('document_properties_page_size_unit_' + (this._isNonMetricLocale ? 'inches' : 'millimeters'), null, this._isNonMetricLocale ? 'in' : 'mm'), pageName, this.l10n.get('document_properties_page_size_orientation_' + (isPortrait ? 'portrait' : 'landscape'), null, isPortrait ? 'portrait' : 'landscape')]).then(function (_ref6) {\n        var _ref7 = _slicedToArray(_ref6, 4),\n            _ref7$ = _ref7[0],\n            width = _ref7$.width,\n            height = _ref7$.height,\n            unit = _ref7[1],\n            name = _ref7[2],\n            orientation = _ref7[3];\n\n        return _this3.l10n.get('document_properties_page_size_dimension_' + (name ? 'name_' : '') + 'string', {\n          width: width.toLocaleString(),\n          height: height.toLocaleString(),\n          unit: unit,\n          name: name,\n          orientation: orientation\n        }, '{{width}} × {{height}} {{unit}} (' + (name ? '{{name}}, ' : '') + '{{orientation}})');\n      });\n    }\n  }, {\n    key: '_parseDate',\n    value: function _parseDate(inputDate) {\n      if (!inputDate) {\n        return;\n      }\n      var dateToParse = inputDate;\n      if (dateToParse.substring(0, 2) === 'D:') {\n        dateToParse = dateToParse.substring(2);\n      }\n      var year = parseInt(dateToParse.substring(0, 4), 10);\n      var month = parseInt(dateToParse.substring(4, 6), 10) - 1;\n      var day = parseInt(dateToParse.substring(6, 8), 10);\n      var hours = parseInt(dateToParse.substring(8, 10), 10);\n      var minutes = parseInt(dateToParse.substring(10, 12), 10);\n      var seconds = parseInt(dateToParse.substring(12, 14), 10);\n      var utRel = dateToParse.substring(14, 15);\n      var offsetHours = parseInt(dateToParse.substring(15, 17), 10);\n      var offsetMinutes = parseInt(dateToParse.substring(18, 20), 10);\n      if (utRel === '-') {\n        hours += offsetHours;\n        minutes += offsetMinutes;\n      } else if (utRel === '+') {\n        hours -= offsetHours;\n        minutes -= offsetMinutes;\n      }\n      var date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));\n      var dateString = date.toLocaleDateString();\n      var timeString = date.toLocaleTimeString();\n      return this.l10n.get('document_properties_date_string', {\n        date: dateString,\n        time: timeString\n      }, '{{date}}, {{time}}');\n    }\n  }, {\n    key: '_parseLinearization',\n    value: function _parseLinearization(isLinearized) {\n      return this.l10n.get('document_properties_linearized_' + (isLinearized ? 'yes' : 'no'), null, isLinearized ? 'Yes' : 'No');\n    }\n  }]);\n\n  return PDFDocumentProperties;\n}();\n\nexports.PDFDocumentProperties = PDFDocumentProperties;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFFindBar = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdf_find_controller = __webpack_require__(20);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MATCHES_COUNT_LIMIT = 1000;\n\nvar PDFFindBar = function () {\n  function PDFFindBar(options) {\n    var _this = this;\n\n    var eventBus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _ui_utils.getGlobalEventBus)();\n    var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;\n\n    _classCallCheck(this, PDFFindBar);\n\n    this.opened = false;\n    this.bar = options.bar || null;\n    this.toggleButton = options.toggleButton || null;\n    this.findField = options.findField || null;\n    this.highlightAll = options.highlightAllCheckbox || null;\n    this.caseSensitive = options.caseSensitiveCheckbox || null;\n    this.entireWord = options.entireWordCheckbox || null;\n    this.findMsg = options.findMsg || null;\n    this.findResultsCount = options.findResultsCount || null;\n    this.findPreviousButton = options.findPreviousButton || null;\n    this.findNextButton = options.findNextButton || null;\n    this.eventBus = eventBus;\n    this.l10n = l10n;\n    this.toggleButton.addEventListener('click', function () {\n      _this.toggle();\n    });\n    this.findField.addEventListener('input', function () {\n      _this.dispatchEvent('');\n    });\n    this.bar.addEventListener('keydown', function (e) {\n      switch (e.keyCode) {\n        case 13:\n          if (e.target === _this.findField) {\n            _this.dispatchEvent('again', e.shiftKey);\n          }\n          break;\n        case 27:\n          _this.close();\n          break;\n      }\n    });\n    this.findPreviousButton.addEventListener('click', function () {\n      _this.dispatchEvent('again', true);\n    });\n    this.findNextButton.addEventListener('click', function () {\n      _this.dispatchEvent('again', false);\n    });\n    this.highlightAll.addEventListener('click', function () {\n      _this.dispatchEvent('highlightallchange');\n    });\n    this.caseSensitive.addEventListener('click', function () {\n      _this.dispatchEvent('casesensitivitychange');\n    });\n    this.entireWord.addEventListener('click', function () {\n      _this.dispatchEvent('entirewordchange');\n    });\n    this.eventBus.on('resize', this._adjustWidth.bind(this));\n  }\n\n  _createClass(PDFFindBar, [{\n    key: 'reset',\n    value: function reset() {\n      this.updateUIState();\n    }\n  }, {\n    key: 'dispatchEvent',\n    value: function dispatchEvent(type, findPrev) {\n      this.eventBus.dispatch('find', {\n        source: this,\n        type: type,\n        query: this.findField.value,\n        phraseSearch: true,\n        caseSensitive: this.caseSensitive.checked,\n        entireWord: this.entireWord.checked,\n        highlightAll: this.highlightAll.checked,\n        findPrevious: findPrev\n      });\n    }\n  }, {\n    key: 'updateUIState',\n    value: function updateUIState(state, previous, matchesCount) {\n      var _this2 = this;\n\n      var notFound = false;\n      var findMsg = '';\n      var status = '';\n      switch (state) {\n        case _pdf_find_controller.FindState.FOUND:\n          break;\n        case _pdf_find_controller.FindState.PENDING:\n          status = 'pending';\n          break;\n        case _pdf_find_controller.FindState.NOT_FOUND:\n          findMsg = this.l10n.get('find_not_found', null, 'Phrase not found');\n          notFound = true;\n          break;\n        case _pdf_find_controller.FindState.WRAPPED:\n          if (previous) {\n            findMsg = this.l10n.get('find_reached_top', null, 'Reached top of document, continued from bottom');\n          } else {\n            findMsg = this.l10n.get('find_reached_bottom', null, 'Reached end of document, continued from top');\n          }\n          break;\n      }\n      this.findField.classList.toggle('notFound', notFound);\n      this.findField.setAttribute('data-status', status);\n      Promise.resolve(findMsg).then(function (msg) {\n        _this2.findMsg.textContent = msg;\n        _this2._adjustWidth();\n      });\n      this.updateResultsCount(matchesCount);\n    }\n  }, {\n    key: 'updateResultsCount',\n    value: function updateResultsCount() {\n      var _this3 = this;\n\n      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref$current = _ref.current,\n          current = _ref$current === undefined ? 0 : _ref$current,\n          _ref$total = _ref.total,\n          total = _ref$total === undefined ? 0 : _ref$total;\n\n      if (!this.findResultsCount) {\n        return;\n      }\n      var matchesCountMsg = '',\n          limit = MATCHES_COUNT_LIMIT;\n      if (total > 0) {\n        if (total > limit) {\n          matchesCountMsg = this.l10n.get('find_match_count_limit', { limit: limit }, 'More than {{limit}} match' + (limit !== 1 ? 'es' : ''));\n        } else {\n          matchesCountMsg = this.l10n.get('find_match_count', {\n            current: current,\n            total: total\n          }, '{{current}} of {{total}} match' + (total !== 1 ? 'es' : ''));\n        }\n      }\n      Promise.resolve(matchesCountMsg).then(function (msg) {\n        _this3.findResultsCount.textContent = msg;\n        _this3.findResultsCount.classList[!total ? 'add' : 'remove']('hidden');\n        _this3._adjustWidth();\n      });\n    }\n  }, {\n    key: 'open',\n    value: function open() {\n      if (!this.opened) {\n        this.opened = true;\n        this.toggleButton.classList.add('toggled');\n        this.bar.classList.remove('hidden');\n      }\n      this.findField.select();\n      this.findField.focus();\n      this._adjustWidth();\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      if (!this.opened) {\n        return;\n      }\n      this.opened = false;\n      this.toggleButton.classList.remove('toggled');\n      this.bar.classList.add('hidden');\n      this.eventBus.dispatch('findbarclose', { source: this });\n    }\n  }, {\n    key: 'toggle',\n    value: function toggle() {\n      if (this.opened) {\n        this.close();\n      } else {\n        this.open();\n      }\n    }\n  }, {\n    key: '_adjustWidth',\n    value: function _adjustWidth() {\n      if (!this.opened) {\n        return;\n      }\n      this.bar.classList.remove('wrapContainers');\n      var findbarHeight = this.bar.clientHeight;\n      var inputContainerHeight = this.bar.firstElementChild.clientHeight;\n      if (findbarHeight > inputContainerHeight) {\n        this.bar.classList.add('wrapContainers');\n      }\n    }\n  }]);\n\n  return PDFFindBar;\n}();\n\nexports.PDFFindBar = PDFFindBar;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFFindController = exports.FindState = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _pdfjsLib = __webpack_require__(7);\n\nvar _pdf_find_utils = __webpack_require__(21);\n\nvar _dom_events = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FindState = {\n  FOUND: 0,\n  NOT_FOUND: 1,\n  WRAPPED: 2,\n  PENDING: 3\n};\nvar FIND_TIMEOUT = 250;\nvar CHARACTERS_TO_NORMALIZE = {\n  '\\u2018': '\\'',\n  '\\u2019': '\\'',\n  '\\u201A': '\\'',\n  '\\u201B': '\\'',\n  '\\u201C': '\"',\n  '\\u201D': '\"',\n  '\\u201E': '\"',\n  '\\u201F': '\"',\n  '\\xBC': '1/4',\n  '\\xBD': '1/2',\n  '\\xBE': '3/4'\n};\n\nvar PDFFindController = function () {\n  function PDFFindController(_ref) {\n    var linkService = _ref.linkService,\n        _ref$eventBus = _ref.eventBus,\n        eventBus = _ref$eventBus === undefined ? (0, _dom_events.getGlobalEventBus)() : _ref$eventBus;\n\n    _classCallCheck(this, PDFFindController);\n\n    this._linkService = linkService;\n    this._eventBus = eventBus;\n    this._reset();\n    eventBus.on('findbarclose', this._onFindBarClose.bind(this));\n    var replace = Object.keys(CHARACTERS_TO_NORMALIZE).join('');\n    this._normalizationRegex = new RegExp('[' + replace + ']', 'g');\n  }\n\n  _createClass(PDFFindController, [{\n    key: 'setDocument',\n    value: function setDocument(pdfDocument) {\n      if (this._pdfDocument) {\n        this._reset();\n      }\n      if (!pdfDocument) {\n        return;\n      }\n      this._pdfDocument = pdfDocument;\n      this._firstPageCapability.resolve();\n    }\n  }, {\n    key: 'executeCommand',\n    value: function executeCommand(cmd, state) {\n      var _this = this;\n\n      var pdfDocument = this._pdfDocument;\n      if (this._state === null || cmd !== 'findagain') {\n        this._dirtyMatch = true;\n      }\n      this._state = state;\n      this._updateUIState(FindState.PENDING);\n      this._firstPageCapability.promise.then(function () {\n        if (!_this._pdfDocument || pdfDocument && _this._pdfDocument !== pdfDocument) {\n          return;\n        }\n        _this._extractText();\n        if (_this._findTimeout) {\n          clearTimeout(_this._findTimeout);\n          _this._findTimeout = null;\n        }\n        if (cmd === 'find') {\n          _this._findTimeout = setTimeout(function () {\n            _this._nextMatch();\n            _this._findTimeout = null;\n          }, FIND_TIMEOUT);\n        } else {\n          _this._nextMatch();\n        }\n      });\n    }\n  }, {\n    key: '_reset',\n    value: function _reset() {\n      this._highlightMatches = false;\n      this._pdfDocument = null;\n      this._pageMatches = [];\n      this._pageMatchesLength = null;\n      this._state = null;\n      this._selected = {\n        pageIdx: -1,\n        matchIdx: -1\n      };\n      this._offset = {\n        pageIdx: null,\n        matchIdx: null\n      };\n      this._extractTextPromises = [];\n      this._pageContents = [];\n      this._matchesCountTotal = 0;\n      this._pagesToSearch = null;\n      this._pendingFindMatches = Object.create(null);\n      this._resumePageIdx = null;\n      this._dirtyMatch = false;\n      clearTimeout(this._findTimeout);\n      this._findTimeout = null;\n      this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)();\n    }\n  }, {\n    key: '_normalize',\n    value: function _normalize(text) {\n      return text.replace(this._normalizationRegex, function (ch) {\n        return CHARACTERS_TO_NORMALIZE[ch];\n      });\n    }\n  }, {\n    key: '_prepareMatches',\n    value: function _prepareMatches(matchesWithLength, matches, matchesLength) {\n      function isSubTerm(matchesWithLength, currentIndex) {\n        var currentElem = matchesWithLength[currentIndex];\n        var nextElem = matchesWithLength[currentIndex + 1];\n        if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) {\n          currentElem.skipped = true;\n          return true;\n        }\n        for (var i = currentIndex - 1; i >= 0; i--) {\n          var prevElem = matchesWithLength[i];\n          if (prevElem.skipped) {\n            continue;\n          }\n          if (prevElem.match + prevElem.matchLength < currentElem.match) {\n            break;\n          }\n          if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) {\n            currentElem.skipped = true;\n            return true;\n          }\n        }\n        return false;\n      }\n      matchesWithLength.sort(function (a, b) {\n        return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match;\n      });\n      for (var i = 0, len = matchesWithLength.length; i < len; i++) {\n        if (isSubTerm(matchesWithLength, i)) {\n          continue;\n        }\n        matches.push(matchesWithLength[i].match);\n        matchesLength.push(matchesWithLength[i].matchLength);\n      }\n    }\n  }, {\n    key: '_isEntireWord',\n    value: function _isEntireWord(content, startIdx, length) {\n      if (startIdx > 0) {\n        var first = content.charCodeAt(startIdx);\n        var limit = content.charCodeAt(startIdx - 1);\n        if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) {\n          return false;\n        }\n      }\n      var endIdx = startIdx + length - 1;\n      if (endIdx < content.length - 1) {\n        var last = content.charCodeAt(endIdx);\n        var _limit = content.charCodeAt(endIdx + 1);\n        if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(_limit)) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }, {\n    key: '_calculatePhraseMatch',\n    value: function _calculatePhraseMatch(query, pageIndex, pageContent, entireWord) {\n      var matches = [];\n      var queryLen = query.length;\n      var matchIdx = -queryLen;\n      while (true) {\n        matchIdx = pageContent.indexOf(query, matchIdx + queryLen);\n        if (matchIdx === -1) {\n          break;\n        }\n        if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) {\n          continue;\n        }\n        matches.push(matchIdx);\n      }\n      this._pageMatches[pageIndex] = matches;\n    }\n  }, {\n    key: '_calculateWordMatch',\n    value: function _calculateWordMatch(query, pageIndex, pageContent, entireWord) {\n      var matchesWithLength = [];\n      var queryArray = query.match(/\\S+/g);\n      for (var i = 0, len = queryArray.length; i < len; i++) {\n        var subquery = queryArray[i];\n        var subqueryLen = subquery.length;\n        var matchIdx = -subqueryLen;\n        while (true) {\n          matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen);\n          if (matchIdx === -1) {\n            break;\n          }\n          if (entireWord && !this._isEntireWord(pageContent, matchIdx, subqueryLen)) {\n            continue;\n          }\n          matchesWithLength.push({\n            match: matchIdx,\n            matchLength: subqueryLen,\n            skipped: false\n          });\n        }\n      }\n      if (!this._pageMatchesLength) {\n        this._pageMatchesLength = [];\n      }\n      this._pageMatchesLength[pageIndex] = [];\n      this._pageMatches[pageIndex] = [];\n      this._prepareMatches(matchesWithLength, this._pageMatches[pageIndex], this._pageMatchesLength[pageIndex]);\n    }\n  }, {\n    key: '_calculateMatch',\n    value: function _calculateMatch(pageIndex) {\n      var pageContent = this._normalize(this._pageContents[pageIndex]);\n      var query = this._normalize(this._state.query);\n      var _state = this._state,\n          caseSensitive = _state.caseSensitive,\n          entireWord = _state.entireWord,\n          phraseSearch = _state.phraseSearch;\n\n      if (query.length === 0) {\n        return;\n      }\n      if (!caseSensitive) {\n        pageContent = pageContent.toLowerCase();\n        query = query.toLowerCase();\n      }\n      if (phraseSearch) {\n        this._calculatePhraseMatch(query, pageIndex, pageContent, entireWord);\n      } else {\n        this._calculateWordMatch(query, pageIndex, pageContent, entireWord);\n      }\n      this._updatePage(pageIndex);\n      if (this._resumePageIdx === pageIndex) {\n        this._resumePageIdx = null;\n        this._nextPageMatch();\n      }\n      var pageMatchesCount = this._pageMatches[pageIndex].length;\n      if (pageMatchesCount > 0) {\n        this._matchesCountTotal += pageMatchesCount;\n        this._updateUIResultsCount();\n      }\n    }\n  }, {\n    key: '_extractText',\n    value: function _extractText() {\n      var _this2 = this;\n\n      if (this._extractTextPromises.length > 0) {\n        return;\n      }\n      var promise = Promise.resolve();\n\n      var _loop = function _loop(i, ii) {\n        var extractTextCapability = (0, _pdfjsLib.createPromiseCapability)();\n        _this2._extractTextPromises[i] = extractTextCapability.promise;\n        promise = promise.then(function () {\n          return _this2._pdfDocument.getPage(i + 1).then(function (pdfPage) {\n            return pdfPage.getTextContent({ normalizeWhitespace: true });\n          }).then(function (textContent) {\n            var textItems = textContent.items;\n            var strBuf = [];\n            for (var j = 0, jj = textItems.length; j < jj; j++) {\n              strBuf.push(textItems[j].str);\n            }\n            _this2._pageContents[i] = strBuf.join('');\n            extractTextCapability.resolve(i);\n          }, function (reason) {\n            console.error('Unable to get text content for page ' + (i + 1), reason);\n            _this2._pageContents[i] = '';\n            extractTextCapability.resolve(i);\n          });\n        });\n      };\n\n      for (var i = 0, ii = this._linkService.pagesCount; i < ii; i++) {\n        _loop(i, ii);\n      }\n    }\n  }, {\n    key: '_updatePage',\n    value: function _updatePage(index) {\n      if (this._selected.pageIdx === index) {\n        this._linkService.page = index + 1;\n      }\n      this._eventBus.dispatch('updatetextlayermatches', {\n        source: this,\n        pageIndex: index\n      });\n    }\n  }, {\n    key: '_nextMatch',\n    value: function _nextMatch() {\n      var _this3 = this;\n\n      var previous = this._state.findPrevious;\n      var currentPageIndex = this._linkService.page - 1;\n      var numPages = this._linkService.pagesCount;\n      this._highlightMatches = true;\n      if (this._dirtyMatch) {\n        this._dirtyMatch = false;\n        this._selected.pageIdx = this._selected.matchIdx = -1;\n        this._offset.pageIdx = currentPageIndex;\n        this._offset.matchIdx = null;\n        this._resumePageIdx = null;\n        this._pageMatches.length = 0;\n        this._pageMatchesLength = null;\n        this._matchesCountTotal = 0;\n        for (var i = 0; i < numPages; i++) {\n          this._updatePage(i);\n          if (!(i in this._pendingFindMatches)) {\n            this._pendingFindMatches[i] = true;\n            this._extractTextPromises[i].then(function (pageIdx) {\n              delete _this3._pendingFindMatches[pageIdx];\n              _this3._calculateMatch(pageIdx);\n            });\n          }\n        }\n      }\n      if (this._state.query === '') {\n        this._updateUIState(FindState.FOUND);\n        return;\n      }\n      if (this._resumePageIdx) {\n        return;\n      }\n      var offset = this._offset;\n      this._pagesToSearch = numPages;\n      if (offset.matchIdx !== null) {\n        var numPageMatches = this._pageMatches[offset.pageIdx].length;\n        if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) {\n          offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;\n          this._updateMatch(true);\n          return;\n        }\n        this._advanceOffsetPage(previous);\n      }\n      this._nextPageMatch();\n    }\n  }, {\n    key: '_matchesReady',\n    value: function _matchesReady(matches) {\n      var offset = this._offset;\n      var numMatches = matches.length;\n      var previous = this._state.findPrevious;\n      if (numMatches) {\n        offset.matchIdx = previous ? numMatches - 1 : 0;\n        this._updateMatch(true);\n        return true;\n      }\n      this._advanceOffsetPage(previous);\n      if (offset.wrapped) {\n        offset.matchIdx = null;\n        if (this._pagesToSearch < 0) {\n          this._updateMatch(false);\n          return true;\n        }\n      }\n      return false;\n    }\n  }, {\n    key: '_nextPageMatch',\n    value: function _nextPageMatch() {\n      if (this._resumePageIdx !== null) {\n        console.error('There can only be one pending page.');\n      }\n      var matches = null;\n      do {\n        var pageIdx = this._offset.pageIdx;\n        matches = this._pageMatches[pageIdx];\n        if (!matches) {\n          this._resumePageIdx = pageIdx;\n          break;\n        }\n      } while (!this._matchesReady(matches));\n    }\n  }, {\n    key: '_advanceOffsetPage',\n    value: function _advanceOffsetPage(previous) {\n      var offset = this._offset;\n      var numPages = this._linkService.pagesCount;\n      offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;\n      offset.matchIdx = null;\n      this._pagesToSearch--;\n      if (offset.pageIdx >= numPages || offset.pageIdx < 0) {\n        offset.pageIdx = previous ? numPages - 1 : 0;\n        offset.wrapped = true;\n      }\n    }\n  }, {\n    key: '_updateMatch',\n    value: function _updateMatch() {\n      var found = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      var state = FindState.NOT_FOUND;\n      var wrapped = this._offset.wrapped;\n      this._offset.wrapped = false;\n      if (found) {\n        var previousPage = this._selected.pageIdx;\n        this._selected.pageIdx = this._offset.pageIdx;\n        this._selected.matchIdx = this._offset.matchIdx;\n        state = wrapped ? FindState.WRAPPED : FindState.FOUND;\n        if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {\n          this._updatePage(previousPage);\n        }\n      }\n      this._updateUIState(state, this._state.findPrevious);\n      if (this._selected.pageIdx !== -1) {\n        this._updatePage(this._selected.pageIdx);\n      }\n    }\n  }, {\n    key: '_onFindBarClose',\n    value: function _onFindBarClose(evt) {\n      var _this4 = this;\n\n      var pdfDocument = this._pdfDocument;\n      this._firstPageCapability.promise.then(function () {\n        if (!_this4._pdfDocument || pdfDocument && _this4._pdfDocument !== pdfDocument) {\n          return;\n        }\n        if (_this4._findTimeout) {\n          clearTimeout(_this4._findTimeout);\n          _this4._findTimeout = null;\n          _this4._updateUIState(FindState.FOUND);\n        }\n        _this4._highlightMatches = false;\n        _this4._eventBus.dispatch('updatetextlayermatches', {\n          source: _this4,\n          pageIndex: -1\n        });\n      });\n    }\n  }, {\n    key: '_requestMatchesCount',\n    value: function _requestMatchesCount() {\n      var _selected = this._selected,\n          pageIdx = _selected.pageIdx,\n          matchIdx = _selected.matchIdx;\n\n      var current = 0,\n          total = this._matchesCountTotal;\n      if (matchIdx !== -1) {\n        for (var i = 0; i < pageIdx; i++) {\n          current += this._pageMatches[i] && this._pageMatches[i].length || 0;\n        }\n        current += matchIdx + 1;\n      }\n      if (current < 1 || current > total) {\n        current = total = 0;\n      }\n      return {\n        current: current,\n        total: total\n      };\n    }\n  }, {\n    key: '_updateUIResultsCount',\n    value: function _updateUIResultsCount() {\n      this._eventBus.dispatch('updatefindmatchescount', {\n        source: this,\n        matchesCount: this._requestMatchesCount()\n      });\n    }\n  }, {\n    key: '_updateUIState',\n    value: function _updateUIState(state, previous) {\n      this._eventBus.dispatch('updatefindcontrolstate', {\n        source: this,\n        state: state,\n        previous: previous,\n        matchesCount: this._requestMatchesCount()\n      });\n    }\n  }, {\n    key: 'highlightMatches',\n    get: function get() {\n      return this._highlightMatches;\n    }\n  }, {\n    key: 'pageMatches',\n    get: function get() {\n      return this._pageMatches;\n    }\n  }, {\n    key: 'pageMatchesLength',\n    get: function get() {\n      return this._pageMatchesLength;\n    }\n  }, {\n    key: 'selected',\n    get: function get() {\n      return this._selected;\n    }\n  }, {\n    key: 'state',\n    get: function get() {\n      return this._state;\n    }\n  }]);\n\n  return PDFFindController;\n}();\n\nexports.FindState = FindState;\nexports.PDFFindController = PDFFindController;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar CharacterType = {\n  SPACE: 0,\n  ALPHA_LETTER: 1,\n  PUNCT: 2,\n  HAN_LETTER: 3,\n  KATAKANA_LETTER: 4,\n  HIRAGANA_LETTER: 5,\n  HALFWIDTH_KATAKANA_LETTER: 6,\n  THAI_LETTER: 7\n};\nfunction isAlphabeticalScript(charCode) {\n  return charCode < 0x2E80;\n}\nfunction isAscii(charCode) {\n  return (charCode & 0xFF80) === 0;\n}\nfunction isAsciiAlpha(charCode) {\n  return charCode >= 0x61 && charCode <= 0x7A || charCode >= 0x41 && charCode <= 0x5A;\n}\nfunction isAsciiDigit(charCode) {\n  return charCode >= 0x30 && charCode <= 0x39;\n}\nfunction isAsciiSpace(charCode) {\n  return charCode === 0x20 || charCode === 0x09 || charCode === 0x0D || charCode === 0x0A;\n}\nfunction isHan(charCode) {\n  return charCode >= 0x3400 && charCode <= 0x9FFF || charCode >= 0xF900 && charCode <= 0xFAFF;\n}\nfunction isKatakana(charCode) {\n  return charCode >= 0x30A0 && charCode <= 0x30FF;\n}\nfunction isHiragana(charCode) {\n  return charCode >= 0x3040 && charCode <= 0x309F;\n}\nfunction isHalfwidthKatakana(charCode) {\n  return charCode >= 0xFF60 && charCode <= 0xFF9F;\n}\nfunction isThai(charCode) {\n  return (charCode & 0xFF80) === 0x0E00;\n}\nfunction getCharacterType(charCode) {\n  if (isAlphabeticalScript(charCode)) {\n    if (isAscii(charCode)) {\n      if (isAsciiSpace(charCode)) {\n        return CharacterType.SPACE;\n      } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5F) {\n        return CharacterType.ALPHA_LETTER;\n      }\n      return CharacterType.PUNCT;\n    } else if (isThai(charCode)) {\n      return CharacterType.THAI_LETTER;\n    } else if (charCode === 0xA0) {\n      return CharacterType.SPACE;\n    }\n    return CharacterType.ALPHA_LETTER;\n  }\n  if (isHan(charCode)) {\n    return CharacterType.HAN_LETTER;\n  } else if (isKatakana(charCode)) {\n    return CharacterType.KATAKANA_LETTER;\n  } else if (isHiragana(charCode)) {\n    return CharacterType.HIRAGANA_LETTER;\n  } else if (isHalfwidthKatakana(charCode)) {\n    return CharacterType.HALFWIDTH_KATAKANA_LETTER;\n  }\n  return CharacterType.ALPHA_LETTER;\n}\nexports.CharacterType = CharacterType;\nexports.getCharacterType = getCharacterType;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isDestArraysEqual = exports.isDestHashesEqual = exports.PDFHistory = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _dom_events = __webpack_require__(14);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar HASH_CHANGE_TIMEOUT = 1000;\nvar POSITION_UPDATED_THRESHOLD = 50;\nvar UPDATE_VIEWAREA_TIMEOUT = 1000;\nfunction getCurrentHash() {\n  return document.location.hash;\n}\nfunction parseCurrentHash(linkService) {\n  var hash = unescape(getCurrentHash()).substring(1);\n  var params = (0, _ui_utils.parseQueryString)(hash);\n  var page = params.page | 0;\n  if (!(Number.isInteger(page) && page > 0 && page <= linkService.pagesCount)) {\n    page = null;\n  }\n  return {\n    hash: hash,\n    page: page,\n    rotation: linkService.rotation\n  };\n}\n\nvar PDFHistory = function () {\n  function PDFHistory(_ref) {\n    var _this = this;\n\n    var linkService = _ref.linkService,\n        eventBus = _ref.eventBus;\n\n    _classCallCheck(this, PDFHistory);\n\n    this.linkService = linkService;\n    this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();\n    this.initialized = false;\n    this.initialBookmark = null;\n    this.initialRotation = null;\n    this._boundEvents = Object.create(null);\n    this._isViewerInPresentationMode = false;\n    this._isPagesLoaded = false;\n    this.eventBus.on('presentationmodechanged', function (evt) {\n      _this._isViewerInPresentationMode = evt.active || evt.switchInProgress;\n    });\n    this.eventBus.on('pagesloaded', function (evt) {\n      _this._isPagesLoaded = !!evt.pagesCount;\n    });\n  }\n\n  _createClass(PDFHistory, [{\n    key: 'initialize',\n    value: function initialize(fingerprint) {\n      var resetHistory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!fingerprint || typeof fingerprint !== 'string') {\n        console.error('PDFHistory.initialize: The \"fingerprint\" must be a non-empty string.');\n        return;\n      }\n      var reInitialized = this.initialized && this.fingerprint !== fingerprint;\n      this.fingerprint = fingerprint;\n      if (!this.initialized) {\n        this._bindEvents();\n      }\n      var state = window.history.state;\n      this.initialized = true;\n      this.initialBookmark = null;\n      this.initialRotation = null;\n      this._popStateInProgress = false;\n      this._blockHashChange = 0;\n      this._currentHash = getCurrentHash();\n      this._numPositionUpdates = 0;\n      this._uid = this._maxUid = 0;\n      this._destination = null;\n      this._position = null;\n      if (!this._isValidState(state) || resetHistory) {\n        var _parseCurrentHash = parseCurrentHash(this.linkService),\n            hash = _parseCurrentHash.hash,\n            page = _parseCurrentHash.page,\n            rotation = _parseCurrentHash.rotation;\n\n        if (!hash || reInitialized || resetHistory) {\n          this._pushOrReplaceState(null, true);\n          return;\n        }\n        this._pushOrReplaceState({\n          hash: hash,\n          page: page,\n          rotation: rotation\n        }, true);\n        return;\n      }\n      var destination = state.destination;\n      this._updateInternalState(destination, state.uid, true);\n      if (this._uid > this._maxUid) {\n        this._maxUid = this._uid;\n      }\n      if (destination.rotation !== undefined) {\n        this.initialRotation = destination.rotation;\n      }\n      if (destination.dest) {\n        this.initialBookmark = JSON.stringify(destination.dest);\n        this._destination.page = null;\n      } else if (destination.hash) {\n        this.initialBookmark = destination.hash;\n      } else if (destination.page) {\n        this.initialBookmark = 'page=' + destination.page;\n      }\n    }\n  }, {\n    key: 'push',\n    value: function push(_ref2) {\n      var _this2 = this;\n\n      var namedDest = _ref2.namedDest,\n          explicitDest = _ref2.explicitDest,\n          pageNumber = _ref2.pageNumber;\n\n      if (!this.initialized) {\n        return;\n      }\n      if (namedDest && typeof namedDest !== 'string' || !Array.isArray(explicitDest) || !(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.linkService.pagesCount)) {\n        console.error('PDFHistory.push: Invalid parameters.');\n        return;\n      }\n      var hash = namedDest || JSON.stringify(explicitDest);\n      if (!hash) {\n        return;\n      }\n      var forceReplace = false;\n      if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) {\n        if (this._destination.page) {\n          return;\n        }\n        forceReplace = true;\n      }\n      if (this._popStateInProgress && !forceReplace) {\n        return;\n      }\n      this._pushOrReplaceState({\n        dest: explicitDest,\n        hash: hash,\n        page: pageNumber,\n        rotation: this.linkService.rotation\n      }, forceReplace);\n      if (!this._popStateInProgress) {\n        this._popStateInProgress = true;\n        Promise.resolve().then(function () {\n          _this2._popStateInProgress = false;\n        });\n      }\n    }\n  }, {\n    key: 'pushCurrentPosition',\n    value: function pushCurrentPosition() {\n      if (!this.initialized || this._popStateInProgress) {\n        return;\n      }\n      this._tryPushCurrentPosition();\n    }\n  }, {\n    key: 'back',\n    value: function back() {\n      if (!this.initialized || this._popStateInProgress) {\n        return;\n      }\n      var state = window.history.state;\n      if (this._isValidState(state) && state.uid > 0) {\n        window.history.back();\n      }\n    }\n  }, {\n    key: 'forward',\n    value: function forward() {\n      if (!this.initialized || this._popStateInProgress) {\n        return;\n      }\n      var state = window.history.state;\n      if (this._isValidState(state) && state.uid < this._maxUid) {\n        window.history.forward();\n      }\n    }\n  }, {\n    key: '_pushOrReplaceState',\n    value: function _pushOrReplaceState(destination) {\n      var forceReplace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var shouldReplace = forceReplace || !this._destination;\n      var newState = {\n        fingerprint: this.fingerprint,\n        uid: shouldReplace ? this._uid : this._uid + 1,\n        destination: destination\n      };\n      this._updateInternalState(destination, newState.uid);\n      if (shouldReplace) {\n        window.history.replaceState(newState, '');\n      } else {\n        this._maxUid = this._uid;\n        window.history.pushState(newState, '');\n      }\n    }\n  }, {\n    key: '_tryPushCurrentPosition',\n    value: function _tryPushCurrentPosition() {\n      var temporary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (!this._position) {\n        return;\n      }\n      var position = this._position;\n      if (temporary) {\n        position = Object.assign(Object.create(null), this._position);\n        position.temporary = true;\n      }\n      if (!this._destination) {\n        this._pushOrReplaceState(position);\n        return;\n      }\n      if (this._destination.temporary) {\n        this._pushOrReplaceState(position, true);\n        return;\n      }\n      if (this._destination.hash === position.hash) {\n        return;\n      }\n      if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) {\n        return;\n      }\n      var forceReplace = false;\n      if (this._destination.page === position.first || this._destination.page === position.page) {\n        if (this._destination.dest || !this._destination.first) {\n          return;\n        }\n        forceReplace = true;\n      }\n      this._pushOrReplaceState(position, forceReplace);\n    }\n  }, {\n    key: '_isValidState',\n    value: function _isValidState(state) {\n      if (!state) {\n        return false;\n      }\n      if (state.fingerprint !== this.fingerprint) {\n        return false;\n      }\n      if (!Number.isInteger(state.uid) || state.uid < 0) {\n        return false;\n      }\n      if (state.destination === null || _typeof(state.destination) !== 'object') {\n        return false;\n      }\n      return true;\n    }\n  }, {\n    key: '_updateInternalState',\n    value: function _updateInternalState(destination, uid) {\n      var removeTemporary = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (this._updateViewareaTimeout) {\n        clearTimeout(this._updateViewareaTimeout);\n        this._updateViewareaTimeout = null;\n      }\n      if (removeTemporary && destination && destination.temporary) {\n        delete destination.temporary;\n      }\n      this._destination = destination;\n      this._uid = uid;\n      this._numPositionUpdates = 0;\n    }\n  }, {\n    key: '_updateViewarea',\n    value: function _updateViewarea(_ref3) {\n      var _this3 = this;\n\n      var location = _ref3.location;\n\n      if (this._updateViewareaTimeout) {\n        clearTimeout(this._updateViewareaTimeout);\n        this._updateViewareaTimeout = null;\n      }\n      this._position = {\n        hash: this._isViewerInPresentationMode ? 'page=' + location.pageNumber : location.pdfOpenParams.substring(1),\n        page: this.linkService.page,\n        first: location.pageNumber,\n        rotation: location.rotation\n      };\n      if (this._popStateInProgress) {\n        return;\n      }\n      if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) {\n        this._numPositionUpdates++;\n      }\n      if (UPDATE_VIEWAREA_TIMEOUT > 0) {\n        this._updateViewareaTimeout = setTimeout(function () {\n          if (!_this3._popStateInProgress) {\n            _this3._tryPushCurrentPosition(true);\n          }\n          _this3._updateViewareaTimeout = null;\n        }, UPDATE_VIEWAREA_TIMEOUT);\n      }\n    }\n  }, {\n    key: '_popState',\n    value: function _popState(_ref4) {\n      var _this4 = this;\n\n      var state = _ref4.state;\n\n      var newHash = getCurrentHash(),\n          hashChanged = this._currentHash !== newHash;\n      this._currentHash = newHash;\n      if (!state || false) {\n        this._uid++;\n\n        var _parseCurrentHash2 = parseCurrentHash(this.linkService),\n            hash = _parseCurrentHash2.hash,\n            page = _parseCurrentHash2.page,\n            rotation = _parseCurrentHash2.rotation;\n\n        this._pushOrReplaceState({\n          hash: hash,\n          page: page,\n          rotation: rotation\n        }, true);\n        return;\n      }\n      if (!this._isValidState(state)) {\n        return;\n      }\n      this._popStateInProgress = true;\n      if (hashChanged) {\n        this._blockHashChange++;\n        (0, _ui_utils.waitOnEventOrTimeout)({\n          target: window,\n          name: 'hashchange',\n          delay: HASH_CHANGE_TIMEOUT\n        }).then(function () {\n          _this4._blockHashChange--;\n        });\n      }\n      var destination = state.destination;\n      this._updateInternalState(destination, state.uid, true);\n      if (this._uid > this._maxUid) {\n        this._maxUid = this._uid;\n      }\n      if ((0, _ui_utils.isValidRotation)(destination.rotation)) {\n        this.linkService.rotation = destination.rotation;\n      }\n      if (destination.dest) {\n        this.linkService.navigateTo(destination.dest);\n      } else if (destination.hash) {\n        this.linkService.setHash(destination.hash);\n      } else if (destination.page) {\n        this.linkService.page = destination.page;\n      }\n      Promise.resolve().then(function () {\n        _this4._popStateInProgress = false;\n      });\n    }\n  }, {\n    key: '_bindEvents',\n    value: function _bindEvents() {\n      var _this5 = this;\n\n      var _boundEvents = this._boundEvents,\n          eventBus = this.eventBus;\n\n      _boundEvents.updateViewarea = this._updateViewarea.bind(this);\n      _boundEvents.popState = this._popState.bind(this);\n      _boundEvents.pageHide = function (evt) {\n        if (!_this5._destination || _this5._destination.temporary) {\n          _this5._tryPushCurrentPosition();\n        }\n      };\n      eventBus.on('updateviewarea', _boundEvents.updateViewarea);\n      window.addEventListener('popstate', _boundEvents.popState);\n      window.addEventListener('pagehide', _boundEvents.pageHide);\n    }\n  }, {\n    key: 'popStateInProgress',\n    get: function get() {\n      return this.initialized && (this._popStateInProgress || this._blockHashChange > 0);\n    }\n  }]);\n\n  return PDFHistory;\n}();\n\nfunction isDestHashesEqual(destHash, pushHash) {\n  if (typeof destHash !== 'string' || typeof pushHash !== 'string') {\n    return false;\n  }\n  if (destHash === pushHash) {\n    return true;\n  }\n\n  var _parseQueryString = (0, _ui_utils.parseQueryString)(destHash),\n      nameddest = _parseQueryString.nameddest;\n\n  if (nameddest === pushHash) {\n    return true;\n  }\n  return false;\n}\nfunction isDestArraysEqual(firstDest, secondDest) {\n  function isEntryEqual(first, second) {\n    if ((typeof first === 'undefined' ? 'undefined' : _typeof(first)) !== (typeof second === 'undefined' ? 'undefined' : _typeof(second))) {\n      return false;\n    }\n    if (Array.isArray(first) || Array.isArray(second)) {\n      return false;\n    }\n    if (first !== null && (typeof first === 'undefined' ? 'undefined' : _typeof(first)) === 'object' && second !== null) {\n      if (Object.keys(first).length !== Object.keys(second).length) {\n        return false;\n      }\n      for (var key in first) {\n        if (!isEntryEqual(first[key], second[key])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    return first === second || Number.isNaN(first) && Number.isNaN(second);\n  }\n  if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {\n    return false;\n  }\n  if (firstDest.length !== secondDest.length) {\n    return false;\n  }\n  for (var i = 0, ii = firstDest.length; i < ii; i++) {\n    if (!isEntryEqual(firstDest[i], secondDest[i])) {\n      return false;\n    }\n  }\n  return true;\n}\nexports.PDFHistory = PDFHistory;\nexports.isDestHashesEqual = isDestHashesEqual;\nexports.isDestArraysEqual = isDestArraysEqual;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SimpleLinkService = exports.PDFLinkService = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dom_events = __webpack_require__(14);\n\nvar _ui_utils = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PDFLinkService = function () {\n  function PDFLinkService() {\n    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        eventBus = _ref.eventBus,\n        _ref$externalLinkTarg = _ref.externalLinkTarget,\n        externalLinkTarget = _ref$externalLinkTarg === undefined ? null : _ref$externalLinkTarg,\n        _ref$externalLinkRel = _ref.externalLinkRel,\n        externalLinkRel = _ref$externalLinkRel === undefined ? null : _ref$externalLinkRel;\n\n    _classCallCheck(this, PDFLinkService);\n\n    this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();\n    this.externalLinkTarget = externalLinkTarget;\n    this.externalLinkRel = externalLinkRel;\n    this.baseUrl = null;\n    this.pdfDocument = null;\n    this.pdfViewer = null;\n    this.pdfHistory = null;\n    this._pagesRefCache = null;\n  }\n\n  _createClass(PDFLinkService, [{\n    key: 'setDocument',\n    value: function setDocument(pdfDocument) {\n      var baseUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      this.baseUrl = baseUrl;\n      this.pdfDocument = pdfDocument;\n      this._pagesRefCache = Object.create(null);\n    }\n  }, {\n    key: 'setViewer',\n    value: function setViewer(pdfViewer) {\n      this.pdfViewer = pdfViewer;\n    }\n  }, {\n    key: 'setHistory',\n    value: function setHistory(pdfHistory) {\n      this.pdfHistory = pdfHistory;\n    }\n  }, {\n    key: 'navigateTo',\n    value: function navigateTo(dest) {\n      var _this = this;\n\n      var goToDestination = function goToDestination(_ref2) {\n        var namedDest = _ref2.namedDest,\n            explicitDest = _ref2.explicitDest;\n\n        var destRef = explicitDest[0],\n            pageNumber = void 0;\n        if (destRef instanceof Object) {\n          pageNumber = _this._cachedPageNumber(destRef);\n          if (pageNumber === null) {\n            _this.pdfDocument.getPageIndex(destRef).then(function (pageIndex) {\n              _this.cachePageRef(pageIndex + 1, destRef);\n              goToDestination({\n                namedDest: namedDest,\n                explicitDest: explicitDest\n              });\n            }).catch(function () {\n              console.error('PDFLinkService.navigateTo: \"' + destRef + '\" is not ' + ('a valid page reference, for dest=\"' + dest + '\".'));\n            });\n            return;\n          }\n        } else if (Number.isInteger(destRef)) {\n          pageNumber = destRef + 1;\n        } else {\n          console.error('PDFLinkService.navigateTo: \"' + destRef + '\" is not ' + ('a valid destination reference, for dest=\"' + dest + '\".'));\n          return;\n        }\n        if (!pageNumber || pageNumber < 1 || pageNumber > _this.pagesCount) {\n          console.error('PDFLinkService.navigateTo: \"' + pageNumber + '\" is not ' + ('a valid page number, for dest=\"' + dest + '\".'));\n          return;\n        }\n        if (_this.pdfHistory) {\n          _this.pdfHistory.pushCurrentPosition();\n          _this.pdfHistory.push({\n            namedDest: namedDest,\n            explicitDest: explicitDest,\n            pageNumber: pageNumber\n          });\n        }\n        _this.pdfViewer.scrollPageIntoView({\n          pageNumber: pageNumber,\n          destArray: explicitDest\n        });\n      };\n      new Promise(function (resolve, reject) {\n        if (typeof dest === 'string') {\n          _this.pdfDocument.getDestination(dest).then(function (destArray) {\n            resolve({\n              namedDest: dest,\n              explicitDest: destArray\n            });\n          });\n          return;\n        }\n        resolve({\n          namedDest: '',\n          explicitDest: dest\n        });\n      }).then(function (data) {\n        if (!Array.isArray(data.explicitDest)) {\n          console.error('PDFLinkService.navigateTo: \"' + data.explicitDest + '\" is' + (' not a valid destination array, for dest=\"' + dest + '\".'));\n          return;\n        }\n        goToDestination(data);\n      });\n    }\n  }, {\n    key: 'getDestinationHash',\n    value: function getDestinationHash(dest) {\n      if (typeof dest === 'string') {\n        return this.getAnchorUrl('#' + escape(dest));\n      }\n      if (Array.isArray(dest)) {\n        var str = JSON.stringify(dest);\n        return this.getAnchorUrl('#' + escape(str));\n      }\n      return this.getAnchorUrl('');\n    }\n  }, {\n    key: 'getAnchorUrl',\n    value: function getAnchorUrl(anchor) {\n      return (this.baseUrl || '') + anchor;\n    }\n  }, {\n    key: 'setHash',\n    value: function setHash(hash) {\n      var pageNumber = void 0,\n          dest = void 0;\n      if (hash.includes('=')) {\n        var params = (0, _ui_utils.parseQueryString)(hash);\n        if ('search' in params) {\n          this.eventBus.dispatch('findfromurlhash', {\n            source: this,\n            query: params['search'].replace(/\"/g, ''),\n            phraseSearch: params['phrase'] === 'true'\n          });\n        }\n        if ('nameddest' in params) {\n          this.navigateTo(params.nameddest);\n          return;\n        }\n        if ('page' in params) {\n          pageNumber = params.page | 0 || 1;\n        }\n        if ('zoom' in params) {\n          var zoomArgs = params.zoom.split(',');\n          var zoomArg = zoomArgs[0];\n          var zoomArgNumber = parseFloat(zoomArg);\n          if (!zoomArg.includes('Fit')) {\n            dest = [null, { name: 'XYZ' }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg];\n          } else {\n            if (zoomArg === 'Fit' || zoomArg === 'FitB') {\n              dest = [null, { name: zoomArg }];\n            } else if (zoomArg === 'FitH' || zoomArg === 'FitBH' || zoomArg === 'FitV' || zoomArg === 'FitBV') {\n              dest = [null, { name: zoomArg }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];\n            } else if (zoomArg === 'FitR') {\n              if (zoomArgs.length !== 5) {\n                console.error('PDFLinkService.setHash: Not enough parameters for \"FitR\".');\n              } else {\n                dest = [null, { name: zoomArg }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];\n              }\n            } else {\n              console.error('PDFLinkService.setHash: \"' + zoomArg + '\" is not ' + 'a valid zoom value.');\n            }\n          }\n        }\n        if (dest) {\n          this.pdfViewer.scrollPageIntoView({\n            pageNumber: pageNumber || this.page,\n            destArray: dest,\n            allowNegativeOffset: true\n          });\n        } else if (pageNumber) {\n          this.page = pageNumber;\n        }\n        if ('pagemode' in params) {\n          this.eventBus.dispatch('pagemode', {\n            source: this,\n            mode: params.pagemode\n          });\n        }\n      } else {\n        dest = unescape(hash);\n        try {\n          dest = JSON.parse(dest);\n          if (!Array.isArray(dest)) {\n            dest = dest.toString();\n          }\n        } catch (ex) {}\n        if (typeof dest === 'string' || isValidExplicitDestination(dest)) {\n          this.navigateTo(dest);\n          return;\n        }\n        console.error('PDFLinkService.setHash: \"' + unescape(hash) + '\" is not ' + 'a valid destination.');\n      }\n    }\n  }, {\n    key: 'executeNamedAction',\n    value: function executeNamedAction(action) {\n      switch (action) {\n        case 'GoBack':\n          if (this.pdfHistory) {\n            this.pdfHistory.back();\n          }\n          break;\n        case 'GoForward':\n          if (this.pdfHistory) {\n            this.pdfHistory.forward();\n          }\n          break;\n        case 'NextPage':\n          if (this.page < this.pagesCount) {\n            this.page++;\n          }\n          break;\n        case 'PrevPage':\n          if (this.page > 1) {\n            this.page--;\n          }\n          break;\n        case 'LastPage':\n          this.page = this.pagesCount;\n          break;\n        case 'FirstPage':\n          this.page = 1;\n          break;\n        default:\n          break;\n      }\n      this.eventBus.dispatch('namedaction', {\n        source: this,\n        action: action\n      });\n    }\n  }, {\n    key: 'cachePageRef',\n    value: function cachePageRef(pageNum, pageRef) {\n      if (!pageRef) {\n        return;\n      }\n      var refStr = pageRef.num + ' ' + pageRef.gen + ' R';\n      this._pagesRefCache[refStr] = pageNum;\n    }\n  }, {\n    key: '_cachedPageNumber',\n    value: function _cachedPageNumber(pageRef) {\n      var refStr = pageRef.num + ' ' + pageRef.gen + ' R';\n      return this._pagesRefCache && this._pagesRefCache[refStr] || null;\n    }\n  }, {\n    key: 'pagesCount',\n    get: function get() {\n      return this.pdfDocument ? this.pdfDocument.numPages : 0;\n    }\n  }, {\n    key: 'page',\n    get: function get() {\n      return this.pdfViewer.currentPageNumber;\n    },\n    set: function set(value) {\n      this.pdfViewer.currentPageNumber = value;\n    }\n  }, {\n    key: 'rotation',\n    get: function get() {\n      return this.pdfViewer.pagesRotation;\n    },\n    set: function set(value) {\n      this.pdfViewer.pagesRotation = value;\n    }\n  }]);\n\n  return PDFLinkService;\n}();\n\nfunction isValidExplicitDestination(dest) {\n  if (!Array.isArray(dest)) {\n    return false;\n  }\n  var destLength = dest.length,\n      allowNull = true;\n  if (destLength < 2) {\n    return false;\n  }\n  var page = dest[0];\n  if (!((typeof page === 'undefined' ? 'undefined' : _typeof(page)) === 'object' && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {\n    return false;\n  }\n  var zoom = dest[1];\n  if (!((typeof zoom === 'undefined' ? 'undefined' : _typeof(zoom)) === 'object' && typeof zoom.name === 'string')) {\n    return false;\n  }\n  switch (zoom.name) {\n    case 'XYZ':\n      if (destLength !== 5) {\n        return false;\n      }\n      break;\n    case 'Fit':\n    case 'FitB':\n      return destLength === 2;\n    case 'FitH':\n    case 'FitBH':\n    case 'FitV':\n    case 'FitBV':\n      if (destLength !== 3) {\n        return false;\n      }\n      break;\n    case 'FitR':\n      if (destLength !== 6) {\n        return false;\n      }\n      allowNull = false;\n      break;\n    default:\n      return false;\n  }\n  for (var i = 2; i < destLength; i++) {\n    var param = dest[i];\n    if (!(typeof param === 'number' || allowNull && param === null)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nvar SimpleLinkService = function () {\n  function SimpleLinkService() {\n    _classCallCheck(this, SimpleLinkService);\n\n    this.externalLinkTarget = null;\n    this.externalLinkRel = null;\n  }\n\n  _createClass(SimpleLinkService, [{\n    key: 'navigateTo',\n    value: function navigateTo(dest) {}\n  }, {\n    key: 'getDestinationHash',\n    value: function getDestinationHash(dest) {\n      return '#';\n    }\n  }, {\n    key: 'getAnchorUrl',\n    value: function getAnchorUrl(hash) {\n      return '#';\n    }\n  }, {\n    key: 'setHash',\n    value: function setHash(hash) {}\n  }, {\n    key: 'executeNamedAction',\n    value: function executeNamedAction(action) {}\n  }, {\n    key: 'cachePageRef',\n    value: function cachePageRef(pageNum, pageRef) {}\n  }, {\n    key: 'pagesCount',\n    get: function get() {\n      return 0;\n    }\n  }, {\n    key: 'page',\n    get: function get() {\n      return 0;\n    },\n    set: function set(value) {}\n  }, {\n    key: 'rotation',\n    get: function get() {\n      return 0;\n    },\n    set: function set(value) {}\n  }]);\n\n  return SimpleLinkService;\n}();\n\nexports.PDFLinkService = PDFLinkService;\nexports.SimpleLinkService = SimpleLinkService;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFOutlineViewer = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _pdfjsLib = __webpack_require__(7);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DEFAULT_TITLE = '\\u2013';\n\nvar PDFOutlineViewer = function () {\n  function PDFOutlineViewer(_ref) {\n    var container = _ref.container,\n        linkService = _ref.linkService,\n        eventBus = _ref.eventBus;\n\n    _classCallCheck(this, PDFOutlineViewer);\n\n    this.container = container;\n    this.linkService = linkService;\n    this.eventBus = eventBus;\n    this.reset();\n    eventBus.on('toggleoutlinetree', this.toggleOutlineTree.bind(this));\n  }\n\n  _createClass(PDFOutlineViewer, [{\n    key: 'reset',\n    value: function reset() {\n      this.outline = null;\n      this.lastToggleIsShow = true;\n      this.container.textContent = '';\n      this.container.classList.remove('outlineWithDeepNesting');\n    }\n  }, {\n    key: '_dispatchEvent',\n    value: function _dispatchEvent(outlineCount) {\n      this.eventBus.dispatch('outlineloaded', {\n        source: this,\n        outlineCount: outlineCount\n      });\n    }\n  }, {\n    key: '_bindLink',\n    value: function _bindLink(element, _ref2) {\n      var url = _ref2.url,\n          newWindow = _ref2.newWindow,\n          dest = _ref2.dest;\n      var linkService = this.linkService;\n\n      if (url) {\n        (0, _pdfjsLib.addLinkAttributes)(element, {\n          url: url,\n          target: newWindow ? _pdfjsLib.LinkTarget.BLANK : linkService.externalLinkTarget,\n          rel: linkService.externalLinkRel\n        });\n        return;\n      }\n      element.href = linkService.getDestinationHash(dest);\n      element.onclick = function () {\n        if (dest) {\n          linkService.navigateTo(dest);\n        }\n        return false;\n      };\n    }\n  }, {\n    key: '_setStyles',\n    value: function _setStyles(element, _ref3) {\n      var bold = _ref3.bold,\n          italic = _ref3.italic;\n\n      var styleStr = '';\n      if (bold) {\n        styleStr += 'font-weight: bold;';\n      }\n      if (italic) {\n        styleStr += 'font-style: italic;';\n      }\n      if (styleStr) {\n        element.setAttribute('style', styleStr);\n      }\n    }\n  }, {\n    key: '_addToggleButton',\n    value: function _addToggleButton(div) {\n      var _this = this;\n\n      var toggler = document.createElement('div');\n      toggler.className = 'outlineItemToggler';\n      toggler.onclick = function (evt) {\n        evt.stopPropagation();\n        toggler.classList.toggle('outlineItemsHidden');\n        if (evt.shiftKey) {\n          var shouldShowAll = !toggler.classList.contains('outlineItemsHidden');\n          _this._toggleOutlineItem(div, shouldShowAll);\n        }\n      };\n      div.insertBefore(toggler, div.firstChild);\n    }\n  }, {\n    key: '_toggleOutlineItem',\n    value: function _toggleOutlineItem(root, show) {\n      this.lastToggleIsShow = show;\n      var togglers = root.querySelectorAll('.outlineItemToggler');\n      for (var i = 0, ii = togglers.length; i < ii; ++i) {\n        togglers[i].classList[show ? 'remove' : 'add']('outlineItemsHidden');\n      }\n    }\n  }, {\n    key: 'toggleOutlineTree',\n    value: function toggleOutlineTree() {\n      if (!this.outline) {\n        return;\n      }\n      this._toggleOutlineItem(this.container, !this.lastToggleIsShow);\n    }\n  }, {\n    key: 'render',\n    value: function render(_ref4) {\n      var outline = _ref4.outline;\n\n      var outlineCount = 0;\n      if (this.outline) {\n        this.reset();\n      }\n      this.outline = outline || null;\n      if (!outline) {\n        this._dispatchEvent(outlineCount);\n        return;\n      }\n      var fragment = document.createDocumentFragment();\n      var queue = [{\n        parent: fragment,\n        items: this.outline\n      }];\n      var hasAnyNesting = false;\n      while (queue.length > 0) {\n        var levelData = queue.shift();\n        for (var i = 0, len = levelData.items.length; i < len; i++) {\n          var item = levelData.items[i];\n          var div = document.createElement('div');\n          div.className = 'outlineItem';\n          var element = document.createElement('a');\n          this._bindLink(element, item);\n          this._setStyles(element, item);\n          element.textContent = (0, _pdfjsLib.removeNullCharacters)(item.title) || DEFAULT_TITLE;\n          div.appendChild(element);\n          if (item.items.length > 0) {\n            hasAnyNesting = true;\n            this._addToggleButton(div);\n            var itemsDiv = document.createElement('div');\n            itemsDiv.className = 'outlineItems';\n            div.appendChild(itemsDiv);\n            queue.push({\n              parent: itemsDiv,\n              items: item.items\n            });\n          }\n          levelData.parent.appendChild(div);\n          outlineCount++;\n        }\n      }\n      if (hasAnyNesting) {\n        this.container.classList.add('outlineWithDeepNesting');\n      }\n      this.container.appendChild(fragment);\n      this._dispatchEvent(outlineCount);\n    }\n  }]);\n\n  return PDFOutlineViewer;\n}();\n\nexports.PDFOutlineViewer = PDFOutlineViewer;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFPresentationMode = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500;\nvar DELAY_BEFORE_HIDING_CONTROLS = 3000;\nvar ACTIVE_SELECTOR = 'pdfPresentationMode';\nvar CONTROLS_SELECTOR = 'pdfPresentationModeControls';\nvar MOUSE_SCROLL_COOLDOWN_TIME = 50;\nvar PAGE_SWITCH_THRESHOLD = 0.1;\nvar SWIPE_MIN_DISTANCE_THRESHOLD = 50;\nvar SWIPE_ANGLE_THRESHOLD = Math.PI / 6;\n\nvar PDFPresentationMode = function () {\n  function PDFPresentationMode(_ref) {\n    var _this = this;\n\n    var container = _ref.container,\n        _ref$viewer = _ref.viewer,\n        viewer = _ref$viewer === undefined ? null : _ref$viewer,\n        pdfViewer = _ref.pdfViewer,\n        eventBus = _ref.eventBus,\n        _ref$contextMenuItems = _ref.contextMenuItems,\n        contextMenuItems = _ref$contextMenuItems === undefined ? null : _ref$contextMenuItems;\n\n    _classCallCheck(this, PDFPresentationMode);\n\n    this.container = container;\n    this.viewer = viewer || container.firstElementChild;\n    this.pdfViewer = pdfViewer;\n    this.eventBus = eventBus;\n    this.active = false;\n    this.args = null;\n    this.contextMenuOpen = false;\n    this.mouseScrollTimeStamp = 0;\n    this.mouseScrollDelta = 0;\n    this.touchSwipeState = null;\n    if (contextMenuItems) {\n      contextMenuItems.contextFirstPage.addEventListener('click', function () {\n        _this.contextMenuOpen = false;\n        _this.eventBus.dispatch('firstpage', { source: _this });\n      });\n      contextMenuItems.contextLastPage.addEventListener('click', function () {\n        _this.contextMenuOpen = false;\n        _this.eventBus.dispatch('lastpage', { source: _this });\n      });\n      contextMenuItems.contextPageRotateCw.addEventListener('click', function () {\n        _this.contextMenuOpen = false;\n        _this.eventBus.dispatch('rotatecw', { source: _this });\n      });\n      contextMenuItems.contextPageRotateCcw.addEventListener('click', function () {\n        _this.contextMenuOpen = false;\n        _this.eventBus.dispatch('rotateccw', { source: _this });\n      });\n    }\n  }\n\n  _createClass(PDFPresentationMode, [{\n    key: 'request',\n    value: function request() {\n      if (this.switchInProgress || this.active || !this.viewer.hasChildNodes()) {\n        return false;\n      }\n      this._addFullscreenChangeListeners();\n      this._setSwitchInProgress();\n      this._notifyStateChange();\n      if (this.container.requestFullscreen) {\n        this.container.requestFullscreen();\n      } else if (this.container.mozRequestFullScreen) {\n        this.container.mozRequestFullScreen();\n      } else if (this.container.webkitRequestFullscreen) {\n        this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n      } else if (this.container.msRequestFullscreen) {\n        this.container.msRequestFullscreen();\n      } else {\n        return false;\n      }\n      this.args = {\n        page: this.pdfViewer.currentPageNumber,\n        previousScale: this.pdfViewer.currentScaleValue\n      };\n      return true;\n    }\n  }, {\n    key: '_mouseWheel',\n    value: function _mouseWheel(evt) {\n      if (!this.active) {\n        return;\n      }\n      evt.preventDefault();\n      var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);\n      var currentTime = new Date().getTime();\n      var storedTime = this.mouseScrollTimeStamp;\n      if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) {\n        return;\n      }\n      if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) {\n        this._resetMouseScrollState();\n      }\n      this.mouseScrollDelta += delta;\n      if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {\n        var totalDelta = this.mouseScrollDelta;\n        this._resetMouseScrollState();\n        var success = totalDelta > 0 ? this._goToPreviousPage() : this._goToNextPage();\n        if (success) {\n          this.mouseScrollTimeStamp = currentTime;\n        }\n      }\n    }\n  }, {\n    key: '_goToPreviousPage',\n    value: function _goToPreviousPage() {\n      var page = this.pdfViewer.currentPageNumber;\n      if (page <= 1) {\n        return false;\n      }\n      this.pdfViewer.currentPageNumber = page - 1;\n      return true;\n    }\n  }, {\n    key: '_goToNextPage',\n    value: function _goToNextPage() {\n      var page = this.pdfViewer.currentPageNumber;\n      if (page >= this.pdfViewer.pagesCount) {\n        return false;\n      }\n      this.pdfViewer.currentPageNumber = page + 1;\n      return true;\n    }\n  }, {\n    key: '_notifyStateChange',\n    value: function _notifyStateChange() {\n      this.eventBus.dispatch('presentationmodechanged', {\n        source: this,\n        active: this.active,\n        switchInProgress: !!this.switchInProgress\n      });\n    }\n  }, {\n    key: '_setSwitchInProgress',\n    value: function _setSwitchInProgress() {\n      var _this2 = this;\n\n      if (this.switchInProgress) {\n        clearTimeout(this.switchInProgress);\n      }\n      this.switchInProgress = setTimeout(function () {\n        _this2._removeFullscreenChangeListeners();\n        delete _this2.switchInProgress;\n        _this2._notifyStateChange();\n      }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);\n    }\n  }, {\n    key: '_resetSwitchInProgress',\n    value: function _resetSwitchInProgress() {\n      if (this.switchInProgress) {\n        clearTimeout(this.switchInProgress);\n        delete this.switchInProgress;\n      }\n    }\n  }, {\n    key: '_enter',\n    value: function _enter() {\n      var _this3 = this;\n\n      this.active = true;\n      this._resetSwitchInProgress();\n      this._notifyStateChange();\n      this.container.classList.add(ACTIVE_SELECTOR);\n      setTimeout(function () {\n        _this3.pdfViewer.currentPageNumber = _this3.args.page;\n        _this3.pdfViewer.currentScaleValue = 'page-fit';\n      }, 0);\n      this._addWindowListeners();\n      this._showControls();\n      this.contextMenuOpen = false;\n      this.container.setAttribute('contextmenu', 'viewerContextMenu');\n      window.getSelection().removeAllRanges();\n    }\n  }, {\n    key: '_exit',\n    value: function _exit() {\n      var _this4 = this;\n\n      var page = this.pdfViewer.currentPageNumber;\n      this.container.classList.remove(ACTIVE_SELECTOR);\n      setTimeout(function () {\n        _this4.active = false;\n        _this4._removeFullscreenChangeListeners();\n        _this4._notifyStateChange();\n        _this4.pdfViewer.currentScaleValue = _this4.args.previousScale;\n        _this4.pdfViewer.currentPageNumber = page;\n        _this4.args = null;\n      }, 0);\n      this._removeWindowListeners();\n      this._hideControls();\n      this._resetMouseScrollState();\n      this.container.removeAttribute('contextmenu');\n      this.contextMenuOpen = false;\n    }\n  }, {\n    key: '_mouseDown',\n    value: function _mouseDown(evt) {\n      if (this.contextMenuOpen) {\n        this.contextMenuOpen = false;\n        evt.preventDefault();\n        return;\n      }\n      if (evt.button === 0) {\n        var isInternalLink = evt.target.href && evt.target.classList.contains('internalLink');\n        if (!isInternalLink) {\n          evt.preventDefault();\n          if (evt.shiftKey) {\n            this._goToPreviousPage();\n          } else {\n            this._goToNextPage();\n          }\n        }\n      }\n    }\n  }, {\n    key: '_contextMenu',\n    value: function _contextMenu() {\n      this.contextMenuOpen = true;\n    }\n  }, {\n    key: '_showControls',\n    value: function _showControls() {\n      var _this5 = this;\n\n      if (this.controlsTimeout) {\n        clearTimeout(this.controlsTimeout);\n      } else {\n        this.container.classList.add(CONTROLS_SELECTOR);\n      }\n      this.controlsTimeout = setTimeout(function () {\n        _this5.container.classList.remove(CONTROLS_SELECTOR);\n        delete _this5.controlsTimeout;\n      }, DELAY_BEFORE_HIDING_CONTROLS);\n    }\n  }, {\n    key: '_hideControls',\n    value: function _hideControls() {\n      if (!this.controlsTimeout) {\n        return;\n      }\n      clearTimeout(this.controlsTimeout);\n      this.container.classList.remove(CONTROLS_SELECTOR);\n      delete this.controlsTimeout;\n    }\n  }, {\n    key: '_resetMouseScrollState',\n    value: function _resetMouseScrollState() {\n      this.mouseScrollTimeStamp = 0;\n      this.mouseScrollDelta = 0;\n    }\n  }, {\n    key: '_touchSwipe',\n    value: function _touchSwipe(evt) {\n      if (!this.active) {\n        return;\n      }\n      if (evt.touches.length > 1) {\n        this.touchSwipeState = null;\n        return;\n      }\n      switch (evt.type) {\n        case 'touchstart':\n          this.touchSwipeState = {\n            startX: evt.touches[0].pageX,\n            startY: evt.touches[0].pageY,\n            endX: evt.touches[0].pageX,\n            endY: evt.touches[0].pageY\n          };\n          break;\n        case 'touchmove':\n          if (this.touchSwipeState === null) {\n            return;\n          }\n          this.touchSwipeState.endX = evt.touches[0].pageX;\n          this.touchSwipeState.endY = evt.touches[0].pageY;\n          evt.preventDefault();\n          break;\n        case 'touchend':\n          if (this.touchSwipeState === null) {\n            return;\n          }\n          var delta = 0;\n          var dx = this.touchSwipeState.endX - this.touchSwipeState.startX;\n          var dy = this.touchSwipeState.endY - this.touchSwipeState.startY;\n          var absAngle = Math.abs(Math.atan2(dy, dx));\n          if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) {\n            delta = dx;\n          } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) {\n            delta = dy;\n          }\n          if (delta > 0) {\n            this._goToPreviousPage();\n          } else if (delta < 0) {\n            this._goToNextPage();\n          }\n          break;\n      }\n    }\n  }, {\n    key: '_addWindowListeners',\n    value: function _addWindowListeners() {\n      this.showControlsBind = this._showControls.bind(this);\n      this.mouseDownBind = this._mouseDown.bind(this);\n      this.mouseWheelBind = this._mouseWheel.bind(this);\n      this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this);\n      this.contextMenuBind = this._contextMenu.bind(this);\n      this.touchSwipeBind = this._touchSwipe.bind(this);\n      window.addEventListener('mousemove', this.showControlsBind);\n      window.addEventListener('mousedown', this.mouseDownBind);\n      window.addEventListener('wheel', this.mouseWheelBind);\n      window.addEventListener('keydown', this.resetMouseScrollStateBind);\n      window.addEventListener('contextmenu', this.contextMenuBind);\n      window.addEventListener('touchstart', this.touchSwipeBind);\n      window.addEventListener('touchmove', this.touchSwipeBind);\n      window.addEventListener('touchend', this.touchSwipeBind);\n    }\n  }, {\n    key: '_removeWindowListeners',\n    value: function _removeWindowListeners() {\n      window.removeEventListener('mousemove', this.showControlsBind);\n      window.removeEventListener('mousedown', this.mouseDownBind);\n      window.removeEventListener('wheel', this.mouseWheelBind);\n      window.removeEventListener('keydown', this.resetMouseScrollStateBind);\n      window.removeEventListener('contextmenu', this.contextMenuBind);\n      window.removeEventListener('touchstart', this.touchSwipeBind);\n      window.removeEventListener('touchmove', this.touchSwipeBind);\n      window.removeEventListener('touchend', this.touchSwipeBind);\n      delete this.showControlsBind;\n      delete this.mouseDownBind;\n      delete this.mouseWheelBind;\n      delete this.resetMouseScrollStateBind;\n      delete this.contextMenuBind;\n      delete this.touchSwipeBind;\n    }\n  }, {\n    key: '_fullscreenChange',\n    value: function _fullscreenChange() {\n      if (this.isFullscreen) {\n        this._enter();\n      } else {\n        this._exit();\n      }\n    }\n  }, {\n    key: '_addFullscreenChangeListeners',\n    value: function _addFullscreenChangeListeners() {\n      this.fullscreenChangeBind = this._fullscreenChange.bind(this);\n      window.addEventListener('fullscreenchange', this.fullscreenChangeBind);\n      window.addEventListener('mozfullscreenchange', this.fullscreenChangeBind);\n      window.addEventListener('webkitfullscreenchange', this.fullscreenChangeBind);\n      window.addEventListener('MSFullscreenChange', this.fullscreenChangeBind);\n    }\n  }, {\n    key: '_removeFullscreenChangeListeners',\n    value: function _removeFullscreenChangeListeners() {\n      window.removeEventListener('fullscreenchange', this.fullscreenChangeBind);\n      window.removeEventListener('mozfullscreenchange', this.fullscreenChangeBind);\n      window.removeEventListener('webkitfullscreenchange', this.fullscreenChangeBind);\n      window.removeEventListener('MSFullscreenChange', this.fullscreenChangeBind);\n      delete this.fullscreenChangeBind;\n    }\n  }, {\n    key: 'isFullscreen',\n    get: function get() {\n      return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement);\n    }\n  }]);\n\n  return PDFPresentationMode;\n}();\n\nexports.PDFPresentationMode = PDFPresentationMode;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFSidebarResizer = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SIDEBAR_WIDTH_VAR = '--sidebar-width';\nvar SIDEBAR_MIN_WIDTH = 200;\nvar SIDEBAR_RESIZING_CLASS = 'sidebarResizing';\n\nvar PDFSidebarResizer = function () {\n  function PDFSidebarResizer(options, eventBus) {\n    var _this = this;\n\n    var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;\n\n    _classCallCheck(this, PDFSidebarResizer);\n\n    this.enabled = false;\n    this.isRTL = false;\n    this.sidebarOpen = false;\n    this.doc = document.documentElement;\n    this._width = null;\n    this._outerContainerWidth = null;\n    this._boundEvents = Object.create(null);\n    this.outerContainer = options.outerContainer;\n    this.resizer = options.resizer;\n    this.eventBus = eventBus;\n    this.l10n = l10n;\n    if (typeof CSS === 'undefined' || typeof CSS.supports !== 'function' || !CSS.supports(SIDEBAR_WIDTH_VAR, 'calc(-1 * ' + SIDEBAR_MIN_WIDTH + 'px)')) {\n      console.warn('PDFSidebarResizer: ' + 'The browser does not support resizing of the sidebar.');\n      return;\n    }\n    this.enabled = true;\n    this.resizer.classList.remove('hidden');\n    this.l10n.getDirection().then(function (dir) {\n      _this.isRTL = dir === 'rtl';\n    });\n    this._addEventListeners();\n  }\n\n  _createClass(PDFSidebarResizer, [{\n    key: '_updateWidth',\n    value: function _updateWidth() {\n      var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (!this.enabled) {\n        return false;\n      }\n      var maxWidth = Math.floor(this.outerContainerWidth / 2);\n      if (width > maxWidth) {\n        width = maxWidth;\n      }\n      if (width < SIDEBAR_MIN_WIDTH) {\n        width = SIDEBAR_MIN_WIDTH;\n      }\n      if (width === this._width) {\n        return false;\n      }\n      this._width = width;\n      this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, width + 'px');\n      return true;\n    }\n  }, {\n    key: '_mouseMove',\n    value: function _mouseMove(evt) {\n      var width = evt.clientX;\n      if (this.isRTL) {\n        width = this.outerContainerWidth - width;\n      }\n      this._updateWidth(width);\n    }\n  }, {\n    key: '_mouseUp',\n    value: function _mouseUp(evt) {\n      this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n      this.eventBus.dispatch('resize', { source: this });\n      var _boundEvents = this._boundEvents;\n      window.removeEventListener('mousemove', _boundEvents.mouseMove);\n      window.removeEventListener('mouseup', _boundEvents.mouseUp);\n    }\n  }, {\n    key: '_addEventListeners',\n    value: function _addEventListeners() {\n      var _this2 = this;\n\n      if (!this.enabled) {\n        return;\n      }\n      var _boundEvents = this._boundEvents;\n      _boundEvents.mouseMove = this._mouseMove.bind(this);\n      _boundEvents.mouseUp = this._mouseUp.bind(this);\n      this.resizer.addEventListener('mousedown', function (evt) {\n        if (evt.button !== 0) {\n          return;\n        }\n        _this2.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n        window.addEventListener('mousemove', _boundEvents.mouseMove);\n        window.addEventListener('mouseup', _boundEvents.mouseUp);\n      });\n      this.eventBus.on('sidebarviewchanged', function (evt) {\n        _this2.sidebarOpen = !!(evt && evt.view);\n      });\n      this.eventBus.on('resize', function (evt) {\n        if (evt && evt.source === window) {\n          _this2._outerContainerWidth = null;\n          if (_this2._width) {\n            if (_this2.sidebarOpen) {\n              _this2.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n              var updated = _this2._updateWidth(_this2._width);\n              Promise.resolve().then(function () {\n                _this2.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n                if (updated) {\n                  _this2.eventBus.dispatch('resize', { source: _this2 });\n                }\n              });\n            } else {\n              _this2._updateWidth(_this2._width);\n            }\n          }\n        }\n      });\n    }\n  }, {\n    key: 'outerContainerWidth',\n    get: function get() {\n      if (!this._outerContainerWidth) {\n        this._outerContainerWidth = this.outerContainer.clientWidth;\n      }\n      return this._outerContainerWidth;\n    }\n  }]);\n\n  return PDFSidebarResizer;\n}();\n\nexports.PDFSidebarResizer = PDFSidebarResizer;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFThumbnailViewer = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdf_thumbnail_view = __webpack_require__(28);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar THUMBNAIL_SCROLL_MARGIN = -19;\nvar THUMBNAIL_SELECTED_CLASS = 'selected';\n\nvar PDFThumbnailViewer = function () {\n  function PDFThumbnailViewer(_ref) {\n    var container = _ref.container,\n        linkService = _ref.linkService,\n        renderingQueue = _ref.renderingQueue,\n        _ref$l10n = _ref.l10n,\n        l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n;\n\n    _classCallCheck(this, PDFThumbnailViewer);\n\n    this.container = container;\n    this.linkService = linkService;\n    this.renderingQueue = renderingQueue;\n    this.l10n = l10n;\n    this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this));\n    this._resetView();\n  }\n\n  _createClass(PDFThumbnailViewer, [{\n    key: '_scrollUpdated',\n    value: function _scrollUpdated() {\n      this.renderingQueue.renderHighestPriority();\n    }\n  }, {\n    key: 'getThumbnail',\n    value: function getThumbnail(index) {\n      return this._thumbnails[index];\n    }\n  }, {\n    key: '_getVisibleThumbs',\n    value: function _getVisibleThumbs() {\n      return (0, _ui_utils.getVisibleElements)(this.container, this._thumbnails);\n    }\n  }, {\n    key: 'scrollThumbnailIntoView',\n    value: function scrollThumbnailIntoView(pageNumber) {\n      if (!this.pdfDocument) {\n        return;\n      }\n      var thumbnailView = this._thumbnails[pageNumber - 1];\n      if (!thumbnailView) {\n        console.error('scrollThumbnailIntoView: Invalid \"pageNumber\" parameter.');\n        return;\n      }\n      if (pageNumber !== this._currentPageNumber) {\n        var prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];\n        prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);\n        thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\n      }\n      var visibleThumbs = this._getVisibleThumbs();\n      var numVisibleThumbs = visibleThumbs.views.length;\n      if (numVisibleThumbs > 0) {\n        var first = visibleThumbs.first.id;\n        var last = numVisibleThumbs > 1 ? visibleThumbs.last.id : first;\n        var shouldScroll = false;\n        if (pageNumber <= first || pageNumber >= last) {\n          shouldScroll = true;\n        } else {\n          visibleThumbs.views.some(function (view) {\n            if (view.id !== pageNumber) {\n              return false;\n            }\n            shouldScroll = view.percent < 100;\n            return true;\n          });\n        }\n        if (shouldScroll) {\n          (0, _ui_utils.scrollIntoView)(thumbnailView.div, { top: THUMBNAIL_SCROLL_MARGIN });\n        }\n      }\n      this._currentPageNumber = pageNumber;\n    }\n  }, {\n    key: 'cleanup',\n    value: function cleanup() {\n      _pdf_thumbnail_view.PDFThumbnailView.cleanup();\n    }\n  }, {\n    key: '_resetView',\n    value: function _resetView() {\n      this._thumbnails = [];\n      this._currentPageNumber = 1;\n      this._pageLabels = null;\n      this._pagesRotation = 0;\n      this._pagesRequests = [];\n      this.container.textContent = '';\n    }\n  }, {\n    key: 'setDocument',\n    value: function setDocument(pdfDocument) {\n      var _this = this;\n\n      if (this.pdfDocument) {\n        this._cancelRendering();\n        this._resetView();\n      }\n      this.pdfDocument = pdfDocument;\n      if (!pdfDocument) {\n        return;\n      }\n      pdfDocument.getPage(1).then(function (firstPage) {\n        var pagesCount = pdfDocument.numPages;\n        var viewport = firstPage.getViewport(1.0);\n        for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n          var thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({\n            container: _this.container,\n            id: pageNum,\n            defaultViewport: viewport.clone(),\n            linkService: _this.linkService,\n            renderingQueue: _this.renderingQueue,\n            disableCanvasToImageConversion: false,\n            l10n: _this.l10n\n          });\n          _this._thumbnails.push(thumbnail);\n        }\n        var thumbnailView = _this._thumbnails[_this._currentPageNumber - 1];\n        thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\n      }).catch(function (reason) {\n        console.error('Unable to initialize thumbnail viewer', reason);\n      });\n    }\n  }, {\n    key: '_cancelRendering',\n    value: function _cancelRendering() {\n      for (var i = 0, ii = this._thumbnails.length; i < ii; i++) {\n        if (this._thumbnails[i]) {\n          this._thumbnails[i].cancelRendering();\n        }\n      }\n    }\n  }, {\n    key: 'setPageLabels',\n    value: function setPageLabels(labels) {\n      if (!this.pdfDocument) {\n        return;\n      }\n      if (!labels) {\n        this._pageLabels = null;\n      } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {\n        this._pageLabels = null;\n        console.error('PDFThumbnailViewer_setPageLabels: Invalid page labels.');\n      } else {\n        this._pageLabels = labels;\n      }\n      for (var i = 0, ii = this._thumbnails.length; i < ii; i++) {\n        var label = this._pageLabels && this._pageLabels[i];\n        this._thumbnails[i].setPageLabel(label);\n      }\n    }\n  }, {\n    key: '_ensurePdfPageLoaded',\n    value: function _ensurePdfPageLoaded(thumbView) {\n      var _this2 = this;\n\n      if (thumbView.pdfPage) {\n        return Promise.resolve(thumbView.pdfPage);\n      }\n      var pageNumber = thumbView.id;\n      if (this._pagesRequests[pageNumber]) {\n        return this._pagesRequests[pageNumber];\n      }\n      var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) {\n        thumbView.setPdfPage(pdfPage);\n        _this2._pagesRequests[pageNumber] = null;\n        return pdfPage;\n      }).catch(function (reason) {\n        console.error('Unable to get page for thumb view', reason);\n        _this2._pagesRequests[pageNumber] = null;\n      });\n      this._pagesRequests[pageNumber] = promise;\n      return promise;\n    }\n  }, {\n    key: 'forceRendering',\n    value: function forceRendering() {\n      var _this3 = this;\n\n      var visibleThumbs = this._getVisibleThumbs();\n      var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, this.scroll.down);\n      if (thumbView) {\n        this._ensurePdfPageLoaded(thumbView).then(function () {\n          _this3.renderingQueue.renderView(thumbView);\n        });\n        return true;\n      }\n      return false;\n    }\n  }, {\n    key: 'pagesRotation',\n    get: function get() {\n      return this._pagesRotation;\n    },\n    set: function set(rotation) {\n      if (!(0, _ui_utils.isValidRotation)(rotation)) {\n        throw new Error('Invalid thumbnails rotation angle.');\n      }\n      if (!this.pdfDocument) {\n        return;\n      }\n      if (this._pagesRotation === rotation) {\n        return;\n      }\n      this._pagesRotation = rotation;\n      for (var i = 0, ii = this._thumbnails.length; i < ii; i++) {\n        this._thumbnails[i].update(rotation);\n      }\n    }\n  }]);\n\n  return PDFThumbnailViewer;\n}();\n\nexports.PDFThumbnailViewer = PDFThumbnailViewer;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFThumbnailView = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _pdfjsLib = __webpack_require__(7);\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdf_rendering_queue = __webpack_require__(10);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MAX_NUM_SCALING_STEPS = 3;\nvar THUMBNAIL_CANVAS_BORDER_WIDTH = 1;\nvar THUMBNAIL_WIDTH = 98;\nvar TempImageFactory = function TempImageFactoryClosure() {\n  var tempCanvasCache = null;\n  return {\n    getCanvas: function getCanvas(width, height) {\n      var tempCanvas = tempCanvasCache;\n      if (!tempCanvas) {\n        tempCanvas = document.createElement('canvas');\n        tempCanvasCache = tempCanvas;\n      }\n      tempCanvas.width = width;\n      tempCanvas.height = height;\n      tempCanvas.mozOpaque = true;\n      var ctx = tempCanvas.getContext('2d', { alpha: false });\n      ctx.save();\n      ctx.fillStyle = 'rgb(255, 255, 255)';\n      ctx.fillRect(0, 0, width, height);\n      ctx.restore();\n      return tempCanvas;\n    },\n    destroyCanvas: function destroyCanvas() {\n      var tempCanvas = tempCanvasCache;\n      if (tempCanvas) {\n        tempCanvas.width = 0;\n        tempCanvas.height = 0;\n      }\n      tempCanvasCache = null;\n    }\n  };\n}();\n\nvar PDFThumbnailView = function () {\n  function PDFThumbnailView(_ref) {\n    var container = _ref.container,\n        id = _ref.id,\n        defaultViewport = _ref.defaultViewport,\n        linkService = _ref.linkService,\n        renderingQueue = _ref.renderingQueue,\n        _ref$disableCanvasToI = _ref.disableCanvasToImageConversion,\n        disableCanvasToImageConversion = _ref$disableCanvasToI === undefined ? false : _ref$disableCanvasToI,\n        _ref$l10n = _ref.l10n,\n        l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n;\n\n    _classCallCheck(this, PDFThumbnailView);\n\n    this.id = id;\n    this.renderingId = 'thumbnail' + id;\n    this.pageLabel = null;\n    this.pdfPage = null;\n    this.rotation = 0;\n    this.viewport = defaultViewport;\n    this.pdfPageRotate = defaultViewport.rotation;\n    this.linkService = linkService;\n    this.renderingQueue = renderingQueue;\n    this.renderTask = null;\n    this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;\n    this.resume = null;\n    this.disableCanvasToImageConversion = disableCanvasToImageConversion;\n    this.pageWidth = this.viewport.width;\n    this.pageHeight = this.viewport.height;\n    this.pageRatio = this.pageWidth / this.pageHeight;\n    this.canvasWidth = THUMBNAIL_WIDTH;\n    this.canvasHeight = this.canvasWidth / this.pageRatio | 0;\n    this.scale = this.canvasWidth / this.pageWidth;\n    this.l10n = l10n;\n    var anchor = document.createElement('a');\n    anchor.href = linkService.getAnchorUrl('#page=' + id);\n    this.l10n.get('thumb_page_title', { page: id }, 'Page {{page}}').then(function (msg) {\n      anchor.title = msg;\n    });\n    anchor.onclick = function () {\n      linkService.page = id;\n      return false;\n    };\n    this.anchor = anchor;\n    var div = document.createElement('div');\n    div.className = 'thumbnail';\n    div.setAttribute('data-page-number', this.id);\n    this.div = div;\n    var ring = document.createElement('div');\n    ring.className = 'thumbnailSelectionRing';\n    var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n    ring.style.width = this.canvasWidth + borderAdjustment + 'px';\n    ring.style.height = this.canvasHeight + borderAdjustment + 'px';\n    this.ring = ring;\n    div.appendChild(ring);\n    anchor.appendChild(div);\n    container.appendChild(anchor);\n  }\n\n  _createClass(PDFThumbnailView, [{\n    key: 'setPdfPage',\n    value: function setPdfPage(pdfPage) {\n      this.pdfPage = pdfPage;\n      this.pdfPageRotate = pdfPage.rotate;\n      var totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n      this.viewport = pdfPage.getViewport(1, totalRotation);\n      this.reset();\n    }\n  }, {\n    key: 'reset',\n    value: function reset() {\n      this.cancelRendering();\n      this.pageWidth = this.viewport.width;\n      this.pageHeight = this.viewport.height;\n      this.pageRatio = this.pageWidth / this.pageHeight;\n      this.canvasHeight = this.canvasWidth / this.pageRatio | 0;\n      this.scale = this.canvasWidth / this.pageWidth;\n      this.div.removeAttribute('data-loaded');\n      var ring = this.ring;\n      var childNodes = ring.childNodes;\n      for (var i = childNodes.length - 1; i >= 0; i--) {\n        ring.removeChild(childNodes[i]);\n      }\n      var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n      ring.style.width = this.canvasWidth + borderAdjustment + 'px';\n      ring.style.height = this.canvasHeight + borderAdjustment + 'px';\n      if (this.canvas) {\n        this.canvas.width = 0;\n        this.canvas.height = 0;\n        delete this.canvas;\n      }\n      if (this.image) {\n        this.image.removeAttribute('src');\n        delete this.image;\n      }\n    }\n  }, {\n    key: 'update',\n    value: function update(rotation) {\n      if (typeof rotation !== 'undefined') {\n        this.rotation = rotation;\n      }\n      var totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n      this.viewport = this.viewport.clone({\n        scale: 1,\n        rotation: totalRotation\n      });\n      this.reset();\n    }\n  }, {\n    key: 'cancelRendering',\n    value: function cancelRendering() {\n      if (this.renderTask) {\n        this.renderTask.cancel();\n        this.renderTask = null;\n      }\n      this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;\n      this.resume = null;\n    }\n  }, {\n    key: '_getPageDrawContext',\n    value: function _getPageDrawContext() {\n      var noCtxScale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      var canvas = document.createElement('canvas');\n      this.canvas = canvas;\n      canvas.mozOpaque = true;\n      var ctx = canvas.getContext('2d', { alpha: false });\n      var outputScale = (0, _ui_utils.getOutputScale)(ctx);\n      canvas.width = this.canvasWidth * outputScale.sx | 0;\n      canvas.height = this.canvasHeight * outputScale.sy | 0;\n      canvas.style.width = this.canvasWidth + 'px';\n      canvas.style.height = this.canvasHeight + 'px';\n      if (!noCtxScale && outputScale.scaled) {\n        ctx.scale(outputScale.sx, outputScale.sy);\n      }\n      return ctx;\n    }\n  }, {\n    key: '_convertCanvasToImage',\n    value: function _convertCanvasToImage() {\n      var _this = this;\n\n      if (!this.canvas) {\n        return;\n      }\n      if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {\n        return;\n      }\n      var id = this.renderingId;\n      var className = 'thumbnailImage';\n      if (this.disableCanvasToImageConversion) {\n        this.canvas.id = id;\n        this.canvas.className = className;\n        this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function (msg) {\n          _this.canvas.setAttribute('aria-label', msg);\n        });\n        this.div.setAttribute('data-loaded', true);\n        this.ring.appendChild(this.canvas);\n        return;\n      }\n      var image = document.createElement('img');\n      image.id = id;\n      image.className = className;\n      this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function (msg) {\n        image.setAttribute('aria-label', msg);\n      });\n      image.style.width = this.canvasWidth + 'px';\n      image.style.height = this.canvasHeight + 'px';\n      image.src = this.canvas.toDataURL();\n      this.image = image;\n      this.div.setAttribute('data-loaded', true);\n      this.ring.appendChild(image);\n      this.canvas.width = 0;\n      this.canvas.height = 0;\n      delete this.canvas;\n    }\n  }, {\n    key: 'draw',\n    value: function draw() {\n      var _this2 = this;\n\n      if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {\n        console.error('Must be in new state before drawing');\n        return Promise.resolve(undefined);\n      }\n      this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;\n      var renderCapability = (0, _pdfjsLib.createPromiseCapability)();\n      var finishRenderTask = function finishRenderTask(error) {\n        if (renderTask === _this2.renderTask) {\n          _this2.renderTask = null;\n        }\n        if (error instanceof _pdfjsLib.RenderingCancelledException) {\n          renderCapability.resolve(undefined);\n          return;\n        }\n        _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;\n        _this2._convertCanvasToImage();\n        if (!error) {\n          renderCapability.resolve(undefined);\n        } else {\n          renderCapability.reject(error);\n        }\n      };\n      var ctx = this._getPageDrawContext();\n      var drawViewport = this.viewport.clone({ scale: this.scale });\n      var renderContinueCallback = function renderContinueCallback(cont) {\n        if (!_this2.renderingQueue.isHighestPriority(_this2)) {\n          _this2.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED;\n          _this2.resume = function () {\n            _this2.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;\n            cont();\n          };\n          return;\n        }\n        cont();\n      };\n      var renderContext = {\n        canvasContext: ctx,\n        viewport: drawViewport\n      };\n      var renderTask = this.renderTask = this.pdfPage.render(renderContext);\n      renderTask.onContinue = renderContinueCallback;\n      renderTask.promise.then(function () {\n        finishRenderTask(null);\n      }, function (error) {\n        finishRenderTask(error);\n      });\n      return renderCapability.promise;\n    }\n  }, {\n    key: 'setImage',\n    value: function setImage(pageView) {\n      if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {\n        return;\n      }\n      var img = pageView.canvas;\n      if (!img) {\n        return;\n      }\n      if (!this.pdfPage) {\n        this.setPdfPage(pageView.pdfPage);\n      }\n      this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;\n      var ctx = this._getPageDrawContext(true);\n      var canvas = ctx.canvas;\n      if (img.width <= 2 * canvas.width) {\n        ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);\n        this._convertCanvasToImage();\n        return;\n      }\n      var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;\n      var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;\n      var reducedImage = TempImageFactory.getCanvas(reducedWidth, reducedHeight);\n      var reducedImageCtx = reducedImage.getContext('2d');\n      while (reducedWidth > img.width || reducedHeight > img.height) {\n        reducedWidth >>= 1;\n        reducedHeight >>= 1;\n      }\n      reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight);\n      while (reducedWidth > 2 * canvas.width) {\n        reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1);\n        reducedWidth >>= 1;\n        reducedHeight >>= 1;\n      }\n      ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height);\n      this._convertCanvasToImage();\n    }\n  }, {\n    key: 'setPageLabel',\n    value: function setPageLabel(label) {\n      var _this3 = this;\n\n      this.pageLabel = typeof label === 'string' ? label : null;\n      this.l10n.get('thumb_page_title', { page: this.pageId }, 'Page {{page}}').then(function (msg) {\n        _this3.anchor.title = msg;\n      });\n      if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {\n        return;\n      }\n      this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function (ariaLabel) {\n        if (_this3.image) {\n          _this3.image.setAttribute('aria-label', ariaLabel);\n        } else if (_this3.disableCanvasToImageConversion && _this3.canvas) {\n          _this3.canvas.setAttribute('aria-label', ariaLabel);\n        }\n      });\n    }\n  }, {\n    key: 'pageId',\n    get: function get() {\n      return this.pageLabel !== null ? this.pageLabel : this.id;\n    }\n  }], [{\n    key: 'cleanup',\n    value: function cleanup() {\n      TempImageFactory.destroyCanvas();\n    }\n  }]);\n\n  return PDFThumbnailView;\n}();\n\nexports.PDFThumbnailView = PDFThumbnailView;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFViewer = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _base_viewer = __webpack_require__(30);\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdfjsLib = __webpack_require__(7);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar PDFViewer = function (_BaseViewer) {\n  _inherits(PDFViewer, _BaseViewer);\n\n  function PDFViewer() {\n    _classCallCheck(this, PDFViewer);\n\n    return _possibleConstructorReturn(this, (PDFViewer.__proto__ || Object.getPrototypeOf(PDFViewer)).apply(this, arguments));\n  }\n\n  _createClass(PDFViewer, [{\n    key: '_scrollIntoView',\n    value: function _scrollIntoView(_ref) {\n      var pageDiv = _ref.pageDiv,\n          _ref$pageSpot = _ref.pageSpot,\n          pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot;\n\n      if (!pageSpot && !this.isInPresentationMode) {\n        var left = pageDiv.offsetLeft + pageDiv.clientLeft;\n        var right = left + pageDiv.clientWidth;\n        var _container = this.container,\n            scrollLeft = _container.scrollLeft,\n            clientWidth = _container.clientWidth;\n\n        if (this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL || left < scrollLeft || right > scrollLeft + clientWidth) {\n          pageSpot = {\n            left: 0,\n            top: 0\n          };\n        }\n      }\n      (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);\n    }\n  }, {\n    key: '_getVisiblePages',\n    value: function _getVisiblePages() {\n      if (!this.isInPresentationMode) {\n        return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true, this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL);\n      }\n      var currentPage = this._pages[this._currentPageNumber - 1];\n      var visible = [{\n        id: currentPage.id,\n        view: currentPage\n      }];\n      return {\n        first: currentPage,\n        last: currentPage,\n        views: visible\n      };\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var visible = this._getVisiblePages();\n      var visiblePages = visible.views,\n          numVisiblePages = visiblePages.length;\n      if (numVisiblePages === 0) {\n        return;\n      }\n      this._resizeBuffer(numVisiblePages, visiblePages);\n      this.renderingQueue.renderHighestPriority(visible);\n      var currentId = this._currentPageNumber;\n      var stillFullyVisible = false;\n      for (var i = 0; i < numVisiblePages; ++i) {\n        var page = visiblePages[i];\n        if (page.percent < 100) {\n          break;\n        }\n        if (page.id === currentId) {\n          stillFullyVisible = true;\n          break;\n        }\n      }\n      if (!stillFullyVisible) {\n        currentId = visiblePages[0].id;\n      }\n      if (!this.isInPresentationMode) {\n        this._setCurrentPageNumber(currentId);\n      }\n      this._updateLocation(visible.first);\n      this.eventBus.dispatch('updateviewarea', {\n        source: this,\n        location: this._location\n      });\n    }\n  }, {\n    key: '_setDocumentViewerElement',\n    get: function get() {\n      return (0, _pdfjsLib.shadow)(this, '_setDocumentViewerElement', this.viewer);\n    }\n  }, {\n    key: '_isScrollModeHorizontal',\n    get: function get() {\n      return this.isInPresentationMode ? false : this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL;\n    }\n  }]);\n\n  return PDFViewer;\n}(_base_viewer.BaseViewer);\n\nexports.PDFViewer = PDFViewer;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SpreadMode = exports.ScrollMode = exports.BaseViewer = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdf_rendering_queue = __webpack_require__(10);\n\nvar _annotation_layer_builder = __webpack_require__(31);\n\nvar _pdfjsLib = __webpack_require__(7);\n\nvar _dom_events = __webpack_require__(14);\n\nvar _pdf_page_view = __webpack_require__(32);\n\nvar _pdf_link_service = __webpack_require__(23);\n\nvar _text_layer_builder = __webpack_require__(33);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DEFAULT_CACHE_SIZE = 10;\nvar ScrollMode = {\n  VERTICAL: 0,\n  HORIZONTAL: 1,\n  WRAPPED: 2\n};\nvar SpreadMode = {\n  NONE: 0,\n  ODD: 1,\n  EVEN: 2\n};\nfunction PDFPageViewBuffer(size) {\n  var data = [];\n  this.push = function (view) {\n    var i = data.indexOf(view);\n    if (i >= 0) {\n      data.splice(i, 1);\n    }\n    data.push(view);\n    if (data.length > size) {\n      data.shift().destroy();\n    }\n  };\n  this.resize = function (newSize, pagesToKeep) {\n    size = newSize;\n    if (pagesToKeep) {\n      var pageIdsToKeep = new Set();\n      for (var i = 0, iMax = pagesToKeep.length; i < iMax; ++i) {\n        pageIdsToKeep.add(pagesToKeep[i].id);\n      }\n      (0, _ui_utils.moveToEndOfArray)(data, function (page) {\n        return pageIdsToKeep.has(page.id);\n      });\n    }\n    while (data.length > size) {\n      data.shift().destroy();\n    }\n  };\n}\nfunction isSameScale(oldScale, newScale) {\n  if (newScale === oldScale) {\n    return true;\n  }\n  if (Math.abs(newScale - oldScale) < 1e-15) {\n    return true;\n  }\n  return false;\n}\n\nvar BaseViewer = function () {\n  function BaseViewer(options) {\n    var _this = this;\n\n    _classCallCheck(this, BaseViewer);\n\n    if (this.constructor === BaseViewer) {\n      throw new Error('Cannot initialize BaseViewer.');\n    }\n    this._name = this.constructor.name;\n    this.container = options.container;\n    this.viewer = options.viewer || options.container.firstElementChild;\n    this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)();\n    this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService();\n    this.downloadManager = options.downloadManager || null;\n    this.findController = options.findController || null;\n    this.removePageBorders = options.removePageBorders || false;\n    this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE;\n    this.imageResourcesPath = options.imageResourcesPath || '';\n    this.renderInteractiveForms = options.renderInteractiveForms || false;\n    this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;\n    this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;\n    this.enableWebGL = options.enableWebGL || false;\n    this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n    this.maxCanvasPixels = options.maxCanvasPixels;\n    this.l10n = options.l10n || _ui_utils.NullL10n;\n    this.defaultRenderingQueue = !options.renderingQueue;\n    if (this.defaultRenderingQueue) {\n      this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();\n      this.renderingQueue.setViewer(this);\n    } else {\n      this.renderingQueue = options.renderingQueue;\n    }\n    this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this));\n    this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN;\n    this._resetView();\n    if (this.removePageBorders) {\n      this.viewer.classList.add('removePageBorders');\n    }\n    Promise.resolve().then(function () {\n      _this.eventBus.dispatch('baseviewerinit', { source: _this });\n    });\n  }\n\n  _createClass(BaseViewer, [{\n    key: 'getPageView',\n    value: function getPageView(index) {\n      return this._pages[index];\n    }\n  }, {\n    key: '_setCurrentPageNumber',\n    value: function _setCurrentPageNumber(val) {\n      var resetCurrentPageView = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (this._currentPageNumber === val) {\n        if (resetCurrentPageView) {\n          this._resetCurrentPageView();\n        }\n        return;\n      }\n      if (!(0 < val && val <= this.pagesCount)) {\n        console.error(this._name + '._setCurrentPageNumber: \"' + val + '\" is out of bounds.');\n        return;\n      }\n      var arg = {\n        source: this,\n        pageNumber: val,\n        pageLabel: this._pageLabels && this._pageLabels[val - 1]\n      };\n      this._currentPageNumber = val;\n      this.eventBus.dispatch('pagechanging', arg);\n      this.eventBus.dispatch('pagechange', arg);\n      if (resetCurrentPageView) {\n        this._resetCurrentPageView();\n      }\n    }\n  }, {\n    key: 'setDocument',\n    value: function setDocument(pdfDocument) {\n      var _this2 = this;\n\n      if (this.pdfDocument) {\n        this._cancelRendering();\n        this._resetView();\n        if (this.findController) {\n          this.findController.setDocument(null);\n        }\n      }\n      this.pdfDocument = pdfDocument;\n      if (!pdfDocument) {\n        return;\n      }\n      var pagesCount = pdfDocument.numPages;\n      var pagesCapability = (0, _pdfjsLib.createPromiseCapability)();\n      this.pagesPromise = pagesCapability.promise;\n      pagesCapability.promise.then(function () {\n        _this2._pageViewsReady = true;\n        _this2.eventBus.dispatch('pagesloaded', {\n          source: _this2,\n          pagesCount: pagesCount\n        });\n      });\n      var isOnePageRenderedResolved = false;\n      var onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)();\n      this.onePageRendered = onePageRenderedCapability.promise;\n      var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) {\n        pageView.onBeforeDraw = function () {\n          _this2._buffer.push(pageView);\n        };\n        pageView.onAfterDraw = function () {\n          if (!isOnePageRenderedResolved) {\n            isOnePageRenderedResolved = true;\n            onePageRenderedCapability.resolve();\n          }\n        };\n      };\n      var firstPagePromise = pdfDocument.getPage(1);\n      this.firstPagePromise = firstPagePromise;\n      firstPagePromise.then(function (pdfPage) {\n        var scale = _this2.currentScale;\n        var viewport = pdfPage.getViewport(scale * _ui_utils.CSS_UNITS);\n        for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n          var textLayerFactory = null;\n          if (_this2.textLayerMode !== _ui_utils.TextLayerMode.DISABLE) {\n            textLayerFactory = _this2;\n          }\n          var pageView = new _pdf_page_view.PDFPageView({\n            container: _this2._setDocumentViewerElement,\n            eventBus: _this2.eventBus,\n            id: pageNum,\n            scale: scale,\n            defaultViewport: viewport.clone(),\n            renderingQueue: _this2.renderingQueue,\n            textLayerFactory: textLayerFactory,\n            textLayerMode: _this2.textLayerMode,\n            annotationLayerFactory: _this2,\n            imageResourcesPath: _this2.imageResourcesPath,\n            renderInteractiveForms: _this2.renderInteractiveForms,\n            renderer: _this2.renderer,\n            enableWebGL: _this2.enableWebGL,\n            useOnlyCssZoom: _this2.useOnlyCssZoom,\n            maxCanvasPixels: _this2.maxCanvasPixels,\n            l10n: _this2.l10n\n          });\n          bindOnAfterAndBeforeDraw(pageView);\n          _this2._pages.push(pageView);\n        }\n        if (_this2._spreadMode !== SpreadMode.NONE) {\n          _this2._updateSpreadMode();\n        }\n        onePageRenderedCapability.promise.then(function () {\n          if (pdfDocument.loadingParams['disableAutoFetch']) {\n            pagesCapability.resolve();\n            return;\n          }\n          var getPagesLeft = pagesCount;\n\n          var _loop = function _loop(_pageNum) {\n            pdfDocument.getPage(_pageNum).then(function (pdfPage) {\n              var pageView = _this2._pages[_pageNum - 1];\n              if (!pageView.pdfPage) {\n                pageView.setPdfPage(pdfPage);\n              }\n              _this2.linkService.cachePageRef(_pageNum, pdfPage.ref);\n              if (--getPagesLeft === 0) {\n                pagesCapability.resolve();\n              }\n            }, function (reason) {\n              console.error('Unable to get page ' + _pageNum + ' to initialize viewer', reason);\n              if (--getPagesLeft === 0) {\n                pagesCapability.resolve();\n              }\n            });\n          };\n\n          for (var _pageNum = 1; _pageNum <= pagesCount; ++_pageNum) {\n            _loop(_pageNum);\n          }\n        });\n        _this2.eventBus.dispatch('pagesinit', { source: _this2 });\n        if (_this2.findController) {\n          _this2.findController.setDocument(pdfDocument);\n        }\n        if (_this2.defaultRenderingQueue) {\n          _this2.update();\n        }\n      }).catch(function (reason) {\n        console.error('Unable to initialize viewer', reason);\n      });\n    }\n  }, {\n    key: 'setPageLabels',\n    value: function setPageLabels(labels) {\n      if (!this.pdfDocument) {\n        return;\n      }\n      if (!labels) {\n        this._pageLabels = null;\n      } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {\n        this._pageLabels = null;\n        console.error(this._name + '.setPageLabels: Invalid page labels.');\n      } else {\n        this._pageLabels = labels;\n      }\n      for (var i = 0, ii = this._pages.length; i < ii; i++) {\n        var pageView = this._pages[i];\n        var label = this._pageLabels && this._pageLabels[i];\n        pageView.setPageLabel(label);\n      }\n    }\n  }, {\n    key: '_resetView',\n    value: function _resetView() {\n      this._pages = [];\n      this._currentPageNumber = 1;\n      this._currentScale = _ui_utils.UNKNOWN_SCALE;\n      this._currentScaleValue = null;\n      this._pageLabels = null;\n      this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);\n      this._location = null;\n      this._pagesRotation = 0;\n      this._pagesRequests = [];\n      this._pageViewsReady = false;\n      this._scrollMode = ScrollMode.VERTICAL;\n      this._spreadMode = SpreadMode.NONE;\n      this.viewer.textContent = '';\n      this._updateScrollMode();\n    }\n  }, {\n    key: '_scrollUpdate',\n    value: function _scrollUpdate() {\n      if (this.pagesCount === 0) {\n        return;\n      }\n      this.update();\n    }\n  }, {\n    key: '_scrollIntoView',\n    value: function _scrollIntoView(_ref) {\n      var pageDiv = _ref.pageDiv,\n          _ref$pageSpot = _ref.pageSpot,\n          pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot,\n          _ref$pageNumber = _ref.pageNumber,\n          pageNumber = _ref$pageNumber === undefined ? null : _ref$pageNumber;\n\n      throw new Error('Not implemented: _scrollIntoView');\n    }\n  }, {\n    key: '_setScaleDispatchEvent',\n    value: function _setScaleDispatchEvent(newScale, newValue) {\n      var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      var arg = {\n        source: this,\n        scale: newScale,\n        presetValue: preset ? newValue : undefined\n      };\n      this.eventBus.dispatch('scalechanging', arg);\n      this.eventBus.dispatch('scalechange', arg);\n    }\n  }, {\n    key: '_setScaleUpdatePages',\n    value: function _setScaleUpdatePages(newScale, newValue) {\n      var noScroll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var preset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n      this._currentScaleValue = newValue.toString();\n      if (isSameScale(this._currentScale, newScale)) {\n        if (preset) {\n          this._setScaleDispatchEvent(newScale, newValue, true);\n        }\n        return;\n      }\n      for (var i = 0, ii = this._pages.length; i < ii; i++) {\n        this._pages[i].update(newScale);\n      }\n      this._currentScale = newScale;\n      if (!noScroll) {\n        var page = this._currentPageNumber,\n            dest = void 0;\n        if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) {\n          page = this._location.pageNumber;\n          dest = [null, { name: 'XYZ' }, this._location.left, this._location.top, null];\n        }\n        this.scrollPageIntoView({\n          pageNumber: page,\n          destArray: dest,\n          allowNegativeOffset: true\n        });\n      }\n      this._setScaleDispatchEvent(newScale, newValue, preset);\n      if (this.defaultRenderingQueue) {\n        this.update();\n      }\n    }\n  }, {\n    key: '_setScale',\n    value: function _setScale(value) {\n      var noScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var scale = parseFloat(value);\n      if (scale > 0) {\n        this._setScaleUpdatePages(scale, value, noScroll, false);\n      } else {\n        var currentPage = this._pages[this._currentPageNumber - 1];\n        if (!currentPage) {\n          return;\n        }\n        var noPadding = this.isInPresentationMode || this.removePageBorders;\n        var hPadding = noPadding ? 0 : _ui_utils.SCROLLBAR_PADDING;\n        var vPadding = noPadding ? 0 : _ui_utils.VERTICAL_PADDING;\n        if (!noPadding && this._isScrollModeHorizontal) {\n          var _ref2 = [vPadding, hPadding];\n          hPadding = _ref2[0];\n          vPadding = _ref2[1];\n        }\n        var pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale;\n        var pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale;\n        switch (value) {\n          case 'page-actual':\n            scale = 1;\n            break;\n          case 'page-width':\n            scale = pageWidthScale;\n            break;\n          case 'page-height':\n            scale = pageHeightScale;\n            break;\n          case 'page-fit':\n            scale = Math.min(pageWidthScale, pageHeightScale);\n            break;\n          case 'auto':\n            var horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale);\n            scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale);\n            break;\n          default:\n            console.error(this._name + '._setScale: \"' + value + '\" is an unknown zoom value.');\n            return;\n        }\n        this._setScaleUpdatePages(scale, value, noScroll, true);\n      }\n    }\n  }, {\n    key: '_resetCurrentPageView',\n    value: function _resetCurrentPageView() {\n      if (this.isInPresentationMode) {\n        this._setScale(this._currentScaleValue, true);\n      }\n      var pageView = this._pages[this._currentPageNumber - 1];\n      this._scrollIntoView({ pageDiv: pageView.div });\n    }\n  }, {\n    key: 'scrollPageIntoView',\n    value: function scrollPageIntoView(params) {\n      if (!this.pdfDocument) {\n        return;\n      }\n      var pageNumber = params.pageNumber || 0;\n      var dest = params.destArray || null;\n      var allowNegativeOffset = params.allowNegativeOffset || false;\n      if (this.isInPresentationMode || !dest) {\n        this._setCurrentPageNumber(pageNumber, true);\n        return;\n      }\n      var pageView = this._pages[pageNumber - 1];\n      if (!pageView) {\n        console.error(this._name + '.scrollPageIntoView: Invalid \"pageNumber\" parameter.');\n        return;\n      }\n      var x = 0,\n          y = 0;\n      var width = 0,\n          height = 0,\n          widthScale = void 0,\n          heightScale = void 0;\n      var changeOrientation = pageView.rotation % 180 === 0 ? false : true;\n      var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS;\n      var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS;\n      var scale = 0;\n      switch (dest[1].name) {\n        case 'XYZ':\n          x = dest[2];\n          y = dest[3];\n          scale = dest[4];\n          x = x !== null ? x : 0;\n          y = y !== null ? y : pageHeight;\n          break;\n        case 'Fit':\n        case 'FitB':\n          scale = 'page-fit';\n          break;\n        case 'FitH':\n        case 'FitBH':\n          y = dest[2];\n          scale = 'page-width';\n          if (y === null && this._location) {\n            x = this._location.left;\n            y = this._location.top;\n          }\n          break;\n        case 'FitV':\n        case 'FitBV':\n          x = dest[2];\n          width = pageWidth;\n          height = pageHeight;\n          scale = 'page-height';\n          break;\n        case 'FitR':\n          x = dest[2];\n          y = dest[3];\n          width = dest[4] - x;\n          height = dest[5] - y;\n          var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING;\n          var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING;\n          widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS;\n          heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS;\n          scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));\n          break;\n        default:\n          console.error(this._name + '.scrollPageIntoView: \"' + dest[1].name + '\" ' + 'is not a valid destination type.');\n          return;\n      }\n      if (scale && scale !== this._currentScale) {\n        this.currentScaleValue = scale;\n      } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) {\n        this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;\n      }\n      if (scale === 'page-fit' && !dest[4]) {\n        this._scrollIntoView({\n          pageDiv: pageView.div,\n          pageNumber: pageNumber\n        });\n        return;\n      }\n      var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)];\n      var left = Math.min(boundingRect[0][0], boundingRect[1][0]);\n      var top = Math.min(boundingRect[0][1], boundingRect[1][1]);\n      if (!allowNegativeOffset) {\n        left = Math.max(left, 0);\n        top = Math.max(top, 0);\n      }\n      this._scrollIntoView({\n        pageDiv: pageView.div,\n        pageSpot: {\n          left: left,\n          top: top\n        },\n        pageNumber: pageNumber\n      });\n    }\n  }, {\n    key: '_resizeBuffer',\n    value: function _resizeBuffer(numVisiblePages, visiblePages) {\n      var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);\n      this._buffer.resize(suggestedCacheSize, visiblePages);\n    }\n  }, {\n    key: '_updateLocation',\n    value: function _updateLocation(firstPage) {\n      var currentScale = this._currentScale;\n      var currentScaleValue = this._currentScaleValue;\n      var normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue;\n      var pageNumber = firstPage.id;\n      var pdfOpenParams = '#page=' + pageNumber;\n      pdfOpenParams += '&zoom=' + normalizedScaleValue;\n      var currentPageView = this._pages[pageNumber - 1];\n      var container = this.container;\n      var topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y);\n      var intLeft = Math.round(topLeft[0]);\n      var intTop = Math.round(topLeft[1]);\n      pdfOpenParams += ',' + intLeft + ',' + intTop;\n      this._location = {\n        pageNumber: pageNumber,\n        scale: normalizedScaleValue,\n        top: intTop,\n        left: intLeft,\n        rotation: this._pagesRotation,\n        pdfOpenParams: pdfOpenParams\n      };\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      throw new Error('Not implemented: update');\n    }\n  }, {\n    key: 'containsElement',\n    value: function containsElement(element) {\n      return this.container.contains(element);\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      this.container.focus();\n    }\n  }, {\n    key: '_getVisiblePages',\n    value: function _getVisiblePages() {\n      throw new Error('Not implemented: _getVisiblePages');\n    }\n  }, {\n    key: 'cleanup',\n    value: function cleanup() {\n      for (var i = 0, ii = this._pages.length; i < ii; i++) {\n        if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {\n          this._pages[i].reset();\n        }\n      }\n    }\n  }, {\n    key: '_cancelRendering',\n    value: function _cancelRendering() {\n      for (var i = 0, ii = this._pages.length; i < ii; i++) {\n        if (this._pages[i]) {\n          this._pages[i].cancelRendering();\n        }\n      }\n    }\n  }, {\n    key: '_ensurePdfPageLoaded',\n    value: function _ensurePdfPageLoaded(pageView) {\n      var _this3 = this;\n\n      if (pageView.pdfPage) {\n        return Promise.resolve(pageView.pdfPage);\n      }\n      var pageNumber = pageView.id;\n      if (this._pagesRequests[pageNumber]) {\n        return this._pagesRequests[pageNumber];\n      }\n      var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) {\n        if (!pageView.pdfPage) {\n          pageView.setPdfPage(pdfPage);\n        }\n        _this3._pagesRequests[pageNumber] = null;\n        return pdfPage;\n      }).catch(function (reason) {\n        console.error('Unable to get page for page view', reason);\n        _this3._pagesRequests[pageNumber] = null;\n      });\n      this._pagesRequests[pageNumber] = promise;\n      return promise;\n    }\n  }, {\n    key: 'forceRendering',\n    value: function forceRendering(currentlyVisiblePages) {\n      var _this4 = this;\n\n      var visiblePages = currentlyVisiblePages || this._getVisiblePages();\n      var scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down;\n      var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead);\n      if (pageView) {\n        this._ensurePdfPageLoaded(pageView).then(function () {\n          _this4.renderingQueue.renderView(pageView);\n        });\n        return true;\n      }\n      return false;\n    }\n  }, {\n    key: 'createTextLayerBuilder',\n    value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) {\n      var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n      return new _text_layer_builder.TextLayerBuilder({\n        textLayerDiv: textLayerDiv,\n        eventBus: this.eventBus,\n        pageIndex: pageIndex,\n        viewport: viewport,\n        findController: this.isInPresentationMode ? null : this.findController,\n        enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection\n      });\n    }\n  }, {\n    key: 'createAnnotationLayerBuilder',\n    value: function createAnnotationLayerBuilder(pageDiv, pdfPage) {\n      var imageResourcesPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n      var renderInteractiveForms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n      var l10n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _ui_utils.NullL10n;\n\n      return new _annotation_layer_builder.AnnotationLayerBuilder({\n        pageDiv: pageDiv,\n        pdfPage: pdfPage,\n        imageResourcesPath: imageResourcesPath,\n        renderInteractiveForms: renderInteractiveForms,\n        linkService: this.linkService,\n        downloadManager: this.downloadManager,\n        l10n: l10n\n      });\n    }\n  }, {\n    key: 'getPagesOverview',\n    value: function getPagesOverview() {\n      var pagesOverview = this._pages.map(function (pageView) {\n        var viewport = pageView.pdfPage.getViewport(1);\n        return {\n          width: viewport.width,\n          height: viewport.height,\n          rotation: viewport.rotation\n        };\n      });\n      if (!this.enablePrintAutoRotate) {\n        return pagesOverview;\n      }\n      var isFirstPagePortrait = (0, _ui_utils.isPortraitOrientation)(pagesOverview[0]);\n      return pagesOverview.map(function (size) {\n        if (isFirstPagePortrait === (0, _ui_utils.isPortraitOrientation)(size)) {\n          return size;\n        }\n        return {\n          width: size.height,\n          height: size.width,\n          rotation: (size.rotation + 90) % 360\n        };\n      });\n    }\n  }, {\n    key: '_updateScrollMode',\n    value: function _updateScrollMode() {\n      var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      var scrollMode = this._scrollMode,\n          viewer = this.viewer;\n      viewer.classList.toggle('scrollHorizontal', scrollMode === ScrollMode.HORIZONTAL);\n      viewer.classList.toggle('scrollWrapped', scrollMode === ScrollMode.WRAPPED);\n      if (!this.pdfDocument || !pageNumber) {\n        return;\n      }\n      if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\n        this._setScale(this._currentScaleValue, true);\n      }\n      this.scrollPageIntoView({ pageNumber: pageNumber });\n      this.update();\n    }\n  }, {\n    key: '_updateSpreadMode',\n    value: function _updateSpreadMode() {\n      var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      if (!this.pdfDocument) {\n        return;\n      }\n      var viewer = this.viewer,\n          pages = this._pages;\n      viewer.textContent = '';\n      if (this._spreadMode === SpreadMode.NONE) {\n        for (var i = 0, iMax = pages.length; i < iMax; ++i) {\n          viewer.appendChild(pages[i].div);\n        }\n      } else {\n        var parity = this._spreadMode - 1;\n        var spread = null;\n        for (var _i = 0, _iMax = pages.length; _i < _iMax; ++_i) {\n          if (spread === null) {\n            spread = document.createElement('div');\n            spread.className = 'spread';\n            viewer.appendChild(spread);\n          } else if (_i % 2 === parity) {\n            spread = spread.cloneNode(false);\n            viewer.appendChild(spread);\n          }\n          spread.appendChild(pages[_i].div);\n        }\n      }\n      if (!pageNumber) {\n        return;\n      }\n      this.scrollPageIntoView({ pageNumber: pageNumber });\n      this.update();\n    }\n  }, {\n    key: 'pagesCount',\n    get: function get() {\n      return this._pages.length;\n    }\n  }, {\n    key: 'pageViewsReady',\n    get: function get() {\n      return this._pageViewsReady;\n    }\n  }, {\n    key: 'currentPageNumber',\n    get: function get() {\n      return this._currentPageNumber;\n    },\n    set: function set(val) {\n      if (!Number.isInteger(val)) {\n        throw new Error('Invalid page number.');\n      }\n      if (!this.pdfDocument) {\n        return;\n      }\n      this._setCurrentPageNumber(val, true);\n    }\n  }, {\n    key: 'currentPageLabel',\n    get: function get() {\n      return this._pageLabels && this._pageLabels[this._currentPageNumber - 1];\n    },\n    set: function set(val) {\n      var pageNumber = val | 0;\n      if (this._pageLabels) {\n        var i = this._pageLabels.indexOf(val);\n        if (i >= 0) {\n          pageNumber = i + 1;\n        }\n      }\n      this.currentPageNumber = pageNumber;\n    }\n  }, {\n    key: 'currentScale',\n    get: function get() {\n      return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE;\n    },\n    set: function set(val) {\n      if (isNaN(val)) {\n        throw new Error('Invalid numeric scale');\n      }\n      if (!this.pdfDocument) {\n        return;\n      }\n      this._setScale(val, false);\n    }\n  }, {\n    key: 'currentScaleValue',\n    get: function get() {\n      return this._currentScaleValue;\n    },\n    set: function set(val) {\n      if (!this.pdfDocument) {\n        return;\n      }\n      this._setScale(val, false);\n    }\n  }, {\n    key: 'pagesRotation',\n    get: function get() {\n      return this._pagesRotation;\n    },\n    set: function set(rotation) {\n      if (!(0, _ui_utils.isValidRotation)(rotation)) {\n        throw new Error('Invalid pages rotation angle.');\n      }\n      if (!this.pdfDocument) {\n        return;\n      }\n      if (this._pagesRotation === rotation) {\n        return;\n      }\n      this._pagesRotation = rotation;\n      var pageNumber = this._currentPageNumber;\n      for (var i = 0, ii = this._pages.length; i < ii; i++) {\n        var pageView = this._pages[i];\n        pageView.update(pageView.scale, rotation);\n      }\n      if (this._currentScaleValue) {\n        this._setScale(this._currentScaleValue, true);\n      }\n      this.eventBus.dispatch('rotationchanging', {\n        source: this,\n        pagesRotation: rotation,\n        pageNumber: pageNumber\n      });\n      if (this.defaultRenderingQueue) {\n        this.update();\n      }\n    }\n  }, {\n    key: '_setDocumentViewerElement',\n    get: function get() {\n      throw new Error('Not implemented: _setDocumentViewerElement');\n    }\n  }, {\n    key: '_isScrollModeHorizontal',\n    get: function get() {\n      throw new Error('Not implemented: _isScrollModeHorizontal');\n    }\n  }, {\n    key: 'isInPresentationMode',\n    get: function get() {\n      return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN;\n    }\n  }, {\n    key: 'isChangingPresentationMode',\n    get: function get() {\n      return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING;\n    }\n  }, {\n    key: 'isHorizontalScrollbarEnabled',\n    get: function get() {\n      return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth;\n    }\n  }, {\n    key: 'isVerticalScrollbarEnabled',\n    get: function get() {\n      return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight;\n    }\n  }, {\n    key: 'hasEqualPageSizes',\n    get: function get() {\n      var firstPageView = this._pages[0];\n      for (var i = 1, ii = this._pages.length; i < ii; ++i) {\n        var pageView = this._pages[i];\n        if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }, {\n    key: 'scrollMode',\n    get: function get() {\n      return this._scrollMode;\n    },\n    set: function set(mode) {\n      if (this._scrollMode === mode) {\n        return;\n      }\n      if (!Number.isInteger(mode) || !Object.values(ScrollMode).includes(mode)) {\n        throw new Error('Invalid scroll mode: ' + mode);\n      }\n      this._scrollMode = mode;\n      this.eventBus.dispatch('scrollmodechanged', {\n        source: this,\n        mode: mode\n      });\n      this._updateScrollMode(this._currentPageNumber);\n    }\n  }, {\n    key: 'spreadMode',\n    get: function get() {\n      return this._spreadMode;\n    },\n    set: function set(mode) {\n      if (this._spreadMode === mode) {\n        return;\n      }\n      if (!Number.isInteger(mode) || !Object.values(SpreadMode).includes(mode)) {\n        throw new Error('Invalid spread mode: ' + mode);\n      }\n      this._spreadMode = mode;\n      this.eventBus.dispatch('spreadmodechanged', {\n        source: this,\n        mode: mode\n      });\n      this._updateSpreadMode(this._currentPageNumber);\n    }\n  }]);\n\n  return BaseViewer;\n}();\n\nexports.BaseViewer = BaseViewer;\nexports.ScrollMode = ScrollMode;\nexports.SpreadMode = SpreadMode;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _pdfjsLib = __webpack_require__(7);\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdf_link_service = __webpack_require__(23);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AnnotationLayerBuilder = function () {\n  function AnnotationLayerBuilder(_ref) {\n    var pageDiv = _ref.pageDiv,\n        pdfPage = _ref.pdfPage,\n        linkService = _ref.linkService,\n        downloadManager = _ref.downloadManager,\n        _ref$imageResourcesPa = _ref.imageResourcesPath,\n        imageResourcesPath = _ref$imageResourcesPa === undefined ? '' : _ref$imageResourcesPa,\n        _ref$renderInteractiv = _ref.renderInteractiveForms,\n        renderInteractiveForms = _ref$renderInteractiv === undefined ? false : _ref$renderInteractiv,\n        _ref$l10n = _ref.l10n,\n        l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n;\n\n    _classCallCheck(this, AnnotationLayerBuilder);\n\n    this.pageDiv = pageDiv;\n    this.pdfPage = pdfPage;\n    this.linkService = linkService;\n    this.downloadManager = downloadManager;\n    this.imageResourcesPath = imageResourcesPath;\n    this.renderInteractiveForms = renderInteractiveForms;\n    this.l10n = l10n;\n    this.div = null;\n    this._cancelled = false;\n  }\n\n  _createClass(AnnotationLayerBuilder, [{\n    key: 'render',\n    value: function render(viewport) {\n      var _this = this;\n\n      var intent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'display';\n\n      this.pdfPage.getAnnotations({ intent: intent }).then(function (annotations) {\n        if (_this._cancelled) {\n          return;\n        }\n        var parameters = {\n          viewport: viewport.clone({ dontFlip: true }),\n          div: _this.div,\n          annotations: annotations,\n          page: _this.pdfPage,\n          imageResourcesPath: _this.imageResourcesPath,\n          renderInteractiveForms: _this.renderInteractiveForms,\n          linkService: _this.linkService,\n          downloadManager: _this.downloadManager\n        };\n        if (_this.div) {\n          _pdfjsLib.AnnotationLayer.update(parameters);\n        } else {\n          if (annotations.length === 0) {\n            return;\n          }\n          _this.div = document.createElement('div');\n          _this.div.className = 'annotationLayer';\n          _this.pageDiv.appendChild(_this.div);\n          parameters.div = _this.div;\n          _pdfjsLib.AnnotationLayer.render(parameters);\n          _this.l10n.translate(_this.div);\n        }\n      });\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      this._cancelled = true;\n    }\n  }, {\n    key: 'hide',\n    value: function hide() {\n      if (!this.div) {\n        return;\n      }\n      this.div.setAttribute('hidden', 'true');\n    }\n  }]);\n\n  return AnnotationLayerBuilder;\n}();\n\nvar DefaultAnnotationLayerFactory = function () {\n  function DefaultAnnotationLayerFactory() {\n    _classCallCheck(this, DefaultAnnotationLayerFactory);\n  }\n\n  _createClass(DefaultAnnotationLayerFactory, [{\n    key: 'createAnnotationLayerBuilder',\n    value: function createAnnotationLayerBuilder(pageDiv, pdfPage) {\n      var imageResourcesPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n      var renderInteractiveForms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n      var l10n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _ui_utils.NullL10n;\n\n      return new AnnotationLayerBuilder({\n        pageDiv: pageDiv,\n        pdfPage: pdfPage,\n        imageResourcesPath: imageResourcesPath,\n        renderInteractiveForms: renderInteractiveForms,\n        linkService: new _pdf_link_service.SimpleLinkService(),\n        l10n: l10n\n      });\n    }\n  }]);\n\n  return DefaultAnnotationLayerFactory;\n}();\n\nexports.AnnotationLayerBuilder = AnnotationLayerBuilder;\nexports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFPageView = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdfjsLib = __webpack_require__(7);\n\nvar _dom_events = __webpack_require__(14);\n\nvar _pdf_rendering_queue = __webpack_require__(10);\n\nvar _viewer_compatibility = __webpack_require__(13);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MAX_CANVAS_PIXELS = _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216;\n\nvar PDFPageView = function () {\n  function PDFPageView(options) {\n    _classCallCheck(this, PDFPageView);\n\n    var container = options.container;\n    var defaultViewport = options.defaultViewport;\n    this.id = options.id;\n    this.renderingId = 'page' + this.id;\n    this.pdfPage = null;\n    this.pageLabel = null;\n    this.rotation = 0;\n    this.scale = options.scale || _ui_utils.DEFAULT_SCALE;\n    this.viewport = defaultViewport;\n    this.pdfPageRotate = defaultViewport.rotation;\n    this.hasRestrictedScaling = false;\n    this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE;\n    this.imageResourcesPath = options.imageResourcesPath || '';\n    this.renderInteractiveForms = options.renderInteractiveForms || false;\n    this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n    this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;\n    this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)();\n    this.renderingQueue = options.renderingQueue;\n    this.textLayerFactory = options.textLayerFactory;\n    this.annotationLayerFactory = options.annotationLayerFactory;\n    this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;\n    this.enableWebGL = options.enableWebGL || false;\n    this.l10n = options.l10n || _ui_utils.NullL10n;\n    this.paintTask = null;\n    this.paintedViewportMap = new WeakMap();\n    this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;\n    this.resume = null;\n    this.error = null;\n    this.onBeforeDraw = null;\n    this.onAfterDraw = null;\n    this.annotationLayer = null;\n    this.textLayer = null;\n    this.zoomLayer = null;\n    var div = document.createElement('div');\n    div.className = 'page';\n    div.style.width = Math.floor(this.viewport.width) + 'px';\n    div.style.height = Math.floor(this.viewport.height) + 'px';\n    div.setAttribute('data-page-number', this.id);\n    this.div = div;\n    container.appendChild(div);\n  }\n\n  _createClass(PDFPageView, [{\n    key: 'setPdfPage',\n    value: function setPdfPage(pdfPage) {\n      this.pdfPage = pdfPage;\n      this.pdfPageRotate = pdfPage.rotate;\n      var totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n      this.viewport = pdfPage.getViewport(this.scale * _ui_utils.CSS_UNITS, totalRotation);\n      this.stats = pdfPage.stats;\n      this.reset();\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy() {\n      this.reset();\n      if (this.pdfPage) {\n        this.pdfPage.cleanup();\n      }\n    }\n  }, {\n    key: '_resetZoomLayer',\n    value: function _resetZoomLayer() {\n      var removeFromDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (!this.zoomLayer) {\n        return;\n      }\n      var zoomLayerCanvas = this.zoomLayer.firstChild;\n      this.paintedViewportMap.delete(zoomLayerCanvas);\n      zoomLayerCanvas.width = 0;\n      zoomLayerCanvas.height = 0;\n      if (removeFromDOM) {\n        this.zoomLayer.remove();\n      }\n      this.zoomLayer = null;\n    }\n  }, {\n    key: 'reset',\n    value: function reset() {\n      var keepZoomLayer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var keepAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      this.cancelRendering(keepAnnotations);\n      var div = this.div;\n      div.style.width = Math.floor(this.viewport.width) + 'px';\n      div.style.height = Math.floor(this.viewport.height) + 'px';\n      var childNodes = div.childNodes;\n      var currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null;\n      var currentAnnotationNode = keepAnnotations && this.annotationLayer && this.annotationLayer.div || null;\n      for (var i = childNodes.length - 1; i >= 0; i--) {\n        var node = childNodes[i];\n        if (currentZoomLayerNode === node || currentAnnotationNode === node) {\n          continue;\n        }\n        div.removeChild(node);\n      }\n      div.removeAttribute('data-loaded');\n      if (currentAnnotationNode) {\n        this.annotationLayer.hide();\n      } else if (this.annotationLayer) {\n        this.annotationLayer.cancel();\n        this.annotationLayer = null;\n      }\n      if (!currentZoomLayerNode) {\n        if (this.canvas) {\n          this.paintedViewportMap.delete(this.canvas);\n          this.canvas.width = 0;\n          this.canvas.height = 0;\n          delete this.canvas;\n        }\n        this._resetZoomLayer();\n      }\n      if (this.svg) {\n        this.paintedViewportMap.delete(this.svg);\n        delete this.svg;\n      }\n      this.loadingIconDiv = document.createElement('div');\n      this.loadingIconDiv.className = 'loadingIcon';\n      div.appendChild(this.loadingIconDiv);\n    }\n  }, {\n    key: 'update',\n    value: function update(scale, rotation) {\n      this.scale = scale || this.scale;\n      if (typeof rotation !== 'undefined') {\n        this.rotation = rotation;\n      }\n      var totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n      this.viewport = this.viewport.clone({\n        scale: this.scale * _ui_utils.CSS_UNITS,\n        rotation: totalRotation\n      });\n      if (this.svg) {\n        this.cssTransform(this.svg, true);\n        this.eventBus.dispatch('pagerendered', {\n          source: this,\n          pageNumber: this.id,\n          cssTransform: true\n        });\n        return;\n      }\n      var isScalingRestricted = false;\n      if (this.canvas && this.maxCanvasPixels > 0) {\n        var outputScale = this.outputScale;\n        if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) {\n          isScalingRestricted = true;\n        }\n      }\n      if (this.canvas) {\n        if (this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) {\n          this.cssTransform(this.canvas, true);\n          this.eventBus.dispatch('pagerendered', {\n            source: this,\n            pageNumber: this.id,\n            cssTransform: true\n          });\n          return;\n        }\n        if (!this.zoomLayer && !this.canvas.hasAttribute('hidden')) {\n          this.zoomLayer = this.canvas.parentNode;\n          this.zoomLayer.style.position = 'absolute';\n        }\n      }\n      if (this.zoomLayer) {\n        this.cssTransform(this.zoomLayer.firstChild);\n      }\n      this.reset(true, true);\n    }\n  }, {\n    key: 'cancelRendering',\n    value: function cancelRendering() {\n      var keepAnnotations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      var renderingState = this.renderingState;\n      if (this.paintTask) {\n        this.paintTask.cancel();\n        this.paintTask = null;\n      }\n      this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;\n      this.resume = null;\n      if (this.textLayer) {\n        this.textLayer.cancel();\n        this.textLayer = null;\n      }\n      if (!keepAnnotations && this.annotationLayer) {\n        this.annotationLayer.cancel();\n        this.annotationLayer = null;\n      }\n      if (renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {\n        this.eventBus.dispatch('pagecancelled', {\n          source: this,\n          pageNumber: this.id,\n          renderingState: renderingState\n        });\n      }\n    }\n  }, {\n    key: 'cssTransform',\n    value: function cssTransform(target) {\n      var redrawAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var width = this.viewport.width;\n      var height = this.viewport.height;\n      var div = this.div;\n      target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + 'px';\n      target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + 'px';\n      var relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation;\n      var absRotation = Math.abs(relativeRotation);\n      var scaleX = 1,\n          scaleY = 1;\n      if (absRotation === 90 || absRotation === 270) {\n        scaleX = height / width;\n        scaleY = width / height;\n      }\n      var cssTransform = 'rotate(' + relativeRotation + 'deg) ' + 'scale(' + scaleX + ',' + scaleY + ')';\n      target.style.transform = cssTransform;\n      if (this.textLayer) {\n        var textLayerViewport = this.textLayer.viewport;\n        var textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation;\n        var textAbsRotation = Math.abs(textRelativeRotation);\n        var scale = width / textLayerViewport.width;\n        if (textAbsRotation === 90 || textAbsRotation === 270) {\n          scale = width / textLayerViewport.height;\n        }\n        var textLayerDiv = this.textLayer.textLayerDiv;\n        var transX = void 0,\n            transY = void 0;\n        switch (textAbsRotation) {\n          case 0:\n            transX = transY = 0;\n            break;\n          case 90:\n            transX = 0;\n            transY = '-' + textLayerDiv.style.height;\n            break;\n          case 180:\n            transX = '-' + textLayerDiv.style.width;\n            transY = '-' + textLayerDiv.style.height;\n            break;\n          case 270:\n            transX = '-' + textLayerDiv.style.width;\n            transY = 0;\n            break;\n          default:\n            console.error('Bad rotation value.');\n            break;\n        }\n        textLayerDiv.style.transform = 'rotate(' + textAbsRotation + 'deg) ' + 'scale(' + scale + ', ' + scale + ') ' + 'translate(' + transX + ', ' + transY + ')';\n        textLayerDiv.style.transformOrigin = '0% 0%';\n      }\n      if (redrawAnnotations && this.annotationLayer) {\n        this.annotationLayer.render(this.viewport, 'display');\n      }\n    }\n  }, {\n    key: 'getPagePoint',\n    value: function getPagePoint(x, y) {\n      return this.viewport.convertToPdfPoint(x, y);\n    }\n  }, {\n    key: 'draw',\n    value: function draw() {\n      var _this = this;\n\n      if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {\n        console.error('Must be in new state before drawing');\n        this.reset();\n      }\n      if (!this.pdfPage) {\n        this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;\n        return Promise.reject(new Error('Page is not loaded'));\n      }\n      this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;\n      var pdfPage = this.pdfPage;\n      var div = this.div;\n      var canvasWrapper = document.createElement('div');\n      canvasWrapper.style.width = div.style.width;\n      canvasWrapper.style.height = div.style.height;\n      canvasWrapper.classList.add('canvasWrapper');\n      if (this.annotationLayer && this.annotationLayer.div) {\n        div.insertBefore(canvasWrapper, this.annotationLayer.div);\n      } else {\n        div.appendChild(canvasWrapper);\n      }\n      var textLayer = null;\n      if (this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && this.textLayerFactory) {\n        var textLayerDiv = document.createElement('div');\n        textLayerDiv.className = 'textLayer';\n        textLayerDiv.style.width = canvasWrapper.style.width;\n        textLayerDiv.style.height = canvasWrapper.style.height;\n        if (this.annotationLayer && this.annotationLayer.div) {\n          div.insertBefore(textLayerDiv, this.annotationLayer.div);\n        } else {\n          div.appendChild(textLayerDiv);\n        }\n        textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE);\n      }\n      this.textLayer = textLayer;\n      var renderContinueCallback = null;\n      if (this.renderingQueue) {\n        renderContinueCallback = function renderContinueCallback(cont) {\n          if (!_this.renderingQueue.isHighestPriority(_this)) {\n            _this.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED;\n            _this.resume = function () {\n              _this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;\n              cont();\n            };\n            return;\n          }\n          cont();\n        };\n      }\n      var finishPaintTask = function finishPaintTask(error) {\n        if (paintTask === _this.paintTask) {\n          _this.paintTask = null;\n        }\n        if (error instanceof _pdfjsLib.RenderingCancelledException) {\n          _this.error = null;\n          return Promise.resolve(undefined);\n        }\n        _this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;\n        if (_this.loadingIconDiv) {\n          div.removeChild(_this.loadingIconDiv);\n          delete _this.loadingIconDiv;\n        }\n        _this._resetZoomLayer(true);\n        _this.error = error;\n        _this.stats = pdfPage.stats;\n        if (_this.onAfterDraw) {\n          _this.onAfterDraw();\n        }\n        _this.eventBus.dispatch('pagerendered', {\n          source: _this,\n          pageNumber: _this.id,\n          cssTransform: false\n        });\n        if (error) {\n          return Promise.reject(error);\n        }\n        return Promise.resolve(undefined);\n      };\n      var paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper);\n      paintTask.onRenderContinue = renderContinueCallback;\n      this.paintTask = paintTask;\n      var resultPromise = paintTask.promise.then(function () {\n        return finishPaintTask(null).then(function () {\n          if (textLayer) {\n            var readableStream = pdfPage.streamTextContent({ normalizeWhitespace: true });\n            textLayer.setTextContentStream(readableStream);\n            textLayer.render();\n          }\n        });\n      }, function (reason) {\n        return finishPaintTask(reason);\n      });\n      if (this.annotationLayerFactory) {\n        if (!this.annotationLayer) {\n          this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, this.imageResourcesPath, this.renderInteractiveForms, this.l10n);\n        }\n        this.annotationLayer.render(this.viewport, 'display');\n      }\n      div.setAttribute('data-loaded', true);\n      if (this.onBeforeDraw) {\n        this.onBeforeDraw();\n      }\n      return resultPromise;\n    }\n  }, {\n    key: 'paintOnCanvas',\n    value: function paintOnCanvas(canvasWrapper) {\n      var renderCapability = (0, _pdfjsLib.createPromiseCapability)();\n      var result = {\n        promise: renderCapability.promise,\n        onRenderContinue: function onRenderContinue(cont) {\n          cont();\n        },\n        cancel: function cancel() {\n          renderTask.cancel();\n        }\n      };\n      var viewport = this.viewport;\n      var canvas = document.createElement('canvas');\n      canvas.id = this.renderingId;\n      canvas.setAttribute('hidden', 'hidden');\n      var isCanvasHidden = true;\n      var showCanvas = function showCanvas() {\n        if (isCanvasHidden) {\n          canvas.removeAttribute('hidden');\n          isCanvasHidden = false;\n        }\n      };\n      canvasWrapper.appendChild(canvas);\n      this.canvas = canvas;\n      canvas.mozOpaque = true;\n      var ctx = canvas.getContext('2d', { alpha: false });\n      var outputScale = (0, _ui_utils.getOutputScale)(ctx);\n      this.outputScale = outputScale;\n      if (this.useOnlyCssZoom) {\n        var actualSizeViewport = viewport.clone({ scale: _ui_utils.CSS_UNITS });\n        outputScale.sx *= actualSizeViewport.width / viewport.width;\n        outputScale.sy *= actualSizeViewport.height / viewport.height;\n        outputScale.scaled = true;\n      }\n      if (this.maxCanvasPixels > 0) {\n        var pixelsInViewport = viewport.width * viewport.height;\n        var maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);\n        if (outputScale.sx > maxScale || outputScale.sy > maxScale) {\n          outputScale.sx = maxScale;\n          outputScale.sy = maxScale;\n          outputScale.scaled = true;\n          this.hasRestrictedScaling = true;\n        } else {\n          this.hasRestrictedScaling = false;\n        }\n      }\n      var sfx = (0, _ui_utils.approximateFraction)(outputScale.sx);\n      var sfy = (0, _ui_utils.approximateFraction)(outputScale.sy);\n      canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]);\n      canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]);\n      canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + 'px';\n      canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + 'px';\n      this.paintedViewportMap.set(canvas, viewport);\n      var transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];\n      var renderContext = {\n        canvasContext: ctx,\n        transform: transform,\n        viewport: this.viewport,\n        enableWebGL: this.enableWebGL,\n        renderInteractiveForms: this.renderInteractiveForms\n      };\n      var renderTask = this.pdfPage.render(renderContext);\n      renderTask.onContinue = function (cont) {\n        showCanvas();\n        if (result.onRenderContinue) {\n          result.onRenderContinue(cont);\n        } else {\n          cont();\n        }\n      };\n      renderTask.promise.then(function () {\n        showCanvas();\n        renderCapability.resolve(undefined);\n      }, function (error) {\n        showCanvas();\n        renderCapability.reject(error);\n      });\n      return result;\n    }\n  }, {\n    key: 'paintOnSvg',\n    value: function paintOnSvg(wrapper) {\n      var _this2 = this;\n\n      var cancelled = false;\n      var ensureNotCancelled = function ensureNotCancelled() {\n        if (cancelled) {\n          throw new _pdfjsLib.RenderingCancelledException('Rendering cancelled, page ' + _this2.id, 'svg');\n        }\n      };\n      var pdfPage = this.pdfPage;\n      var actualSizeViewport = this.viewport.clone({ scale: _ui_utils.CSS_UNITS });\n      var promise = pdfPage.getOperatorList().then(function (opList) {\n        ensureNotCancelled();\n        var svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs);\n        return svgGfx.getSVG(opList, actualSizeViewport).then(function (svg) {\n          ensureNotCancelled();\n          _this2.svg = svg;\n          _this2.paintedViewportMap.set(svg, actualSizeViewport);\n          svg.style.width = wrapper.style.width;\n          svg.style.height = wrapper.style.height;\n          _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;\n          wrapper.appendChild(svg);\n        });\n      });\n      return {\n        promise: promise,\n        onRenderContinue: function onRenderContinue(cont) {\n          cont();\n        },\n        cancel: function cancel() {\n          cancelled = true;\n        }\n      };\n    }\n  }, {\n    key: 'setPageLabel',\n    value: function setPageLabel(label) {\n      this.pageLabel = typeof label === 'string' ? label : null;\n      if (this.pageLabel !== null) {\n        this.div.setAttribute('data-page-label', this.pageLabel);\n      } else {\n        this.div.removeAttribute('data-page-label');\n      }\n    }\n  }, {\n    key: 'width',\n    get: function get() {\n      return this.viewport.width;\n    }\n  }, {\n    key: 'height',\n    get: function get() {\n      return this.viewport.height;\n    }\n  }]);\n\n  return PDFPageView;\n}();\n\nexports.PDFPageView = PDFPageView;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DefaultTextLayerFactory = exports.TextLayerBuilder = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dom_events = __webpack_require__(14);\n\nvar _pdfjsLib = __webpack_require__(7);\n\nvar _ui_utils = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EXPAND_DIVS_TIMEOUT = 300;\nvar MATCH_SCROLL_OFFSET_TOP = -50;\nvar MATCH_SCROLL_OFFSET_LEFT = -400;\n\nvar TextLayerBuilder = function () {\n  function TextLayerBuilder(_ref) {\n    var textLayerDiv = _ref.textLayerDiv,\n        eventBus = _ref.eventBus,\n        pageIndex = _ref.pageIndex,\n        viewport = _ref.viewport,\n        _ref$findController = _ref.findController,\n        findController = _ref$findController === undefined ? null : _ref$findController,\n        _ref$enhanceTextSelec = _ref.enhanceTextSelection,\n        enhanceTextSelection = _ref$enhanceTextSelec === undefined ? false : _ref$enhanceTextSelec;\n\n    _classCallCheck(this, TextLayerBuilder);\n\n    this.textLayerDiv = textLayerDiv;\n    this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();\n    this.textContent = null;\n    this.textContentItemsStr = [];\n    this.textContentStream = null;\n    this.renderingDone = false;\n    this.pageIdx = pageIndex;\n    this.pageNumber = this.pageIdx + 1;\n    this.matches = [];\n    this.viewport = viewport;\n    this.textDivs = [];\n    this.findController = findController;\n    this.textLayerRenderTask = null;\n    this.enhanceTextSelection = enhanceTextSelection;\n    this._boundEvents = Object.create(null);\n    this._bindEvents();\n    this._bindMouse();\n  }\n\n  _createClass(TextLayerBuilder, [{\n    key: '_finishRendering',\n    value: function _finishRendering() {\n      this.renderingDone = true;\n      if (!this.enhanceTextSelection) {\n        var endOfContent = document.createElement('div');\n        endOfContent.className = 'endOfContent';\n        this.textLayerDiv.appendChild(endOfContent);\n      }\n      this.eventBus.dispatch('textlayerrendered', {\n        source: this,\n        pageNumber: this.pageNumber,\n        numTextDivs: this.textDivs.length\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this = this;\n\n      var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      if (!(this.textContent || this.textContentStream) || this.renderingDone) {\n        return;\n      }\n      this.cancel();\n      this.textDivs = [];\n      var textLayerFrag = document.createDocumentFragment();\n      this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({\n        textContent: this.textContent,\n        textContentStream: this.textContentStream,\n        container: textLayerFrag,\n        viewport: this.viewport,\n        textDivs: this.textDivs,\n        textContentItemsStr: this.textContentItemsStr,\n        timeout: timeout,\n        enhanceTextSelection: this.enhanceTextSelection\n      });\n      this.textLayerRenderTask.promise.then(function () {\n        _this.textLayerDiv.appendChild(textLayerFrag);\n        _this._finishRendering();\n        _this.updateMatches();\n      }, function (reason) {});\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      if (this.textLayerRenderTask) {\n        this.textLayerRenderTask.cancel();\n        this.textLayerRenderTask = null;\n      }\n    }\n  }, {\n    key: 'setTextContentStream',\n    value: function setTextContentStream(readableStream) {\n      this.cancel();\n      this.textContentStream = readableStream;\n    }\n  }, {\n    key: 'setTextContent',\n    value: function setTextContent(textContent) {\n      this.cancel();\n      this.textContent = textContent;\n    }\n  }, {\n    key: 'convertMatches',\n    value: function convertMatches(matches, matchesLength) {\n      var i = 0;\n      var iIndex = 0;\n      var textContentItemsStr = this.textContentItemsStr;\n      var end = textContentItemsStr.length - 1;\n      var queryLen = this.findController === null ? 0 : this.findController.state.query.length;\n      var ret = [];\n      if (!matches) {\n        return ret;\n      }\n      for (var m = 0, len = matches.length; m < len; m++) {\n        var matchIdx = matches[m];\n        while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {\n          iIndex += textContentItemsStr[i].length;\n          i++;\n        }\n        if (i === textContentItemsStr.length) {\n          console.error('Could not find a matching mapping');\n        }\n        var match = {\n          begin: {\n            divIdx: i,\n            offset: matchIdx - iIndex\n          }\n        };\n        if (matchesLength) {\n          matchIdx += matchesLength[m];\n        } else {\n          matchIdx += queryLen;\n        }\n        while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {\n          iIndex += textContentItemsStr[i].length;\n          i++;\n        }\n        match.end = {\n          divIdx: i,\n          offset: matchIdx - iIndex\n        };\n        ret.push(match);\n      }\n      return ret;\n    }\n  }, {\n    key: 'renderMatches',\n    value: function renderMatches(matches) {\n      if (matches.length === 0) {\n        return;\n      }\n      var textContentItemsStr = this.textContentItemsStr;\n      var textDivs = this.textDivs;\n      var prevEnd = null;\n      var pageIdx = this.pageIdx;\n      var isSelectedPage = this.findController === null ? false : pageIdx === this.findController.selected.pageIdx;\n      var selectedMatchIdx = this.findController === null ? -1 : this.findController.selected.matchIdx;\n      var highlightAll = this.findController === null ? false : this.findController.state.highlightAll;\n      var infinity = {\n        divIdx: -1,\n        offset: undefined\n      };\n      function beginText(begin, className) {\n        var divIdx = begin.divIdx;\n        textDivs[divIdx].textContent = '';\n        appendTextToDiv(divIdx, 0, begin.offset, className);\n      }\n      function appendTextToDiv(divIdx, fromOffset, toOffset, className) {\n        var div = textDivs[divIdx];\n        var content = textContentItemsStr[divIdx].substring(fromOffset, toOffset);\n        var node = document.createTextNode(content);\n        if (className) {\n          var span = document.createElement('span');\n          span.className = className;\n          span.appendChild(node);\n          div.appendChild(span);\n          return;\n        }\n        div.appendChild(node);\n      }\n      var i0 = selectedMatchIdx,\n          i1 = i0 + 1;\n      if (highlightAll) {\n        i0 = 0;\n        i1 = matches.length;\n      } else if (!isSelectedPage) {\n        return;\n      }\n      for (var i = i0; i < i1; i++) {\n        var match = matches[i];\n        var begin = match.begin;\n        var end = match.end;\n        var isSelected = isSelectedPage && i === selectedMatchIdx;\n        var highlightSuffix = isSelected ? ' selected' : '';\n        if (this.findController) {\n          if (this.findController.selected.matchIdx === i && this.findController.selected.pageIdx === pageIdx) {\n            var spot = {\n              top: MATCH_SCROLL_OFFSET_TOP,\n              left: MATCH_SCROLL_OFFSET_LEFT\n            };\n            (0, _ui_utils.scrollIntoView)(textDivs[begin.divIdx], spot, true);\n          }\n        }\n        if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {\n          if (prevEnd !== null) {\n            appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n          }\n          beginText(begin);\n        } else {\n          appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);\n        }\n        if (begin.divIdx === end.divIdx) {\n          appendTextToDiv(begin.divIdx, begin.offset, end.offset, 'highlight' + highlightSuffix);\n        } else {\n          appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, 'highlight begin' + highlightSuffix);\n          for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {\n            textDivs[n0].className = 'highlight middle' + highlightSuffix;\n          }\n          beginText(end, 'highlight end' + highlightSuffix);\n        }\n        prevEnd = end;\n      }\n      if (prevEnd) {\n        appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n      }\n    }\n  }, {\n    key: 'updateMatches',\n    value: function updateMatches() {\n      if (!this.renderingDone) {\n        return;\n      }\n      var matches = this.matches;\n      var textDivs = this.textDivs;\n      var textContentItemsStr = this.textContentItemsStr;\n      var clearedUntilDivIdx = -1;\n      for (var i = 0, len = matches.length; i < len; i++) {\n        var match = matches[i];\n        var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);\n        for (var n = begin, end = match.end.divIdx; n <= end; n++) {\n          var div = textDivs[n];\n          div.textContent = textContentItemsStr[n];\n          div.className = '';\n        }\n        clearedUntilDivIdx = match.end.divIdx + 1;\n      }\n      if (!this.findController || !this.findController.highlightMatches) {\n        return;\n      }\n      var pageMatches = void 0,\n          pageMatchesLength = void 0;\n      if (this.findController !== null) {\n        pageMatches = this.findController.pageMatches[this.pageIdx] || null;\n        pageMatchesLength = this.findController.pageMatchesLength ? this.findController.pageMatchesLength[this.pageIdx] || null : null;\n      }\n      this.matches = this.convertMatches(pageMatches, pageMatchesLength);\n      this.renderMatches(this.matches);\n    }\n  }, {\n    key: '_bindEvents',\n    value: function _bindEvents() {\n      var _this2 = this;\n\n      var eventBus = this.eventBus,\n          _boundEvents = this._boundEvents;\n\n      _boundEvents.pageCancelled = function (evt) {\n        if (evt.pageNumber !== _this2.pageNumber) {\n          return;\n        }\n        if (_this2.textLayerRenderTask) {\n          console.error('TextLayerBuilder._bindEvents: `this.cancel()` should ' + 'have been called when the page was reset, or rendering cancelled.');\n          return;\n        }\n        for (var name in _boundEvents) {\n          eventBus.off(name.toLowerCase(), _boundEvents[name]);\n          delete _boundEvents[name];\n        }\n      };\n      _boundEvents.updateTextLayerMatches = function (evt) {\n        if (evt.pageIndex !== _this2.pageIdx && evt.pageIndex !== -1) {\n          return;\n        }\n        _this2.updateMatches();\n      };\n      eventBus.on('pagecancelled', _boundEvents.pageCancelled);\n      eventBus.on('updatetextlayermatches', _boundEvents.updateTextLayerMatches);\n    }\n  }, {\n    key: '_bindMouse',\n    value: function _bindMouse() {\n      var _this3 = this;\n\n      var div = this.textLayerDiv;\n      var expandDivsTimer = null;\n      div.addEventListener('mousedown', function (evt) {\n        if (_this3.enhanceTextSelection && _this3.textLayerRenderTask) {\n          _this3.textLayerRenderTask.expandTextDivs(true);\n          if (expandDivsTimer) {\n            clearTimeout(expandDivsTimer);\n            expandDivsTimer = null;\n          }\n          return;\n        }\n        var end = div.querySelector('.endOfContent');\n        if (!end) {\n          return;\n        }\n        var adjustTop = evt.target !== div;\n        adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue('-moz-user-select') !== 'none';\n        if (adjustTop) {\n          var divBounds = div.getBoundingClientRect();\n          var r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);\n          end.style.top = (r * 100).toFixed(2) + '%';\n        }\n        end.classList.add('active');\n      });\n      div.addEventListener('mouseup', function () {\n        if (_this3.enhanceTextSelection && _this3.textLayerRenderTask) {\n          expandDivsTimer = setTimeout(function () {\n            if (_this3.textLayerRenderTask) {\n              _this3.textLayerRenderTask.expandTextDivs(false);\n            }\n            expandDivsTimer = null;\n          }, EXPAND_DIVS_TIMEOUT);\n          return;\n        }\n        var end = div.querySelector('.endOfContent');\n        if (!end) {\n          return;\n        }\n        end.style.top = '';\n        end.classList.remove('active');\n      });\n    }\n  }]);\n\n  return TextLayerBuilder;\n}();\n\nvar DefaultTextLayerFactory = function () {\n  function DefaultTextLayerFactory() {\n    _classCallCheck(this, DefaultTextLayerFactory);\n  }\n\n  _createClass(DefaultTextLayerFactory, [{\n    key: 'createTextLayerBuilder',\n    value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) {\n      var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n      return new TextLayerBuilder({\n        textLayerDiv: textLayerDiv,\n        pageIndex: pageIndex,\n        viewport: viewport,\n        enhanceTextSelection: enhanceTextSelection\n      });\n    }\n  }]);\n\n  return DefaultTextLayerFactory;\n}();\n\nexports.TextLayerBuilder = TextLayerBuilder;\nexports.DefaultTextLayerFactory = DefaultTextLayerFactory;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SecondaryToolbar = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _base_viewer = __webpack_require__(30);\n\nvar _pdf_cursor_tools = __webpack_require__(8);\n\nvar _pdf_single_page_viewer = __webpack_require__(35);\n\nvar _ui_utils = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SecondaryToolbar = function () {\n  function SecondaryToolbar(options, mainContainer, eventBus) {\n    var _this = this;\n\n    _classCallCheck(this, SecondaryToolbar);\n\n    this.toolbar = options.toolbar;\n    this.toggleButton = options.toggleButton;\n    this.toolbarButtonContainer = options.toolbarButtonContainer;\n    this.buttons = [{\n      element: options.presentationModeButton,\n      eventName: 'presentationmode',\n      close: true\n    }, {\n      element: options.openFileButton,\n      eventName: 'openfile',\n      close: true\n    }, {\n      element: options.printButton,\n      eventName: 'print',\n      close: true\n    }, {\n      element: options.downloadButton,\n      eventName: 'download',\n      close: true\n    }, {\n      element: options.viewBookmarkButton,\n      eventName: null,\n      close: true\n    }, {\n      element: options.firstPageButton,\n      eventName: 'firstpage',\n      close: true\n    }, {\n      element: options.lastPageButton,\n      eventName: 'lastpage',\n      close: true\n    }, {\n      element: options.pageRotateCwButton,\n      eventName: 'rotatecw',\n      close: false\n    }, {\n      element: options.pageRotateCcwButton,\n      eventName: 'rotateccw',\n      close: false\n    }, {\n      element: options.cursorSelectToolButton,\n      eventName: 'switchcursortool',\n      eventDetails: { tool: _pdf_cursor_tools.CursorTool.SELECT },\n      close: true\n    }, {\n      element: options.cursorHandToolButton,\n      eventName: 'switchcursortool',\n      eventDetails: { tool: _pdf_cursor_tools.CursorTool.HAND },\n      close: true\n    }, {\n      element: options.scrollVerticalButton,\n      eventName: 'switchscrollmode',\n      eventDetails: { mode: _base_viewer.ScrollMode.VERTICAL },\n      close: true\n    }, {\n      element: options.scrollHorizontalButton,\n      eventName: 'switchscrollmode',\n      eventDetails: { mode: _base_viewer.ScrollMode.HORIZONTAL },\n      close: true\n    }, {\n      element: options.scrollWrappedButton,\n      eventName: 'switchscrollmode',\n      eventDetails: { mode: _base_viewer.ScrollMode.WRAPPED },\n      close: true\n    }, {\n      element: options.spreadNoneButton,\n      eventName: 'switchspreadmode',\n      eventDetails: { mode: _base_viewer.SpreadMode.NONE },\n      close: true\n    }, {\n      element: options.spreadOddButton,\n      eventName: 'switchspreadmode',\n      eventDetails: { mode: _base_viewer.SpreadMode.ODD },\n      close: true\n    }, {\n      element: options.spreadEvenButton,\n      eventName: 'switchspreadmode',\n      eventDetails: { mode: _base_viewer.SpreadMode.EVEN },\n      close: true\n    }, {\n      element: options.documentPropertiesButton,\n      eventName: 'documentproperties',\n      close: true\n    }];\n    this.items = {\n      firstPage: options.firstPageButton,\n      lastPage: options.lastPageButton,\n      pageRotateCw: options.pageRotateCwButton,\n      pageRotateCcw: options.pageRotateCcwButton\n    };\n    this.mainContainer = mainContainer;\n    this.eventBus = eventBus;\n    this.opened = false;\n    this.containerHeight = null;\n    this.previousContainerHeight = null;\n    this.reset();\n    this._bindClickListeners();\n    this._bindCursorToolsListener(options);\n    this._bindScrollModeListener(options);\n    this._bindSpreadModeListener(options);\n    this.eventBus.on('resize', this._setMaxHeight.bind(this));\n    this.eventBus.on('baseviewerinit', function (evt) {\n      if (evt.source instanceof _pdf_single_page_viewer.PDFSinglePageViewer) {\n        _this.toolbarButtonContainer.classList.add('hiddenScrollModeButtons', 'hiddenSpreadModeButtons');\n      } else {\n        _this.toolbarButtonContainer.classList.remove('hiddenScrollModeButtons', 'hiddenSpreadModeButtons');\n      }\n    });\n  }\n\n  _createClass(SecondaryToolbar, [{\n    key: 'setPageNumber',\n    value: function setPageNumber(pageNumber) {\n      this.pageNumber = pageNumber;\n      this._updateUIState();\n    }\n  }, {\n    key: 'setPagesCount',\n    value: function setPagesCount(pagesCount) {\n      this.pagesCount = pagesCount;\n      this._updateUIState();\n    }\n  }, {\n    key: 'reset',\n    value: function reset() {\n      this.pageNumber = 0;\n      this.pagesCount = 0;\n      this._updateUIState();\n      this.eventBus.dispatch('secondarytoolbarreset', { source: this });\n    }\n  }, {\n    key: '_updateUIState',\n    value: function _updateUIState() {\n      this.items.firstPage.disabled = this.pageNumber <= 1;\n      this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;\n      this.items.pageRotateCw.disabled = this.pagesCount === 0;\n      this.items.pageRotateCcw.disabled = this.pagesCount === 0;\n    }\n  }, {\n    key: '_bindClickListeners',\n    value: function _bindClickListeners() {\n      var _this2 = this;\n\n      this.toggleButton.addEventListener('click', this.toggle.bind(this));\n\n      var _loop = function _loop(button) {\n        var _buttons$button = _this2.buttons[button],\n            element = _buttons$button.element,\n            eventName = _buttons$button.eventName,\n            close = _buttons$button.close,\n            eventDetails = _buttons$button.eventDetails;\n\n        element.addEventListener('click', function (evt) {\n          if (eventName !== null) {\n            var details = { source: _this2 };\n            for (var property in eventDetails) {\n              details[property] = eventDetails[property];\n            }\n            _this2.eventBus.dispatch(eventName, details);\n          }\n          if (close) {\n            _this2.close();\n          }\n        });\n      };\n\n      for (var button in this.buttons) {\n        _loop(button);\n      }\n    }\n  }, {\n    key: '_bindCursorToolsListener',\n    value: function _bindCursorToolsListener(buttons) {\n      this.eventBus.on('cursortoolchanged', function (evt) {\n        buttons.cursorSelectToolButton.classList.remove('toggled');\n        buttons.cursorHandToolButton.classList.remove('toggled');\n        switch (evt.tool) {\n          case _pdf_cursor_tools.CursorTool.SELECT:\n            buttons.cursorSelectToolButton.classList.add('toggled');\n            break;\n          case _pdf_cursor_tools.CursorTool.HAND:\n            buttons.cursorHandToolButton.classList.add('toggled');\n            break;\n        }\n      });\n    }\n  }, {\n    key: '_bindScrollModeListener',\n    value: function _bindScrollModeListener(buttons) {\n      var _this3 = this;\n\n      function scrollModeChanged(evt) {\n        buttons.scrollVerticalButton.classList.remove('toggled');\n        buttons.scrollHorizontalButton.classList.remove('toggled');\n        buttons.scrollWrappedButton.classList.remove('toggled');\n        switch (evt.mode) {\n          case _base_viewer.ScrollMode.VERTICAL:\n            buttons.scrollVerticalButton.classList.add('toggled');\n            break;\n          case _base_viewer.ScrollMode.HORIZONTAL:\n            buttons.scrollHorizontalButton.classList.add('toggled');\n            break;\n          case _base_viewer.ScrollMode.WRAPPED:\n            buttons.scrollWrappedButton.classList.add('toggled');\n            break;\n        }\n        var isScrollModeHorizontal = evt.mode === _base_viewer.ScrollMode.HORIZONTAL;\n        buttons.spreadNoneButton.disabled = isScrollModeHorizontal;\n        buttons.spreadOddButton.disabled = isScrollModeHorizontal;\n        buttons.spreadEvenButton.disabled = isScrollModeHorizontal;\n      }\n      this.eventBus.on('scrollmodechanged', scrollModeChanged);\n      this.eventBus.on('secondarytoolbarreset', function (evt) {\n        if (evt.source === _this3) {\n          scrollModeChanged({ mode: _base_viewer.ScrollMode.VERTICAL });\n        }\n      });\n    }\n  }, {\n    key: '_bindSpreadModeListener',\n    value: function _bindSpreadModeListener(buttons) {\n      var _this4 = this;\n\n      function spreadModeChanged(evt) {\n        buttons.spreadNoneButton.classList.remove('toggled');\n        buttons.spreadOddButton.classList.remove('toggled');\n        buttons.spreadEvenButton.classList.remove('toggled');\n        switch (evt.mode) {\n          case _base_viewer.SpreadMode.NONE:\n            buttons.spreadNoneButton.classList.add('toggled');\n            break;\n          case _base_viewer.SpreadMode.ODD:\n            buttons.spreadOddButton.classList.add('toggled');\n            break;\n          case _base_viewer.SpreadMode.EVEN:\n            buttons.spreadEvenButton.classList.add('toggled');\n            break;\n        }\n      }\n      this.eventBus.on('spreadmodechanged', spreadModeChanged);\n      this.eventBus.on('secondarytoolbarreset', function (evt) {\n        if (evt.source === _this4) {\n          spreadModeChanged({ mode: _base_viewer.SpreadMode.NONE });\n        }\n      });\n    }\n  }, {\n    key: 'open',\n    value: function open() {\n      if (this.opened) {\n        return;\n      }\n      this.opened = true;\n      this._setMaxHeight();\n      this.toggleButton.classList.add('toggled');\n      this.toolbar.classList.remove('hidden');\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      if (!this.opened) {\n        return;\n      }\n      this.opened = false;\n      this.toolbar.classList.add('hidden');\n      this.toggleButton.classList.remove('toggled');\n    }\n  }, {\n    key: 'toggle',\n    value: function toggle() {\n      if (this.opened) {\n        this.close();\n      } else {\n        this.open();\n      }\n    }\n  }, {\n    key: '_setMaxHeight',\n    value: function _setMaxHeight() {\n      if (!this.opened) {\n        return;\n      }\n      this.containerHeight = this.mainContainer.clientHeight;\n      if (this.containerHeight === this.previousContainerHeight) {\n        return;\n      }\n      this.toolbarButtonContainer.setAttribute('style', 'max-height: ' + (this.containerHeight - _ui_utils.SCROLLBAR_PADDING) + 'px;');\n      this.previousContainerHeight = this.containerHeight;\n    }\n  }, {\n    key: 'isOpen',\n    get: function get() {\n      return this.opened;\n    }\n  }]);\n\n  return SecondaryToolbar;\n}();\n\nexports.SecondaryToolbar = SecondaryToolbar;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFSinglePageViewer = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _base_viewer = __webpack_require__(30);\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _pdfjsLib = __webpack_require__(7);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar PDFSinglePageViewer = function (_BaseViewer) {\n  _inherits(PDFSinglePageViewer, _BaseViewer);\n\n  function PDFSinglePageViewer(options) {\n    _classCallCheck(this, PDFSinglePageViewer);\n\n    var _this = _possibleConstructorReturn(this, (PDFSinglePageViewer.__proto__ || Object.getPrototypeOf(PDFSinglePageViewer)).call(this, options));\n\n    _this.eventBus.on('pagesinit', function (evt) {\n      _this._ensurePageViewVisible();\n    });\n    return _this;\n  }\n\n  _createClass(PDFSinglePageViewer, [{\n    key: '_resetView',\n    value: function _resetView() {\n      _get(PDFSinglePageViewer.prototype.__proto__ || Object.getPrototypeOf(PDFSinglePageViewer.prototype), '_resetView', this).call(this);\n      this._previousPageNumber = 1;\n      this._shadowViewer = document.createDocumentFragment();\n    }\n  }, {\n    key: '_ensurePageViewVisible',\n    value: function _ensurePageViewVisible() {\n      var pageView = this._pages[this._currentPageNumber - 1];\n      var previousPageView = this._pages[this._previousPageNumber - 1];\n      var viewerNodes = this.viewer.childNodes;\n      switch (viewerNodes.length) {\n        case 0:\n          this.viewer.appendChild(pageView.div);\n          break;\n        case 1:\n          if (viewerNodes[0] !== previousPageView.div) {\n            throw new Error('_ensurePageViewVisible: Unexpected previously visible page.');\n          }\n          if (pageView === previousPageView) {\n            break;\n          }\n          this._shadowViewer.appendChild(previousPageView.div);\n          this.viewer.appendChild(pageView.div);\n          this.container.scrollTop = 0;\n          break;\n        default:\n          throw new Error('_ensurePageViewVisible: Only one page should be visible at a time.');\n      }\n      this._previousPageNumber = this._currentPageNumber;\n    }\n  }, {\n    key: '_scrollUpdate',\n    value: function _scrollUpdate() {\n      if (this._updateScrollDown) {\n        this._updateScrollDown();\n      }\n      _get(PDFSinglePageViewer.prototype.__proto__ || Object.getPrototypeOf(PDFSinglePageViewer.prototype), '_scrollUpdate', this).call(this);\n    }\n  }, {\n    key: '_scrollIntoView',\n    value: function _scrollIntoView(_ref) {\n      var _this2 = this;\n\n      var pageDiv = _ref.pageDiv,\n          _ref$pageSpot = _ref.pageSpot,\n          pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot,\n          _ref$pageNumber = _ref.pageNumber,\n          pageNumber = _ref$pageNumber === undefined ? null : _ref$pageNumber;\n\n      if (pageNumber) {\n        this._setCurrentPageNumber(pageNumber);\n      }\n      var scrolledDown = this._currentPageNumber >= this._previousPageNumber;\n      var previousLocation = this._location;\n      this._ensurePageViewVisible();\n      (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);\n      this._updateScrollDown = function () {\n        _this2.scroll.down = scrolledDown;\n        delete _this2._updateScrollDown;\n      };\n      setTimeout(function () {\n        if (_this2._location === previousLocation) {\n          if (_this2._updateScrollDown) {\n            _this2._updateScrollDown();\n          }\n          _this2.update();\n        }\n      }, 0);\n    }\n  }, {\n    key: '_getVisiblePages',\n    value: function _getVisiblePages() {\n      if (!this.pagesCount) {\n        return { views: [] };\n      }\n      var pageView = this._pages[this._currentPageNumber - 1];\n      var element = pageView.div;\n      var view = {\n        id: pageView.id,\n        x: element.offsetLeft + element.clientLeft,\n        y: element.offsetTop + element.clientTop,\n        view: pageView\n      };\n      return {\n        first: view,\n        last: view,\n        views: [view]\n      };\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      var visible = this._getVisiblePages();\n      var visiblePages = visible.views,\n          numVisiblePages = visiblePages.length;\n      if (numVisiblePages === 0) {\n        return;\n      }\n      this._resizeBuffer(numVisiblePages);\n      this.renderingQueue.renderHighestPriority(visible);\n      this._updateLocation(visible.first);\n      this.eventBus.dispatch('updateviewarea', {\n        source: this,\n        location: this._location\n      });\n    }\n  }, {\n    key: '_updateScrollMode',\n    value: function _updateScrollMode() {}\n  }, {\n    key: '_updateSpreadMode',\n    value: function _updateSpreadMode() {}\n  }, {\n    key: '_setDocumentViewerElement',\n    get: function get() {\n      return (0, _pdfjsLib.shadow)(this, '_setDocumentViewerElement', this._shadowViewer);\n    }\n  }, {\n    key: '_isScrollModeHorizontal',\n    get: function get() {\n      return (0, _pdfjsLib.shadow)(this, '_isScrollModeHorizontal', false);\n    }\n  }]);\n\n  return PDFSinglePageViewer;\n}(_base_viewer.BaseViewer);\n\nexports.PDFSinglePageViewer = PDFSinglePageViewer;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Toolbar = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ui_utils = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading';\nvar SCALE_SELECT_CONTAINER_PADDING = 8;\nvar SCALE_SELECT_PADDING = 22;\n\nvar Toolbar = function () {\n  function Toolbar(options, eventBus) {\n    var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;\n\n    _classCallCheck(this, Toolbar);\n\n    this.toolbar = options.container;\n    this.eventBus = eventBus;\n    this.l10n = l10n;\n    this.items = options;\n    this._wasLocalized = false;\n    this.reset();\n    this._bindListeners();\n  }\n\n  _createClass(Toolbar, [{\n    key: 'setPageNumber',\n    value: function setPageNumber(pageNumber, pageLabel) {\n      this.pageNumber = pageNumber;\n      this.pageLabel = pageLabel;\n      this._updateUIState(false);\n    }\n  }, {\n    key: 'setPagesCount',\n    value: function setPagesCount(pagesCount, hasPageLabels) {\n      this.pagesCount = pagesCount;\n      this.hasPageLabels = hasPageLabels;\n      this._updateUIState(true);\n    }\n  }, {\n    key: 'setPageScale',\n    value: function setPageScale(pageScaleValue, pageScale) {\n      this.pageScaleValue = (pageScaleValue || pageScale).toString();\n      this.pageScale = pageScale;\n      this._updateUIState(false);\n    }\n  }, {\n    key: 'reset',\n    value: function reset() {\n      this.pageNumber = 0;\n      this.pageLabel = null;\n      this.hasPageLabels = false;\n      this.pagesCount = 0;\n      this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;\n      this.pageScale = _ui_utils.DEFAULT_SCALE;\n      this._updateUIState(true);\n    }\n  }, {\n    key: '_bindListeners',\n    value: function _bindListeners() {\n      var _this = this;\n\n      var eventBus = this.eventBus,\n          items = this.items;\n\n      var self = this;\n      items.previous.addEventListener('click', function () {\n        eventBus.dispatch('previouspage', { source: self });\n      });\n      items.next.addEventListener('click', function () {\n        eventBus.dispatch('nextpage', { source: self });\n      });\n      items.zoomIn.addEventListener('click', function () {\n        eventBus.dispatch('zoomin', { source: self });\n      });\n      items.zoomOut.addEventListener('click', function () {\n        eventBus.dispatch('zoomout', { source: self });\n      });\n      items.pageNumber.addEventListener('click', function () {\n        this.select();\n      });\n      items.pageNumber.addEventListener('change', function () {\n        eventBus.dispatch('pagenumberchanged', {\n          source: self,\n          value: this.value\n        });\n      });\n      items.scaleSelect.addEventListener('change', function () {\n        if (this.value === 'custom') {\n          return;\n        }\n        eventBus.dispatch('scalechanged', {\n          source: self,\n          value: this.value\n        });\n      });\n      items.presentationModeButton.addEventListener('click', function () {\n        eventBus.dispatch('presentationmode', { source: self });\n      });\n      items.openFile.addEventListener('click', function () {\n        eventBus.dispatch('openfile', { source: self });\n      });\n      items.print.addEventListener('click', function () {\n        eventBus.dispatch('print', { source: self });\n      });\n      items.download.addEventListener('click', function () {\n        eventBus.dispatch('download', { source: self });\n      });\n      items.scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler;\n      eventBus.on('localized', function () {\n        _this._localized();\n      });\n    }\n  }, {\n    key: '_localized',\n    value: function _localized() {\n      this._wasLocalized = true;\n      this._adjustScaleWidth();\n      this._updateUIState(true);\n    }\n  }, {\n    key: '_updateUIState',\n    value: function _updateUIState() {\n      var resetNumPages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (!this._wasLocalized) {\n        return;\n      }\n      var pageNumber = this.pageNumber,\n          pagesCount = this.pagesCount,\n          pageScaleValue = this.pageScaleValue,\n          pageScale = this.pageScale,\n          items = this.items;\n\n      if (resetNumPages) {\n        if (this.hasPageLabels) {\n          items.pageNumber.type = 'text';\n        } else {\n          items.pageNumber.type = 'number';\n          this.l10n.get('of_pages', { pagesCount: pagesCount }, 'of {{pagesCount}}').then(function (msg) {\n            items.numPages.textContent = msg;\n          });\n        }\n        items.pageNumber.max = pagesCount;\n      }\n      if (this.hasPageLabels) {\n        items.pageNumber.value = this.pageLabel;\n        this.l10n.get('page_of_pages', {\n          pageNumber: pageNumber,\n          pagesCount: pagesCount\n        }, '({{pageNumber}} of {{pagesCount}})').then(function (msg) {\n          items.numPages.textContent = msg;\n        });\n      } else {\n        items.pageNumber.value = pageNumber;\n      }\n      items.previous.disabled = pageNumber <= 1;\n      items.next.disabled = pageNumber >= pagesCount;\n      items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE;\n      items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE;\n      var customScale = Math.round(pageScale * 10000) / 100;\n      this.l10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%').then(function (msg) {\n        var options = items.scaleSelect.options;\n        var predefinedValueFound = false;\n        for (var i = 0, ii = options.length; i < ii; i++) {\n          var option = options[i];\n          if (option.value !== pageScaleValue) {\n            option.selected = false;\n            continue;\n          }\n          option.selected = true;\n          predefinedValueFound = true;\n        }\n        if (!predefinedValueFound) {\n          items.customScaleOption.textContent = msg;\n          items.customScaleOption.selected = true;\n        }\n      });\n    }\n  }, {\n    key: 'updateLoadingIndicatorState',\n    value: function updateLoadingIndicatorState() {\n      var loading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      var pageNumberInput = this.items.pageNumber;\n      pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading);\n    }\n  }, {\n    key: '_adjustScaleWidth',\n    value: function _adjustScaleWidth() {\n      var container = this.items.scaleSelectContainer;\n      var select = this.items.scaleSelect;\n      _ui_utils.animationStarted.then(function () {\n        if (container.clientWidth === 0) {\n          container.setAttribute('style', 'display: inherit;');\n        }\n        if (container.clientWidth > 0) {\n          select.setAttribute('style', 'min-width: inherit;');\n          var width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING;\n          select.setAttribute('style', 'min-width: ' + (width + SCALE_SELECT_PADDING) + 'px;');\n          container.setAttribute('style', 'min-width: ' + width + 'px; ' + 'max-width: ' + width + 'px;');\n        }\n      });\n    }\n  }]);\n\n  return Toolbar;\n}();\n\nexports.Toolbar = Toolbar;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ViewHistory = undefined;\n\nvar _regenerator = __webpack_require__(2);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;\n\nvar ViewHistory = function () {\n  function ViewHistory(fingerprint) {\n    var _this = this;\n\n    var cacheSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_VIEW_HISTORY_CACHE_SIZE;\n\n    _classCallCheck(this, ViewHistory);\n\n    this.fingerprint = fingerprint;\n    this.cacheSize = cacheSize;\n    this._initializedPromise = this._readFromStorage().then(function (databaseStr) {\n      var database = JSON.parse(databaseStr || '{}');\n      if (!('files' in database)) {\n        database.files = [];\n      } else {\n        while (database.files.length >= _this.cacheSize) {\n          database.files.shift();\n        }\n      }\n      var index = -1;\n      for (var i = 0, length = database.files.length; i < length; i++) {\n        var branch = database.files[i];\n        if (branch.fingerprint === _this.fingerprint) {\n          index = i;\n          break;\n        }\n      }\n      if (index === -1) {\n        index = database.files.push({ fingerprint: _this.fingerprint }) - 1;\n      }\n      _this.file = database.files[index];\n      _this.database = database;\n    });\n  }\n\n  _createClass(ViewHistory, [{\n    key: '_writeToStorage',\n    value: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n        var databaseStr;\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                databaseStr = JSON.stringify(this.database);\n\n                localStorage.setItem('pdfjs.history', databaseStr);\n\n              case 2:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function _writeToStorage() {\n        return _ref.apply(this, arguments);\n      }\n\n      return _writeToStorage;\n    }()\n  }, {\n    key: '_readFromStorage',\n    value: function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n        return _regenerator2.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                return _context2.abrupt('return', localStorage.getItem('pdfjs.history'));\n\n              case 1:\n              case 'end':\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function _readFromStorage() {\n        return _ref2.apply(this, arguments);\n      }\n\n      return _readFromStorage;\n    }()\n  }, {\n    key: 'set',\n    value: function () {\n      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(name, val) {\n        return _regenerator2.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return this._initializedPromise;\n\n              case 2:\n                this.file[name] = val;\n                return _context3.abrupt('return', this._writeToStorage());\n\n              case 4:\n              case 'end':\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function set(_x2, _x3) {\n        return _ref3.apply(this, arguments);\n      }\n\n      return set;\n    }()\n  }, {\n    key: 'setMultiple',\n    value: function () {\n      var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(properties) {\n        var name;\n        return _regenerator2.default.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.next = 2;\n                return this._initializedPromise;\n\n              case 2:\n                for (name in properties) {\n                  this.file[name] = properties[name];\n                }\n                return _context4.abrupt('return', this._writeToStorage());\n\n              case 4:\n              case 'end':\n                return _context4.stop();\n            }\n          }\n        }, _callee4, this);\n      }));\n\n      function setMultiple(_x4) {\n        return _ref4.apply(this, arguments);\n      }\n\n      return setMultiple;\n    }()\n  }, {\n    key: 'get',\n    value: function () {\n      var _ref5 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee5(name, defaultValue) {\n        var val;\n        return _regenerator2.default.wrap(function _callee5$(_context5) {\n          while (1) {\n            switch (_context5.prev = _context5.next) {\n              case 0:\n                _context5.next = 2;\n                return this._initializedPromise;\n\n              case 2:\n                val = this.file[name];\n                return _context5.abrupt('return', val !== undefined ? val : defaultValue);\n\n              case 4:\n              case 'end':\n                return _context5.stop();\n            }\n          }\n        }, _callee5, this);\n      }));\n\n      function get(_x5, _x6) {\n        return _ref5.apply(this, arguments);\n      }\n\n      return get;\n    }()\n  }, {\n    key: 'getMultiple',\n    value: function () {\n      var _ref6 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee6(properties) {\n        var values, name, val;\n        return _regenerator2.default.wrap(function _callee6$(_context6) {\n          while (1) {\n            switch (_context6.prev = _context6.next) {\n              case 0:\n                _context6.next = 2;\n                return this._initializedPromise;\n\n              case 2:\n                values = Object.create(null);\n\n                for (name in properties) {\n                  val = this.file[name];\n\n                  values[name] = val !== undefined ? val : properties[name];\n                }\n                return _context6.abrupt('return', values);\n\n              case 5:\n              case 'end':\n                return _context6.stop();\n            }\n          }\n        }, _callee6, this);\n      }));\n\n      function getMultiple(_x7) {\n        return _ref6.apply(this, arguments);\n      }\n\n      return getMultiple;\n    }()\n  }]);\n\n  return ViewHistory;\n}();\n\nexports.ViewHistory = ViewHistory;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.GenericCom = undefined;\n\nvar _regenerator = __webpack_require__(2);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _app = __webpack_require__(1);\n\nvar _preferences = __webpack_require__(39);\n\nvar _download_manager = __webpack_require__(40);\n\nvar _genericl10n = __webpack_require__(41);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n;\nvar GenericCom = {};\n\nvar GenericPreferences = function (_BasePreferences) {\n  _inherits(GenericPreferences, _BasePreferences);\n\n  function GenericPreferences() {\n    _classCallCheck(this, GenericPreferences);\n\n    return _possibleConstructorReturn(this, (GenericPreferences.__proto__ || Object.getPrototypeOf(GenericPreferences)).apply(this, arguments));\n  }\n\n  _createClass(GenericPreferences, [{\n    key: '_writeToStorage',\n    value: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(prefObj) {\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj));\n\n              case 1:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function _writeToStorage(_x) {\n        return _ref.apply(this, arguments);\n      }\n\n      return _writeToStorage;\n    }()\n  }, {\n    key: '_readFromStorage',\n    value: function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(prefObj) {\n        return _regenerator2.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                return _context2.abrupt('return', JSON.parse(localStorage.getItem('pdfjs.preferences')));\n\n              case 1:\n              case 'end':\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function _readFromStorage(_x2) {\n        return _ref2.apply(this, arguments);\n      }\n\n      return _readFromStorage;\n    }()\n  }]);\n\n  return GenericPreferences;\n}(_preferences.BasePreferences);\n\nvar GenericExternalServices = Object.create(_app.DefaultExternalServices);\nGenericExternalServices.createDownloadManager = function (options) {\n  return new _download_manager.DownloadManager(options);\n};\nGenericExternalServices.createPreferences = function () {\n  return new GenericPreferences();\n};\nGenericExternalServices.createL10n = function (_ref3) {\n  var _ref3$locale = _ref3.locale,\n      locale = _ref3$locale === undefined ? 'en-US' : _ref3$locale;\n\n  return new _genericl10n.GenericL10n(locale);\n};\n_app.PDFViewerApplication.externalServices = GenericExternalServices;\nexports.GenericCom = GenericCom;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.BasePreferences = undefined;\n\nvar _regenerator = __webpack_require__(2);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultPreferences = null;\nfunction getDefaultPreferences() {\n  if (!defaultPreferences) {\n    defaultPreferences = Promise.resolve({\n      \"showPreviousViewOnLoad\": true,\n      \"defaultZoomValue\": \"\",\n      \"sidebarViewOnLoad\": 0,\n      \"cursorToolOnLoad\": 0,\n      \"enableWebGL\": false,\n      \"eventBusDispatchToDOM\": false,\n      \"pdfBugEnabled\": false,\n      \"disableRange\": false,\n      \"disableStream\": false,\n      \"disableAutoFetch\": false,\n      \"disableFontFace\": false,\n      \"textLayerMode\": 1,\n      \"useOnlyCssZoom\": false,\n      \"externalLinkTarget\": 0,\n      \"renderer\": \"canvas\",\n      \"renderInteractiveForms\": false,\n      \"enablePrintAutoRotate\": false,\n      \"disablePageMode\": false,\n      \"disablePageLabels\": false,\n      \"scrollModeOnLoad\": 0,\n      \"spreadModeOnLoad\": 0\n    });\n  }\n  return defaultPreferences;\n}\n\nvar BasePreferences = function () {\n  function BasePreferences() {\n    var _this = this;\n\n    _classCallCheck(this, BasePreferences);\n\n    if (this.constructor === BasePreferences) {\n      throw new Error('Cannot initialize BasePreferences.');\n    }\n    this.prefs = null;\n    this._initializedPromise = getDefaultPreferences().then(function (defaults) {\n      Object.defineProperty(_this, 'defaults', {\n        value: Object.freeze(defaults),\n        writable: false,\n        enumerable: true,\n        configurable: false\n      });\n      _this.prefs = Object.assign(Object.create(null), defaults);\n      return _this._readFromStorage(defaults);\n    }).then(function (prefs) {\n      if (!prefs) {\n        return;\n      }\n      for (var name in prefs) {\n        var defaultValue = _this.defaults[name],\n            prefValue = prefs[name];\n        if (defaultValue === undefined || (typeof prefValue === \"undefined\" ? \"undefined\" : _typeof(prefValue)) !== (typeof defaultValue === \"undefined\" ? \"undefined\" : _typeof(defaultValue))) {\n          continue;\n        }\n        _this.prefs[name] = prefValue;\n      }\n    });\n  }\n\n  _createClass(BasePreferences, [{\n    key: \"_writeToStorage\",\n    value: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(prefObj) {\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                throw new Error('Not implemented: _writeToStorage');\n\n              case 1:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function _writeToStorage(_x) {\n        return _ref.apply(this, arguments);\n      }\n\n      return _writeToStorage;\n    }()\n  }, {\n    key: \"_readFromStorage\",\n    value: function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(prefObj) {\n        return _regenerator2.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                throw new Error('Not implemented: _readFromStorage');\n\n              case 1:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function _readFromStorage(_x2) {\n        return _ref2.apply(this, arguments);\n      }\n\n      return _readFromStorage;\n    }()\n  }, {\n    key: \"reset\",\n    value: function () {\n      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n        return _regenerator2.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return this._initializedPromise;\n\n              case 2:\n                this.prefs = Object.assign(Object.create(null), this.defaults);\n                return _context3.abrupt(\"return\", this._writeToStorage(this.defaults));\n\n              case 4:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function reset() {\n        return _ref3.apply(this, arguments);\n      }\n\n      return reset;\n    }()\n  }, {\n    key: \"set\",\n    value: function () {\n      var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(name, value) {\n        var defaultValue, valueType, defaultType;\n        return _regenerator2.default.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.next = 2;\n                return this._initializedPromise;\n\n              case 2:\n                defaultValue = this.defaults[name];\n\n                if (!(defaultValue === undefined)) {\n                  _context4.next = 7;\n                  break;\n                }\n\n                throw new Error(\"Set preference: \\\"\" + name + \"\\\" is undefined.\");\n\n              case 7:\n                if (!(value === undefined)) {\n                  _context4.next = 9;\n                  break;\n                }\n\n                throw new Error('Set preference: no value is specified.');\n\n              case 9:\n                valueType = typeof value === \"undefined\" ? \"undefined\" : _typeof(value);\n                defaultType = typeof defaultValue === \"undefined\" ? \"undefined\" : _typeof(defaultValue);\n\n                if (!(valueType !== defaultType)) {\n                  _context4.next = 19;\n                  break;\n                }\n\n                if (!(valueType === 'number' && defaultType === 'string')) {\n                  _context4.next = 16;\n                  break;\n                }\n\n                value = value.toString();\n                _context4.next = 17;\n                break;\n\n              case 16:\n                throw new Error(\"Set preference: \\\"\" + value + \"\\\" is a \" + valueType + \", \" + (\"expected a \" + defaultType + \".\"));\n\n              case 17:\n                _context4.next = 21;\n                break;\n\n              case 19:\n                if (!(valueType === 'number' && !Number.isInteger(value))) {\n                  _context4.next = 21;\n                  break;\n                }\n\n                throw new Error(\"Set preference: \\\"\" + value + \"\\\" must be an integer.\");\n\n              case 21:\n                this.prefs[name] = value;\n                return _context4.abrupt(\"return\", this._writeToStorage(this.prefs));\n\n              case 23:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4, this);\n      }));\n\n      function set(_x3, _x4) {\n        return _ref4.apply(this, arguments);\n      }\n\n      return set;\n    }()\n  }, {\n    key: \"get\",\n    value: function () {\n      var _ref5 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee5(name) {\n        var defaultValue, prefValue;\n        return _regenerator2.default.wrap(function _callee5$(_context5) {\n          while (1) {\n            switch (_context5.prev = _context5.next) {\n              case 0:\n                _context5.next = 2;\n                return this._initializedPromise;\n\n              case 2:\n                defaultValue = this.defaults[name];\n\n                if (!(defaultValue === undefined)) {\n                  _context5.next = 7;\n                  break;\n                }\n\n                throw new Error(\"Get preference: \\\"\" + name + \"\\\" is undefined.\");\n\n              case 7:\n                prefValue = this.prefs[name];\n\n                if (!(prefValue !== undefined)) {\n                  _context5.next = 10;\n                  break;\n                }\n\n                return _context5.abrupt(\"return\", prefValue);\n\n              case 10:\n                return _context5.abrupt(\"return\", defaultValue);\n\n              case 11:\n              case \"end\":\n                return _context5.stop();\n            }\n          }\n        }, _callee5, this);\n      }));\n\n      function get(_x5) {\n        return _ref5.apply(this, arguments);\n      }\n\n      return get;\n    }()\n  }, {\n    key: \"getAll\",\n    value: function () {\n      var _ref6 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n        return _regenerator2.default.wrap(function _callee6$(_context6) {\n          while (1) {\n            switch (_context6.prev = _context6.next) {\n              case 0:\n                _context6.next = 2;\n                return this._initializedPromise;\n\n              case 2:\n                return _context6.abrupt(\"return\", Object.assign(Object.create(null), this.defaults, this.prefs));\n\n              case 3:\n              case \"end\":\n                return _context6.stop();\n            }\n          }\n        }, _callee6, this);\n      }));\n\n      function getAll() {\n        return _ref6.apply(this, arguments);\n      }\n\n      return getAll;\n    }()\n  }]);\n\n  return BasePreferences;\n}();\n\nexports.BasePreferences = BasePreferences;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DownloadManager = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _pdfjsLib = __webpack_require__(7);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n;\nvar DISABLE_CREATE_OBJECT_URL = _pdfjsLib.apiCompatibilityParams.disableCreateObjectURL || false;\nfunction _download(blobUrl, filename) {\n  var a = document.createElement('a');\n  if (!a.click) {\n    throw new Error('DownloadManager: \"a.click()\" is not supported.');\n  }\n  a.href = blobUrl;\n  a.target = '_parent';\n  if ('download' in a) {\n    a.download = filename;\n  }\n  (document.body || document.documentElement).appendChild(a);\n  a.click();\n  a.remove();\n}\n\nvar DownloadManager = function () {\n  function DownloadManager(_ref) {\n    var _ref$disableCreateObj = _ref.disableCreateObjectURL,\n        disableCreateObjectURL = _ref$disableCreateObj === undefined ? DISABLE_CREATE_OBJECT_URL : _ref$disableCreateObj;\n\n    _classCallCheck(this, DownloadManager);\n\n    this.disableCreateObjectURL = disableCreateObjectURL;\n  }\n\n  _createClass(DownloadManager, [{\n    key: 'downloadUrl',\n    value: function downloadUrl(url, filename) {\n      if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, 'http://example.com')) {\n        return;\n      }\n      _download(url + '#pdfjs.action=download', filename);\n    }\n  }, {\n    key: 'downloadData',\n    value: function downloadData(data, filename, contentType) {\n      if (navigator.msSaveBlob) {\n        return navigator.msSaveBlob(new Blob([data], { type: contentType }), filename);\n      }\n      var blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, this.disableCreateObjectURL);\n      _download(blobUrl, filename);\n    }\n  }, {\n    key: 'download',\n    value: function download(blob, url, filename) {\n      if (navigator.msSaveBlob) {\n        if (!navigator.msSaveBlob(blob, filename)) {\n          this.downloadUrl(url, filename);\n        }\n        return;\n      }\n      if (this.disableCreateObjectURL) {\n        this.downloadUrl(url, filename);\n        return;\n      }\n      var blobUrl = _pdfjsLib.URL.createObjectURL(blob);\n      _download(blobUrl, filename);\n    }\n  }]);\n\n  return DownloadManager;\n}();\n\nexports.DownloadManager = DownloadManager;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.GenericL10n = undefined;\n\nvar _regenerator = __webpack_require__(2);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(42);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar webL10n = document.webL10n;\n\nvar GenericL10n = function () {\n  function GenericL10n(lang) {\n    _classCallCheck(this, GenericL10n);\n\n    this._lang = lang;\n    this._ready = new Promise(function (resolve, reject) {\n      webL10n.setLanguage(lang, function () {\n        resolve(webL10n);\n      });\n    });\n  }\n\n  _createClass(GenericL10n, [{\n    key: 'getLanguage',\n    value: function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n        var l10n;\n        return _regenerator2.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return this._ready;\n\n              case 2:\n                l10n = _context.sent;\n                return _context.abrupt('return', l10n.getLanguage());\n\n              case 4:\n              case 'end':\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function getLanguage() {\n        return _ref.apply(this, arguments);\n      }\n\n      return getLanguage;\n    }()\n  }, {\n    key: 'getDirection',\n    value: function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n        var l10n;\n        return _regenerator2.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return this._ready;\n\n              case 2:\n                l10n = _context2.sent;\n                return _context2.abrupt('return', l10n.getDirection());\n\n              case 4:\n              case 'end':\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function getDirection() {\n        return _ref2.apply(this, arguments);\n      }\n\n      return getDirection;\n    }()\n  }, {\n    key: 'get',\n    value: function () {\n      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(property, args, fallback) {\n        var l10n;\n        return _regenerator2.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return this._ready;\n\n              case 2:\n                l10n = _context3.sent;\n                return _context3.abrupt('return', l10n.get(property, args, fallback));\n\n              case 4:\n              case 'end':\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function get(_x, _x2, _x3) {\n        return _ref3.apply(this, arguments);\n      }\n\n      return get;\n    }()\n  }, {\n    key: 'translate',\n    value: function () {\n      var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(element) {\n        var l10n;\n        return _regenerator2.default.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.next = 2;\n                return this._ready;\n\n              case 2:\n                l10n = _context4.sent;\n                return _context4.abrupt('return', l10n.translate(element));\n\n              case 4:\n              case 'end':\n                return _context4.stop();\n            }\n          }\n        }, _callee4, this);\n      }));\n\n      function translate(_x4) {\n        return _ref4.apply(this, arguments);\n      }\n\n      return translate;\n    }()\n  }]);\n\n  return GenericL10n;\n}();\n\nexports.GenericL10n = GenericL10n;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\ndocument.webL10n = function (window, document, undefined) {\n  var gL10nData = {};\n  var gTextData = '';\n  var gTextProp = 'textContent';\n  var gLanguage = '';\n  var gMacros = {};\n  var gReadyState = 'loading';\n  var gAsyncResourceLoading = true;\n  function getL10nResourceLinks() {\n    return document.querySelectorAll('link[type=\"application/l10n\"]');\n  }\n  function getL10nDictionary() {\n    var script = document.querySelector('script[type=\"application/l10n\"]');\n    return script ? JSON.parse(script.innerHTML) : null;\n  }\n  function getTranslatableChildren(element) {\n    return element ? element.querySelectorAll('*[data-l10n-id]') : [];\n  }\n  function getL10nAttributes(element) {\n    if (!element) return {};\n    var l10nId = element.getAttribute('data-l10n-id');\n    var l10nArgs = element.getAttribute('data-l10n-args');\n    var args = {};\n    if (l10nArgs) {\n      try {\n        args = JSON.parse(l10nArgs);\n      } catch (e) {\n        console.warn('could not parse arguments for #' + l10nId);\n      }\n    }\n    return {\n      id: l10nId,\n      args: args\n    };\n  }\n  function fireL10nReadyEvent(lang) {\n    var evtObject = document.createEvent('Event');\n    evtObject.initEvent('localized', true, false);\n    evtObject.language = lang;\n    document.dispatchEvent(evtObject);\n  }\n  function xhrLoadText(url, onSuccess, onFailure) {\n    onSuccess = onSuccess || function _onSuccess(data) {};\n    onFailure = onFailure || function _onFailure() {};\n    var xhr = new XMLHttpRequest();\n    xhr.open('GET', url, gAsyncResourceLoading);\n    if (xhr.overrideMimeType) {\n      xhr.overrideMimeType('text/plain; charset=utf-8');\n    }\n    xhr.onreadystatechange = function () {\n      if (xhr.readyState == 4) {\n        if (xhr.status == 200 || xhr.status === 0) {\n          onSuccess(xhr.responseText);\n        } else {\n          onFailure();\n        }\n      }\n    };\n    xhr.onerror = onFailure;\n    xhr.ontimeout = onFailure;\n    try {\n      xhr.send(null);\n    } catch (e) {\n      onFailure();\n    }\n  }\n  function parseResource(href, lang, successCallback, failureCallback) {\n    var baseURL = href.replace(/[^\\/]*$/, '') || './';\n    function evalString(text) {\n      if (text.lastIndexOf('\\\\') < 0) return text;\n      return text.replace(/\\\\\\\\/g, '\\\\').replace(/\\\\n/g, '\\n').replace(/\\\\r/g, '\\r').replace(/\\\\t/g, '\\t').replace(/\\\\b/g, '\\b').replace(/\\\\f/g, '\\f').replace(/\\\\{/g, '{').replace(/\\\\}/g, '}').replace(/\\\\\"/g, '\"').replace(/\\\\'/g, \"'\");\n    }\n    function parseProperties(text, parsedPropertiesCallback) {\n      var dictionary = {};\n      var reBlank = /^\\s*|\\s*$/;\n      var reComment = /^\\s*#|^\\s*$/;\n      var reSection = /^\\s*\\[(.*)\\]\\s*$/;\n      var reImport = /^\\s*@import\\s+url\\((.*)\\)\\s*$/i;\n      var reSplit = /^([^=\\s]*)\\s*=\\s*(.+)$/;\n      function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {\n        var entries = rawText.replace(reBlank, '').split(/[\\r\\n]+/);\n        var currentLang = '*';\n        var genericLang = lang.split('-', 1)[0];\n        var skipLang = false;\n        var match = '';\n        function nextEntry() {\n          while (true) {\n            if (!entries.length) {\n              parsedRawLinesCallback();\n              return;\n            }\n            var line = entries.shift();\n            if (reComment.test(line)) continue;\n            if (extendedSyntax) {\n              match = reSection.exec(line);\n              if (match) {\n                currentLang = match[1].toLowerCase();\n                skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang;\n                continue;\n              } else if (skipLang) {\n                continue;\n              }\n              match = reImport.exec(line);\n              if (match) {\n                loadImport(baseURL + match[1], nextEntry);\n                return;\n              }\n            }\n            var tmp = line.match(reSplit);\n            if (tmp && tmp.length == 3) {\n              dictionary[tmp[1]] = evalString(tmp[2]);\n            }\n          }\n        }\n        nextEntry();\n      }\n      function loadImport(url, callback) {\n        xhrLoadText(url, function (content) {\n          parseRawLines(content, false, callback);\n        }, function () {\n          console.warn(url + ' not found.');\n          callback();\n        });\n      }\n      parseRawLines(text, true, function () {\n        parsedPropertiesCallback(dictionary);\n      });\n    }\n    xhrLoadText(href, function (response) {\n      gTextData += response;\n      parseProperties(response, function (data) {\n        for (var key in data) {\n          var id,\n              prop,\n              index = key.lastIndexOf('.');\n          if (index > 0) {\n            id = key.substring(0, index);\n            prop = key.substring(index + 1);\n          } else {\n            id = key;\n            prop = gTextProp;\n          }\n          if (!gL10nData[id]) {\n            gL10nData[id] = {};\n          }\n          gL10nData[id][prop] = data[key];\n        }\n        if (successCallback) {\n          successCallback();\n        }\n      });\n    }, failureCallback);\n  }\n  function loadLocale(lang, callback) {\n    if (lang) {\n      lang = lang.toLowerCase();\n    }\n    callback = callback || function _callback() {};\n    clear();\n    gLanguage = lang;\n    var langLinks = getL10nResourceLinks();\n    var langCount = langLinks.length;\n    if (langCount === 0) {\n      var dict = getL10nDictionary();\n      if (dict && dict.locales && dict.default_locale) {\n        console.log('using the embedded JSON directory, early way out');\n        gL10nData = dict.locales[lang];\n        if (!gL10nData) {\n          var defaultLocale = dict.default_locale.toLowerCase();\n          for (var anyCaseLang in dict.locales) {\n            anyCaseLang = anyCaseLang.toLowerCase();\n            if (anyCaseLang === lang) {\n              gL10nData = dict.locales[lang];\n              break;\n            } else if (anyCaseLang === defaultLocale) {\n              gL10nData = dict.locales[defaultLocale];\n            }\n          }\n        }\n        callback();\n      } else {\n        console.log('no resource to load, early way out');\n      }\n      fireL10nReadyEvent(lang);\n      gReadyState = 'complete';\n      return;\n    }\n    var onResourceLoaded = null;\n    var gResourceCount = 0;\n    onResourceLoaded = function onResourceLoaded() {\n      gResourceCount++;\n      if (gResourceCount >= langCount) {\n        callback();\n        fireL10nReadyEvent(lang);\n        gReadyState = 'complete';\n      }\n    };\n    function L10nResourceLink(link) {\n      var href = link.href;\n      this.load = function (lang, callback) {\n        parseResource(href, lang, callback, function () {\n          console.warn(href + ' not found.');\n          console.warn('\"' + lang + '\" resource not found');\n          gLanguage = '';\n          callback();\n        });\n      };\n    }\n    for (var i = 0; i < langCount; i++) {\n      var resource = new L10nResourceLink(langLinks[i]);\n      resource.load(lang, onResourceLoaded);\n    }\n  }\n  function clear() {\n    gL10nData = {};\n    gTextData = '';\n    gLanguage = '';\n  }\n  function getPluralRules(lang) {\n    var locales2rules = {\n      'af': 3,\n      'ak': 4,\n      'am': 4,\n      'ar': 1,\n      'asa': 3,\n      'az': 0,\n      'be': 11,\n      'bem': 3,\n      'bez': 3,\n      'bg': 3,\n      'bh': 4,\n      'bm': 0,\n      'bn': 3,\n      'bo': 0,\n      'br': 20,\n      'brx': 3,\n      'bs': 11,\n      'ca': 3,\n      'cgg': 3,\n      'chr': 3,\n      'cs': 12,\n      'cy': 17,\n      'da': 3,\n      'de': 3,\n      'dv': 3,\n      'dz': 0,\n      'ee': 3,\n      'el': 3,\n      'en': 3,\n      'eo': 3,\n      'es': 3,\n      'et': 3,\n      'eu': 3,\n      'fa': 0,\n      'ff': 5,\n      'fi': 3,\n      'fil': 4,\n      'fo': 3,\n      'fr': 5,\n      'fur': 3,\n      'fy': 3,\n      'ga': 8,\n      'gd': 24,\n      'gl': 3,\n      'gsw': 3,\n      'gu': 3,\n      'guw': 4,\n      'gv': 23,\n      'ha': 3,\n      'haw': 3,\n      'he': 2,\n      'hi': 4,\n      'hr': 11,\n      'hu': 0,\n      'id': 0,\n      'ig': 0,\n      'ii': 0,\n      'is': 3,\n      'it': 3,\n      'iu': 7,\n      'ja': 0,\n      'jmc': 3,\n      'jv': 0,\n      'ka': 0,\n      'kab': 5,\n      'kaj': 3,\n      'kcg': 3,\n      'kde': 0,\n      'kea': 0,\n      'kk': 3,\n      'kl': 3,\n      'km': 0,\n      'kn': 0,\n      'ko': 0,\n      'ksb': 3,\n      'ksh': 21,\n      'ku': 3,\n      'kw': 7,\n      'lag': 18,\n      'lb': 3,\n      'lg': 3,\n      'ln': 4,\n      'lo': 0,\n      'lt': 10,\n      'lv': 6,\n      'mas': 3,\n      'mg': 4,\n      'mk': 16,\n      'ml': 3,\n      'mn': 3,\n      'mo': 9,\n      'mr': 3,\n      'ms': 0,\n      'mt': 15,\n      'my': 0,\n      'nah': 3,\n      'naq': 7,\n      'nb': 3,\n      'nd': 3,\n      'ne': 3,\n      'nl': 3,\n      'nn': 3,\n      'no': 3,\n      'nr': 3,\n      'nso': 4,\n      'ny': 3,\n      'nyn': 3,\n      'om': 3,\n      'or': 3,\n      'pa': 3,\n      'pap': 3,\n      'pl': 13,\n      'ps': 3,\n      'pt': 3,\n      'rm': 3,\n      'ro': 9,\n      'rof': 3,\n      'ru': 11,\n      'rwk': 3,\n      'sah': 0,\n      'saq': 3,\n      'se': 7,\n      'seh': 3,\n      'ses': 0,\n      'sg': 0,\n      'sh': 11,\n      'shi': 19,\n      'sk': 12,\n      'sl': 14,\n      'sma': 7,\n      'smi': 7,\n      'smj': 7,\n      'smn': 7,\n      'sms': 7,\n      'sn': 3,\n      'so': 3,\n      'sq': 3,\n      'sr': 11,\n      'ss': 3,\n      'ssy': 3,\n      'st': 3,\n      'sv': 3,\n      'sw': 3,\n      'syr': 3,\n      'ta': 3,\n      'te': 3,\n      'teo': 3,\n      'th': 0,\n      'ti': 4,\n      'tig': 3,\n      'tk': 3,\n      'tl': 4,\n      'tn': 3,\n      'to': 0,\n      'tr': 0,\n      'ts': 3,\n      'tzm': 22,\n      'uk': 11,\n      'ur': 3,\n      've': 3,\n      'vi': 0,\n      'vun': 3,\n      'wa': 4,\n      'wae': 3,\n      'wo': 0,\n      'xh': 3,\n      'xog': 3,\n      'yo': 0,\n      'zh': 0,\n      'zu': 3\n    };\n    function isIn(n, list) {\n      return list.indexOf(n) !== -1;\n    }\n    function isBetween(n, start, end) {\n      return start <= n && n <= end;\n    }\n    var pluralRules = {\n      '0': function _(n) {\n        return 'other';\n      },\n      '1': function _(n) {\n        if (isBetween(n % 100, 3, 10)) return 'few';\n        if (n === 0) return 'zero';\n        if (isBetween(n % 100, 11, 99)) return 'many';\n        if (n == 2) return 'two';\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '2': function _(n) {\n        if (n !== 0 && n % 10 === 0) return 'many';\n        if (n == 2) return 'two';\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '3': function _(n) {\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '4': function _(n) {\n        if (isBetween(n, 0, 1)) return 'one';\n        return 'other';\n      },\n      '5': function _(n) {\n        if (isBetween(n, 0, 2) && n != 2) return 'one';\n        return 'other';\n      },\n      '6': function _(n) {\n        if (n === 0) return 'zero';\n        if (n % 10 == 1 && n % 100 != 11) return 'one';\n        return 'other';\n      },\n      '7': function _(n) {\n        if (n == 2) return 'two';\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '8': function _(n) {\n        if (isBetween(n, 3, 6)) return 'few';\n        if (isBetween(n, 7, 10)) return 'many';\n        if (n == 2) return 'two';\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '9': function _(n) {\n        if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few';\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '10': function _(n) {\n        if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few';\n        if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one';\n        return 'other';\n      },\n      '11': function _(n) {\n        if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';\n        if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many';\n        if (n % 10 == 1 && n % 100 != 11) return 'one';\n        return 'other';\n      },\n      '12': function _(n) {\n        if (isBetween(n, 2, 4)) return 'few';\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '13': function _(n) {\n        if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';\n        if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many';\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '14': function _(n) {\n        if (isBetween(n % 100, 3, 4)) return 'few';\n        if (n % 100 == 2) return 'two';\n        if (n % 100 == 1) return 'one';\n        return 'other';\n      },\n      '15': function _(n) {\n        if (n === 0 || isBetween(n % 100, 2, 10)) return 'few';\n        if (isBetween(n % 100, 11, 19)) return 'many';\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '16': function _(n) {\n        if (n % 10 == 1 && n != 11) return 'one';\n        return 'other';\n      },\n      '17': function _(n) {\n        if (n == 3) return 'few';\n        if (n === 0) return 'zero';\n        if (n == 6) return 'many';\n        if (n == 2) return 'two';\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '18': function _(n) {\n        if (n === 0) return 'zero';\n        if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one';\n        return 'other';\n      },\n      '19': function _(n) {\n        if (isBetween(n, 2, 10)) return 'few';\n        if (isBetween(n, 0, 1)) return 'one';\n        return 'other';\n      },\n      '20': function _(n) {\n        if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few';\n        if (n % 1000000 === 0 && n !== 0) return 'many';\n        if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two';\n        if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one';\n        return 'other';\n      },\n      '21': function _(n) {\n        if (n === 0) return 'zero';\n        if (n == 1) return 'one';\n        return 'other';\n      },\n      '22': function _(n) {\n        if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one';\n        return 'other';\n      },\n      '23': function _(n) {\n        if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one';\n        return 'other';\n      },\n      '24': function _(n) {\n        if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few';\n        if (isIn(n, [2, 12])) return 'two';\n        if (isIn(n, [1, 11])) return 'one';\n        return 'other';\n      }\n    };\n    var index = locales2rules[lang.replace(/-.*$/, '')];\n    if (!(index in pluralRules)) {\n      console.warn('plural form unknown for [' + lang + ']');\n      return function () {\n        return 'other';\n      };\n    }\n    return pluralRules[index];\n  }\n  gMacros.plural = function (str, param, key, prop) {\n    var n = parseFloat(param);\n    if (isNaN(n)) return str;\n    if (prop != gTextProp) return str;\n    if (!gMacros._pluralRules) {\n      gMacros._pluralRules = getPluralRules(gLanguage);\n    }\n    var index = '[' + gMacros._pluralRules(n) + ']';\n    if (n === 0 && key + '[zero]' in gL10nData) {\n      str = gL10nData[key + '[zero]'][prop];\n    } else if (n == 1 && key + '[one]' in gL10nData) {\n      str = gL10nData[key + '[one]'][prop];\n    } else if (n == 2 && key + '[two]' in gL10nData) {\n      str = gL10nData[key + '[two]'][prop];\n    } else if (key + index in gL10nData) {\n      str = gL10nData[key + index][prop];\n    } else if (key + '[other]' in gL10nData) {\n      str = gL10nData[key + '[other]'][prop];\n    }\n    return str;\n  };\n  function getL10nData(key, args, fallback) {\n    var data = gL10nData[key];\n    if (!data) {\n      console.warn('#' + key + ' is undefined.');\n      if (!fallback) {\n        return null;\n      }\n      data = fallback;\n    }\n    var rv = {};\n    for (var prop in data) {\n      var str = data[prop];\n      str = substIndexes(str, args, key, prop);\n      str = substArguments(str, args, key);\n      rv[prop] = str;\n    }\n    return rv;\n  }\n  function substIndexes(str, args, key, prop) {\n    var reIndex = /\\{\\[\\s*([a-zA-Z]+)\\(([a-zA-Z]+)\\)\\s*\\]\\}/;\n    var reMatch = reIndex.exec(str);\n    if (!reMatch || !reMatch.length) return str;\n    var macroName = reMatch[1];\n    var paramName = reMatch[2];\n    var param;\n    if (args && paramName in args) {\n      param = args[paramName];\n    } else if (paramName in gL10nData) {\n      param = gL10nData[paramName];\n    }\n    if (macroName in gMacros) {\n      var macro = gMacros[macroName];\n      str = macro(str, param, key, prop);\n    }\n    return str;\n  }\n  function substArguments(str, args, key) {\n    var reArgs = /\\{\\{\\s*(.+?)\\s*\\}\\}/g;\n    return str.replace(reArgs, function (matched_text, arg) {\n      if (args && arg in args) {\n        return args[arg];\n      }\n      if (arg in gL10nData) {\n        return gL10nData[arg];\n      }\n      console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');\n      return matched_text;\n    });\n  }\n  function translateElement(element) {\n    var l10n = getL10nAttributes(element);\n    if (!l10n.id) return;\n    var data = getL10nData(l10n.id, l10n.args);\n    if (!data) {\n      console.warn('#' + l10n.id + ' is undefined.');\n      return;\n    }\n    if (data[gTextProp]) {\n      if (getChildElementCount(element) === 0) {\n        element[gTextProp] = data[gTextProp];\n      } else {\n        var children = element.childNodes;\n        var found = false;\n        for (var i = 0, l = children.length; i < l; i++) {\n          if (children[i].nodeType === 3 && /\\S/.test(children[i].nodeValue)) {\n            if (found) {\n              children[i].nodeValue = '';\n            } else {\n              children[i].nodeValue = data[gTextProp];\n              found = true;\n            }\n          }\n        }\n        if (!found) {\n          var textNode = document.createTextNode(data[gTextProp]);\n          element.insertBefore(textNode, element.firstChild);\n        }\n      }\n      delete data[gTextProp];\n    }\n    for (var k in data) {\n      element[k] = data[k];\n    }\n  }\n  function getChildElementCount(element) {\n    if (element.children) {\n      return element.children.length;\n    }\n    if (typeof element.childElementCount !== 'undefined') {\n      return element.childElementCount;\n    }\n    var count = 0;\n    for (var i = 0; i < element.childNodes.length; i++) {\n      count += element.nodeType === 1 ? 1 : 0;\n    }\n    return count;\n  }\n  function translateFragment(element) {\n    element = element || document.documentElement;\n    var children = getTranslatableChildren(element);\n    var elementCount = children.length;\n    for (var i = 0; i < elementCount; i++) {\n      translateElement(children[i]);\n    }\n    translateElement(element);\n  }\n  return {\n    get: function get(key, args, fallbackString) {\n      var index = key.lastIndexOf('.');\n      var prop = gTextProp;\n      if (index > 0) {\n        prop = key.substring(index + 1);\n        key = key.substring(0, index);\n      }\n      var fallback;\n      if (fallbackString) {\n        fallback = {};\n        fallback[prop] = fallbackString;\n      }\n      var data = getL10nData(key, args, fallback);\n      if (data && prop in data) {\n        return data[prop];\n      }\n      return '{{' + key + '}}';\n    },\n    getData: function getData() {\n      return gL10nData;\n    },\n    getText: function getText() {\n      return gTextData;\n    },\n    getLanguage: function getLanguage() {\n      return gLanguage;\n    },\n    setLanguage: function setLanguage(lang, callback) {\n      loadLocale(lang, function () {\n        if (callback) callback();\n      });\n    },\n    getDirection: function getDirection() {\n      var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];\n      var shortCode = gLanguage.split('-', 1)[0];\n      return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr';\n    },\n    translate: translateFragment,\n    getReadyState: function getReadyState() {\n      return gReadyState;\n    },\n    ready: function ready(callback) {\n      if (!callback) {\n        return;\n      } else if (gReadyState == 'complete' || gReadyState == 'interactive') {\n        window.setTimeout(function () {\n          callback();\n        });\n      } else if (document.addEventListener) {\n        document.addEventListener('localized', function once() {\n          document.removeEventListener('localized', once);\n          callback();\n        });\n      }\n    }\n  };\n}(window, document);\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PDFPrintService = undefined;\n\nvar _ui_utils = __webpack_require__(6);\n\nvar _app = __webpack_require__(1);\n\nvar _pdfjsLib = __webpack_require__(7);\n\nvar activeService = null;\nvar overlayManager = null;\nfunction renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {\n  var scratchCanvas = activeService.scratchCanvas;\n  var PRINT_RESOLUTION = 150;\n  var PRINT_UNITS = PRINT_RESOLUTION / 72.0;\n  scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);\n  scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);\n  var width = Math.floor(size.width * _ui_utils.CSS_UNITS) + 'px';\n  var height = Math.floor(size.height * _ui_utils.CSS_UNITS) + 'px';\n  var ctx = scratchCanvas.getContext('2d');\n  ctx.save();\n  ctx.fillStyle = 'rgb(255, 255, 255)';\n  ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);\n  ctx.restore();\n  return pdfDocument.getPage(pageNumber).then(function (pdfPage) {\n    var renderContext = {\n      canvasContext: ctx,\n      transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],\n      viewport: pdfPage.getViewport(1, size.rotation),\n      intent: 'print'\n    };\n    return pdfPage.render(renderContext).promise;\n  }).then(function () {\n    return {\n      width: width,\n      height: height\n    };\n  });\n}\nfunction PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n) {\n  this.pdfDocument = pdfDocument;\n  this.pagesOverview = pagesOverview;\n  this.printContainer = printContainer;\n  this.l10n = l10n || _ui_utils.NullL10n;\n  this.disableCreateObjectURL = pdfDocument.loadingParams['disableCreateObjectURL'];\n  this.currentPage = -1;\n  this.scratchCanvas = document.createElement('canvas');\n}\nPDFPrintService.prototype = {\n  layout: function layout() {\n    this.throwIfInactive();\n    var body = document.querySelector('body');\n    body.setAttribute('data-pdfjsprinting', true);\n    var hasEqualPageSizes = this.pagesOverview.every(function (size) {\n      return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height;\n    }, this);\n    if (!hasEqualPageSizes) {\n      console.warn('Not all pages have the same size. The printed ' + 'result may be incorrect!');\n    }\n    this.pageStyleSheet = document.createElement('style');\n    var pageSize = this.pagesOverview[0];\n    this.pageStyleSheet.textContent = '@supports ((size:A4) and (size:1pt 1pt)) {' + '@page { size: ' + pageSize.width + 'pt ' + pageSize.height + 'pt;}' + '}';\n    body.appendChild(this.pageStyleSheet);\n  },\n  destroy: function destroy() {\n    if (activeService !== this) {\n      return;\n    }\n    this.printContainer.textContent = '';\n    if (this.pageStyleSheet) {\n      this.pageStyleSheet.remove();\n      this.pageStyleSheet = null;\n    }\n    this.scratchCanvas.width = this.scratchCanvas.height = 0;\n    this.scratchCanvas = null;\n    activeService = null;\n    ensureOverlay().then(function () {\n      if (overlayManager.active !== 'printServiceOverlay') {\n        return;\n      }\n      overlayManager.close('printServiceOverlay');\n    });\n  },\n  renderPages: function renderPages() {\n    var _this = this;\n\n    var pageCount = this.pagesOverview.length;\n    var renderNextPage = function renderNextPage(resolve, reject) {\n      _this.throwIfInactive();\n      if (++_this.currentPage >= pageCount) {\n        renderProgress(pageCount, pageCount, _this.l10n);\n        resolve();\n        return;\n      }\n      var index = _this.currentPage;\n      renderProgress(index, pageCount, _this.l10n);\n      renderPage(_this, _this.pdfDocument, index + 1, _this.pagesOverview[index]).then(_this.useRenderedPage.bind(_this)).then(function () {\n        renderNextPage(resolve, reject);\n      }, reject);\n    };\n    return new Promise(renderNextPage);\n  },\n  useRenderedPage: function useRenderedPage(printItem) {\n    this.throwIfInactive();\n    var img = document.createElement('img');\n    img.style.width = printItem.width;\n    img.style.height = printItem.height;\n    var scratchCanvas = this.scratchCanvas;\n    if ('toBlob' in scratchCanvas && !this.disableCreateObjectURL) {\n      scratchCanvas.toBlob(function (blob) {\n        img.src = _pdfjsLib.URL.createObjectURL(blob);\n      });\n    } else {\n      img.src = scratchCanvas.toDataURL();\n    }\n    var wrapper = document.createElement('div');\n    wrapper.appendChild(img);\n    this.printContainer.appendChild(wrapper);\n    return new Promise(function (resolve, reject) {\n      img.onload = resolve;\n      img.onerror = reject;\n    });\n  },\n  performPrint: function performPrint() {\n    var _this2 = this;\n\n    this.throwIfInactive();\n    return new Promise(function (resolve) {\n      setTimeout(function () {\n        if (!_this2.active) {\n          resolve();\n          return;\n        }\n        print.call(window);\n        setTimeout(resolve, 20);\n      }, 0);\n    });\n  },\n\n  get active() {\n    return this === activeService;\n  },\n  throwIfInactive: function throwIfInactive() {\n    if (!this.active) {\n      throw new Error('This print request was cancelled or completed.');\n    }\n  }\n};\nvar print = window.print;\nwindow.print = function print() {\n  if (activeService) {\n    console.warn('Ignored window.print() because of a pending print job.');\n    return;\n  }\n  ensureOverlay().then(function () {\n    if (activeService) {\n      overlayManager.open('printServiceOverlay');\n    }\n  });\n  try {\n    dispatchEvent('beforeprint');\n  } finally {\n    if (!activeService) {\n      console.error('Expected print service to be initialized.');\n      ensureOverlay().then(function () {\n        if (overlayManager.active === 'printServiceOverlay') {\n          overlayManager.close('printServiceOverlay');\n        }\n      });\n      return;\n    }\n    var activeServiceOnEntry = activeService;\n    activeService.renderPages().then(function () {\n      return activeServiceOnEntry.performPrint();\n    }).catch(function () {}).then(function () {\n      if (activeServiceOnEntry.active) {\n        abort();\n      }\n    });\n  }\n};\nfunction dispatchEvent(eventType) {\n  var event = document.createEvent('CustomEvent');\n  event.initCustomEvent(eventType, false, false, 'custom');\n  window.dispatchEvent(event);\n}\nfunction abort() {\n  if (activeService) {\n    activeService.destroy();\n    dispatchEvent('afterprint');\n  }\n}\nfunction renderProgress(index, total, l10n) {\n  var progressContainer = document.getElementById('printServiceOverlay');\n  var progress = Math.round(100 * index / total);\n  var progressBar = progressContainer.querySelector('progress');\n  var progressPerc = progressContainer.querySelector('.relative-progress');\n  progressBar.value = progress;\n  l10n.get('print_progress_percent', { progress: progress }, progress + '%').then(function (msg) {\n    progressPerc.textContent = msg;\n  });\n}\nvar hasAttachEvent = !!document.attachEvent;\nwindow.addEventListener('keydown', function (event) {\n  if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) {\n    window.print();\n    if (hasAttachEvent) {\n      return;\n    }\n    event.preventDefault();\n    if (event.stopImmediatePropagation) {\n      event.stopImmediatePropagation();\n    } else {\n      event.stopPropagation();\n    }\n    return;\n  }\n}, true);\nif (hasAttachEvent) {\n  document.attachEvent('onkeydown', function (event) {\n    event = event || window.event;\n    if (event.keyCode === 80 && event.ctrlKey) {\n      event.keyCode = 0;\n      return false;\n    }\n  });\n}\nif ('onbeforeprint' in window) {\n  var stopPropagationIfNeeded = function stopPropagationIfNeeded(event) {\n    if (event.detail !== 'custom' && event.stopImmediatePropagation) {\n      event.stopImmediatePropagation();\n    }\n  };\n  window.addEventListener('beforeprint', stopPropagationIfNeeded);\n  window.addEventListener('afterprint', stopPropagationIfNeeded);\n}\nvar overlayPromise = void 0;\nfunction ensureOverlay() {\n  if (!overlayPromise) {\n    overlayManager = _app.PDFViewerApplication.overlayManager;\n    if (!overlayManager) {\n      throw new Error('The overlay manager has not yet been initialized.');\n    }\n    overlayPromise = overlayManager.register('printServiceOverlay', document.getElementById('printServiceOverlay'), abort, true);\n    document.getElementById('printCancel').onclick = abort;\n  }\n  return overlayPromise;\n}\n_app.PDFPrintServiceFactory.instance = {\n  supportsPrinting: true,\n  createPrintService: function createPrintService(pdfDocument, pagesOverview, printContainer, l10n) {\n    if (activeService) {\n      throw new Error('The print service is created and active.');\n    }\n    activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n);\n    return activeService;\n  }\n};\nexports.PDFPrintService = PDFPrintService;\n\n/***/ })\n/******/ ]);\n//# sourceMappingURL=viewer.js.map"
  },
  {
    "path": "static/js/qrcode.js",
    "content": "/**\n * @fileoverview\n * - Using the 'QRCode for Javascript library'\n * - Fixed dataset of 'QRCode for Javascript library' for support full-spec.\n * - this library has no dependencies.\n * \n * @author davidshimjs\n * @see <a href=\"http://www.d-project.com/\" target=\"_blank\">http://www.d-project.com/</a>\n * @see <a href=\"http://jeromeetienne.github.com/jquery-qrcode/\" target=\"_blank\">http://jeromeetienne.github.com/jquery-qrcode/</a>\n */\nvar QRCode;\n\n(function () {\n\t//---------------------------------------------------------------------\n\t// QRCode for JavaScript\n\t//\n\t// Copyright (c) 2009 Kazuhiko Arase\n\t//\n\t// URL: http://www.d-project.com/\n\t//\n\t// Licensed under the MIT license:\n\t//   http://www.opensource.org/licenses/mit-license.php\n\t//\n\t// The word \"QR Code\" is registered trademark of \n\t// DENSO WAVE INCORPORATED\n\t//   http://www.denso-wave.com/qrcode/faqpatent-e.html\n\t//\n\t//---------------------------------------------------------------------\n\tfunction QR8bitByte(data) {\n\t\tthis.mode = QRMode.MODE_8BIT_BYTE;\n\t\tthis.data = data;\n\t\tthis.parsedData = [];\n\n\t\t// Added to support UTF-8 Characters\n\t\tfor (var i = 0, l = this.data.length; i < l; i++) {\n\t\t\tvar byteArray = [];\n\t\t\tvar code = this.data.charCodeAt(i);\n\n\t\t\tif (code > 0x10000) {\n\t\t\t\tbyteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);\n\t\t\t\tbyteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);\n\t\t\t\tbyteArray[3] = 0x80 | (code & 0x3F);\n\t\t\t} else if (code > 0x800) {\n\t\t\t\tbyteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);\n\t\t\t\tbyteArray[2] = 0x80 | (code & 0x3F);\n\t\t\t} else if (code > 0x80) {\n\t\t\t\tbyteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);\n\t\t\t\tbyteArray[1] = 0x80 | (code & 0x3F);\n\t\t\t} else {\n\t\t\t\tbyteArray[0] = code;\n\t\t\t}\n\n\t\t\tthis.parsedData.push(byteArray);\n\t\t}\n\n\t\tthis.parsedData = Array.prototype.concat.apply([], this.parsedData);\n\n\t\tif (this.parsedData.length != this.data.length) {\n\t\t\tthis.parsedData.unshift(191);\n\t\t\tthis.parsedData.unshift(187);\n\t\t\tthis.parsedData.unshift(239);\n\t\t}\n\t}\n\n\tQR8bitByte.prototype = {\n\t\tgetLength: function (buffer) {\n\t\t\treturn this.parsedData.length;\n\t\t},\n\t\twrite: function (buffer) {\n\t\t\tfor (var i = 0, l = this.parsedData.length; i < l; i++) {\n\t\t\t\tbuffer.put(this.parsedData[i], 8);\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction QRCodeModel(typeNumber, errorCorrectLevel) {\n\t\tthis.typeNumber = typeNumber;\n\t\tthis.errorCorrectLevel = errorCorrectLevel;\n\t\tthis.modules = null;\n\t\tthis.moduleCount = 0;\n\t\tthis.dataCache = null;\n\t\tthis.dataList = [];\n\t}\n\n\tQRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+\",\"+col);}\n\treturn this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row<this.moduleCount;row++){this.modules[row]=new Array(this.moduleCount);for(var col=0;col<this.moduleCount;col++){this.modules[row][col]=null;}}\n\tthis.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(test,maskPattern);if(this.typeNumber>=7){this.setupTypeNumber(test);}\n\tif(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}\n\tthis.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}\n\treturn pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row<this.modules.length;row++){var y=row*cs;for(var col=0;col<this.modules[row].length;col++){var x=col*cs;var dark=this.modules[row][col];if(dark){qr_mc.beginFill(0,100);qr_mc.moveTo(x,y);qr_mc.lineTo(x+cs,y);qr_mc.lineTo(x+cs,y+cs);qr_mc.lineTo(x,y+cs);qr_mc.endFill();}}}\n\treturn qr_mc;},setupTimingPattern:function(){for(var r=8;r<this.moduleCount-8;r++){if(this.modules[r][6]!=null){continue;}\n\tthis.modules[r][6]=(r%2==0);}\n\tfor(var c=8;c<this.moduleCount-8;c++){if(this.modules[6][c]!=null){continue;}\n\tthis.modules[6][c]=(c%2==0);}},setupPositionAdjustPattern:function(){var pos=QRUtil.getPatternPosition(this.typeNumber);for(var i=0;i<pos.length;i++){for(var j=0;j<pos.length;j++){var row=pos[i];var col=pos[j];if(this.modules[row][col]!=null){continue;}\n\tfor(var r=-2;r<=2;r++){for(var c=-2;c<=2;c++){if(r==-2||r==2||c==-2||c==2||(r==0&&c==0)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}}}},setupTypeNumber:function(test){var bits=QRUtil.getBCHTypeNumber(this.typeNumber);for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}\n\tfor(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}\n\tfor(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}\n\tthis.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex<data.length){dark=(((data[byteIndex]>>>bitIndex)&1)==1);}\n\tvar mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}\n\tthis.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}\n\trow+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;i<dataList.length;i++){var data=dataList[i];buffer.put(data.mode,4);buffer.put(data.getLength(),QRUtil.getLengthInBits(data.mode,typeNumber));data.write(buffer);}\n\tvar totalDataCount=0;for(var i=0;i<rsBlocks.length;i++){totalDataCount+=rsBlocks[i].dataCount;}\n\tif(buffer.getLengthInBits()>totalDataCount*8){throw new Error(\"code length overflow. (\"\n\t+buffer.getLengthInBits()\n\t+\">\"\n\t+totalDataCount*8\n\t+\")\");}\n\tif(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}\n\twhile(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}\n\twhile(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}\n\tbuffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}\n\tbuffer.put(QRCodeModel.PAD1,8);}\n\treturn QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r<rsBlocks.length;r++){var dcCount=rsBlocks[r].dataCount;var ecCount=rsBlocks[r].totalCount-dcCount;maxDcCount=Math.max(maxDcCount,dcCount);maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i++){dcdata[r][i]=0xff&buffer.buffer[i+offset];}\n\toffset+=dcCount;var rsPoly=QRUtil.getErrorCorrectPolynomial(ecCount);var rawPoly=new QRPolynomial(dcdata[r],rsPoly.getLength()-1);var modPoly=rawPoly.mod(rsPoly);ecdata[r]=new Array(rsPoly.getLength()-1);for(var i=0;i<ecdata[r].length;i++){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=(modIndex>=0)?modPoly.get(modIndex):0;}}\n\tvar totalCodeCount=0;for(var i=0;i<rsBlocks.length;i++){totalCodeCount+=rsBlocks[i].totalCount;}\n\tvar data=new Array(totalCodeCount);var index=0;for(var i=0;i<maxDcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<dcdata[r].length){data[index++]=dcdata[r][i];}}}\n\tfor(var i=0;i<maxEcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<ecdata[r].length){data[index++]=ecdata[r][i];}}}\n\treturn data;};var QRMode={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var QRErrorCorrectLevel={L:1,M:0,Q:3,H:2};var QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:(1<<10)|(1<<8)|(1<<5)|(1<<4)|(1<<2)|(1<<1)|(1<<0),G18:(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8)|(1<<5)|(1<<2)|(1<<0),G15_MASK:(1<<14)|(1<<12)|(1<<10)|(1<<4)|(1<<1),getBCHTypeInfo:function(data){var d=data<<10;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)>=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}\n\treturn((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}\n\treturn(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}\n\treturn digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error(\"bad maskPattern:\"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i<errorCorrectLength;i++){a=a.multiply(new QRPolynomial([1,QRMath.gexp(i)],0));}\n\treturn a;},getLengthInBits:function(mode,type){if(1<=type&&type<10){switch(mode){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:return 8;case QRMode.MODE_KANJI:return 8;default:throw new Error(\"mode:\"+mode);}}else if(type<27){switch(mode){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error(\"mode:\"+mode);}}else if(type<41){switch(mode){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error(\"mode:\"+mode);}}else{throw new Error(\"type:\"+type);}},getLostPoint:function(qrCode){var moduleCount=qrCode.getModuleCount();var lostPoint=0;for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount;col++){var sameCount=0;var dark=qrCode.isDark(row,col);for(var r=-1;r<=1;r++){if(row+r<0||moduleCount<=row+r){continue;}\n\tfor(var c=-1;c<=1;c++){if(col+c<0||moduleCount<=col+c){continue;}\n\tif(r==0&&c==0){continue;}\n\tif(dark==qrCode.isDark(row+r,col+c)){sameCount++;}}}\n\tif(sameCount>5){lostPoint+=(3+sameCount-5);}}}\n\tfor(var row=0;row<moduleCount-1;row++){for(var col=0;col<moduleCount-1;col++){var count=0;if(qrCode.isDark(row,col))count++;if(qrCode.isDark(row+1,col))count++;if(qrCode.isDark(row,col+1))count++;if(qrCode.isDark(row+1,col+1))count++;if(count==0||count==4){lostPoint+=3;}}}\n\tfor(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount-6;col++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row,col+1)&&qrCode.isDark(row,col+2)&&qrCode.isDark(row,col+3)&&qrCode.isDark(row,col+4)&&!qrCode.isDark(row,col+5)&&qrCode.isDark(row,col+6)){lostPoint+=40;}}}\n\tfor(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount-6;row++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row+1,col)&&qrCode.isDark(row+2,col)&&qrCode.isDark(row+3,col)&&qrCode.isDark(row+4,col)&&!qrCode.isDark(row+5,col)&&qrCode.isDark(row+6,col)){lostPoint+=40;}}}\n\tvar darkCount=0;for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount;row++){if(qrCode.isDark(row,col)){darkCount++;}}}\n\tvar ratio=Math.abs(100*darkCount/moduleCount/moduleCount-50)/5;lostPoint+=ratio*10;return lostPoint;}};var QRMath={glog:function(n){if(n<1){throw new Error(\"glog(\"+n+\")\");}\n\treturn QRMath.LOG_TABLE[n];},gexp:function(n){while(n<0){n+=255;}\n\twhile(n>=256){n-=255;}\n\treturn QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<<i;}\n\tfor(var i=8;i<256;i++){QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];}\n\tfor(var i=0;i<255;i++){QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;}\n\tfunction QRPolynomial(num,shift){if(num.length==undefined){throw new Error(num.length+\"/\"+shift);}\n\tvar offset=0;while(offset<num.length&&num[offset]==0){offset++;}\n\tthis.num=new Array(num.length-offset+shift);for(var i=0;i<num.length-offset;i++){this.num[i]=num[i+offset];}}\n\tQRPolynomial.prototype={get:function(index){return this.num[index];},getLength:function(){return this.num.length;},multiply:function(e){var num=new Array(this.getLength()+e.getLength()-1);for(var i=0;i<this.getLength();i++){for(var j=0;j<e.getLength();j++){num[i+j]^=QRMath.gexp(QRMath.glog(this.get(i))+QRMath.glog(e.get(j)));}}\n\treturn new QRPolynomial(num,0);},mod:function(e){if(this.getLength()-e.getLength()<0){return this;}\n\tvar ratio=QRMath.glog(this.get(0))-QRMath.glog(e.get(0));var num=new Array(this.getLength());for(var i=0;i<this.getLength();i++){num[i]=this.get(i);}\n\tfor(var i=0;i<e.getLength();i++){num[i]^=QRMath.gexp(QRMath.glog(e.get(i))+ratio);}\n\treturn new QRPolynomial(num,0).mod(e);}};function QRRSBlock(totalCount,dataCount){this.totalCount=totalCount;this.dataCount=dataCount;}\n\tQRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];QRRSBlock.getRSBlocks=function(typeNumber,errorCorrectLevel){var rsBlock=QRRSBlock.getRsBlockTable(typeNumber,errorCorrectLevel);if(rsBlock==undefined){throw new Error(\"bad rs block @ typeNumber:\"+typeNumber+\"/errorCorrectLevel:\"+errorCorrectLevel);}\n\tvar length=rsBlock.length/3;var list=[];for(var i=0;i<length;i++){var count=rsBlock[i*3+0];var totalCount=rsBlock[i*3+1];var dataCount=rsBlock[i*3+2];for(var j=0;j<count;j++){list.push(new QRRSBlock(totalCount,dataCount));}}\n\treturn list;};QRRSBlock.getRsBlockTable=function(typeNumber,errorCorrectLevel){switch(errorCorrectLevel){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+3];default:return undefined;}};function QRBitBuffer(){this.buffer=[];this.length=0;}\n\tQRBitBuffer.prototype={get:function(index){var bufIndex=Math.floor(index/8);return((this.buffer[bufIndex]>>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i<length;i++){this.putBit(((num>>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}\n\tif(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}\n\tthis.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];\n\t\n\tfunction _isSupportCanvas() {\n\t\treturn typeof CanvasRenderingContext2D != \"undefined\";\n\t}\n\t\n\t// android 2.x doesn't support Data-URI spec\n\tfunction _getAndroid() {\n\t\tvar android = false;\n\t\tvar sAgent = navigator.userAgent;\n\t\t\n\t\tif (/android/i.test(sAgent)) { // android\n\t\t\tandroid = true;\n\t\t\tvar aMat = sAgent.toString().match(/android ([0-9]\\.[0-9])/i);\n\t\t\t\n\t\t\tif (aMat && aMat[1]) {\n\t\t\t\tandroid = parseFloat(aMat[1]);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn android;\n\t}\n\t\n\tvar svgDrawer = (function() {\n\n\t\tvar Drawing = function (el, htOption) {\n\t\t\tthis._el = el;\n\t\t\tthis._htOption = htOption;\n\t\t};\n\n\t\tDrawing.prototype.draw = function (oQRCode) {\n\t\t\tvar _htOption = this._htOption;\n\t\t\tvar _el = this._el;\n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = Math.floor(_htOption.width / nCount);\n\t\t\tvar nHeight = Math.floor(_htOption.height / nCount);\n\n\t\t\tthis.clear();\n\n\t\t\tfunction makeSVG(tag, attrs) {\n\t\t\t\tvar el = document.createElementNS('http://www.w3.org/2000/svg', tag);\n\t\t\t\tfor (var k in attrs)\n\t\t\t\t\tif (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]);\n\t\t\t\treturn el;\n\t\t\t}\n\n\t\t\tvar svg = makeSVG(\"svg\" , {'viewBox': '0 0 ' + String(nCount) + \" \" + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight});\n\t\t\tsvg.setAttributeNS(\"http://www.w3.org/2000/xmlns/\", \"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n\t\t\t_el.appendChild(svg);\n\n\t\t\tsvg.appendChild(makeSVG(\"rect\", {\"fill\": _htOption.colorLight, \"width\": \"100%\", \"height\": \"100%\"}));\n\t\t\tsvg.appendChild(makeSVG(\"rect\", {\"fill\": _htOption.colorDark, \"width\": \"1\", \"height\": \"1\", \"id\": \"template\"}));\n\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\tif (oQRCode.isDark(row, col)) {\n\t\t\t\t\t\tvar child = makeSVG(\"use\", {\"x\": String(col), \"y\": String(row)});\n\t\t\t\t\t\tchild.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", \"#template\")\n\t\t\t\t\t\tsvg.appendChild(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tDrawing.prototype.clear = function () {\n\t\t\twhile (this._el.hasChildNodes())\n\t\t\t\tthis._el.removeChild(this._el.lastChild);\n\t\t};\n\t\treturn Drawing;\n\t})();\n\n\tvar useSVG = document.documentElement.tagName.toLowerCase() === \"svg\";\n\n\t// Drawing in DOM by using Table tag\n\tvar Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () {\n\t\tvar Drawing = function (el, htOption) {\n\t\t\tthis._el = el;\n\t\t\tthis._htOption = htOption;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Draw the QRCode\n\t\t * \n\t\t * @param {QRCode} oQRCode\n\t\t */\n\t\tDrawing.prototype.draw = function (oQRCode) {\n            var _htOption = this._htOption;\n            var _el = this._el;\n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = Math.floor(_htOption.width / nCount);\n\t\t\tvar nHeight = Math.floor(_htOption.height / nCount);\n\t\t\tvar aHTML = ['<table style=\"border:0;border-collapse:collapse;\">'];\n\t\t\t\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\taHTML.push('<tr>');\n\t\t\t\t\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\taHTML.push('<td style=\"border:0;border-collapse:collapse;padding:0;margin:0;width:' + nWidth + 'px;height:' + nHeight + 'px;background-color:' + (oQRCode.isDark(row, col) ? _htOption.colorDark : _htOption.colorLight) + ';\"></td>');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\taHTML.push('</tr>');\n\t\t\t}\n\t\t\t\n\t\t\taHTML.push('</table>');\n\t\t\t_el.innerHTML = aHTML.join('');\n\t\t\t\n\t\t\t// Fix the margin values as real size.\n\t\t\tvar elTable = _el.childNodes[0];\n\t\t\tvar nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;\n\t\t\tvar nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;\n\t\t\t\n\t\t\tif (nLeftMarginTable > 0 && nTopMarginTable > 0) {\n\t\t\t\telTable.style.margin = nTopMarginTable + \"px \" + nLeftMarginTable + \"px\";\t\n\t\t\t}\n\t\t};\n\t\t\n\t\t/**\n\t\t * Clear the QRCode\n\t\t */\n\t\tDrawing.prototype.clear = function () {\n\t\t\tthis._el.innerHTML = '';\n\t\t};\n\t\t\n\t\treturn Drawing;\n\t})() : (function () { // Drawing in Canvas\n\t\tfunction _onMakeImage() {\n\t\t\tthis._elImage.src = this._elCanvas.toDataURL(\"image/png\");\n\t\t\tthis._elImage.style.display = \"block\";\n\t\t\tthis._elCanvas.style.display = \"none\";\t\t\t\n\t\t}\n\t\t\n\t\t// Android 2.1 bug workaround\n\t\t// http://code.google.com/p/android/issues/detail?id=5141\n\t\tif (this._android && this._android <= 2.1) {\n\t    \tvar factor = 1 / window.devicePixelRatio;\n\t        var drawImage = CanvasRenderingContext2D.prototype.drawImage; \n\t    \tCanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {\n\t    \t\tif ((\"nodeName\" in image) && /img/i.test(image.nodeName)) {\n\t\t        \tfor (var i = arguments.length - 1; i >= 1; i--) {\n\t\t            \targuments[i] = arguments[i] * factor;\n\t\t        \t}\n\t    \t\t} else if (typeof dw == \"undefined\") {\n\t    \t\t\targuments[1] *= factor;\n\t    \t\t\targuments[2] *= factor;\n\t    \t\t\targuments[3] *= factor;\n\t    \t\t\targuments[4] *= factor;\n\t    \t\t}\n\t    \t\t\n\t        \tdrawImage.apply(this, arguments); \n\t    \t};\n\t\t}\n\t\t\n\t\t/**\n\t\t * Check whether the user's browser supports Data URI or not\n\t\t * \n\t\t * @private\n\t\t * @param {Function} fSuccess Occurs if it supports Data URI\n\t\t * @param {Function} fFail Occurs if it doesn't support Data URI\n\t\t */\n\t\tfunction _safeSetDataURI(fSuccess, fFail) {\n            var self = this;\n            self._fFail = fFail;\n            self._fSuccess = fSuccess;\n\n            // Check it just once\n            if (self._bSupportDataURI === null) {\n                var el = document.createElement(\"img\");\n                var fOnError = function() {\n                    self._bSupportDataURI = false;\n\n                    if (self._fFail) {\n                        self._fFail.call(self);\n                    }\n                };\n                var fOnSuccess = function() {\n                    self._bSupportDataURI = true;\n\n                    if (self._fSuccess) {\n                        self._fSuccess.call(self);\n                    }\n                };\n\n                el.onabort = fOnError;\n                el.onerror = fOnError;\n                el.onload = fOnSuccess;\n                el.src = \"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\"; // the Image contains 1px data.\n                return;\n            } else if (self._bSupportDataURI === true && self._fSuccess) {\n                self._fSuccess.call(self);\n            } else if (self._bSupportDataURI === false && self._fFail) {\n                self._fFail.call(self);\n            }\n\t\t};\n\t\t\n\t\t/**\n\t\t * Drawing QRCode by using canvas\n\t\t * \n\t\t * @constructor\n\t\t * @param {HTMLElement} el\n\t\t * @param {Object} htOption QRCode Options \n\t\t */\n\t\tvar Drawing = function (el, htOption) {\n    \t\tthis._bIsPainted = false;\n    \t\tthis._android = _getAndroid();\n\t\t\n\t\t\tthis._htOption = htOption;\n\t\t\tthis._elCanvas = document.createElement(\"canvas\");\n\t\t\tthis._elCanvas.width = htOption.width;\n\t\t\tthis._elCanvas.height = htOption.height;\n\t\t\tel.appendChild(this._elCanvas);\n\t\t\tthis._el = el;\n\t\t\tthis._oContext = this._elCanvas.getContext(\"2d\");\n\t\t\tthis._bIsPainted = false;\n\t\t\tthis._elImage = document.createElement(\"img\");\n\t\t\tthis._elImage.alt = \"Scan me!\";\n\t\t\tthis._elImage.style.display = \"none\";\n\t\t\tthis._el.appendChild(this._elImage);\n\t\t\tthis._bSupportDataURI = null;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Draw the QRCode\n\t\t * \n\t\t * @param {QRCode} oQRCode \n\t\t */\n\t\tDrawing.prototype.draw = function (oQRCode) {\n            var _elImage = this._elImage;\n            var _oContext = this._oContext;\n            var _htOption = this._htOption;\n            \n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = _htOption.width / nCount;\n\t\t\tvar nHeight = _htOption.height / nCount;\n\t\t\tvar nRoundedWidth = Math.round(nWidth);\n\t\t\tvar nRoundedHeight = Math.round(nHeight);\n\n\t\t\t_elImage.style.display = \"none\";\n\t\t\tthis.clear();\n\t\t\t\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\tvar bIsDark = oQRCode.isDark(row, col);\n\t\t\t\t\tvar nLeft = col * nWidth;\n\t\t\t\t\tvar nTop = row * nHeight;\n\t\t\t\t\t_oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\n\t\t\t\t\t_oContext.lineWidth = 1;\n\t\t\t\t\t_oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\t\t\t\t\t\n\t\t\t\t\t_oContext.fillRect(nLeft, nTop, nWidth, nHeight);\n\t\t\t\t\t\n\t\t\t\t\t// 안티 앨리어싱 방지 처리\n\t\t\t\t\t_oContext.strokeRect(\n\t\t\t\t\t\tMath.floor(nLeft) + 0.5,\n\t\t\t\t\t\tMath.floor(nTop) + 0.5,\n\t\t\t\t\t\tnRoundedWidth,\n\t\t\t\t\t\tnRoundedHeight\n\t\t\t\t\t);\n\t\t\t\t\t\n\t\t\t\t\t_oContext.strokeRect(\n\t\t\t\t\t\tMath.ceil(nLeft) - 0.5,\n\t\t\t\t\t\tMath.ceil(nTop) - 0.5,\n\t\t\t\t\t\tnRoundedWidth,\n\t\t\t\t\t\tnRoundedHeight\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._bIsPainted = true;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Make the image from Canvas if the browser supports Data URI.\n\t\t */\n\t\tDrawing.prototype.makeImage = function () {\n\t\t\tif (this._bIsPainted) {\n\t\t\t\t_safeSetDataURI.call(this, _onMakeImage);\n\t\t\t}\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Return whether the QRCode is painted or not\n\t\t * \n\t\t * @return {Boolean}\n\t\t */\n\t\tDrawing.prototype.isPainted = function () {\n\t\t\treturn this._bIsPainted;\n\t\t};\n\t\t\n\t\t/**\n\t\t * Clear the QRCode\n\t\t */\n\t\tDrawing.prototype.clear = function () {\n\t\t\tthis._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);\n\t\t\tthis._bIsPainted = false;\n\t\t};\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param {Number} nNumber\n\t\t */\n\t\tDrawing.prototype.round = function (nNumber) {\n\t\t\tif (!nNumber) {\n\t\t\t\treturn nNumber;\n\t\t\t}\n\t\t\t\n\t\t\treturn Math.floor(nNumber * 1000) / 1000;\n\t\t};\n\t\t\n\t\treturn Drawing;\n\t})();\n\t\n\t/**\n\t * Get the type by string length\n\t * \n\t * @private\n\t * @param {String} sText\n\t * @param {Number} nCorrectLevel\n\t * @return {Number} type\n\t */\n\tfunction _getTypeNumber(sText, nCorrectLevel) {\t\t\t\n\t\tvar nType = 1;\n\t\tvar length = _getUTF8Length(sText);\n\t\t\n\t\tfor (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {\n\t\t\tvar nLimit = 0;\n\t\t\t\n\t\t\tswitch (nCorrectLevel) {\n\t\t\t\tcase QRErrorCorrectLevel.L :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.M :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.Q :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][2];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.H :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][3];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tif (length <= nLimit) {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tnType++;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (nType > QRCodeLimitLength.length) {\n\t\t\tthrow new Error(\"Too long data\");\n\t\t}\n\t\t\n\t\treturn nType;\n\t}\n\n\tfunction _getUTF8Length(sText) {\n\t\tvar replacedText = encodeURI(sText).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\n\t\treturn replacedText.length + (replacedText.length != sText ? 3 : 0);\n\t}\n\t\n\t/**\n\t * @class QRCode\n\t * @constructor\n\t * @example \n\t * new QRCode(document.getElementById(\"test\"), \"http://jindo.dev.naver.com/collie\");\n\t *\n\t * @example\n\t * var oQRCode = new QRCode(\"test\", {\n\t *    text : \"http://naver.com\",\n\t *    width : 128,\n\t *    height : 128\n\t * });\n\t * \n\t * oQRCode.clear(); // Clear the QRCode.\n\t * oQRCode.makeCode(\"http://map.naver.com\"); // Re-create the QRCode.\n\t *\n\t * @param {HTMLElement|String} el target element or 'id' attribute of element.\n\t * @param {Object|String} vOption\n\t * @param {String} vOption.text QRCode link data\n\t * @param {Number} [vOption.width=256]\n\t * @param {Number} [vOption.height=256]\n\t * @param {String} [vOption.colorDark=\"#000000\"]\n\t * @param {String} [vOption.colorLight=\"#ffffff\"]\n\t * @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H] \n\t */\n\tQRCode = function (el, vOption) {\n\t\tthis._htOption = {\n\t\t\twidth : 256, \n\t\t\theight : 256,\n\t\t\ttypeNumber : 4,\n\t\t\tcolorDark : \"#000000\",\n\t\t\tcolorLight : \"#ffffff\",\n\t\t\tcorrectLevel : QRErrorCorrectLevel.H\n\t\t};\n\t\t\n\t\tif (typeof vOption === 'string') {\n\t\t\tvOption\t= {\n\t\t\t\ttext : vOption\n\t\t\t};\n\t\t}\n\t\t\n\t\t// Overwrites options\n\t\tif (vOption) {\n\t\t\tfor (var i in vOption) {\n\t\t\t\tthis._htOption[i] = vOption[i];\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (typeof el == \"string\") {\n\t\t\tel = document.getElementById(el);\n\t\t}\n\n\t\tif (this._htOption.useSVG) {\n\t\t\tDrawing = svgDrawer;\n\t\t}\n\t\t\n\t\tthis._android = _getAndroid();\n\t\tthis._el = el;\n\t\tthis._oQRCode = null;\n\t\tthis._oDrawing = new Drawing(this._el, this._htOption);\n\t\t\n\t\tif (this._htOption.text) {\n\t\t\tthis.makeCode(this._htOption.text);\t\n\t\t}\n\t};\n\t\n\t/**\n\t * Make the QRCode\n\t * \n\t * @param {String} sText link data\n\t */\n\tQRCode.prototype.makeCode = function (sText) {\n\t\tthis._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);\n\t\tthis._oQRCode.addData(sText);\n\t\tthis._oQRCode.make();\n\t\tthis._el.title = sText;\n\t\tthis._oDrawing.draw(this._oQRCode);\t\t\t\n\t\tthis.makeImage();\n\t};\n\t\n\t/**\n\t * Make the Image from Canvas element\n\t * - It occurs automatically\n\t * - Android below 3 doesn't support Data-URI spec.\n\t * \n\t * @private\n\t */\n\tQRCode.prototype.makeImage = function () {\n\t\tif (typeof this._oDrawing.makeImage == \"function\" && (!this._android || this._android >= 3)) {\n\t\t\tthis._oDrawing.makeImage();\n\t\t}\n\t};\n\t\n\t/**\n\t * Clear the QRCode\n\t */\n\tQRCode.prototype.clear = function () {\n\t\tthis._oDrawing.clear();\n\t};\n\t\n\t/**\n\t * @name QRCode.CorrectLevel\n\t */\n\tQRCode.CorrectLevel = QRErrorCorrectLevel;\n})();\n"
  },
  {
    "path": "static/js/remark.js",
    "content": "require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      } else {\n        // At least give some kind of context to the user\n        var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n        err.context = er;\n        throw err;\n      }\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        args = Array.prototype.slice.call(arguments, 1);\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    args = Array.prototype.slice.call(arguments, 1);\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else if (listeners) {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n  if (this._events) {\n    var evlistener = this._events[type];\n\n    if (isFunction(evlistener))\n      return 1;\n    else if (evlistener)\n      return evlistener.length;\n  }\n  return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n\n},{}],2:[function(require,module,exports){\n(function (global){\n/**\n * marked - a markdown parser\n * Copyright (c) 2011-2013, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n  newline: /^\\n+/,\n  code: /^( {4}[^\\n]+\\n*)+/,\n  fences: noop,\n  hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n  heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n  nptable: noop,\n  lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n  blockquote: /^( *>[^\\n]+(\\n[^\\n]+)*\\n*)+/,\n  list: /^( *)(bull) [\\s\\S]+?(?:hr|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n  html: /^ *(?:comment|closed|closing) *(?:\\n{2,}|\\s*$)/,\n  def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n  table: noop,\n  paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n  text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n  (/bull/g, block.bullet)\n  ();\n\nblock.list = replace(block.list)\n  (/bull/g, block.bullet)\n  ('hr', /\\n+(?=(?: *[-*_]){3,} *(?:\\n+|$))/)\n  ();\n\nblock._tag = '(?!(?:'\n  + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n  + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n  + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n  ('comment', /<!--[\\s\\S]*?-->/)\n  ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n  ('closing', /<tag(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/)\n  (/tag/g, block._tag)\n  ();\n\nblock.paragraph = replace(block.paragraph)\n  ('hr', block.hr)\n  ('heading', block.heading)\n  ('lheading', block.lheading)\n  ('blockquote', block.blockquote)\n  ('tag', '<' + block._tag)\n  ('def', block.def)\n  ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n  fences: /^ *(`{3,}|~{3,}) *(\\S+)? *\\n([\\s\\S]+?)\\s*\\1 *(?:\\n+|$)/,\n  paragraph: /^/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n  ('(?!', '(?!'\n    + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n    + block.list.source.replace('\\\\1', '\\\\3') + '|')\n  ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n  nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n  table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n  this.tokens = [];\n  this.tokens.links = {};\n  this.options = options || marked.defaults;\n  this.rules = block.normal;\n\n  if (this.options.gfm) {\n    if (this.options.tables) {\n      this.rules = block.tables;\n    } else {\n      this.rules = block.gfm;\n    }\n  }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n  var lexer = new Lexer(options);\n  return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n  src = src\n    .replace(/\\r\\n|\\r/g, '\\n')\n    .replace(/\\t/g, '    ')\n    .replace(/\\u00a0/g, ' ')\n    .replace(/\\u2424/g, '\\n');\n\n  return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top) {\n  var src = src.replace(/^ +$/gm, '')\n    , next\n    , loose\n    , cap\n    , bull\n    , b\n    , item\n    , space\n    , i\n    , l;\n\n  while (src) {\n    // newline\n    if (cap = this.rules.newline.exec(src)) {\n      src = src.substring(cap[0].length);\n      if (cap[0].length > 1) {\n        this.tokens.push({\n          type: 'space'\n        });\n      }\n    }\n\n    // code\n    if (cap = this.rules.code.exec(src)) {\n      src = src.substring(cap[0].length);\n      cap = cap[0].replace(/^ {4}/gm, '');\n      this.tokens.push({\n        type: 'code',\n        text: !this.options.pedantic\n          ? cap.replace(/\\n+$/, '')\n          : cap\n      });\n      continue;\n    }\n\n    // fences (gfm)\n    if (cap = this.rules.fences.exec(src)) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'code',\n        lang: cap[2],\n        text: cap[3]\n      });\n      continue;\n    }\n\n    // heading\n    if (cap = this.rules.heading.exec(src)) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'heading',\n        depth: cap[1].length,\n        text: cap[2]\n      });\n      continue;\n    }\n\n    // table no leading pipe (gfm)\n    if (top && (cap = this.rules.nptable.exec(src))) {\n      src = src.substring(cap[0].length);\n\n      item = {\n        type: 'table',\n        header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n        align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n        cells: cap[3].replace(/\\n$/, '').split('\\n')\n      };\n\n      for (i = 0; i < item.align.length; i++) {\n        if (/^ *-+: *$/.test(item.align[i])) {\n          item.align[i] = 'right';\n        } else if (/^ *:-+: *$/.test(item.align[i])) {\n          item.align[i] = 'center';\n        } else if (/^ *:-+ *$/.test(item.align[i])) {\n          item.align[i] = 'left';\n        } else {\n          item.align[i] = null;\n        }\n      }\n\n      for (i = 0; i < item.cells.length; i++) {\n        item.cells[i] = item.cells[i].split(/ *\\| */);\n      }\n\n      this.tokens.push(item);\n\n      continue;\n    }\n\n    // lheading\n    if (cap = this.rules.lheading.exec(src)) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'heading',\n        depth: cap[2] === '=' ? 1 : 2,\n        text: cap[1]\n      });\n      continue;\n    }\n\n    // hr\n    if (cap = this.rules.hr.exec(src)) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'hr'\n      });\n      continue;\n    }\n\n    // blockquote\n    if (cap = this.rules.blockquote.exec(src)) {\n      src = src.substring(cap[0].length);\n\n      this.tokens.push({\n        type: 'blockquote_start'\n      });\n\n      cap = cap[0].replace(/^ *> ?/gm, '');\n\n      // Pass `top` to keep the current\n      // \"toplevel\" state. This is exactly\n      // how markdown.pl works.\n      this.token(cap, top);\n\n      this.tokens.push({\n        type: 'blockquote_end'\n      });\n\n      continue;\n    }\n\n    // list\n    if (cap = this.rules.list.exec(src)) {\n      src = src.substring(cap[0].length);\n      bull = cap[2];\n\n      this.tokens.push({\n        type: 'list_start',\n        ordered: bull.length > 1\n      });\n\n      // Get each top-level item.\n      cap = cap[0].match(this.rules.item);\n\n      next = false;\n      l = cap.length;\n      i = 0;\n\n      for (; i < l; i++) {\n        item = cap[i];\n\n        // Remove the list item's bullet\n        // so it is seen as the next token.\n        space = item.length;\n        item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n        // Outdent whatever the\n        // list item contains. Hacky.\n        if (~item.indexOf('\\n ')) {\n          space -= item.length;\n          item = !this.options.pedantic\n            ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n            : item.replace(/^ {1,4}/gm, '');\n        }\n\n        // Determine whether the next list item belongs here.\n        // Backpedal if it does not belong in this list.\n        if (this.options.smartLists && i !== l - 1) {\n          b = block.bullet.exec(cap[i + 1])[0];\n          if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n            src = cap.slice(i + 1).join('\\n') + src;\n            i = l - 1;\n          }\n        }\n\n        // Determine whether item is loose or not.\n        // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n        // for discount behavior.\n        loose = next || /\\n\\n(?!\\s*$)/.test(item);\n        if (i !== l - 1) {\n          next = item.charAt(item.length - 1) === '\\n';\n          if (!loose) loose = next;\n        }\n\n        this.tokens.push({\n          type: loose\n            ? 'loose_item_start'\n            : 'list_item_start'\n        });\n\n        // Recurse.\n        this.token(item, false);\n\n        this.tokens.push({\n          type: 'list_item_end'\n        });\n      }\n\n      this.tokens.push({\n        type: 'list_end'\n      });\n\n      continue;\n    }\n\n    // html\n    if (cap = this.rules.html.exec(src)) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: this.options.sanitize\n          ? 'paragraph'\n          : 'html',\n        pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n        text: cap[0]\n      });\n      continue;\n    }\n\n    // def\n    if (top && (cap = this.rules.def.exec(src))) {\n      src = src.substring(cap[0].length);\n      this.tokens.links[cap[1].toLowerCase()] = {\n        href: cap[2],\n        title: cap[3]\n      };\n      continue;\n    }\n\n    // table (gfm)\n    if (top && (cap = this.rules.table.exec(src))) {\n      src = src.substring(cap[0].length);\n\n      item = {\n        type: 'table',\n        header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n        align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n        cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n      };\n\n      for (i = 0; i < item.align.length; i++) {\n        if (/^ *-+: *$/.test(item.align[i])) {\n          item.align[i] = 'right';\n        } else if (/^ *:-+: *$/.test(item.align[i])) {\n          item.align[i] = 'center';\n        } else if (/^ *:-+ *$/.test(item.align[i])) {\n          item.align[i] = 'left';\n        } else {\n          item.align[i] = null;\n        }\n      }\n\n      for (i = 0; i < item.cells.length; i++) {\n        item.cells[i] = item.cells[i]\n          .replace(/^ *\\| *| *\\| *$/g, '')\n          .split(/ *\\| */);\n      }\n\n      this.tokens.push(item);\n\n      continue;\n    }\n\n    // top-level paragraph\n    if (top && (cap = this.rules.paragraph.exec(src))) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'paragraph',\n        text: cap[1].charAt(cap[1].length - 1) === '\\n'\n          ? cap[1].slice(0, -1)\n          : cap[1]\n      });\n      continue;\n    }\n\n    // text\n    if (cap = this.rules.text.exec(src)) {\n      // Top-level should never reach here.\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'text',\n        text: cap[0]\n      });\n      continue;\n    }\n\n    if (src) {\n      throw new\n        Error('Infinite loop on byte: ' + src.charCodeAt(0));\n    }\n  }\n\n  return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n  escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n  autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n  url: noop,\n  tag: /^<!--[\\s\\S]*?-->|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n  link: /^!?\\[(inside)\\]\\(href\\)/,\n  reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n  nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n  strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n  em: /^\\b_((?:__|[\\s\\S])+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n  code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n  br: /^ {2,}\\n(?!\\s*$)/,\n  del: noop,\n  text: /^[\\s\\S]+?(?=[\\\\<!\\[_*`]| {2,}\\n|$)/\n};\n\ninline._inside = /(?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*/;\ninline._href = /\\s*<?([\\s\\S]*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n  ('inside', inline._inside)\n  ('href', inline._href)\n  ();\n\ninline.reflink = replace(inline.reflink)\n  ('inside', inline._inside)\n  ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n  strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n  em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n  escape: replace(inline.escape)('])', '~|])')(),\n  url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n  del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n  text: replace(inline.text)\n    (']|', '~]|')\n    ('|', '|https?://|')\n    ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n  br: replace(inline.br)('{2,}', '*')(),\n  text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n  this.options = options || marked.defaults;\n  this.links = links;\n  this.rules = inline.normal;\n  this.renderer = this.options.renderer || new Renderer;\n  this.renderer.options = this.options;\n\n  if (!this.links) {\n    throw new\n      Error('Tokens array requires a `links` property.');\n  }\n\n  if (this.options.gfm) {\n    if (this.options.breaks) {\n      this.rules = inline.breaks;\n    } else {\n      this.rules = inline.gfm;\n    }\n  } else if (this.options.pedantic) {\n    this.rules = inline.pedantic;\n  }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n  var inline = new InlineLexer(links, options);\n  return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n  var out = ''\n    , link\n    , text\n    , href\n    , cap;\n\n  while (src) {\n    // escape\n    if (cap = this.rules.escape.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += cap[1];\n      continue;\n    }\n\n    // autolink\n    if (cap = this.rules.autolink.exec(src)) {\n      src = src.substring(cap[0].length);\n      if (cap[2] === '@') {\n        text = cap[1].charAt(6) === ':'\n          ? this.mangle(cap[1].substring(7))\n          : this.mangle(cap[1]);\n        href = this.mangle('mailto:') + text;\n      } else {\n        text = escape(cap[1]);\n        href = text;\n      }\n      out += this.renderer.link(href, null, text);\n      continue;\n    }\n\n    // url (gfm)\n    if (cap = this.rules.url.exec(src)) {\n      src = src.substring(cap[0].length);\n      text = escape(cap[1]);\n      href = text;\n      out += this.renderer.link(href, null, text);\n      continue;\n    }\n\n    // tag\n    if (cap = this.rules.tag.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.options.sanitize\n        ? escape(cap[0])\n        : cap[0];\n      continue;\n    }\n\n    // link\n    if (cap = this.rules.link.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.outputLink(cap, {\n        href: cap[2],\n        title: cap[3]\n      });\n      continue;\n    }\n\n    // reflink, nolink\n    if ((cap = this.rules.reflink.exec(src))\n        || (cap = this.rules.nolink.exec(src))) {\n      src = src.substring(cap[0].length);\n      link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n      link = this.links[link.toLowerCase()];\n      if (!link || !link.href) {\n        out += cap[0].charAt(0);\n        src = cap[0].substring(1) + src;\n        continue;\n      }\n      out += this.outputLink(cap, link);\n      continue;\n    }\n\n    // strong\n    if (cap = this.rules.strong.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.renderer.strong(this.output(cap[2] || cap[1]));\n      continue;\n    }\n\n    // em\n    if (cap = this.rules.em.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.renderer.em(this.output(cap[2] || cap[1]));\n      continue;\n    }\n\n    // code\n    if (cap = this.rules.code.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.renderer.codespan(escape(cap[2], true));\n      continue;\n    }\n\n    // br\n    if (cap = this.rules.br.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.renderer.br();\n      continue;\n    }\n\n    // del (gfm)\n    if (cap = this.rules.del.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.renderer.del(this.output(cap[1]));\n      continue;\n    }\n\n    // text\n    if (cap = this.rules.text.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += escape(this.smartypants(cap[0]));\n      continue;\n    }\n\n    if (src) {\n      throw new\n        Error('Infinite loop on byte: ' + src.charCodeAt(0));\n    }\n  }\n\n  return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n  var href = escape(link.href)\n    , title = link.title ? escape(link.title) : null;\n\n  return cap[0].charAt(0) !== '!'\n    ? this.renderer.link(href, title, this.output(cap[1]))\n    : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n  if (!this.options.smartypants) return text;\n  return text\n    // em-dashes\n    .replace(/---/g, '\\u2014')\n    // en-dashes\n    .replace(/--/g, '\\u2013')\n    // opening singles\n    .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n    // closing singles & apostrophes\n    .replace(/'/g, '\\u2019')\n    // opening doubles\n    .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n    // closing doubles\n    .replace(/\"/g, '\\u201d')\n    // ellipses\n    .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n  var out = ''\n    , l = text.length\n    , i = 0\n    , ch;\n\n  for (; i < l; i++) {\n    ch = text.charCodeAt(i);\n    if (Math.random() > 0.5) {\n      ch = 'x' + ch.toString(16);\n    }\n    out += '&#' + ch + ';';\n  }\n\n  return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n  this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n  if (this.options.highlight) {\n    var out = this.options.highlight(code, lang);\n    if (out != null && out !== code) {\n      escaped = true;\n      code = out;\n    }\n  }\n\n  if (!lang) {\n    return '<pre><code>'\n      + (escaped ? code : escape(code, true))\n      + '\\n</code></pre>';\n  }\n\n  return '<pre><code class=\"'\n    + this.options.langPrefix\n    + escape(lang, true)\n    + '\">'\n    + (escaped ? code : escape(code, true))\n    + '\\n</code></pre>\\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n  return '<blockquote>\\n' + quote + '</blockquote>\\n';\n};\n\nRenderer.prototype.html = function(html) {\n  return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n  return '<h'\n    + level\n    + ' id=\"'\n    + this.options.headerPrefix\n    + raw.toLowerCase().replace(/[^\\w]+/g, '-')\n    + '\">'\n    + text\n    + '</h'\n    + level\n    + '>\\n';\n};\n\nRenderer.prototype.hr = function() {\n  return '<hr>\\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n  var type = ordered ? 'ol' : 'ul';\n  return '<' + type + '>\\n' + body + '</' + type + '>\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n  return '<li>' + text + '</li>\\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n  return '<p>' + text + '</p>\\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n  return '<table>\\n'\n    + '<thead>\\n'\n    + header\n    + '</thead>\\n'\n    + '<tbody>\\n'\n    + body\n    + '</tbody>\\n'\n    + '</table>\\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n  return '<tr>\\n' + content + '</tr>\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n  var type = flags.header ? 'th' : 'td';\n  var tag = flags.align\n    ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n    : '<' + type + '>';\n  return tag + content + '</' + type + '>\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n  return '<strong>' + text + '</strong>';\n};\n\nRenderer.prototype.em = function(text) {\n  return '<em>' + text + '</em>';\n};\n\nRenderer.prototype.codespan = function(text) {\n  return '<code>' + text + '</code>';\n};\n\nRenderer.prototype.br = function() {\n  return '<br>';\n};\n\nRenderer.prototype.del = function(text) {\n  return '<del>' + text + '</del>';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n  if (this.options.sanitize) {\n    try {\n      var prot = decodeURIComponent(unescape(href))\n        .replace(/[^\\w:]/g, '')\n        .toLowerCase();\n    } catch (e) {\n      return '';\n    }\n    if (prot.indexOf('javascript:') === 0) {\n      return '';\n    }\n  }\n  var out = '<a href=\"' + href + '\"';\n  if (title) {\n    out += ' title=\"' + title + '\"';\n  }\n  out += '>' + text + '</a>';\n  return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n  var out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n  if (title) {\n    out += ' title=\"' + title + '\"';\n  }\n  out += '>';\n  return out;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n  this.tokens = [];\n  this.token = null;\n  this.options = options || marked.defaults;\n  this.options.renderer = this.options.renderer || new Renderer;\n  this.renderer = this.options.renderer;\n  this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n  var parser = new Parser(options, renderer);\n  return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n  this.inline = new InlineLexer(src.links, this.options, this.renderer);\n  this.tokens = src.reverse();\n\n  var out = '';\n  while (this.next()) {\n    out += this.tok();\n  }\n\n  return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n  return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n  return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n  var body = this.token.text;\n\n  while (this.peek().type === 'text') {\n    body += '\\n' + this.next().text;\n  }\n\n  return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n  switch (this.token.type) {\n    case 'space': {\n      return '';\n    }\n    case 'hr': {\n      return this.renderer.hr();\n    }\n    case 'heading': {\n      return this.renderer.heading(\n        this.inline.output(this.token.text),\n        this.token.depth,\n        this.token.text);\n    }\n    case 'code': {\n      return this.renderer.code(this.token.text,\n        this.token.lang,\n        this.token.escaped);\n    }\n    case 'table': {\n      var header = ''\n        , body = ''\n        , i\n        , row\n        , cell\n        , flags\n        , j;\n\n      // header\n      cell = '';\n      for (i = 0; i < this.token.header.length; i++) {\n        flags = { header: true, align: this.token.align[i] };\n        cell += this.renderer.tablecell(\n          this.inline.output(this.token.header[i]),\n          { header: true, align: this.token.align[i] }\n        );\n      }\n      header += this.renderer.tablerow(cell);\n\n      for (i = 0; i < this.token.cells.length; i++) {\n        row = this.token.cells[i];\n\n        cell = '';\n        for (j = 0; j < row.length; j++) {\n          cell += this.renderer.tablecell(\n            this.inline.output(row[j]),\n            { header: false, align: this.token.align[j] }\n          );\n        }\n\n        body += this.renderer.tablerow(cell);\n      }\n      return this.renderer.table(header, body);\n    }\n    case 'blockquote_start': {\n      var body = '';\n\n      while (this.next().type !== 'blockquote_end') {\n        body += this.tok();\n      }\n\n      return this.renderer.blockquote(body);\n    }\n    case 'list_start': {\n      var body = ''\n        , ordered = this.token.ordered;\n\n      while (this.next().type !== 'list_end') {\n        body += this.tok();\n      }\n\n      return this.renderer.list(body, ordered);\n    }\n    case 'list_item_start': {\n      var body = '';\n\n      while (this.next().type !== 'list_item_end') {\n        body += this.token.type === 'text'\n          ? this.parseText()\n          : this.tok();\n      }\n\n      return this.renderer.listitem(body);\n    }\n    case 'loose_item_start': {\n      var body = '';\n\n      while (this.next().type !== 'list_item_end') {\n        body += this.tok();\n      }\n\n      return this.renderer.listitem(body);\n    }\n    case 'html': {\n      var html = !this.token.pre && !this.options.pedantic\n        ? this.inline.output(this.token.text)\n        : this.token.text;\n      return this.renderer.html(html);\n    }\n    case 'paragraph': {\n      return this.renderer.paragraph(this.inline.output(this.token.text));\n    }\n    case 'text': {\n      return this.renderer.paragraph(this.parseText());\n    }\n  }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n  return html\n    .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&amp;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&#39;');\n}\n\nfunction unescape(html) {\n  return html.replace(/&([#\\w]+);/g, function(_, n) {\n    n = n.toLowerCase();\n    if (n === 'colon') return ':';\n    if (n.charAt(0) === '#') {\n      return n.charAt(1) === 'x'\n        ? String.fromCharCode(parseInt(n.substring(2), 16))\n        : String.fromCharCode(+n.substring(1));\n    }\n    return '';\n  });\n}\n\nfunction replace(regex, opt) {\n  regex = regex.source;\n  opt = opt || '';\n  return function self(name, val) {\n    if (!name) return new RegExp(regex, opt);\n    val = val.source || val;\n    val = val.replace(/(^|[^\\[])\\^/g, '$1');\n    regex = regex.replace(name, val);\n    return self;\n  };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n  var i = 1\n    , target\n    , key;\n\n  for (; i < arguments.length; i++) {\n    target = arguments[i];\n    for (key in target) {\n      if (Object.prototype.hasOwnProperty.call(target, key)) {\n        obj[key] = target[key];\n      }\n    }\n  }\n\n  return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n  if (callback || typeof opt === 'function') {\n    if (!callback) {\n      callback = opt;\n      opt = null;\n    }\n\n    opt = merge({}, marked.defaults, opt || {});\n\n    var highlight = opt.highlight\n      , tokens\n      , pending\n      , i = 0;\n\n    try {\n      tokens = Lexer.lex(src, opt)\n    } catch (e) {\n      return callback(e);\n    }\n\n    pending = tokens.length;\n\n    var done = function() {\n      var out, err;\n\n      try {\n        out = Parser.parse(tokens, opt);\n      } catch (e) {\n        err = e;\n      }\n\n      opt.highlight = highlight;\n\n      return err\n        ? callback(err)\n        : callback(null, out);\n    };\n\n    if (!highlight || highlight.length < 3) {\n      return done();\n    }\n\n    delete opt.highlight;\n\n    if (!pending) return done();\n\n    for (; i < tokens.length; i++) {\n      (function(token) {\n        if (token.type !== 'code') {\n          return --pending || done();\n        }\n        return highlight(token.text, token.lang, function(err, code) {\n          if (code == null || code === token.text) {\n            return --pending || done();\n          }\n          token.text = code;\n          token.escaped = true;\n          --pending || done();\n        });\n      })(tokens[i]);\n    }\n\n    return;\n  }\n  try {\n    if (opt) opt = merge({}, marked.defaults, opt);\n    return Parser.parse(Lexer.lex(src, opt), opt);\n  } catch (e) {\n    e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n    if ((opt || marked.defaults).silent) {\n      return '<p>An error occured:</p><pre>'\n        + escape(e.message + '', true)\n        + '</pre>';\n    }\n    throw e;\n  }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n  merge(marked.defaults, opt);\n  return marked;\n};\n\nmarked.defaults = {\n  gfm: true,\n  tables: true,\n  breaks: false,\n  pedantic: false,\n  sanitize: false,\n  smartLists: false,\n  silent: false,\n  highlight: null,\n  langPrefix: 'lang-',\n  smartypants: true,\n  headerPrefix: '',\n  renderer: new Renderer\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof exports === 'object') {\n  module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n  define(function() { return marked; });\n} else {\n  this.marked = marked;\n}\n\n}).call(function() {\n  return this || (typeof window !== 'undefined' ? window : global);\n}());\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],3:[function(require,module,exports){\nexports.apply = function () {\n  forEach([Array, window.NodeList, window.HTMLCollection], extend);\n};\n\nfunction forEach (list, f) {\n  var i;\n\n  for (i = 0; i < list.length; ++i) {\n    f(list[i], i);\n  }\n}\n\nfunction extend (object) {\n  var prototype = object && object.prototype;\n\n  if (!prototype) {\n    return;\n  }\n\n  prototype.forEach = prototype.forEach || function (f) {\n    forEach(this, f);\n  };\n\n  prototype.filter = prototype.filter || function (f) {\n    var result = [];\n\n    this.forEach(function (element) {\n      if (f(element, result.length)) {\n        result.push(element);\n      }\n    });\n\n    return result;\n  };\n\n  prototype.map = prototype.map || function (f) {\n    var result = [];\n\n    this.forEach(function (element) {\n      result.push(f(element, result.length));\n    });\n\n    return result;\n  };\n}\n},{}],4:[function(require,module,exports){\nvar Api = require('./remark/api')\n  , polyfills = require('./polyfills')\n  , styler = require('./remark/components/styler/styler')\n  ;\n\n// Expose API as `remark`\nwindow.remark = new Api();\n\n// Apply polyfills as needed\npolyfills.apply();\n\n// Apply embedded styles to document\nstyler.styleDocument();\n\n},{\"./polyfills\":3,\"./remark/api\":5,\"./remark/components/styler/styler\":\"components/styler\"}],5:[function(require,module,exports){\nvar EventEmitter = require('events').EventEmitter\n  , highlighter = require('./highlighter')\n  , converter = require('./converter')\n  , resources = require('./resources')\n  , Parser = require('./parser')\n  , Slideshow = require('./models/slideshow')\n  , SlideshowView = require('./views/slideshowView')\n  , DefaultController = require('./controllers/defaultController')\n  , Dom = require('./dom')\n  , macros = require('./macros')\n  ;\n\nmodule.exports = Api;\n\nfunction Api (dom) {\n  this.dom = dom || new Dom();\n  this.macros = macros;\n  this.version = resources.version;\n}\n\n// Expose highlighter to allow enumerating available styles and\n// including external language grammars\nApi.prototype.highlighter = highlighter;\n\nApi.prototype.convert = function (markdown) {\n  var parser = new Parser()\n    , content = parser.parse(markdown || '', macros)[0].content\n    ;\n\n  return converter.convertMarkdown(content, {}, true);\n};\n\n// Creates slideshow initialized from options\nApi.prototype.create = function (options, callback) {\n  var self = this\n    , events\n    , slideshow\n    , slideshowView\n    , controller\n    ;\n\n  options = applyDefaults(this.dom, options);\n\n  events = new EventEmitter();\n  events.setMaxListeners(0);\n\n  slideshow = new Slideshow(events, this.dom, options, function (slideshow) {\n    slideshowView = new SlideshowView(events, self.dom, options.container, slideshow);\n    controller = options.controller || new DefaultController(events, self.dom, slideshowView, options.navigation);\n    if (typeof callback === 'function') {\n      callback(slideshow);\n    }\n  });\n\n  return slideshow;\n};\n\nfunction applyDefaults (dom, options) {\n  var sourceElement;\n\n  options = options || {};\n\n  if (!options.hasOwnProperty('source')) {\n    sourceElement = dom.getElementById('source');\n    if (sourceElement) {\n      options.source = unescape(sourceElement.innerHTML);\n      sourceElement.style.display = 'none';\n    }\n  }\n\n  if (!(options.container instanceof window.HTMLElement)) {\n    options.container = dom.getBodyElement();\n  }\n\n  return options;\n}\n\nfunction unescape (source) {\n  source = source.replace(/&[l|g]t;/g,\n    function (match) {\n      return match === '&lt;' ? '<' : '>';\n    });\n\n  source = source.replace(/&amp;/g, '&');\n  source = source.replace(/&quot;/g, '\"');\n\n  return source;\n}\n},{\"./controllers/defaultController\":6,\"./converter\":12,\"./dom\":13,\"./highlighter\":14,\"./macros\":16,\"./models/slideshow\":18,\"./parser\":21,\"./resources\":22,\"./views/slideshowView\":27,\"events\":1}],6:[function(require,module,exports){\n// Allow override of global `location`\n/* global location:true */\n\nmodule.exports = Controller;\n\nvar Keyboard = require('./inputs/keyboard')\n  , mouse = require('./inputs/mouse')\n  , touch = require('./inputs/touch')\n  , message = require('./inputs/message')\n  , location = require('./inputs/location')\n  ;\n\nfunction Controller (events, dom, slideshowView, options) {\n  options = options || {};\n\n  var keyboard = new Keyboard(events);\n\n  message.register(events);\n  location.register(events, dom, slideshowView);\n  mouse.register(events, options);\n  touch.register(events, options);\n\n  addApiEventListeners(events, keyboard, slideshowView, options);\n}\n\nfunction addApiEventListeners (events, keyboard, slideshowView, options) {\n  events.on('pause', function(event) {\n    keyboard.deactivate();\n    mouse.unregister(events);\n    touch.unregister(events);\n  });\n\n  events.on('resume',  function(event) {\n    keyboard.activate();\n    mouse.register(events, options);\n    touch.register(events, options);\n  });\n}\n},{\"./inputs/keyboard\":7,\"./inputs/location\":8,\"./inputs/message\":9,\"./inputs/mouse\":10,\"./inputs/touch\":11}],7:[function(require,module,exports){\nmodule.exports = Keyboard;\r\n\r\nfunction Keyboard(events) {\r\n  this._events = events;\r\n  \r\n  this.activate();\r\n}\r\n\r\nKeyboard.prototype.activate = function () {\r\n  this._gotoSlideNumber = '';\r\n  \r\n  this.addKeyboardEventListeners();\r\n};\r\n\r\nKeyboard.prototype.deactivate = function () {\r\n  this.removeKeyboardEventListeners();\r\n};\r\n\r\nKeyboard.prototype.addKeyboardEventListeners = function () {\r\n  var self = this;\r\n  var events = this._events;\r\n  \r\n  events.on('keydown', function (event) {\r\n    if (event.metaKey || event.ctrlKey) {\r\n      // Bail out if meta or ctrl key was pressed\r\n      return;\r\n    }\r\n\r\n    switch (event.keyCode) {\r\n      case 33: // Page up\r\n      case 37: // Left\r\n      case 38: // Up\r\n        events.emit('gotoPreviousSlide');\r\n        break;\r\n      case 32: // Space\r\n      case 34: // Page down\r\n      case 39: // Right\r\n      case 40: // Down\r\n        events.emit('gotoNextSlide');\r\n        break;\r\n      case 36: // Home\r\n        events.emit('gotoFirstSlide');\r\n        break;\r\n      case 35: // End\r\n        events.emit('gotoLastSlide');\r\n        break;\r\n      case 27: // Escape\r\n        events.emit('hideOverlay');\r\n        break;\r\n      case 13: // Return\r\n        if (self._gotoSlideNumber) {\r\n          events.emit('gotoSlide', self._gotoSlideNumber);\r\n          self._gotoSlideNumber = '';\r\n        }\r\n        break;\r\n    }\r\n  });\r\n\r\n  events.on('keypress', function (event) {\r\n    if (event.metaKey || event.ctrlKey) {\r\n      // Bail out if meta or ctrl key was pressed\r\n      return;\r\n    }\r\n    \r\n    var key = String.fromCharCode(event.which).toLowerCase();\r\n\r\n    switch (key) {\r\n      case 'j':\r\n        events.emit('gotoNextSlide');\r\n        break;\r\n      case 'k':\r\n        events.emit('gotoPreviousSlide');\r\n        break;\r\n      case 'b':\r\n        events.emit('toggleBlackout');\r\n        break;\r\n      case 'm':\r\n        events.emit('toggleMirrored');\r\n        break;\r\n      case 'c':\r\n        events.emit('createClone');\r\n        break;\r\n      case 'p':\r\n        events.emit('togglePresenterMode');\r\n        break;\r\n      case 'f':\r\n        events.emit('toggleFullscreen');\r\n        break;\r\n      case 't':\r\n        events.emit('resetTimer');\r\n        break;\r\n      case '1': \r\n      case '2': \r\n      case '3': \r\n      case '4': \r\n      case '5':\r\n      case '6': \r\n      case '7': \r\n      case '8': \r\n      case '9': \r\n      case '0':\r\n        self._gotoSlideNumber += key;\r\n        break;\r\n      case 'h':\r\n      case '?':\r\n        events.emit('toggleHelp');\r\n        break;\r\n    }\r\n  });\r\n};\r\n\r\nKeyboard.prototype.removeKeyboardEventListeners = function () {\r\n  var events = this._events;\r\n  \r\n  events.removeAllListeners(\"keydown\");\r\n  events.removeAllListeners(\"keypress\");\r\n};\n},{}],8:[function(require,module,exports){\nvar utils = require('../../utils.js');\r\n\r\nexports.register = function (events, dom, slideshowView) {\r\n  addLocationEventListeners(events, dom, slideshowView);\r\n};\r\n\r\nfunction addLocationEventListeners (events, dom, slideshowView) {\r\n  // If slideshow is embedded into custom DOM element, we don't\r\n  // hook up to location hash changes, so just go to first slide.\r\n  if (slideshowView.isEmbedded()) {\r\n    events.emit('gotoSlide', 1);\r\n  }\r\n  // When slideshow is not embedded into custom DOM element, but\r\n  // rather hosted directly inside document.body, we hook up to\r\n  // location hash changes, and trigger initial navigation.\r\n  else {\r\n    events.on('hashchange', navigateByHash);\r\n    events.on('slideChanged', updateHash);\r\n    events.on('toggledPresenter', updateHash);\r\n\r\n    navigateByHash();\r\n  }\r\n\r\n  function navigateByHash () {\r\n    var slideNoOrName = (dom.getLocationHash() || '').substr(1);\r\n    events.emit('gotoSlide', slideNoOrName);\r\n  }\r\n\r\n  function updateHash (slideNoOrName) {\r\n    if(utils.hasClass(slideshowView.containerElement, 'remark-presenter-mode')){\r\n      dom.setLocationHash('#p' + slideNoOrName);\r\n    }\r\n    else{\r\n      dom.setLocationHash('#' + slideNoOrName);\r\n    }\r\n  }\r\n}\r\n\n},{\"../../utils.js\":24}],9:[function(require,module,exports){\nexports.register = function (events) {\r\n  addMessageEventListeners(events);\r\n};\r\n\r\nfunction addMessageEventListeners (events) {\r\n  events.on('message', navigateByMessage);\r\n\r\n  function navigateByMessage(message) {\r\n    var cap;\r\n\r\n    if ((cap = /^gotoSlide:(\\d+)$/.exec(message.data)) !== null) {\r\n      events.emit('gotoSlide', parseInt(cap[1], 10), true);\r\n    }\r\n    else if (message.data === 'toggleBlackout') {\r\n      events.emit('toggleBlackout');\r\n    }\r\n  }\r\n}\r\n\n},{}],10:[function(require,module,exports){\nexports.register = function (events, options) {\n  addMouseEventListeners(events, options);\n};\n\nexports.unregister = function (events) {\n  removeMouseEventListeners(events);\n};\n\nfunction addMouseEventListeners (events, options) {\n  if (options.click) {\n    events.on('click', function (event) {\n      if (event.target.nodeName === 'A') {\n        // Don't interfere when clicking link\n        return;\n      }\n      else if (event.button === 0) {\n        events.emit('gotoNextSlide');\n      }\n    });\n    events.on('contextmenu', function (event) {\n      if (event.target.nodeName === 'A') {\n        // Don't interfere when right-clicking link\n        return;\n      }\n      event.preventDefault();\n      events.emit('gotoPreviousSlide');\n    });\n  }\n\n  if (options.scroll !== false) {\n    var scrollHandler = function (event) {\n      if (event.wheelDeltaY > 0 || event.detail < 0) {\n        events.emit('gotoPreviousSlide');\n      }\n      else if (event.wheelDeltaY < 0 || event.detail > 0) {\n        events.emit('gotoNextSlide');\n      }\n    };\n\n    // IE9, Chrome, Safari, Opera\n    events.on('mousewheel', scrollHandler);\n    // Firefox\n    events.on('DOMMouseScroll', scrollHandler);\n  }\n}\n\nfunction removeMouseEventListeners(events) {\n  events.removeAllListeners('click');\n  events.removeAllListeners('contextmenu');\n  events.removeAllListeners('mousewheel');\n}\n\n},{}],11:[function(require,module,exports){\nexports.register = function (events, options) {\r\n  addTouchEventListeners(events, options);\r\n};\r\n\r\nexports.unregister = function (events) {\r\n  removeTouchEventListeners(events);\r\n};\r\n\r\nfunction addTouchEventListeners (events, options) {\r\n  var touch\r\n    , startX\r\n    , endX\r\n    ;\r\n\r\n  if (options.touch === false) {\r\n    return;\r\n  }\r\n\r\n  var isTap = function () {\r\n    return Math.abs(startX - endX) < 10;\r\n  };\r\n\r\n  var handleTap = function () {\r\n    events.emit('tap', endX);\r\n  };\r\n\r\n  var handleSwipe = function () {\r\n    if (startX > endX) {\r\n      events.emit('gotoNextSlide');\r\n    }\r\n    else {\r\n      events.emit('gotoPreviousSlide');\r\n    }\r\n  };\r\n\r\n  events.on('touchstart', function (event) {\r\n    touch = event.touches[0];\r\n    startX = touch.clientX;\r\n  });\r\n\r\n  events.on('touchend', function (event) {\r\n    if (event.target.nodeName.toUpperCase() === 'A') {\r\n      return;\r\n    }\r\n\r\n    touch = event.changedTouches[0];\r\n    endX = touch.clientX;\r\n\r\n    if (isTap()) {\r\n      handleTap();\r\n    }\r\n    else {\r\n      handleSwipe();\r\n    }\r\n  });\r\n\r\n  events.on('touchmove', function (event) {\r\n    event.preventDefault();\r\n  });\r\n}\r\n\r\nfunction removeTouchEventListeners(events) {\r\n  events.removeAllListeners(\"touchstart\");\r\n  events.removeAllListeners(\"touchend\");\r\n  events.removeAllListeners(\"touchmove\");\r\n}\r\n\n},{}],12:[function(require,module,exports){\nvar marked = require('marked')\n  , converter = module.exports = {}\n  , element = document.createElement('div')\n  ;\n\nmarked.setOptions({\n  gfm: true,\n  tables: true,\n  breaks: false,\n\n  // Without this set to true, converting something like\n  // <p>*</p><p>*</p> will become <p><em></p><p></em></p>\n  pedantic: true,\n\n  sanitize: false,\n  smartLists: true,\n  langPrefix: ''\n});\n\nconverter.convertMarkdown = function (content, links, inline) {\n  element.innerHTML = convertMarkdown(content, links || {}, inline);\n  element.innerHTML = element.innerHTML.replace(/<p>\\s*<\\/p>/g, '');\n  return element.innerHTML.replace(/\\n\\r?$/, '');\n};\n\nfunction convertMarkdown (content, links, insideContentClass) {\n  var i, tag, markdown = '', html;\n\n  for (i = 0; i < content.length; ++i) {\n    if (typeof content[i] === 'string') {\n      markdown += content[i];\n    }\n    else {\n      tag = content[i].block ? 'div' : 'span';\n      markdown += '<' + tag + ' class=\"' + content[i].class + '\">';\n      markdown += convertMarkdown(content[i].content, links, !content[i].block);\n      markdown += '</' + tag + '>';\n    }\n  }\n\n  var tokens = marked.Lexer.lex(markdown.replace(/^\\s+/, ''));\n  tokens.links = links;\n  html = marked.Parser.parse(tokens);\n\n  if (insideContentClass) {\n    element.innerHTML = html;\n    if (element.children.length === 1 && element.children[0].tagName === 'P') {\n      html = element.children[0].innerHTML;\n    }\n  }\n\n  return html;\n}\n\n},{\"marked\":2}],13:[function(require,module,exports){\nmodule.exports = Dom;\n\nfunction Dom () { }\n\nDom.prototype.XMLHttpRequest = XMLHttpRequest;\n\nDom.prototype.getHTMLElement = function () {\n  return document.getElementsByTagName('html')[0];\n};\n\nDom.prototype.getBodyElement = function () {\n  return document.body;\n};\n\nDom.prototype.getElementById = function (id) {\n  return document.getElementById(id);\n};\n\nDom.prototype.getLocationHash = function () {\n  return window.location.hash;\n};\n\nDom.prototype.setLocationHash = function (hash) {\n  if (typeof window.history.replaceState === 'function' && window.origin !== 'null') {\n    window.history.replaceState(undefined, undefined, hash);\n  }\n  else {\n    window.location.hash = hash;\n  }\n};\n\n},{}],14:[function(require,module,exports){\n/* Automatically generated */\n\nvar hljs = (function() {\n      var exports = {};\n      /*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n(function(factory) {\n\n  // Find the global object for export to both the browser and web workers.\n  var globalObject = typeof window === 'object' && window ||\n                     typeof self === 'object' && self;\n\n  // Setup highlight.js for different environments. First is Node.js or\n  // CommonJS.\n  if(typeof exports !== 'undefined') {\n    factory(exports);\n  } else if(globalObject) {\n    // Export hljs globally even when using AMD for cases when this script\n    // is loaded with others that may still expect a global hljs.\n    globalObject.hljs = factory({});\n\n    // Finally register the global hljs with AMD.\n    if(typeof define === 'function' && define.amd) {\n      define([], function() {\n        return globalObject.hljs;\n      });\n    }\n  }\n\n}(function(hljs) {\n  // Convenience variables for build-in objects\n  var ArrayProto = [],\n      objectKeys = Object.keys;\n\n  // Global internal variables used within the highlight.js library.\n  var languages = {},\n      aliases   = {};\n\n  // Regular expressions used throughout the highlight.js library.\n  var noHighlightRe    = /^(no-?highlight|plain|text)$/i,\n      languagePrefixRe = /\\blang(?:uage)?-([\\w-]+)\\b/i,\n      fixMarkupRe      = /((^(<[^>]+>|\\t|)+|(?:\\n)))/gm;\n\n  var spanEndTag = '</span>';\n\n  // Global options used when within external APIs. This is modified when\n  // calling the `hljs.configure` function.\n  var options = {\n    classPrefix: 'hljs-',\n    tabReplace: null,\n    useBR: false,\n    languages: undefined\n  };\n\n  // Object map that is used to escape some common HTML characters.\n  var escapeRegexMap = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;'\n  };\n\n  /* Utility functions */\n\n  function escape(value) {\n    return value.replace(/[&<>]/gm, function(character) {\n      return escapeRegexMap[character];\n    });\n  }\n\n  function tag(node) {\n    return node.nodeName.toLowerCase();\n  }\n\n  function testRe(re, lexeme) {\n    var match = re && re.exec(lexeme);\n    return match && match.index === 0;\n  }\n\n  function isNotHighlighted(language) {\n    return noHighlightRe.test(language);\n  }\n\n  function blockLanguage(block) {\n    var i, match, length, _class;\n    var classes = block.className + ' ';\n\n    classes += block.parentNode ? block.parentNode.className : '';\n\n    // language-* takes precedence over non-prefixed class names.\n    match = languagePrefixRe.exec(classes);\n    if (match) {\n      return getLanguage(match[1]) ? match[1] : 'no-highlight';\n    }\n\n    classes = classes.split(/\\s+/);\n\n    for (i = 0, length = classes.length; i < length; i++) {\n      _class = classes[i]\n\n      if (isNotHighlighted(_class) || getLanguage(_class)) {\n        return _class;\n      }\n    }\n  }\n\n  function inherit(parent, obj) {\n    var key;\n    var result = {};\n\n    for (key in parent)\n      result[key] = parent[key];\n    if (obj)\n      for (key in obj)\n        result[key] = obj[key];\n    return result;\n  }\n\n  /* Stream merging */\n\n  function nodeStream(node) {\n    var result = [];\n    (function _nodeStream(node, offset) {\n      for (var child = node.firstChild; child; child = child.nextSibling) {\n        if (child.nodeType === 3)\n          offset += child.nodeValue.length;\n        else if (child.nodeType === 1) {\n          result.push({\n            event: 'start',\n            offset: offset,\n            node: child\n          });\n          offset = _nodeStream(child, offset);\n          // Prevent void elements from having an end tag that would actually\n          // double them in the output. There are more void elements in HTML\n          // but we list only those realistically expected in code display.\n          if (!tag(child).match(/br|hr|img|input/)) {\n            result.push({\n              event: 'stop',\n              offset: offset,\n              node: child\n            });\n          }\n        }\n      }\n      return offset;\n    })(node, 0);\n    return result;\n  }\n\n  function mergeStreams(original, highlighted, value) {\n    var processed = 0;\n    var result = '';\n    var nodeStack = [];\n\n    function selectStream() {\n      if (!original.length || !highlighted.length) {\n        return original.length ? original : highlighted;\n      }\n      if (original[0].offset !== highlighted[0].offset) {\n        return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n      }\n\n      /*\n      To avoid starting the stream just before it should stop the order is\n      ensured that original always starts first and closes last:\n\n      if (event1 == 'start' && event2 == 'start')\n        return original;\n      if (event1 == 'start' && event2 == 'stop')\n        return highlighted;\n      if (event1 == 'stop' && event2 == 'start')\n        return original;\n      if (event1 == 'stop' && event2 == 'stop')\n        return highlighted;\n\n      ... which is collapsed to:\n      */\n      return highlighted[0].event === 'start' ? original : highlighted;\n    }\n\n    function open(node) {\n      function attr_str(a) {return ' ' + a.nodeName + '=\"' + escape(a.value) + '\"';}\n      result += '<' + tag(node) + ArrayProto.map.call(node.attributes, attr_str).join('') + '>';\n    }\n\n    function close(node) {\n      result += '</' + tag(node) + '>';\n    }\n\n    function render(event) {\n      (event.event === 'start' ? open : close)(event.node);\n    }\n\n    while (original.length || highlighted.length) {\n      var stream = selectStream();\n      result += escape(value.substr(processed, stream[0].offset - processed));\n      processed = stream[0].offset;\n      if (stream === original) {\n        /*\n        On any opening or closing tag of the original markup we first close\n        the entire highlighted node stack, then render the original tag along\n        with all the following original tags at the same offset and then\n        reopen all the tags on the highlighted stack.\n        */\n        nodeStack.reverse().forEach(close);\n        do {\n          render(stream.splice(0, 1)[0]);\n          stream = selectStream();\n        } while (stream === original && stream.length && stream[0].offset === processed);\n        nodeStack.reverse().forEach(open);\n      } else {\n        if (stream[0].event === 'start') {\n          nodeStack.push(stream[0].node);\n        } else {\n          nodeStack.pop();\n        }\n        render(stream.splice(0, 1)[0]);\n      }\n    }\n    return result + escape(value.substr(processed));\n  }\n\n  /* Initialization */\n\n  function compileLanguage(language) {\n\n    function reStr(re) {\n        return (re && re.source) || re;\n    }\n\n    function langRe(value, global) {\n      return new RegExp(\n        reStr(value),\n        'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')\n      );\n    }\n\n    function compileMode(mode, parent) {\n      if (mode.compiled)\n        return;\n      mode.compiled = true;\n\n      mode.keywords = mode.keywords || mode.beginKeywords;\n      if (mode.keywords) {\n        var compiled_keywords = {};\n\n        var flatten = function(className, str) {\n          if (language.case_insensitive) {\n            str = str.toLowerCase();\n          }\n          str.split(' ').forEach(function(kw) {\n            var pair = kw.split('|');\n            compiled_keywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1];\n          });\n        };\n\n        if (typeof mode.keywords === 'string') { // string\n          flatten('keyword', mode.keywords);\n        } else {\n          objectKeys(mode.keywords).forEach(function (className) {\n            flatten(className, mode.keywords[className]);\n          });\n        }\n        mode.keywords = compiled_keywords;\n      }\n      mode.lexemesRe = langRe(mode.lexemes || /\\w+/, true);\n\n      if (parent) {\n        if (mode.beginKeywords) {\n          mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')\\\\b';\n        }\n        if (!mode.begin)\n          mode.begin = /\\B|\\b/;\n        mode.beginRe = langRe(mode.begin);\n        if (!mode.end && !mode.endsWithParent)\n          mode.end = /\\B|\\b/;\n        if (mode.end)\n          mode.endRe = langRe(mode.end);\n        mode.terminator_end = reStr(mode.end) || '';\n        if (mode.endsWithParent && parent.terminator_end)\n          mode.terminator_end += (mode.end ? '|' : '') + parent.terminator_end;\n      }\n      if (mode.illegal)\n        mode.illegalRe = langRe(mode.illegal);\n      if (mode.relevance == null)\n        mode.relevance = 1;\n      if (!mode.contains) {\n        mode.contains = [];\n      }\n      var expanded_contains = [];\n      mode.contains.forEach(function(c) {\n        if (c.variants) {\n          c.variants.forEach(function(v) {expanded_contains.push(inherit(c, v));});\n        } else {\n          expanded_contains.push(c === 'self' ? mode : c);\n        }\n      });\n      mode.contains = expanded_contains;\n      mode.contains.forEach(function(c) {compileMode(c, mode);});\n\n      if (mode.starts) {\n        compileMode(mode.starts, parent);\n      }\n\n      var terminators =\n        mode.contains.map(function(c) {\n          return c.beginKeywords ? '\\\\.?(' + c.begin + ')\\\\.?' : c.begin;\n        })\n        .concat([mode.terminator_end, mode.illegal])\n        .map(reStr)\n        .filter(Boolean);\n      mode.terminators = terminators.length ? langRe(terminators.join('|'), true) : {exec: function(/*s*/) {return null;}};\n    }\n\n    compileMode(language);\n  }\n\n  /*\n  Core highlighting function. Accepts a language name, or an alias, and a\n  string with the code to highlight. Returns an object with the following\n  properties:\n\n  - relevance (int)\n  - value (an HTML string with highlighting markup)\n\n  */\n  function highlight(name, value, ignore_illegals, continuation) {\n\n    function subMode(lexeme, mode) {\n      var i, length;\n\n      for (i = 0, length = mode.contains.length; i < length; i++) {\n        if (testRe(mode.contains[i].beginRe, lexeme)) {\n          return mode.contains[i];\n        }\n      }\n    }\n\n    function endOfMode(mode, lexeme) {\n      if (testRe(mode.endRe, lexeme)) {\n        while (mode.endsParent && mode.parent) {\n          mode = mode.parent;\n        }\n        return mode;\n      }\n      if (mode.endsWithParent) {\n        return endOfMode(mode.parent, lexeme);\n      }\n    }\n\n    function isIllegal(lexeme, mode) {\n      return !ignore_illegals && testRe(mode.illegalRe, lexeme);\n    }\n\n    function keywordMatch(mode, match) {\n      var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0];\n      return mode.keywords.hasOwnProperty(match_str) && mode.keywords[match_str];\n    }\n\n    function buildSpan(classname, insideSpan, leaveOpen, noPrefix) {\n      var classPrefix = noPrefix ? '' : options.classPrefix,\n          openSpan    = '<span class=\"' + classPrefix,\n          closeSpan   = leaveOpen ? '' : spanEndTag\n\n      openSpan += classname + '\">';\n\n      return openSpan + insideSpan + closeSpan;\n    }\n\n    function processKeywords() {\n      var keyword_match, last_index, match, result;\n\n      if (!top.keywords)\n        return escape(mode_buffer);\n\n      result = '';\n      last_index = 0;\n      top.lexemesRe.lastIndex = 0;\n      match = top.lexemesRe.exec(mode_buffer);\n\n      while (match) {\n        result += escape(mode_buffer.substr(last_index, match.index - last_index));\n        keyword_match = keywordMatch(top, match);\n        if (keyword_match) {\n          relevance += keyword_match[1];\n          result += buildSpan(keyword_match[0], escape(match[0]));\n        } else {\n          result += escape(match[0]);\n        }\n        last_index = top.lexemesRe.lastIndex;\n        match = top.lexemesRe.exec(mode_buffer);\n      }\n      return result + escape(mode_buffer.substr(last_index));\n    }\n\n    function processSubLanguage() {\n      var explicit = typeof top.subLanguage === 'string';\n      if (explicit && !languages[top.subLanguage]) {\n        return escape(mode_buffer);\n      }\n\n      var result = explicit ?\n                   highlight(top.subLanguage, mode_buffer, true, continuations[top.subLanguage]) :\n                   highlightAuto(mode_buffer, top.subLanguage.length ? top.subLanguage : undefined);\n\n      // Counting embedded language score towards the host language may be disabled\n      // with zeroing the containing mode relevance. Usecase in point is Markdown that\n      // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n      // score.\n      if (top.relevance > 0) {\n        relevance += result.relevance;\n      }\n      if (explicit) {\n        continuations[top.subLanguage] = result.top;\n      }\n      return buildSpan(result.language, result.value, false, true);\n    }\n\n    function processBuffer() {\n      result += (top.subLanguage != null ? processSubLanguage() : processKeywords());\n      mode_buffer = '';\n    }\n\n    function startNewMode(mode) {\n      result += mode.className? buildSpan(mode.className, '', true): '';\n      top = Object.create(mode, {parent: {value: top}});\n    }\n\n    function processLexeme(buffer, lexeme) {\n\n      mode_buffer += buffer;\n\n      if (lexeme == null) {\n        processBuffer();\n        return 0;\n      }\n\n      var new_mode = subMode(lexeme, top);\n      if (new_mode) {\n        if (new_mode.skip) {\n          mode_buffer += lexeme;\n        } else {\n          if (new_mode.excludeBegin) {\n            mode_buffer += lexeme;\n          }\n          processBuffer();\n          if (!new_mode.returnBegin && !new_mode.excludeBegin) {\n            mode_buffer = lexeme;\n          }\n        }\n        startNewMode(new_mode, lexeme);\n        return new_mode.returnBegin ? 0 : lexeme.length;\n      }\n\n      var end_mode = endOfMode(top, lexeme);\n      if (end_mode) {\n        var origin = top;\n        if (origin.skip) {\n          mode_buffer += lexeme;\n        } else {\n          if (!(origin.returnEnd || origin.excludeEnd)) {\n            mode_buffer += lexeme;\n          }\n          processBuffer();\n          if (origin.excludeEnd) {\n            mode_buffer = lexeme;\n          }\n        }\n        do {\n          if (top.className) {\n            result += spanEndTag;\n          }\n          if (!top.skip) {\n            relevance += top.relevance;\n          }\n          top = top.parent;\n        } while (top !== end_mode.parent);\n        if (end_mode.starts) {\n          startNewMode(end_mode.starts, '');\n        }\n        return origin.returnEnd ? 0 : lexeme.length;\n      }\n\n      if (isIllegal(lexeme, top))\n        throw new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.className || '<unnamed>') + '\"');\n\n      /*\n      Parser should not reach this point as all types of lexemes should be caught\n      earlier, but if it does due to some bug make sure it advances at least one\n      character forward to prevent infinite looping.\n      */\n      mode_buffer += lexeme;\n      return lexeme.length || 1;\n    }\n\n    var language = getLanguage(name);\n    if (!language) {\n      throw new Error('Unknown language: \"' + name + '\"');\n    }\n\n    compileLanguage(language);\n    var top = continuation || language;\n    var continuations = {}; // keep continuations for sub-languages\n    var result = '', current;\n    for(current = top; current !== language; current = current.parent) {\n      if (current.className) {\n        result = buildSpan(current.className, '', true) + result;\n      }\n    }\n    var mode_buffer = '';\n    var relevance = 0;\n    try {\n      var match, count, index = 0;\n      while (true) {\n        top.terminators.lastIndex = index;\n        match = top.terminators.exec(value);\n        if (!match)\n          break;\n        count = processLexeme(value.substr(index, match.index - index), match[0]);\n        index = match.index + count;\n      }\n      processLexeme(value.substr(index));\n      for(current = top; current.parent; current = current.parent) { // close dangling modes\n        if (current.className) {\n          result += spanEndTag;\n        }\n      }\n      return {\n        relevance: relevance,\n        value: result,\n        language: name,\n        top: top\n      };\n    } catch (e) {\n      if (e.message && e.message.indexOf('Illegal') !== -1) {\n        return {\n          relevance: 0,\n          value: escape(value)\n        };\n      } else {\n        throw e;\n      }\n    }\n  }\n\n  /*\n  Highlighting with language detection. Accepts a string with the code to\n  highlight. Returns an object with the following properties:\n\n  - language (detected language)\n  - relevance (int)\n  - value (an HTML string with highlighting markup)\n  - second_best (object with the same structure for second-best heuristically\n    detected language, may be absent)\n\n  */\n  function highlightAuto(text, languageSubset) {\n    languageSubset = languageSubset || options.languages || objectKeys(languages);\n    var result = {\n      relevance: 0,\n      value: escape(text)\n    };\n    var second_best = result;\n    languageSubset.filter(getLanguage).forEach(function(name) {\n      var current = highlight(name, text, false);\n      current.language = name;\n      if (current.relevance > second_best.relevance) {\n        second_best = current;\n      }\n      if (current.relevance > result.relevance) {\n        second_best = result;\n        result = current;\n      }\n    });\n    if (second_best.language) {\n      result.second_best = second_best;\n    }\n    return result;\n  }\n\n  /*\n  Post-processing of the highlighted markup:\n\n  - replace TABs with something more useful\n  - replace real line-breaks with '<br>' for non-pre containers\n\n  */\n  function fixMarkup(value) {\n    return !(options.tabReplace || options.useBR)\n      ? value\n      : value.replace(fixMarkupRe, function(match, p1) {\n          if (options.useBR && match === '\\n') {\n            return '<br>';\n          } else if (options.tabReplace) {\n            return p1.replace(/\\t/g, options.tabReplace);\n          }\n      });\n  }\n\n  function buildClassName(prevClassName, currentLang, resultLang) {\n    var language = currentLang ? aliases[currentLang] : resultLang,\n        result   = [prevClassName.trim()];\n\n    if (!prevClassName.match(/\\bhljs\\b/)) {\n      result.push('hljs');\n    }\n\n    if (prevClassName.indexOf(language) === -1) {\n      result.push(language);\n    }\n\n    return result.join(' ').trim();\n  }\n\n  /*\n  Applies highlighting to a DOM node containing code. Accepts a DOM node and\n  two optional parameters for fixMarkup.\n  */\n  function highlightBlock(block) {\n    var node, originalStream, result, resultNode, text;\n    var language = blockLanguage(block);\n\n    if (isNotHighlighted(language))\n        return;\n\n    if (options.useBR) {\n      node = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n      node.innerHTML = block.innerHTML.replace(/\\n/g, '').replace(/<br[ \\/]*>/g, '\\n');\n    } else {\n      node = block;\n    }\n    text = node.textContent;\n    result = language ? highlight(language, text, true) : highlightAuto(text);\n\n    originalStream = nodeStream(node);\n    if (originalStream.length) {\n      resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n      resultNode.innerHTML = result.value;\n      result.value = mergeStreams(originalStream, nodeStream(resultNode), text);\n    }\n    result.value = fixMarkup(result.value);\n\n    block.innerHTML = result.value;\n    block.className = buildClassName(block.className, language, result.language);\n    block.result = {\n      language: result.language,\n      re: result.relevance\n    };\n    if (result.second_best) {\n      block.second_best = {\n        language: result.second_best.language,\n        re: result.second_best.relevance\n      };\n    }\n  }\n\n  /*\n  Updates highlight.js global options with values passed in the form of an object.\n  */\n  function configure(user_options) {\n    options = inherit(options, user_options);\n  }\n\n  /*\n  Applies highlighting to all <pre><code>..</code></pre> blocks on a page.\n  */\n  function initHighlighting() {\n    if (initHighlighting.called)\n      return;\n    initHighlighting.called = true;\n\n    var blocks = document.querySelectorAll('pre code');\n    ArrayProto.forEach.call(blocks, highlightBlock);\n  }\n\n  /*\n  Attaches highlighting to the page load event.\n  */\n  function initHighlightingOnLoad() {\n    addEventListener('DOMContentLoaded', initHighlighting, false);\n    addEventListener('load', initHighlighting, false);\n  }\n\n  function registerLanguage(name, language) {\n    var lang = languages[name] = language(hljs);\n    if (lang.aliases) {\n      lang.aliases.forEach(function(alias) {aliases[alias] = name;});\n    }\n  }\n\n  function listLanguages() {\n    return objectKeys(languages);\n  }\n\n  function getLanguage(name) {\n    name = (name || '').toLowerCase();\n    return languages[name] || languages[aliases[name]];\n  }\n\n  /* Interface definition */\n\n  hljs.highlight = highlight;\n  hljs.highlightAuto = highlightAuto;\n  hljs.fixMarkup = fixMarkup;\n  hljs.highlightBlock = highlightBlock;\n  hljs.configure = configure;\n  hljs.initHighlighting = initHighlighting;\n  hljs.initHighlightingOnLoad = initHighlightingOnLoad;\n  hljs.registerLanguage = registerLanguage;\n  hljs.listLanguages = listLanguages;\n  hljs.getLanguage = getLanguage;\n  hljs.inherit = inherit;\n\n  // Common regexps\n  hljs.IDENT_RE = '[a-zA-Z]\\\\w*';\n  hljs.UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\n  hljs.NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\n  hljs.C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\n  hljs.BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\n  hljs.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n  // Common modes\n  hljs.BACKSLASH_ESCAPE = {\n    begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n  };\n  hljs.APOS_STRING_MODE = {\n    className: 'string',\n    begin: '\\'', end: '\\'',\n    illegal: '\\\\n',\n    contains: [hljs.BACKSLASH_ESCAPE]\n  };\n  hljs.QUOTE_STRING_MODE = {\n    className: 'string',\n    begin: '\"', end: '\"',\n    illegal: '\\\\n',\n    contains: [hljs.BACKSLASH_ESCAPE]\n  };\n  hljs.PHRASAL_WORDS_MODE = {\n    begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\\b/\n  };\n  hljs.COMMENT = function (begin, end, inherits) {\n    var mode = hljs.inherit(\n      {\n        className: 'comment',\n        begin: begin, end: end,\n        contains: []\n      },\n      inherits || {}\n    );\n    mode.contains.push(hljs.PHRASAL_WORDS_MODE);\n    mode.contains.push({\n      className: 'doctag',\n      begin: '(?:TODO|FIXME|NOTE|BUG|XXX):',\n      relevance: 0\n    });\n    return mode;\n  };\n  hljs.C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$');\n  hljs.C_BLOCK_COMMENT_MODE = hljs.COMMENT('/\\\\*', '\\\\*/');\n  hljs.HASH_COMMENT_MODE = hljs.COMMENT('#', '$');\n  hljs.NUMBER_MODE = {\n    className: 'number',\n    begin: hljs.NUMBER_RE,\n    relevance: 0\n  };\n  hljs.C_NUMBER_MODE = {\n    className: 'number',\n    begin: hljs.C_NUMBER_RE,\n    relevance: 0\n  };\n  hljs.BINARY_NUMBER_MODE = {\n    className: 'number',\n    begin: hljs.BINARY_NUMBER_RE,\n    relevance: 0\n  };\n  hljs.CSS_NUMBER_MODE = {\n    className: 'number',\n    begin: hljs.NUMBER_RE + '(' +\n      '%|em|ex|ch|rem'  +\n      '|vw|vh|vmin|vmax' +\n      '|cm|mm|in|pt|pc|px' +\n      '|deg|grad|rad|turn' +\n      '|s|ms' +\n      '|Hz|kHz' +\n      '|dpi|dpcm|dppx' +\n      ')?',\n    relevance: 0\n  };\n  hljs.REGEXP_MODE = {\n    className: 'regexp',\n    begin: /\\//, end: /\\/[gimuy]*/,\n    illegal: /\\n/,\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      {\n        begin: /\\[/, end: /\\]/,\n        relevance: 0,\n        contains: [hljs.BACKSLASH_ESCAPE]\n      }\n    ]\n  };\n  hljs.TITLE_MODE = {\n    className: 'title',\n    begin: hljs.IDENT_RE,\n    relevance: 0\n  };\n  hljs.UNDERSCORE_TITLE_MODE = {\n    className: 'title',\n    begin: hljs.UNDERSCORE_IDENT_RE,\n    relevance: 0\n  };\n  hljs.METHOD_GUARD = {\n    // excludes method names from keyword processing\n    begin: '\\\\.\\\\s*' + hljs.UNDERSCORE_IDENT_RE,\n    relevance: 0\n  };\n\n  return hljs;\n}));\n;\n      return exports;\n    }())\n  , languages = [{name:\"lisp\",create:/*\nLanguage: Lisp\nDescription: Generic lisp syntax\nAuthor: Vasily Polovnyov <vast@whiteants.net>\nCategory: lisp\n*/\n\nfunction(hljs) {\n  var LISP_IDENT_RE = '[a-zA-Z_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*';\n  var MEC_RE = '\\\\|[^]*?\\\\|';\n  var LISP_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|\\\\-)?\\\\d+)?';\n  var SHEBANG = {\n    className: 'meta',\n    begin: '^#!', end: '$'\n  };\n  var LITERAL = {\n    className: 'literal',\n    begin: '\\\\b(t{1}|nil)\\\\b'\n  };\n  var NUMBER = {\n    className: 'number',\n    variants: [\n      {begin: LISP_SIMPLE_NUMBER_RE, relevance: 0},\n      {begin: '#(b|B)[0-1]+(/[0-1]+)?'},\n      {begin: '#(o|O)[0-7]+(/[0-7]+)?'},\n      {begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?'},\n      {begin: '#(c|C)\\\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\\\)'}\n    ]\n  };\n  var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n  var COMMENT = hljs.COMMENT(\n    ';', '$',\n    {\n      relevance: 0\n    }\n  );\n  var VARIABLE = {\n    begin: '\\\\*', end: '\\\\*'\n  };\n  var KEYWORD = {\n    className: 'symbol',\n    begin: '[:&]' + LISP_IDENT_RE\n  };\n  var IDENT = {\n    begin: LISP_IDENT_RE,\n    relevance: 0\n  };\n  var MEC = {\n    begin: MEC_RE\n  };\n  var QUOTED_LIST = {\n    begin: '\\\\(', end: '\\\\)',\n    contains: ['self', LITERAL, STRING, NUMBER, IDENT]\n  };\n  var QUOTED = {\n    contains: [NUMBER, STRING, VARIABLE, KEYWORD, QUOTED_LIST, IDENT],\n    variants: [\n      {\n        begin: '[\\'`]\\\\(', end: '\\\\)'\n      },\n      {\n        begin: '\\\\(quote ', end: '\\\\)',\n        keywords: {name: 'quote'}\n      },\n      {\n        begin: '\\'' + MEC_RE\n      }\n    ]\n  };\n  var QUOTED_ATOM = {\n    variants: [\n      {begin: '\\'' + LISP_IDENT_RE},\n      {begin: '#\\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*'}\n    ]\n  };\n  var LIST = {\n    begin: '\\\\(\\\\s*', end: '\\\\)'\n  };\n  var BODY = {\n    endsWithParent: true,\n    relevance: 0\n  };\n  LIST.contains = [\n    {\n      className: 'name',\n      variants: [\n        {begin: LISP_IDENT_RE},\n        {begin: MEC_RE}\n      ]\n    },\n    BODY\n  ];\n  BODY.contains = [QUOTED, QUOTED_ATOM, LIST, LITERAL, NUMBER, STRING, COMMENT, VARIABLE, KEYWORD, MEC, IDENT];\n\n  return {\n    illegal: /\\S/,\n    contains: [\n      NUMBER,\n      SHEBANG,\n      LITERAL,\n      STRING,\n      COMMENT,\n      QUOTED,\n      QUOTED_ATOM,\n      LIST,\n      IDENT\n    ]\n  };\n}\n},{name:\"cpp\",create:/*\nLanguage: C++\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>, Zaven Muradyan <megalivoithos@gmail.com>, Roel Deckers <admin@codingcat.nl>\nCategory: common, system\n*/\n\nfunction(hljs) {\n  var CPP_PRIMITIVE_TYPES = {\n    className: 'keyword',\n    begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n  };\n\n  var STRINGS = {\n    className: 'string',\n    variants: [\n      {\n        begin: '(u8?|U)?L?\"', end: '\"',\n        illegal: '\\\\n',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n      {\n        begin: '(u8?|U)?R\"', end: '\"',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n      {\n        begin: '\\'\\\\\\\\?.', end: '\\'',\n        illegal: '.'\n      }\n    ]\n  };\n\n  var NUMBERS = {\n    className: 'number',\n    variants: [\n      { begin: '\\\\b(0b[01\\'_]+)' },\n      { begin: '\\\\b([\\\\d\\'_]+(\\\\.[\\\\d\\'_]*)?|\\\\.[\\\\d\\'_]+)(u|U|l|L|ul|UL|f|F|b|B)' },\n      { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\'_]+|(\\\\b[\\\\d\\'_]+(\\\\.[\\\\d\\'_]*)?|\\\\.[\\\\d\\'_]+)([eE][-+]?[\\\\d\\'_]+)?)' }\n    ],\n    relevance: 0\n  };\n\n  var PREPROCESSOR =       {\n    className: 'meta',\n    begin: /#\\s*[a-z]+\\b/, end: /$/,\n    keywords: {\n      'meta-keyword':\n        'if else elif endif define undef warning error line ' +\n        'pragma ifdef ifndef include'\n    },\n    contains: [\n      {\n        begin: /\\\\\\n/, relevance: 0\n      },\n      hljs.inherit(STRINGS, {className: 'meta-string'}),\n      {\n        className: 'meta-string',\n        begin: '<', end: '>',\n        illegal: '\\\\n',\n      },\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE\n    ]\n  };\n\n  var FUNCTION_TITLE = hljs.IDENT_RE + '\\\\s*\\\\(';\n\n  var CPP_KEYWORDS = {\n    keyword: 'int float while private char catch import module export virtual operator sizeof ' +\n      'dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace ' +\n      'unsigned long volatile static protected bool template mutable if public friend ' +\n      'do goto auto void enum else break extern using class asm case typeid ' +\n      'short reinterpret_cast|10 default double register explicit signed typename try this ' +\n      'switch continue inline delete alignof constexpr decltype ' +\n      'noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary ' +\n      'atomic_bool atomic_char atomic_schar ' +\n      'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +\n      'atomic_ullong new throw return',\n    built_in: 'std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' +\n      'auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set ' +\n      'unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos ' +\n      'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' +\n      'fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' +\n      'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' +\n      'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' +\n      'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' +\n      'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n    literal: 'true false nullptr NULL'\n  };\n\n  var EXPRESSION_CONTAINS = [\n    CPP_PRIMITIVE_TYPES,\n    hljs.C_LINE_COMMENT_MODE,\n    hljs.C_BLOCK_COMMENT_MODE,\n    NUMBERS,\n    STRINGS\n  ];\n\n  return {\n    aliases: ['c', 'cc', 'h', 'c++', 'h++', 'hpp'],\n    keywords: CPP_KEYWORDS,\n    illegal: '</',\n    contains: EXPRESSION_CONTAINS.concat([\n      PREPROCESSOR,\n      {\n        begin: '\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<', end: '>',\n        keywords: CPP_KEYWORDS,\n        contains: ['self', CPP_PRIMITIVE_TYPES]\n      },\n      {\n        begin: hljs.IDENT_RE + '::',\n        keywords: CPP_KEYWORDS\n      },\n      {\n        // This mode covers expression context where we can't expect a function\n        // definition and shouldn't highlight anything that looks like one:\n        // `return some()`, `else if()`, `(x*sum(1, 2))`\n        variants: [\n          {begin: /=/, end: /;/},\n          {begin: /\\(/, end: /\\)/},\n          {beginKeywords: 'new throw return else', end: /;/}\n        ],\n        keywords: CPP_KEYWORDS,\n        contains: EXPRESSION_CONTAINS.concat([\n          {\n            begin: /\\(/, end: /\\)/,\n            keywords: CPP_KEYWORDS,\n            contains: EXPRESSION_CONTAINS.concat(['self']),\n            relevance: 0\n          }\n        ]),\n        relevance: 0\n      },\n      {\n        className: 'function',\n        begin: '(' + hljs.IDENT_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n        returnBegin: true, end: /[{;=]/,\n        excludeEnd: true,\n        keywords: CPP_KEYWORDS,\n        illegal: /[^\\w\\s\\*&]/,\n        contains: [\n          {\n            begin: FUNCTION_TITLE, returnBegin: true,\n            contains: [hljs.TITLE_MODE],\n            relevance: 0\n          },\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            keywords: CPP_KEYWORDS,\n            relevance: 0,\n            contains: [\n              hljs.C_LINE_COMMENT_MODE,\n              hljs.C_BLOCK_COMMENT_MODE,\n              STRINGS,\n              NUMBERS,\n              CPP_PRIMITIVE_TYPES\n            ]\n          },\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          PREPROCESSOR\n        ]\n      }\n    ]),\n    exports: {\n      preprocessor: PREPROCESSOR,\n      strings: STRINGS,\n      keywords: CPP_KEYWORDS\n    }\n  };\n}\n},{name:\"accesslog\",create:/*\n Language: Access log\n Author: Oleg Efimov <efimovov@gmail.com>\n Description: Apache/Nginx Access Logs\n */\n\nfunction(hljs) {\n  return {\n    contains: [\n      // IP\n      {\n        className: 'number',\n        begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n      },\n      // Other numbers\n      {\n        className: 'number',\n        begin: '\\\\b\\\\d+\\\\b',\n        relevance: 0\n      },\n      // Requests\n      {\n        className: 'string',\n        begin: '\"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)', end: '\"',\n        keywords: 'GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE',\n        illegal: '\\\\n',\n        relevance: 10\n      },\n      // Dates\n      {\n        className: 'string',\n        begin: /\\[/, end: /\\]/,\n        illegal: '\\\\n'\n      },\n      // Strings\n      {\n        className: 'string',\n        begin: '\"', end: '\"',\n        illegal: '\\\\n'\n      }\n    ]\n  };\n}\n},{name:\"actionscript\",create:/*\nLanguage: ActionScript\nAuthor: Alexander Myadzel <myadzel@gmail.com>\nCategory: scripting\n*/\n\nfunction(hljs) {\n  var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';\n  var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';\n\n  var AS3_REST_ARG_MODE = {\n    className: 'rest_arg',\n    begin: '[.]{3}', end: IDENT_RE,\n    relevance: 10\n  };\n\n  return {\n    aliases: ['as'],\n    keywords: {\n      keyword: 'as break case catch class const continue default delete do dynamic each ' +\n        'else extends final finally for function get if implements import in include ' +\n        'instanceof interface internal is namespace native new override package private ' +\n        'protected public return set static super switch this throw try typeof use var void ' +\n        'while with',\n      literal: 'true false null undefined'\n    },\n    contains: [\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'class',\n        beginKeywords: 'package', end: '{',\n        contains: [hljs.TITLE_MODE]\n      },\n      {\n        className: 'class',\n        beginKeywords: 'class interface', end: '{', excludeEnd: true,\n        contains: [\n          {\n            beginKeywords: 'extends implements'\n          },\n          hljs.TITLE_MODE\n        ]\n      },\n      {\n        className: 'meta',\n        beginKeywords: 'import include', end: ';',\n        keywords: {'meta-keyword': 'import include'}\n      },\n      {\n        className: 'function',\n        beginKeywords: 'function', end: '[{;]', excludeEnd: true,\n        illegal: '\\\\S',\n        contains: [\n          hljs.TITLE_MODE,\n          {\n            className: 'params',\n            begin: '\\\\(', end: '\\\\)',\n            contains: [\n              hljs.APOS_STRING_MODE,\n              hljs.QUOTE_STRING_MODE,\n              hljs.C_LINE_COMMENT_MODE,\n              hljs.C_BLOCK_COMMENT_MODE,\n              AS3_REST_ARG_MODE\n            ]\n          },\n          {\n            begin: ':\\\\s*' + IDENT_FUNC_RETURN_TYPE_RE\n          }\n        ]\n      },\n      hljs.METHOD_GUARD\n    ],\n    illegal: /#/\n  };\n}\n},{name:\"ada\",create:/*\nLanguage: Ada\nAuthor: Lars Schulna <kartoffelbrei.mit.muskatnuss@gmail.org>\nDescription: Ada is a general-purpose programming language that has great support for saftey critical and real-time applications.\n             It has been developed by the DoD and thus has been used in military and safety-critical applications (like civil aviation).\n             The first version appeared in the 80s, but it's still actively developed today with\n             the newest standard being Ada2012.\n*/\n\n// We try to support full Ada2012\n//\n// We highlight all appearances of types, keywords, literals (string, char, number, bool)\n// and titles (user defined function/procedure/package)\n// CSS classes are set accordingly\n//\n// Languages causing problems for language detection:\n// xml (broken by Foo : Bar type), elm (broken by Foo : Bar type), vbscript-html (broken by body keyword)\n// sql (ada default.txt has a lot of sql keywords)\n\nfunction(hljs) {\n    // Regular expression for Ada numeric literals.\n    // stolen form the VHDL highlighter\n\n    // Decimal literal:\n    var INTEGER_RE = '\\\\d(_|\\\\d)*';\n    var EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\n    var DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\n\n    // Based literal:\n    var BASED_INTEGER_RE = '\\\\w+';\n    var BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\n\n    var NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\n\n    // Identifier regex\n    var ID_REGEX = '[A-Za-z](_?[A-Za-z0-9.])*';\n\n    // bad chars, only allowed in literals\n    var BAD_CHARS = '[]{}%#\\'\\\"'\n\n    // Ada doesn't have block comments, only line comments\n    var COMMENTS = hljs.COMMENT('--', '$');\n\n    // variable declarations of the form\n    // Foo : Bar := Baz;\n    // where only Bar will be highlighted\n    var VAR_DECLS = {\n        // TODO: These spaces are not required by the Ada syntax\n        // however, I have yet to see handwritten Ada code where\n        // someone does not put spaces around :\n        begin: '\\\\s+:\\\\s+', end: '\\\\s*(:=|;|\\\\)|=>|$)',\n        // endsWithParent: true,\n        // returnBegin: true,\n        illegal: BAD_CHARS,\n        contains: [\n            {\n                // workaround to avoid highlighting\n                // named loops and declare blocks\n                beginKeywords: 'loop for declare others',\n                endsParent: true,\n            },\n            {\n                // properly highlight all modifiers\n                className: 'keyword',\n                beginKeywords: 'not null constant access function procedure in out aliased exception'\n            },\n            {\n                className: 'type',\n                begin: ID_REGEX,\n                endsParent: true,\n                relevance: 0,\n            }\n        ]\n    };\n\n    return {\n        case_insensitive: true,\n        keywords: {\n            keyword:\n                'abort else new return abs elsif not reverse abstract end ' +\n                'accept entry select access exception of separate aliased exit or some ' +\n                'all others subtype and for out synchronized array function overriding ' +\n                'at tagged generic package task begin goto pragma terminate ' +\n                'body private then if procedure type case in protected constant interface ' +\n                'is raise use declare range delay limited record when delta loop rem while ' +\n                'digits renames with do mod requeue xor',\n            literal:\n                'True False',\n        },\n        contains: [\n            COMMENTS,\n            // strings \"foobar\"\n            {\n                className: 'string',\n                begin: /\"/, end: /\"/,\n                contains: [{begin: /\"\"/, relevance: 0}]\n            },\n            // characters ''\n            {\n                // character literals always contain one char\n                className: 'string',\n                begin: /'.'/\n            },\n            {\n                // number literals\n                className: 'number',\n                begin: NUMBER_RE,\n                relevance: 0\n            },\n            {\n                // Attributes\n                className: 'symbol',\n                begin: \"'\" + ID_REGEX,\n            },\n            {\n                // package definition, maybe inside generic\n                className: 'title',\n                begin: '(\\\\bwith\\\\s+)?(\\\\bprivate\\\\s+)?\\\\bpackage\\\\s+(\\\\bbody\\\\s+)?', end: '(is|$)',\n                keywords: 'package body',\n                excludeBegin: true,\n                excludeEnd: true,\n                illegal: BAD_CHARS\n            },\n            {\n                // function/procedure declaration/definition\n                // maybe inside generic\n                begin: '(\\\\b(with|overriding)\\\\s+)?\\\\b(function|procedure)\\\\s+', end: '(\\\\bis|\\\\bwith|\\\\brenames|\\\\)\\\\s*;)',\n                keywords: 'overriding function procedure with is renames return',\n                // we need to re-match the 'function' keyword, so that\n                // the title mode below matches only exactly once\n                returnBegin: true,\n                contains:\n                [\n                    COMMENTS,\n                    {\n                        // name of the function/procedure\n                        className: 'title',\n                        begin: '(\\\\bwith\\\\s+)?\\\\b(function|procedure)\\\\s+',\n                        end: '(\\\\(|\\\\s+|$)',\n                        excludeBegin: true,\n                        excludeEnd: true,\n                        illegal: BAD_CHARS\n                    },\n                    // 'self'\n                    // // parameter types\n                    VAR_DECLS,\n                    {\n                        // return type\n                        className: 'type',\n                        begin: '\\\\breturn\\\\s+', end: '(\\\\s+|;|$)',\n                        keywords: 'return',\n                        excludeBegin: true,\n                        excludeEnd: true,\n                        // we are done with functions\n                        endsParent: true,\n                        illegal: BAD_CHARS\n\n                    },\n                ]\n            },\n            {\n                // new type declarations\n                // maybe inside generic\n                className: 'type',\n                begin: '\\\\b(sub)?type\\\\s+', end: '\\\\s+',\n                keywords: 'type',\n                excludeBegin: true,\n                illegal: BAD_CHARS\n            },\n\n            // see comment above the definition\n            VAR_DECLS,\n\n            // no markup\n            // relevance boosters for small snippets\n            // {begin: '\\\\s*=>\\\\s*'},\n            // {begin: '\\\\s*:=\\\\s*'},\n            // {begin: '\\\\s+:=\\\\s+'},\n        ]\n    };\n}\n},{name:\"apache\",create:/*\nLanguage: Apache\nAuthor: Ruslan Keba <rukeba@gmail.com>\nContributors: Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: http://rukeba.com/\nDescription: language definition for Apache configuration files (httpd.conf & .htaccess)\nCategory: common, config\n*/\n\nfunction(hljs) {\n  var NUMBER = {className: 'number', begin: '[\\\\$%]\\\\d+'};\n  return {\n    aliases: ['apacheconf'],\n    case_insensitive: true,\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      {className: 'section', begin: '</?', end: '>'},\n      {\n        className: 'attribute',\n        begin: /\\w+/,\n        relevance: 0,\n        // keywords aren’t needed for highlighting per se, they only boost relevance\n        // for a very generally defined mode (starts with a word, ends with line-end\n        keywords: {\n          nomarkup:\n            'order deny allow setenv rewriterule rewriteengine rewritecond documentroot ' +\n            'sethandler errordocument loadmodule options header listen serverroot ' +\n            'servername'\n        },\n        starts: {\n          end: /$/,\n          relevance: 0,\n          keywords: {\n            literal: 'on off all'\n          },\n          contains: [\n            {\n              className: 'meta',\n              begin: '\\\\s\\\\[', end: '\\\\]$'\n            },\n            {\n              className: 'variable',\n              begin: '[\\\\$%]\\\\{', end: '\\\\}',\n              contains: ['self', NUMBER]\n            },\n            NUMBER,\n            hljs.QUOTE_STRING_MODE\n          ]\n        }\n      }\n    ],\n    illegal: /\\S/\n  };\n}\n},{name:\"applescript\",create:/*\nLanguage: AppleScript\nAuthors: Nathan Grigg <nathan@nathanamy.org>, Dr. Drang <drdrang@gmail.com>\nCategory: scripting\n*/\n\nfunction(hljs) {\n  var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: ''});\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\(', end: '\\\\)',\n    contains: ['self', hljs.C_NUMBER_MODE, STRING]\n  };\n  var COMMENT_MODE_1 = hljs.COMMENT('--', '$');\n  var COMMENT_MODE_2 = hljs.COMMENT(\n    '\\\\(\\\\*',\n    '\\\\*\\\\)',\n    {\n      contains: ['self', COMMENT_MODE_1] //allow nesting\n    }\n  );\n  var COMMENTS = [\n    COMMENT_MODE_1,\n    COMMENT_MODE_2,\n    hljs.HASH_COMMENT_MODE\n  ];\n\n  return {\n    aliases: ['osascript'],\n    keywords: {\n      keyword:\n        'about above after against and around as at back before beginning ' +\n        'behind below beneath beside between but by considering ' +\n        'contain contains continue copy div does eighth else end equal ' +\n        'equals error every exit fifth first for fourth from front ' +\n        'get given global if ignoring in into is it its last local me ' +\n        'middle mod my ninth not of on onto or over prop property put ref ' +\n        'reference repeat returning script second set seventh since ' +\n        'sixth some tell tenth that the|0 then third through thru ' +\n        'timeout times to transaction try until where while whose with ' +\n        'without',\n      literal:\n        'AppleScript false linefeed return pi quote result space tab true',\n      built_in:\n        'alias application boolean class constant date file integer list ' +\n        'number real record string text ' +\n        'activate beep count delay launch log offset read round ' +\n        'run say summarize write ' +\n        'character characters contents day frontmost id item length ' +\n        'month name paragraph paragraphs rest reverse running time version ' +\n        'weekday word words year'\n    },\n    contains: [\n      STRING,\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'built_in',\n        begin:\n          '\\\\b(clipboard info|the clipboard|info for|list (disks|folder)|' +\n          'mount volume|path to|(close|open for) access|(get|set) eof|' +\n          'current date|do shell script|get volume settings|random number|' +\n          'set volume|system attribute|system info|time to GMT|' +\n          '(load|run|store) script|scripting components|' +\n          'ASCII (character|number)|localized string|' +\n          'choose (application|color|file|file name|' +\n          'folder|from list|remote application|URL)|' +\n          'display (alert|dialog))\\\\b|^\\\\s*return\\\\b'\n      },\n      {\n        className: 'literal',\n        begin:\n          '\\\\b(text item delimiters|current application|missing value)\\\\b'\n      },\n      {\n        className: 'keyword',\n        begin:\n          '\\\\b(apart from|aside from|instead of|out of|greater than|' +\n          \"isn't|(doesn't|does not) (equal|come before|come after|contain)|\" +\n          '(greater|less) than( or equal)?|(starts?|ends|begins?) with|' +\n          'contained by|comes (before|after)|a (ref|reference)|POSIX file|' +\n          'POSIX path|(date|time) string|quoted form)\\\\b'\n      },\n      {\n        beginKeywords: 'on',\n        illegal: '[${=;\\\\n]',\n        contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n      }\n    ].concat(COMMENTS),\n    illegal: '//|->|=>|\\\\[\\\\['\n  };\n}\n},{name:\"arduino\",create:/*\nLanguage: Arduino\nAuthor: Stefania Mellai <s.mellai@arduino.cc>\nDescription: The Arduino® Language is a superset of C++. This rules are designed to highlight the Arduino® source code. For info about language see http://www.arduino.cc.\nRequires: cpp.js\n*/\n\nfunction(hljs) {\n  var CPP = hljs.getLanguage('cpp').exports;\n\treturn {\n    keywords: {\n      keyword:\n        'boolean byte word string String array ' + CPP.keywords.keyword,\n      built_in:\n        'setup loop while catch for if do goto try switch case else ' +\n        'default break continue return ' +\n        'KeyboardController MouseController SoftwareSerial ' +\n        'EthernetServer EthernetClient LiquidCrystal ' +\n        'RobotControl GSMVoiceCall EthernetUDP EsploraTFT ' +\n        'HttpClient RobotMotor WiFiClient GSMScanner ' +\n        'FileSystem Scheduler GSMServer YunClient YunServer ' +\n        'IPAddress GSMClient GSMModem Keyboard Ethernet ' +\n        'Console GSMBand Esplora Stepper Process ' +\n        'WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage ' +\n        'Client Server GSMPIN FileIO Bridge Serial ' +\n        'EEPROM Stream Mouse Audio Servo File Task ' +\n        'GPRS WiFi Wire TFT GSM SPI SD ' +\n        'runShellCommandAsynchronously analogWriteResolution ' +\n        'retrieveCallingNumber printFirmwareVersion ' +\n        'analogReadResolution sendDigitalPortPair ' +\n        'noListenOnLocalhost readJoystickButton setFirmwareVersion ' +\n        'readJoystickSwitch scrollDisplayRight getVoiceCallStatus ' +\n        'scrollDisplayLeft writeMicroseconds delayMicroseconds ' +\n        'beginTransmission getSignalStrength runAsynchronously ' +\n        'getAsynchronously listenOnLocalhost getCurrentCarrier ' +\n        'readAccelerometer messageAvailable sendDigitalPorts ' +\n        'lineFollowConfig countryNameWrite runShellCommand ' +\n        'readStringUntil rewindDirectory readTemperature ' +\n        'setClockDivider readLightSensor endTransmission ' +\n        'analogReference detachInterrupt countryNameRead ' +\n        'attachInterrupt encryptionType readBytesUntil ' +\n        'robotNameWrite readMicrophone robotNameRead cityNameWrite ' +\n        'userNameWrite readJoystickY readJoystickX mouseReleased ' +\n        'openNextFile scanNetworks noInterrupts digitalWrite ' +\n        'beginSpeaker mousePressed isActionDone mouseDragged ' +\n        'displayLogos noAutoscroll addParameter remoteNumber ' +\n        'getModifiers keyboardRead userNameRead waitContinue ' +\n        'processInput parseCommand printVersion readNetworks ' +\n        'writeMessage blinkVersion cityNameRead readMessage ' +\n        'setDataMode parsePacket isListening setBitOrder ' +\n        'beginPacket isDirectory motorsWrite drawCompass ' +\n        'digitalRead clearScreen serialEvent rightToLeft ' +\n        'setTextSize leftToRight requestFrom keyReleased ' +\n        'compassRead analogWrite interrupts WiFiServer ' +\n        'disconnect playMelody parseFloat autoscroll ' +\n        'getPINUsed setPINUsed setTimeout sendAnalog ' +\n        'readSlider analogRead beginWrite createChar ' +\n        'motorsStop keyPressed tempoWrite readButton ' +\n        'subnetMask debugPrint macAddress writeGreen ' +\n        'randomSeed attachGPRS readString sendString ' +\n        'remotePort releaseAll mouseMoved background ' +\n        'getXChange getYChange answerCall getResult ' +\n        'voiceCall endPacket constrain getSocket writeJSON ' +\n        'getButton available connected findUntil readBytes ' +\n        'exitValue readGreen writeBlue startLoop IPAddress ' +\n        'isPressed sendSysex pauseMode gatewayIP setCursor ' +\n        'getOemKey tuneWrite noDisplay loadImage switchPIN ' +\n        'onRequest onReceive changePIN playFile noBuffer ' +\n        'parseInt overflow checkPIN knobRead beginTFT ' +\n        'bitClear updateIR bitWrite position writeRGB ' +\n        'highByte writeRed setSpeed readBlue noStroke ' +\n        'remoteIP transfer shutdown hangCall beginSMS ' +\n        'endWrite attached maintain noCursor checkReg ' +\n        'checkPUK shiftOut isValid shiftIn pulseIn ' +\n        'connect println localIP pinMode getIMEI ' +\n        'display noBlink process getBand running beginSD ' +\n        'drawBMP lowByte setBand release bitRead prepare ' +\n        'pointTo readRed setMode noFill remove listen ' +\n        'stroke detach attach noTone exists buffer ' +\n        'height bitSet circle config cursor random ' +\n        'IRread setDNS endSMS getKey micros ' +\n        'millis begin print write ready flush width ' +\n        'isPIN blink clear press mkdir rmdir close ' +\n        'point yield image BSSID click delay ' +\n        'read text move peek beep rect line open ' +\n        'seek fill size turn stop home find ' +\n        'step tone sqrt RSSI SSID ' +\n        'end bit tan cos sin pow map abs max ' +\n        'min get run put',\n      literal:\n        'DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE ' +\n        'REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP ' +\n        'SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN ' +\n        'INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL ' +\n        'DEFAULT OUTPUT INPUT HIGH LOW'\n    },\n    contains: [\n      CPP.preprocessor,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.C_NUMBER_MODE\n    ]\n  };\n}\n},{name:\"armasm\",create:/*\nLanguage: ARM Assembly\nAuthor: Dan Panzarella <alsoelp@gmail.com>\nDescription: ARM Assembly including Thumb and Thumb2 instructions\nCategory: assembler\n*/\n\nfunction(hljs) {\n    //local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n  return {\n    case_insensitive: true,\n    aliases: ['arm'],\n    lexemes: '\\\\.?' + hljs.IDENT_RE,\n    keywords: {\n      meta:\n        //GNU preprocs\n        '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg '+\n        //ARM directives\n        'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ',\n      built_in:\n        'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 '+ //standard registers\n        'pc lr sp ip sl sb fp '+ //typical regs plus backward compatibility\n        'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 '+ //more regs and fp\n        'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 '+ //coprocessor regs\n        'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 '+ //more coproc\n        'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 '+ //advanced SIMD NEON regs\n\n        //program status registers\n        'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf '+\n        'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf '+\n\n        //NEON and VFP registers\n        's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 '+\n        's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 '+\n        'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 '+\n        'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 ' +\n\n        '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @'\n    },\n    contains: [\n      {\n        className: 'keyword',\n        begin: '\\\\b('+     //mnemonics\n            'adc|'+\n            '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|'+\n            'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|'+\n            'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|'+\n            'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|'+\n            'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|'+\n            'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|'+\n            'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|'+\n            'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|'+\n            'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|'+\n            'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|'+\n            '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|'+\n            'wfe|wfi|yield'+\n        ')'+\n        '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?'+ //condition codes\n        '[sptrx]?' ,                                             //legal postfixes\n        end: '\\\\s'\n      },\n      hljs.COMMENT('[;@]', '$', {relevance: 0}),\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'string',\n        begin: '\\'',\n        end: '[^\\\\\\\\]\\'',\n        relevance: 0\n      },\n      {\n        className: 'title',\n        begin: '\\\\|', end: '\\\\|',\n        illegal: '\\\\n',\n        relevance: 0\n      },\n      {\n        className: 'number',\n        variants: [\n            {begin: '[#$=]?0x[0-9a-f]+'}, //hex\n            {begin: '[#$=]?0b[01]+'},     //bin\n            {begin: '[#$=]\\\\d+'},        //literal\n            {begin: '\\\\b\\\\d+'}           //bare number\n        ],\n        relevance: 0\n      },\n      {\n        className: 'symbol',\n        variants: [\n            {begin: '^[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+'}, //ARM syntax\n            {begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'}, //GNU ARM syntax\n            {begin: '[=#]\\\\w+' }  //label reference\n        ],\n        relevance: 0\n      }\n    ]\n  };\n}\n},{name:\"asciidoc\",create:/*\nLanguage: AsciiDoc\nRequires: xml.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://google.com/profiles/dan.j.allen\nDescription: A semantic, text-based document format that can be exported to HTML, DocBook and other backends.\nCategory: markup\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['adoc'],\n    contains: [\n      // block comment\n      hljs.COMMENT(\n        '^/{4,}\\\\n',\n        '\\\\n/{4,}$',\n        // can also be done as...\n        //'^/{4,}$',\n        //'^/{4,}$',\n        {\n          relevance: 10\n        }\n      ),\n      // line comment\n      hljs.COMMENT(\n        '^//',\n        '$',\n        {\n          relevance: 0\n        }\n      ),\n      // title\n      {\n        className: 'title',\n        begin: '^\\\\.\\\\w.*$'\n      },\n      // example, admonition & sidebar blocks\n      {\n        begin: '^[=\\\\*]{4,}\\\\n',\n        end: '\\\\n^[=\\\\*]{4,}$',\n        relevance: 10\n      },\n      // headings\n      {\n        className: 'section',\n        relevance: 10,\n        variants: [\n          {begin: '^(={1,5}) .+?( \\\\1)?$'},\n          {begin: '^[^\\\\[\\\\]\\\\n]+?\\\\n[=\\\\-~\\\\^\\\\+]{2,}$'},\n        ]\n      },\n      // document attributes\n      {\n        className: 'meta',\n        begin: '^:.+?:',\n        end: '\\\\s',\n        excludeEnd: true,\n        relevance: 10\n      },\n      // block attributes\n      {\n        className: 'meta',\n        begin: '^\\\\[.+?\\\\]$',\n        relevance: 0\n      },\n      // quoteblocks\n      {\n        className: 'quote',\n        begin: '^_{4,}\\\\n',\n        end: '\\\\n_{4,}$',\n        relevance: 10\n      },\n      // listing and literal blocks\n      {\n        className: 'code',\n        begin: '^[\\\\-\\\\.]{4,}\\\\n',\n        end: '\\\\n[\\\\-\\\\.]{4,}$',\n        relevance: 10\n      },\n      // passthrough blocks\n      {\n        begin: '^\\\\+{4,}\\\\n',\n        end: '\\\\n\\\\+{4,}$',\n        contains: [\n          {\n            begin: '<', end: '>',\n            subLanguage: 'xml',\n            relevance: 0\n          }\n        ],\n        relevance: 10\n      },\n      // lists (can only capture indicators)\n      {\n        className: 'bullet',\n        begin: '^(\\\\*+|\\\\-+|\\\\.+|[^\\\\n]+?::)\\\\s+'\n      },\n      // admonition\n      {\n        className: 'symbol',\n        begin: '^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\\\s+',\n        relevance: 10\n      },\n      // inline strong\n      {\n        className: 'strong',\n        // must not follow a word character or be followed by an asterisk or space\n        begin: '\\\\B\\\\*(?![\\\\*\\\\s])',\n        end: '(\\\\n{2}|\\\\*)',\n        // allow escaped asterisk followed by word char\n        contains: [\n          {\n            begin: '\\\\\\\\*\\\\w',\n            relevance: 0\n          }\n        ]\n      },\n      // inline emphasis\n      {\n        className: 'emphasis',\n        // must not follow a word character or be followed by a single quote or space\n        begin: '\\\\B\\'(?![\\'\\\\s])',\n        end: '(\\\\n{2}|\\')',\n        // allow escaped single quote followed by word char\n        contains: [\n          {\n            begin: '\\\\\\\\\\'\\\\w',\n            relevance: 0\n          }\n        ],\n        relevance: 0\n      },\n      // inline emphasis (alt)\n      {\n        className: 'emphasis',\n        // must not follow a word character or be followed by an underline or space\n        begin: '_(?![_\\\\s])',\n        end: '(\\\\n{2}|_)',\n        relevance: 0\n      },\n      // inline smart quotes\n      {\n        className: 'string',\n        variants: [\n          {begin: \"``.+?''\"},\n          {begin: \"`.+?'\"}\n        ]\n      },\n      // inline code snippets (TODO should get same treatment as strong and emphasis)\n      {\n        className: 'code',\n        begin: '(`.+?`|\\\\+.+?\\\\+)',\n        relevance: 0\n      },\n      // indented literal block\n      {\n        className: 'code',\n        begin: '^[ \\\\t]',\n        end: '$',\n        relevance: 0\n      },\n      // horizontal rules\n      {\n        begin: '^\\'{3,}[ \\\\t]*$',\n        relevance: 10\n      },\n      // images and links\n      {\n        begin: '(link:)?(http|https|ftp|file|irc|image:?):\\\\S+\\\\[.*?\\\\]',\n        returnBegin: true,\n        contains: [\n          {\n            begin: '(link|image:?):',\n            relevance: 0\n          },\n          {\n            className: 'link',\n            begin: '\\\\w',\n            end: '[^\\\\[]+',\n            relevance: 0\n          },\n          {\n            className: 'string',\n            begin: '\\\\[',\n            end: '\\\\]',\n            excludeBegin: true,\n            excludeEnd: true,\n            relevance: 0\n          }\n        ],\n        relevance: 10\n      }\n    ]\n  };\n}\n},{name:\"aspectj\",create:/*\nLanguage: AspectJ\nAuthor: Hakan Ozler <ozler.hakan@gmail.com>\nDescription: Syntax Highlighting for the AspectJ Language which is a general-purpose aspect-oriented extension to the Java programming language.\n */\nfunction (hljs) {\n  var KEYWORDS =\n    'false synchronized int abstract float private char boolean static null if const ' +\n    'for true while long throw strictfp finally protected import native final return void ' +\n    'enum else extends implements break transient new catch instanceof byte super volatile case ' +\n    'assert short package default double public try this switch continue throws privileged ' +\n    'aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization ' +\n    'staticinitialization withincode target within execution getWithinTypeName handler ' +\n    'thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents '+\n    'warning error soft precedence thisAspectInstance';\n  var SHORTKEYS = 'get set args call';\n  return {\n    keywords : KEYWORDS,\n    illegal : /<\\/|#/,\n    contains : [\n      hljs.COMMENT(\n        '/\\\\*\\\\*',\n        '\\\\*/',\n        {\n          relevance : 0,\n          contains : [\n            {\n              // eat up @'s in emails to prevent them to be recognized as doctags\n              begin: /\\w+@/, relevance: 0\n            },\n            {\n              className : 'doctag',\n              begin : '@[A-Za-z]+'\n            }\n          ]\n        }\n      ),\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        className : 'class',\n        beginKeywords : 'aspect',\n        end : /[{;=]/,\n        excludeEnd : true,\n        illegal : /[:;\"\\[\\]]/,\n        contains : [\n          {\n            beginKeywords : 'extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton'\n          },\n          hljs.UNDERSCORE_TITLE_MODE,\n          {\n            begin : /\\([^\\)]*/,\n            end : /[)]+/,\n            keywords : KEYWORDS + ' ' + SHORTKEYS,\n            excludeEnd : false\n          }\n        ]\n      },\n      {\n        className : 'class',\n        beginKeywords : 'class interface',\n        end : /[{;=]/,\n        excludeEnd : true,\n        relevance: 0,\n        keywords : 'class interface',\n        illegal : /[:\"\\[\\]]/,\n        contains : [\n          {beginKeywords : 'extends implements'},\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      {\n        // AspectJ Constructs\n        beginKeywords : 'pointcut after before around throwing returning',\n        end : /[)]/,\n        excludeEnd : false,\n        illegal : /[\"\\[\\]]/,\n        contains : [\n          {\n            begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n            returnBegin : true,\n            contains : [hljs.UNDERSCORE_TITLE_MODE]\n          }\n        ]\n      },\n      {\n        begin : /[:]/,\n        returnBegin : true,\n        end : /[{;]/,\n        relevance: 0,\n        excludeEnd : false,\n        keywords : KEYWORDS,\n        illegal : /[\"\\[\\]]/,\n        contains : [\n          {\n            begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n            keywords : KEYWORDS + ' ' + SHORTKEYS\n          },\n          hljs.QUOTE_STRING_MODE\n        ]\n      },\n      {\n        // this prevents 'new Name(...), or throw ...' from being recognized as a function definition\n        beginKeywords : 'new throw',\n        relevance : 0\n      },\n      {\n        // the function class is a bit different for AspectJ compared to the Java language\n        className : 'function',\n        begin : /\\w+ +\\w+(\\.)?\\w+\\s*\\([^\\)]*\\)\\s*((throws)[\\w\\s,]+)?[\\{;]/,\n        returnBegin : true,\n        end : /[{;=]/,\n        keywords : KEYWORDS,\n        excludeEnd : true,\n        contains : [\n          {\n            begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n            returnBegin : true,\n            relevance: 0,\n            contains : [hljs.UNDERSCORE_TITLE_MODE]\n          },\n          {\n            className : 'params',\n            begin : /\\(/, end : /\\)/,\n            relevance: 0,\n            keywords : KEYWORDS,\n            contains : [\n              hljs.APOS_STRING_MODE,\n              hljs.QUOTE_STRING_MODE,\n              hljs.C_NUMBER_MODE,\n              hljs.C_BLOCK_COMMENT_MODE\n            ]\n          },\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE\n        ]\n      },\n      hljs.C_NUMBER_MODE,\n      {\n        // annotation is also used in this language\n        className : 'meta',\n        begin : '@[A-Za-z]+'\n      }\n    ]\n  };\n}\n},{name:\"autohotkey\",create:/*\nLanguage: AutoHotkey\nAuthor: Seongwon Lee <dlimpid@gmail.com>\nDescription: AutoHotkey language definition\nCategory: scripting\n*/\n\nfunction(hljs) {\n  var BACKTICK_ESCAPE = {\n    begin: /`[\\s\\S]/\n  };\n\n  return {\n    case_insensitive: true,\n    keywords: {\n      keyword: 'Break Continue Else Gosub If Loop Return While',\n      literal: 'A|0 true false NOT AND OR',\n      built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel',\n    },\n    contains: [\n      {\n        className: 'built_in',\n        begin: 'A_[a-zA-Z0-9]+'\n      },\n      BACKTICK_ESCAPE,\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [BACKTICK_ESCAPE]}),\n      hljs.COMMENT(';', '$', {relevance: 0}),\n      {\n        className: 'number',\n        begin: hljs.NUMBER_RE,\n        relevance: 0\n      },\n      {\n        className: 'variable', // FIXME\n        begin: '%', end: '%',\n        illegal: '\\\\n',\n        contains: [BACKTICK_ESCAPE]\n      },\n      {\n        className: 'symbol',\n        contains: [BACKTICK_ESCAPE],\n        variants: [\n          {begin: '^[^\\\\n\";]+::(?!=)'},\n          {begin: '^[^\\\\n\";]+:(?!=)', relevance: 0} // zero relevance as it catches a lot of things\n                                                    // followed by a single ':' in many languages\n        ]\n      },\n      {\n        // consecutive commas, not for highlighting but just for relevance\n        begin: ',\\\\s*,'\n      }\n    ]\n  }\n}\n},{name:\"autoit\",create:/*\nLanguage: AutoIt\nAuthor: Manh Tuan <junookyo@gmail.com>\nDescription: AutoIt language definition\nCategory: scripting\n*/\n\nfunction(hljs) {\n    var KEYWORDS = 'ByRef Case Const ContinueCase ContinueLoop ' +\n        'Default Dim Do Else ElseIf EndFunc EndIf EndSelect ' +\n        'EndSwitch EndWith Enum Exit ExitLoop For Func ' +\n        'Global If In Local Next ReDim Return Select Static ' +\n        'Step Switch Then To Until Volatile WEnd While With',\n\n        LITERAL = 'True False And Null Not Or',\n\n        BUILT_IN =\n          'Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait',\n\n        COMMENT = {\n            variants: [\n              hljs.COMMENT(';', '$', {relevance: 0}),\n              hljs.COMMENT('#cs', '#ce'),\n              hljs.COMMENT('#comments-start', '#comments-end')\n            ]\n        },\n\n        VARIABLE = {\n            begin: '\\\\$[A-z0-9_]+'\n        },\n\n        STRING = {\n            className: 'string',\n            variants: [{\n                begin: /\"/,\n                end: /\"/,\n                contains: [{\n                    begin: /\"\"/,\n                    relevance: 0\n                }]\n            }, {\n                begin: /'/,\n                end: /'/,\n                contains: [{\n                    begin: /''/,\n                    relevance: 0\n                }]\n            }]\n        },\n\n        NUMBER = {\n            variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]\n        },\n\n        PREPROCESSOR = {\n            className: 'meta',\n            begin: '#',\n            end: '$',\n            keywords: {'meta-keyword': 'comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin'},\n            contains: [{\n                    begin: /\\\\\\n/,\n                    relevance: 0\n                }, {\n                    beginKeywords: 'include',\n                    keywords: {'meta-keyword': 'include'},\n                    end: '$',\n                    contains: [\n                        STRING, {\n                            className: 'meta-string',\n                            variants: [{\n                                begin: '<',\n                                end: '>'\n                            }, {\n                                begin: /\"/,\n                                end: /\"/,\n                                contains: [{\n                                    begin: /\"\"/,\n                                    relevance: 0\n                                }]\n                            }, {\n                                begin: /'/,\n                                end: /'/,\n                                contains: [{\n                                    begin: /''/,\n                                    relevance: 0\n                                }]\n                            }]\n                        }\n                    ]\n                },\n                STRING,\n                COMMENT\n            ]\n        },\n\n        CONSTANT = {\n            className: 'symbol',\n            // begin: '@',\n            // end: '$',\n            // keywords: 'AppDataCommonDir AppDataDir AutoItExe AutoItPID AutoItVersion AutoItX64 COM_EventObj CommonFilesDir Compiled ComputerName ComSpec CPUArch CR CRLF DesktopCommonDir DesktopDepth DesktopDir DesktopHeight DesktopRefresh DesktopWidth DocumentsCommonDir error exitCode exitMethod extended FavoritesCommonDir FavoritesDir GUI_CtrlHandle GUI_CtrlId GUI_DragFile GUI_DragId GUI_DropId GUI_WinHandle HomeDrive HomePath HomeShare HotKeyPressed HOUR IPAddress1 IPAddress2 IPAddress3 IPAddress4 KBLayout LF LocalAppDataDir LogonDNSDomain LogonDomain LogonServer MDAY MIN MON MSEC MUILang MyDocumentsDir NumParams OSArch OSBuild OSLang OSServicePack OSType OSVersion ProgramFilesDir ProgramsCommonDir ProgramsDir ScriptDir ScriptFullPath ScriptLineNumber ScriptName SEC StartMenuCommonDir StartMenuDir StartupCommonDir StartupDir SW_DISABLE SW_ENABLE SW_HIDE SW_LOCK SW_MAXIMIZE SW_MINIMIZE SW_RESTORE SW_SHOW SW_SHOWDEFAULT SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE SW_SHOWNORMAL SW_UNLOCK SystemDir TAB TempDir TRAY_ID TrayIconFlashing TrayIconVisible UserName UserProfileDir WDAY WindowsDir WorkingDir YDAY YEAR',\n            // relevance: 5\n            begin: '@[A-z0-9_]+'\n        },\n\n        FUNCTION = {\n            className: 'function',\n            beginKeywords: 'Func',\n            end: '$',\n            illegal: '\\\\$|\\\\[|%',\n            contains: [\n                hljs.UNDERSCORE_TITLE_MODE, {\n                    className: 'params',\n                    begin: '\\\\(',\n                    end: '\\\\)',\n                    contains: [\n                        VARIABLE,\n                        STRING,\n                        NUMBER\n                    ]\n                }\n            ]\n        };\n\n    return {\n        case_insensitive: true,\n        illegal: /\\/\\*/,\n        keywords: {\n            keyword: KEYWORDS,\n            built_in: BUILT_IN,\n            literal: LITERAL\n        },\n        contains: [\n            COMMENT,\n            VARIABLE,\n            STRING,\n            NUMBER,\n            PREPROCESSOR,\n            CONSTANT,\n            FUNCTION\n        ]\n    }\n}\n},{name:\"avrasm\",create:/*\nLanguage: AVR Assembler\nAuthor: Vladimir Ermakov <vooon341@gmail.com>\nCategory: assembler\n*/\n\nfunction(hljs) {\n  return {\n    case_insensitive: true,\n    lexemes: '\\\\.?' + hljs.IDENT_RE,\n    keywords: {\n      keyword:\n        /* mnemonic */\n        'adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs ' +\n        'brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr ' +\n        'clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor ' +\n        'fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul ' +\n        'muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs ' +\n        'sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub ' +\n        'subi swap tst wdr',\n      built_in:\n        /* general purpose registers */\n        'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 ' +\n        'r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ' +\n        /* IO Registers (ATMega128) */\n        'ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h ' +\n        'tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ' +\n        'ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ' +\n        'ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk ' +\n        'tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ' +\n        'ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr ' +\n        'porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ' +\n        'ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf',\n      meta:\n        '.byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list ' +\n        '.listmac .macro .nolist .org .set'\n    },\n    contains: [\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.COMMENT(\n        ';',\n        '$',\n        {\n          relevance: 0\n        }\n      ),\n      hljs.C_NUMBER_MODE, // 0x..., decimal, float\n      hljs.BINARY_NUMBER_MODE, // 0b...\n      {\n        className: 'number',\n        begin: '\\\\b(\\\\$[a-zA-Z0-9]+|0o[0-7]+)' // $..., 0o...\n      },\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'string',\n        begin: '\\'', end: '[^\\\\\\\\]\\'',\n        illegal: '[^\\\\\\\\][^\\']'\n      },\n      {className: 'symbol',  begin: '^[A-Za-z0-9_.$]+:'},\n      {className: 'meta', begin: '#', end: '$'},\n      {  // подстановка в «.macro»\n        className: 'subst',\n        begin: '@[0-9]+'\n      }\n    ]\n  };\n}\n},{name:\"awk\",create:/*\nLanguage: Awk\nAuthor: Matthew Daly <matthewbdaly@gmail.com>\nWebsite: http://matthewdaly.co.uk/\nDescription: language definition for Awk scripts\n*/\n\nfunction(hljs) {\n  var VARIABLE = {\n    className: 'variable',\n    variants: [\n      {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n      {begin: /\\$\\{(.*?)}/}\n    ]\n  };\n  var KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10';\n  var STRING = {\n    className: 'string',\n    contains: [hljs.BACKSLASH_ESCAPE],\n    variants: [\n      {\n        begin: /(u|b)?r?'''/, end: /'''/,\n        relevance: 10\n      },\n      {\n        begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\n        relevance: 10\n      },\n      {\n        begin: /(u|r|ur)'/, end: /'/,\n        relevance: 10\n      },\n      {\n        begin: /(u|r|ur)\"/, end: /\"/,\n        relevance: 10\n      },\n      {\n        begin: /(b|br)'/, end: /'/\n      },\n      {\n        begin: /(b|br)\"/, end: /\"/\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE\n    ]\n  };\n  return {\n\t keywords: {\n\t   keyword: KEYWORDS\n    },\n    contains: [\n      VARIABLE,\n      STRING,\n      hljs.REGEXP_MODE,\n      hljs.HASH_COMMENT_MODE,\n      hljs.NUMBER_MODE\n    ]\n  }\n}\n},{name:\"axapta\",create:/*\nLanguage: Axapta\nAuthor: Dmitri Roudakov <dmitri@roudakov.ru>\nCategory: enterprise\n*/\n\nfunction(hljs) {\n  return {\n    keywords: 'false int abstract private char boolean static null if for true ' +\n      'while long throw finally protected final return void enum else ' +\n      'break new catch byte super case short default double public try this switch ' +\n      'continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count ' +\n      'order group by asc desc index hint like dispaly edit client server ttsbegin ' +\n      'ttscommit str real date container anytype common div mod',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'meta',\n        begin: '#', end: '$'\n      },\n      {\n        className: 'class',\n        beginKeywords: 'class interface', end: '{', excludeEnd: true,\n        illegal: ':',\n        contains: [\n          {beginKeywords: 'extends implements'},\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      }\n    ]\n  };\n}\n},{name:\"bash\",create:/*\nLanguage: Bash\nAuthor: vah <vahtenberg@gmail.com>\nContributrors: Benjamin Pannell <contact@sierrasoftworks.com>\nCategory: common\n*/\n\nfunction(hljs) {\n  var VAR = {\n    className: 'variable',\n    variants: [\n      {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n      {begin: /\\$\\{(.*?)}/}\n    ]\n  };\n  var QUOTE_STRING = {\n    className: 'string',\n    begin: /\"/, end: /\"/,\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      VAR,\n      {\n        className: 'variable',\n        begin: /\\$\\(/, end: /\\)/,\n        contains: [hljs.BACKSLASH_ESCAPE]\n      }\n    ]\n  };\n  var APOS_STRING = {\n    className: 'string',\n    begin: /'/, end: /'/\n  };\n\n  return {\n    aliases: ['sh', 'zsh'],\n    lexemes: /-?[a-z\\._]+/,\n    keywords: {\n      keyword:\n        'if then else elif fi for while in do done case esac function',\n      literal:\n        'true false',\n      built_in:\n        // Shell built-ins\n        // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n        'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +\n        'trap umask unset ' +\n        // Bash built-ins\n        'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +\n        'read readarray source type typeset ulimit unalias ' +\n        // Shell modifiers\n        'set shopt ' +\n        // Zsh built-ins\n        'autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles ' +\n        'compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate ' +\n        'fc fg float functions getcap getln history integer jobs kill limit log noglob popd print ' +\n        'pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit ' +\n        'unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof ' +\n        'zpty zregexparse zsocket zstyle ztcp',\n      _:\n        '-ne -eq -lt -gt -f -d -e -s -l -a' // relevance booster\n    },\n    contains: [\n      {\n        className: 'meta',\n        begin: /^#![^\\n]+sh\\s*$/,\n        relevance: 10\n      },\n      {\n        className: 'function',\n        begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n        returnBegin: true,\n        contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\\w[\\w\\d_]*/})],\n        relevance: 0\n      },\n      hljs.HASH_COMMENT_MODE,\n      QUOTE_STRING,\n      APOS_STRING,\n      VAR\n    ]\n  };\n}\n},{name:\"basic\",create:/*\nLanguage: Basic\nAuthor: Raphaël Assénat <raph@raphnet.net>\nDescription: Based on the BASIC reference from the Tandy 1000 guide\n*/\nfunction(hljs) {\n  return {\n    case_insensitive: true,\n    illegal: '^\\.',\n    // Support explicitely typed variables that end with $%! or #.\n    lexemes: '[a-zA-Z][a-zA-Z0-9_\\$\\%\\!\\#]*',\n    keywords: {\n        keyword:\n          'ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE ' +\n          'CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ ' +\n          'DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ ' +\n          'EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO ' +\n          'HEX$ IF|0 THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON ' +\n          'OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET ' +\n          'MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION ' +\n          'BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET ' +\n          'PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET ' +\n          'RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP ' +\n          'SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE ' +\n          'WEND WIDTH WINDOW WRITE XOR'\n    },\n    contains: [\n      hljs.QUOTE_STRING_MODE,\n      hljs.COMMENT('REM', '$', {relevance: 10}),\n      hljs.COMMENT('\\'', '$', {relevance: 0}),\n      {\n        // Match line numbers\n        className: 'symbol',\n        begin: '^[0-9]+\\ ',\n        relevance: 10\n      },\n      {\n        // Match typed numeric constants (1000, 12.34!, 1.2e5, 1.5#, 1.2D2)\n        className: 'number',\n        begin: '\\\\b([0-9]+[0-9edED\\.]*[#\\!]?)',\n        relevance: 0\n      },\n      {\n        // Match hexadecimal numbers (&Hxxxx)\n        className: 'number',\n        begin: '(\\&[hH][0-9a-fA-F]{1,4})'\n      },\n      {\n        // Match octal numbers (&Oxxxxxx)\n        className: 'number',\n        begin: '(\\&[oO][0-7]{1,6})'\n      }\n    ]\n  };\n}\n},{name:\"bnf\",create:/*\nLanguage: Backus–Naur Form\nAuthor: Oleg Efimov <efimovov@gmail.com>\n*/\n\nfunction(hljs){\n  return {\n    contains: [\n      // Attribute\n      {\n        className: 'attribute',\n        begin: /</, end: />/\n      },\n      // Specific\n      {\n        begin: /::=/,\n        starts: {\n          end: /$/,\n          contains: [\n            {\n              begin: /</, end: />/\n            },\n            // Common\n            hljs.C_LINE_COMMENT_MODE,\n            hljs.C_BLOCK_COMMENT_MODE,\n            hljs.APOS_STRING_MODE,\n            hljs.QUOTE_STRING_MODE\n          ]\n        }\n      }\n    ]\n  };\n}\n},{name:\"brainfuck\",create:/*\nLanguage: Brainfuck\nAuthor: Evgeny Stepanischev <imbolk@gmail.com>\n*/\n\nfunction(hljs){\n  var LITERAL = {\n    className: 'literal',\n    begin: '[\\\\+\\\\-]',\n    relevance: 0\n  };\n  return {\n    aliases: ['bf'],\n    contains: [\n      hljs.COMMENT(\n        '[^\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]',\n        '[\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]',\n        {\n          returnEnd: true,\n          relevance: 0\n        }\n      ),\n      {\n        className: 'title',\n        begin: '[\\\\[\\\\]]',\n        relevance: 0\n      },\n      {\n        className: 'string',\n        begin: '[\\\\.,]',\n        relevance: 0\n      },\n      {\n        // this mode works as the only relevance counter\n        begin: /\\+\\+|\\-\\-/, returnBegin: true,\n        contains: [LITERAL]\n      },\n      LITERAL\n    ]\n  };\n}\n},{name:\"cal\",create:/*\nLanguage: C/AL\nAuthor: Kenneth Fuglsang Christensen <kfuglsang@gmail.com>\nDescription: Provides highlighting of Microsoft Dynamics NAV C/AL code files\n*/\n\nfunction(hljs) {\n  var KEYWORDS =\n    'div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to ' +\n    'until while with var';\n  var LITERALS = 'false true';\n  var COMMENT_MODES = [\n    hljs.C_LINE_COMMENT_MODE,\n    hljs.COMMENT(\n      /\\{/,\n      /\\}/,\n      {\n        relevance: 0\n      }\n    ),\n    hljs.COMMENT(\n      /\\(\\*/,\n      /\\*\\)/,\n      {\n        relevance: 10\n      }\n    )\n  ];\n  var STRING = {\n    className: 'string',\n    begin: /'/, end: /'/,\n    contains: [{begin: /''/}]\n  };\n  var CHAR_STRING = {\n    className: 'string', begin: /(#\\d+)+/\n  };\n  var DATE = {\n      className: 'number',\n      begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(DT|D|T)',\n      relevance: 0\n  };\n  var DBL_QUOTED_VARIABLE = {\n      className: 'string', // not a string technically but makes sense to be highlighted in the same style\n      begin: '\"',\n      end: '\"'\n  };\n\n  var PROCEDURE = {\n    className: 'function',\n    beginKeywords: 'procedure', end: /[:;]/,\n    keywords: 'procedure|10',\n    contains: [\n      hljs.TITLE_MODE,\n      {\n        className: 'params',\n        begin: /\\(/, end: /\\)/,\n        keywords: KEYWORDS,\n        contains: [STRING, CHAR_STRING]\n      }\n    ].concat(COMMENT_MODES)\n  };\n\n  var OBJECT = {\n    className: 'class',\n    begin: 'OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\\\d+) ([^\\\\r\\\\n]+)',\n    returnBegin: true,\n    contains: [\n      hljs.TITLE_MODE,\n        PROCEDURE\n    ]\n  };\n\n  return {\n    case_insensitive: true,\n    keywords: { keyword: KEYWORDS, literal: LITERALS },\n    illegal: /\\/\\*/,\n    contains: [\n      STRING, CHAR_STRING,\n      DATE, DBL_QUOTED_VARIABLE,\n      hljs.NUMBER_MODE,\n      OBJECT,\n      PROCEDURE\n    ]\n  };\n}\n},{name:\"capnproto\",create:/*\nLanguage: Cap’n Proto\nAuthor: Oleg Efimov <efimovov@gmail.com>\nDescription: Cap’n Proto message definition format\nCategory: protocols\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['capnp'],\n    keywords: {\n      keyword:\n        'struct enum interface union group import using const annotation extends in of on as with from fixed',\n      built_in:\n        'Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 ' +\n        'Text Data AnyPointer AnyStruct Capability List',\n      literal:\n        'true false'\n    },\n    contains: [\n      hljs.QUOTE_STRING_MODE,\n      hljs.NUMBER_MODE,\n      hljs.HASH_COMMENT_MODE,\n      {\n        className: 'meta',\n        begin: /@0x[\\w\\d]{16};/,\n        illegal: /\\n/\n      },\n      {\n        className: 'symbol',\n        begin: /@\\d+\\b/\n      },\n      {\n        className: 'class',\n        beginKeywords: 'struct enum', end: /\\{/,\n        illegal: /\\n/,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {\n            starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n          })\n        ]\n      },\n      {\n        className: 'class',\n        beginKeywords: 'interface', end: /\\{/,\n        illegal: /\\n/,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {\n            starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n          })\n        ]\n      }\n    ]\n  };\n}\n},{name:\"ceylon\",create:/*\nLanguage: Ceylon\nAuthor: Lucas Werkmeister <mail@lucaswerkmeister.de>\n*/\nfunction(hljs) {\n  // 2.3. Identifiers and keywords\n  var KEYWORDS =\n    'assembly module package import alias class interface object given value ' +\n    'assign void function new of extends satisfies abstracts in out return ' +\n    'break continue throw assert dynamic if else switch case for while try ' +\n    'catch finally then let this outer super is exists nonempty';\n  // 7.4.1 Declaration Modifiers\n  var DECLARATION_MODIFIERS =\n    'shared abstract formal default actual variable late native deprecated' +\n    'final sealed annotation suppressWarnings small';\n  // 7.4.2 Documentation\n  var DOCUMENTATION =\n    'doc by license see throws tagged';\n  var SUBST = {\n    className: 'subst', excludeBegin: true, excludeEnd: true,\n    begin: /``/, end: /``/,\n    keywords: KEYWORDS,\n    relevance: 10\n  };\n  var EXPRESSIONS = [\n    {\n      // verbatim string\n      className: 'string',\n      begin: '\"\"\"',\n      end: '\"\"\"',\n      relevance: 10\n    },\n    {\n      // string literal or template\n      className: 'string',\n      begin: '\"', end: '\"',\n      contains: [SUBST]\n    },\n    {\n      // character literal\n      className: 'string',\n      begin: \"'\",\n      end: \"'\"\n    },\n    {\n      // numeric literal\n      className: 'number',\n      begin: '#[0-9a-fA-F_]+|\\\\$[01_]+|[0-9_]+(?:\\\\.[0-9_](?:[eE][+-]?\\\\d+)?)?[kMGTPmunpf]?',\n      relevance: 0\n    }\n  ];\n  SUBST.contains = EXPRESSIONS;\n\n  return {\n    keywords: {\n      keyword: KEYWORDS + ' ' + DECLARATION_MODIFIERS,\n      meta: DOCUMENTATION\n    },\n    illegal: '\\\\$[^01]|#[^0-9a-fA-F]',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.COMMENT('/\\\\*', '\\\\*/', {contains: ['self']}),\n      {\n        // compiler annotation\n        className: 'meta',\n        begin: '@[a-z]\\\\w*(?:\\\\:\\\"[^\\\"]*\\\")?'\n      }\n    ].concat(EXPRESSIONS)\n  };\n}\n},{name:\"clojure-repl\",create:/*\nLanguage: Clojure REPL\nDescription: Clojure REPL sessions\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nRequires: clojure.js\nCategory: lisp\n*/\n\nfunction(hljs) {\n  return {\n    contains: [\n      {\n        className: 'meta',\n        begin: /^([\\w.-]+|\\s*#_)=>/,\n        starts: {\n          end: /$/,\n          subLanguage: 'clojure'\n        }\n      }\n    ]\n  }\n}\n},{name:\"clojure\",create:/*\nLanguage: Clojure\nDescription: Clojure syntax (based on lisp.js)\nAuthor: mfornos\nCategory: lisp\n*/\n\nfunction(hljs) {\n  var keywords = {\n    'builtin-name':\n      // Clojure keywords\n      'def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem '+\n      'quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? '+\n      'set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? '+\n      'class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? '+\n      'string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . '+\n      'inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last '+\n      'drop-while while intern condp case reduced cycle split-at split-with repeat replicate '+\n      'iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext '+\n      'nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends '+\n      'add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler '+\n      'set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter '+\n      'monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or '+\n      'when when-not when-let comp juxt partial sequence memoize constantly complement identity assert '+\n      'peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast '+\n      'sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import '+\n      'refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! '+\n      'assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger '+\n      'bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline '+\n      'flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking '+\n      'assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! '+\n      'reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! '+\n      'new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty '+\n      'hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list '+\n      'disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer '+\n      'chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate '+\n      'unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta '+\n      'lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize'\n   };\n\n  var SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\n  var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\n  var SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\n\n  var SYMBOL = {\n    begin: SYMBOL_RE,\n    relevance: 0\n  };\n  var NUMBER = {\n    className: 'number', begin: SIMPLE_NUMBER_RE,\n    relevance: 0\n  };\n  var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n  var COMMENT = hljs.COMMENT(\n    ';',\n    '$',\n    {\n      relevance: 0\n    }\n  );\n  var LITERAL = {\n    className: 'literal',\n    begin: /\\b(true|false|nil)\\b/\n  };\n  var COLLECTION = {\n    begin: '[\\\\[\\\\{]', end: '[\\\\]\\\\}]'\n  };\n  var HINT = {\n    className: 'comment',\n    begin: '\\\\^' + SYMBOL_RE\n  };\n  var HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\n  var KEY = {\n    className: 'symbol',\n    begin: '[:]{1,2}' + SYMBOL_RE\n  };\n  var LIST = {\n    begin: '\\\\(', end: '\\\\)'\n  };\n  var BODY = {\n    endsWithParent: true,\n    relevance: 0\n  };\n  var NAME = {\n    keywords: keywords,\n    lexemes: SYMBOL_RE,\n    className: 'name', begin: SYMBOL_RE,\n    starts: BODY\n  };\n  var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];\n\n  LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];\n  BODY.contains = DEFAULT_CONTAINS;\n  COLLECTION.contains = DEFAULT_CONTAINS;\n\n  return {\n    aliases: ['clj'],\n    illegal: /\\S/,\n    contains: [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]\n  }\n}\n},{name:\"cmake\",create:/*\nLanguage: CMake\nDescription: CMake is an open-source cross-platform system for build automation.\nAuthor: Igor Kalnitsky <igor@kalnitsky.org>\nWebsite: http://kalnitsky.org/\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['cmake.in'],\n    case_insensitive: true,\n    keywords: {\n      keyword:\n        'add_custom_command add_custom_target add_definitions add_dependencies ' +\n        'add_executable add_library add_subdirectory add_test aux_source_directory ' +\n        'break build_command cmake_minimum_required cmake_policy configure_file ' +\n        'create_test_sourcelist define_property else elseif enable_language enable_testing ' +\n        'endforeach endfunction endif endmacro endwhile execute_process export find_file ' +\n        'find_library find_package find_path find_program fltk_wrap_ui foreach function ' +\n        'get_cmake_property get_directory_property get_filename_component get_property ' +\n        'get_source_file_property get_target_property get_test_property if include ' +\n        'include_directories include_external_msproject include_regular_expression install ' +\n        'link_directories load_cache load_command macro mark_as_advanced message option ' +\n        'output_required_files project qt_wrap_cpp qt_wrap_ui remove_definitions return ' +\n        'separate_arguments set set_directory_properties set_property ' +\n        'set_source_files_properties set_target_properties set_tests_properties site_name ' +\n        'source_group string target_link_libraries try_compile try_run unset variable_watch ' +\n        'while build_name exec_program export_library_dependencies install_files ' +\n        'install_programs install_targets link_libraries make_directory remove subdir_depends ' +\n        'subdirs use_mangled_mesa utility_source variable_requires write_file ' +\n        'qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or ' +\n        'equal less greater strless strgreater strequal matches'\n    },\n    contains: [\n      {\n        className: 'variable',\n        begin: '\\\\${', end: '}'\n      },\n      hljs.HASH_COMMENT_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.NUMBER_MODE\n    ]\n  };\n}\n},{name:\"coffeescript\",create:/*\nLanguage: CoffeeScript\nAuthor: Dmytrii Nagirniak <dnagir@gmail.com>\nContributors: Oleg Efimov <efimovov@gmail.com>, Cédric Néhémie <cedric.nehemie@gmail.com>\nDescription: CoffeeScript is a programming language that transcompiles to JavaScript. For info about language see http://coffeescript.org/\nCategory: common, scripting\n*/\n\nfunction(hljs) {\n  var KEYWORDS = {\n    keyword:\n      // JS keywords\n      'in if for while finally new do return else break catch instanceof throw try this ' +\n      'switch continue typeof delete debugger super ' +\n      // Coffee keywords\n      'then unless until loop of by when and or is isnt not',\n    literal:\n      // JS literals\n      'true false null undefined ' +\n      // Coffee literals\n      'yes no on off',\n    built_in:\n      'npm require console print module global window document'\n  };\n  var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n  var SUBST = {\n    className: 'subst',\n    begin: /#\\{/, end: /}/,\n    keywords: KEYWORDS\n  };\n  var EXPRESSIONS = [\n    hljs.BINARY_NUMBER_MODE,\n    hljs.inherit(hljs.C_NUMBER_MODE, {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\n    {\n      className: 'string',\n      variants: [\n        {\n          begin: /'''/, end: /'''/,\n          contains: [hljs.BACKSLASH_ESCAPE]\n        },\n        {\n          begin: /'/, end: /'/,\n          contains: [hljs.BACKSLASH_ESCAPE]\n        },\n        {\n          begin: /\"\"\"/, end: /\"\"\"/,\n          contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n        },\n        {\n          begin: /\"/, end: /\"/,\n          contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n        }\n      ]\n    },\n    {\n      className: 'regexp',\n      variants: [\n        {\n          begin: '///', end: '///',\n          contains: [SUBST, hljs.HASH_COMMENT_MODE]\n        },\n        {\n          begin: '//[gim]*',\n          relevance: 0\n        },\n        {\n          // regex can't start with space to parse x / 2 / 3 as two divisions\n          // regex can't start with *, and it supports an \"illegal\" in the main mode\n          begin: /\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/\n        }\n      ]\n    },\n    {\n      begin: '@' + JS_IDENT_RE // relevance booster\n    },\n    {\n      begin: '`', end: '`',\n      excludeBegin: true, excludeEnd: true,\n      subLanguage: 'javascript'\n    }\n  ];\n  SUBST.contains = EXPRESSIONS;\n\n  var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n  var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\([^\\\\(]', returnBegin: true,\n    /* We need another contained nameless mode to not have every nested\n    pair of parens to be called \"params\" */\n    contains: [{\n      begin: /\\(/, end: /\\)/,\n      keywords: KEYWORDS,\n      contains: ['self'].concat(EXPRESSIONS)\n    }]\n  };\n\n  return {\n    aliases: ['coffee', 'cson', 'iced'],\n    keywords: KEYWORDS,\n    illegal: /\\/\\*/,\n    contains: EXPRESSIONS.concat([\n      hljs.COMMENT('###', '###'),\n      hljs.HASH_COMMENT_MODE,\n      {\n        className: 'function',\n        begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\n        returnBegin: true,\n        contains: [TITLE, PARAMS]\n      },\n      {\n        // anonymous function start\n        begin: /[:\\(,=]\\s*/,\n        relevance: 0,\n        contains: [\n          {\n            className: 'function',\n            begin: PARAMS_RE, end: '[-=]>',\n            returnBegin: true,\n            contains: [PARAMS]\n          }\n        ]\n      },\n      {\n        className: 'class',\n        beginKeywords: 'class',\n        end: '$',\n        illegal: /[:=\"\\[\\]]/,\n        contains: [\n          {\n            beginKeywords: 'extends',\n            endsWithParent: true,\n            illegal: /[:=\"\\[\\]]/,\n            contains: [TITLE]\n          },\n          TITLE\n        ]\n      },\n      {\n        begin: JS_IDENT_RE + ':', end: ':',\n        returnBegin: true, returnEnd: true,\n        relevance: 0\n      }\n    ])\n  };\n}\n},{name:\"coq\",create:/*\nLanguage: Coq\nAuthor: Stephan Boyer <stephan@stephanboyer.com>\nCategory: functional\n*/\n\nfunction(hljs) {\n  return {\n    keywords: {\n      keyword:\n        '_ as at cofix else end exists exists2 fix for forall fun if IF in let ' +\n        'match mod Prop return Set then Type using where with ' +\n        'Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo ' +\n        'Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion ' +\n        'Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture ' +\n        'Conjectures Constant constr Constraint Constructors Context Corollary ' +\n        'CreateHintDb Cut Declare Defined Definition Delimit Dependencies Dependent' +\n        'Derive Drop eauto End Equality Eval Example Existential Existentials ' +\n        'Existing Export exporting Extern Extract Extraction Fact Field Fields File ' +\n        'Fixpoint Focus for From Function Functional Generalizable Global Goal Grab ' +\n        'Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident ' +\n        'Identity If Immediate Implicit Import Include Inductive Infix Info Initial ' +\n        'Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear ' +\n        'Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML ' +\n        'Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation ' +\n        'Obligations Opaque Open Optimize Options Parameter Parameters Parametric ' +\n        'Path Paths pattern Polymorphic Preterm Print Printing Program Projections ' +\n        'Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark ' +\n        'Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save ' +\n        'Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern ' +\n        'SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies ' +\n        'Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time ' +\n        'Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused ' +\n        'Unfold Universe Universes Unset Unshelve using Variable Variables Variant ' +\n        'Verbose Visibility where with',\n      built_in:\n        'abstract absurd admit after apply as assert assumption at auto autorewrite ' +\n        'autounfold before bottom btauto by case case_eq cbn cbv change ' +\n        'classical_left classical_right clear clearbody cofix compare compute ' +\n        'congruence constr_eq constructor contradict contradiction cut cutrewrite ' +\n        'cycle decide decompose dependent destruct destruction dintuition ' +\n        'discriminate discrR do double dtauto eapply eassumption eauto ecase ' +\n        'econstructor edestruct ediscriminate eelim eexact eexists einduction ' +\n        'einjection eleft elim elimtype enough equality erewrite eright ' +\n        'esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail ' +\n        'field field_simplify field_simplify_eq first firstorder fix fold fourier ' +\n        'functional generalize generalizing gfail give_up has_evar hnf idtac in ' +\n        'induction injection instantiate intro intro_pattern intros intuition ' +\n        'inversion inversion_clear is_evar is_var lapply lazy left lia lra move ' +\n        'native_compute nia nsatz omega once pattern pose progress proof psatz quote ' +\n        'record red refine reflexivity remember rename repeat replace revert ' +\n        'revgoals rewrite rewrite_strat right ring ring_simplify rtauto set ' +\n        'setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry ' +\n        'setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve ' +\n        'specialize split split_Rabs split_Rmult stepl stepr subst sum swap ' +\n        'symmetry tactic tauto time timeout top transitivity trivial try tryif ' +\n        'unfold unify until using vm_compute with'\n    },\n    contains: [\n      hljs.QUOTE_STRING_MODE,\n      hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'type',\n        excludeBegin: true,\n        begin: '\\\\|\\\\s*',\n        end: '\\\\w+'\n      },\n      {begin: /[-=]>/} // relevance booster\n    ]\n  };\n}\n},{name:\"cos\",create:/*\nLanguage: Caché Object Script\nAuthor: Nikita Savchenko <zitros.lab@gmail.com>\nCategory: enterprise, scripting\n*/\nfunction cos (hljs) {\n\n  var STRINGS = {\n    className: 'string',\n    variants: [\n      {\n        begin: '\"',\n        end: '\"',\n        contains: [{ // escaped\n          begin: \"\\\"\\\"\",\n          relevance: 0\n        }]\n      }\n    ]\n  };\n\n  var NUMBERS = {\n    className: \"number\",\n    begin: \"\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)\",\n    relevance: 0\n  };\n\n  var COS_KEYWORDS =\n    'property parameter class classmethod clientmethod extends as break ' +\n    'catch close continue do d|0 else elseif for goto halt hang h|0 if job ' +\n    'j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 ' +\n    'tcommit throw trollback try tstart use view while write w|0 xecute x|0 ' +\n    'zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert ' +\n    'zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit ' +\n    'zsync ascii';\n\n    // registered function - no need in them due to all functions are highlighted,\n    // but I'll just leave this here.\n\n    //\"$bit\", \"$bitcount\",\n    //\"$bitfind\", \"$bitlogic\", \"$case\", \"$char\", \"$classmethod\", \"$classname\",\n    //\"$compile\", \"$data\", \"$decimal\", \"$double\", \"$extract\", \"$factor\",\n    //\"$find\", \"$fnumber\", \"$get\", \"$increment\", \"$inumber\", \"$isobject\",\n    //\"$isvaliddouble\", \"$isvalidnum\", \"$justify\", \"$length\", \"$list\",\n    //\"$listbuild\", \"$listdata\", \"$listfind\", \"$listfromstring\", \"$listget\",\n    //\"$listlength\", \"$listnext\", \"$listsame\", \"$listtostring\", \"$listvalid\",\n    //\"$locate\", \"$match\", \"$method\", \"$name\", \"$nconvert\", \"$next\",\n    //\"$normalize\", \"$now\", \"$number\", \"$order\", \"$parameter\", \"$piece\",\n    //\"$prefetchoff\", \"$prefetchon\", \"$property\", \"$qlength\", \"$qsubscript\",\n    //\"$query\", \"$random\", \"$replace\", \"$reverse\", \"$sconvert\", \"$select\",\n    //\"$sortbegin\", \"$sortend\", \"$stack\", \"$text\", \"$translate\", \"$view\",\n    //\"$wascii\", \"$wchar\", \"$wextract\", \"$wfind\", \"$wiswide\", \"$wlength\",\n    //\"$wreverse\", \"$xecute\", \"$zabs\", \"$zarccos\", \"$zarcsin\", \"$zarctan\",\n    //\"$zcos\", \"$zcot\", \"$zcsc\", \"$zdate\", \"$zdateh\", \"$zdatetime\",\n    //\"$zdatetimeh\", \"$zexp\", \"$zhex\", \"$zln\", \"$zlog\", \"$zpower\", \"$zsec\",\n    //\"$zsin\", \"$zsqr\", \"$ztan\", \"$ztime\", \"$ztimeh\", \"$zboolean\",\n    //\"$zconvert\", \"$zcrc\", \"$zcyc\", \"$zdascii\", \"$zdchar\", \"$zf\",\n    //\"$ziswide\", \"$zlascii\", \"$zlchar\", \"$zname\", \"$zposition\", \"$zqascii\",\n    //\"$zqchar\", \"$zsearch\", \"$zseek\", \"$zstrip\", \"$zwascii\", \"$zwchar\",\n    //\"$zwidth\", \"$zwpack\", \"$zwbpack\", \"$zwunpack\", \"$zwbunpack\", \"$zzenkaku\",\n    //\"$change\", \"$mv\", \"$mvat\", \"$mvfmt\", \"$mvfmts\", \"$mviconv\",\n    //\"$mviconvs\", \"$mvinmat\", \"$mvlover\", \"$mvoconv\", \"$mvoconvs\", \"$mvraise\",\n    //\"$mvtrans\", \"$mvv\", \"$mvname\", \"$zbitand\", \"$zbitcount\", \"$zbitfind\",\n    //\"$zbitget\", \"$zbitlen\", \"$zbitnot\", \"$zbitor\", \"$zbitset\", \"$zbitstr\",\n    //\"$zbitxor\", \"$zincrement\", \"$znext\", \"$zorder\", \"$zprevious\", \"$zsort\",\n    //\"device\", \"$ecode\", \"$estack\", \"$etrap\", \"$halt\", \"$horolog\",\n    //\"$io\", \"$job\", \"$key\", \"$namespace\", \"$principal\", \"$quit\", \"$roles\",\n    //\"$storage\", \"$system\", \"$test\", \"$this\", \"$tlevel\", \"$username\",\n    //\"$x\", \"$y\", \"$za\", \"$zb\", \"$zchild\", \"$zeof\", \"$zeos\", \"$zerror\",\n    //\"$zhorolog\", \"$zio\", \"$zjob\", \"$zmode\", \"$znspace\", \"$zparent\", \"$zpi\",\n    //\"$zpos\", \"$zreference\", \"$zstorage\", \"$ztimestamp\", \"$ztimezone\",\n    //\"$ztrap\", \"$zversion\"\n\n  return {\n    case_insensitive: true,\n    aliases: [\"cos\", \"cls\"],\n    keywords: COS_KEYWORDS,\n    contains: [\n      NUMBERS,\n      STRINGS,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: \"comment\",\n        begin: /;/, end: \"$\",\n        relevance: 0\n      },\n      { // Functions and user-defined functions: write $ztime(60*60*3), $$myFunc(10), $$^Val(1)\n        className: \"built_in\",\n        begin: /(?:\\$\\$?|\\.\\.)\\^?[a-zA-Z]+/\n      },\n      { // Macro command: quit $$$OK\n        className: \"built_in\",\n        begin: /\\$\\$\\$[a-zA-Z]+/\n      },\n      { // Special (global) variables: write %request.Content; Built-in classes: %Library.Integer\n        className: \"built_in\",\n        begin: /%[a-z]+(?:\\.[a-z]+)*/\n      },\n      { // Global variable: set ^globalName = 12 write ^globalName\n        className: \"symbol\",\n        begin: /\\^%?[a-zA-Z][\\w]*/\n      },\n      { // Some control constructions: do ##class(Package.ClassName).Method(), ##super()\n        className: \"keyword\",\n        begin: /##class|##super|#define|#dim/\n      },\n\n      // sub-languages: are not fully supported by hljs by 11/15/2015\n      // left for the future implementation.\n      {\n        begin: /&sql\\(/,    end: /\\)/,\n        excludeBegin: true, excludeEnd: true,\n        subLanguage: \"sql\"\n      },\n      {\n        begin: /&(js|jscript|javascript)</, end: />/,\n        excludeBegin: true, excludeEnd: true,\n        subLanguage: \"javascript\"\n      },\n      {\n        // this brakes first and last tag, but this is the only way to embed a valid html\n        begin: /&html<\\s*</, end: />\\s*>/,\n        subLanguage: \"xml\"\n      }\n    ]\n  };\n}\n},{name:\"1c\",create:/*\nLanguage: 1C\nAuthor: Yuri Ivanov <ivanov@supersoft.ru>\nContributors: Sergey Baranov <segyrn@yandex.ru>\nCategory: enterprise\n*/\n\nfunction(hljs){\n  var IDENT_RE_RU = '[a-zA-Zа-яА-Я][a-zA-Z0-9_а-яА-Я]*';\n  var OneS_KEYWORDS = 'возврат дата для если и или иначе иначеесли исключение конецесли ' +\n    'конецпопытки конецпроцедуры конецфункции конеццикла константа не перейти перем ' +\n    'перечисление по пока попытка прервать продолжить процедура строка тогда фс функция цикл ' +\n    'число экспорт';\n  var OneS_BUILT_IN = 'ansitooem oemtoansi ввестивидсубконто ввестидату ввестизначение ' +\n    'ввестиперечисление ввестипериод ввестиплансчетов ввестистроку ввестичисло вопрос ' +\n    'восстановитьзначение врег выбранныйплансчетов вызватьисключение датагод датамесяц ' +\n    'датачисло добавитьмесяц завершитьработусистемы заголовоксистемы записьжурналарегистрации ' +\n    'запуститьприложение зафиксироватьтранзакцию значениевстроку значениевстрокувнутр ' +\n    'значениевфайл значениеизстроки значениеизстрокивнутр значениеизфайла имякомпьютера ' +\n    'имяпользователя каталогвременныхфайлов каталогиб каталогпользователя каталогпрограммы ' +\n    'кодсимв командасистемы конгода конецпериодаби конецрассчитанногопериодаби ' +\n    'конецстандартногоинтервала конквартала конмесяца коннедели лев лог лог10 макс ' +\n    'максимальноеколичествосубконто мин монопольныйрежим названиеинтерфейса названиенабораправ ' +\n    'назначитьвид назначитьсчет найти найтипомеченныенаудаление найтиссылки началопериодаби ' +\n    'началостандартногоинтервала начатьтранзакцию начгода начквартала начмесяца начнедели ' +\n    'номерднягода номерднянедели номернеделигода нрег обработкаожидания окр описаниеошибки ' +\n    'основнойжурналрасчетов основнойплансчетов основнойязык открытьформу открытьформумодально ' +\n    'отменитьтранзакцию очиститьокносообщений периодстр полноеимяпользователя получитьвремята ' +\n    'получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта ' +\n    'получитьпустоезначение получитьта прав праводоступа предупреждение префиксавтонумерации ' +\n    'пустаястрока пустоезначение рабочаядаттьпустоезначение рабочаядата разделительстраниц ' +\n    'разделительстрок разм разобратьпозициюдокумента рассчитатьрегистрына ' +\n    'рассчитатьрегистрыпо сигнал симв символтабуляции создатьобъект сокрл сокрлп сокрп ' +\n    'сообщить состояние сохранитьзначение сред статусвозврата стрдлина стрзаменить ' +\n    'стрколичествострок стрполучитьстроку  стрчисловхождений сформироватьпозициюдокумента ' +\n    'счетпокоду текущаядата текущеевремя типзначения типзначениястр удалитьобъекты ' +\n    'установитьтана установитьтапо фиксшаблон формат цел шаблон';\n  var DQUOTE =  {begin: '\"\"'};\n  var STR_START = {\n      className: 'string',\n      begin: '\"', end: '\"|$',\n      contains: [DQUOTE]\n    };\n  var STR_CONT = {\n    className: 'string',\n    begin: '\\\\|', end: '\"|$',\n    contains: [DQUOTE]\n  };\n\n  return {\n    case_insensitive: true,\n    lexemes: IDENT_RE_RU,\n    keywords: {keyword: OneS_KEYWORDS, built_in: OneS_BUILT_IN},\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.NUMBER_MODE,\n      STR_START, STR_CONT,\n      {\n        className: 'function',\n        begin: '(процедура|функция)', end: '$',\n        lexemes: IDENT_RE_RU,\n        keywords: 'процедура функция',\n        contains: [\n          {\n            begin: 'экспорт', endsWithParent: true,\n            lexemes: IDENT_RE_RU,\n            keywords: 'экспорт',\n            contains: [hljs.C_LINE_COMMENT_MODE]\n          },\n          {\n            className: 'params',\n            begin: '\\\\(', end: '\\\\)',\n            lexemes: IDENT_RE_RU,\n            keywords: 'знач',\n            contains: [STR_START, STR_CONT]\n          },\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE_RU})\n        ]\n      },\n      {className: 'meta', begin: '#', end: '$'},\n      {className: 'number', begin: '\\'\\\\d{2}\\\\.\\\\d{2}\\\\.(\\\\d{2}|\\\\d{4})\\''} // date\n    ]\n  };\n}\n},{name:\"crmsh\",create:/*\nLanguage: crmsh\nAuthor: Kristoffer Gronlund <kgronlund@suse.com>\nWebsite: http://crmsh.github.io\nDescription: Syntax Highlighting for the crmsh DSL\nCategory: config\n*/\n\nfunction(hljs) {\n  var RESOURCES = 'primitive rsc_template';\n\n  var COMMANDS = 'group clone ms master location colocation order fencing_topology ' +\n      'rsc_ticket acl_target acl_group user role ' +\n      'tag xml';\n\n  var PROPERTY_SETS = 'property rsc_defaults op_defaults';\n\n  var KEYWORDS = 'params meta operations op rule attributes utilization';\n\n  var OPERATORS = 'read write deny defined not_defined in_range date spec in ' +\n      'ref reference attribute type xpath version and or lt gt tag ' +\n      'lte gte eq ne \\\\';\n\n  var TYPES = 'number string';\n\n  var LITERALS = 'Master Started Slave Stopped start promote demote stop monitor true false';\n\n  return {\n    aliases: ['crm', 'pcmk'],\n    case_insensitive: true,\n    keywords: {\n      keyword: KEYWORDS + ' ' + OPERATORS + ' ' + TYPES,\n      literal: LITERALS\n    },\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      {\n        beginKeywords: 'node',\n        starts: {\n          end: '\\\\s*([\\\\w_-]+:)?',\n          starts: {\n            className: 'title',\n            end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*'\n          }\n        }\n      },\n      {\n        beginKeywords: RESOURCES,\n        starts: {\n          className: 'title',\n          end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*',\n          starts: {\n            end: '\\\\s*@?[\\\\w_][\\\\w_\\\\.:-]*'\n          }\n        }\n      },\n      {\n        begin: '\\\\b(' + COMMANDS.split(' ').join('|') + ')\\\\s+',\n        keywords: COMMANDS,\n        starts: {\n          className: 'title',\n          end: '[\\\\$\\\\w_][\\\\w_-]*'\n        }\n      },\n      {\n        beginKeywords: PROPERTY_SETS,\n        starts: {\n          className: 'title',\n          end: '\\\\s*([\\\\w_-]+:)?'\n        }\n      },\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'meta',\n        begin: '(ocf|systemd|service|lsb):[\\\\w_:-]+',\n        relevance: 0\n      },\n      {\n        className: 'number',\n        begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(ms|s|h|m)?',\n        relevance: 0\n      },\n      {\n        className: 'literal',\n        begin: '[-]?(infinity|inf)',\n        relevance: 0\n      },\n      {\n        className: 'attr',\n        begin: /([A-Za-z\\$_\\#][\\w_-]+)=/,\n        relevance: 0\n      },\n      {\n        className: 'tag',\n        begin: '</?',\n        end: '/?>',\n        relevance: 0\n      }\n    ]\n  };\n}\n},{name:\"crystal\",create:/*\nLanguage: Crystal\nAuthor: TSUYUSATO Kitsune <make.just.on@gmail.com>\n*/\n\nfunction(hljs) {\n  var NUM_SUFFIX = '(_[uif](8|16|32|64))?';\n  var CRYSTAL_IDENT_RE = '[a-zA-Z_]\\\\w*[!?=]?';\n  var RE_STARTER = '!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|' +\n    '>>|>|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n  var CRYSTAL_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\][=?]?';\n  var CRYSTAL_KEYWORDS = {\n    keyword:\n      'abstract alias as asm begin break case class def do else elsif end ensure enum extend for fun if ifdef ' +\n      'include instance_sizeof is_a? lib macro module next of out pointerof private protected rescue responds_to? ' +\n      'return require self sizeof struct super then type typeof union unless until when while with yield ' +\n      '__DIR__ __FILE__ __LINE__',\n    literal: 'false nil true'\n  };\n  var SUBST = {\n    className: 'subst',\n    begin: '#{', end: '}',\n    keywords: CRYSTAL_KEYWORDS\n  };\n  var EXPANSION = {\n    className: 'template-variable',\n    variants: [\n      {begin: '\\\\{\\\\{', end: '\\\\}\\\\}'},\n      {begin: '\\\\{%', end: '%\\\\}'}\n    ],\n    keywords: CRYSTAL_KEYWORDS\n  };\n\n  function recursiveParen(begin, end) {\n    var\n    contains = [{begin: begin, end: end}];\n    contains[0].contains = contains;\n    return contains;\n  }\n  var STRING = {\n    className: 'string',\n    contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n    variants: [\n      {begin: /'/, end: /'/},\n      {begin: /\"/, end: /\"/},\n      {begin: /`/, end: /`/},\n      {begin: '%w?\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n      {begin: '%w?\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n      {begin: '%w?{', end: '}', contains: recursiveParen('{', '}')},\n      {begin: '%w?<', end: '>', contains: recursiveParen('<', '>')},\n      {begin: '%w?/', end: '/'},\n      {begin: '%w?%', end: '%'},\n      {begin: '%w?-', end: '-'},\n      {begin: '%w?\\\\|', end: '\\\\|'},\n    ],\n    relevance: 0,\n  };\n  var REGEXP = {\n    begin: '(' + RE_STARTER + ')\\\\s*',\n    contains: [\n      {\n        className: 'regexp',\n        contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n        variants: [\n          {begin: '//[a-z]*', relevance: 0},\n          {begin: '/', end: '/[a-z]*'},\n          {begin: '%r\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n          {begin: '%r\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n          {begin: '%r{', end: '}', contains: recursiveParen('{', '}')},\n          {begin: '%r<', end: '>', contains: recursiveParen('<', '>')},\n          {begin: '%r/', end: '/'},\n          {begin: '%r%', end: '%'},\n          {begin: '%r-', end: '-'},\n          {begin: '%r\\\\|', end: '\\\\|'},\n        ]\n      }\n    ],\n    relevance: 0\n  };\n  var REGEXP2 = {\n    className: 'regexp',\n    contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n    variants: [\n      {begin: '%r\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n      {begin: '%r\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n      {begin: '%r{', end: '}', contains: recursiveParen('{', '}')},\n      {begin: '%r<', end: '>', contains: recursiveParen('<', '>')},\n      {begin: '%r/', end: '/'},\n      {begin: '%r%', end: '%'},\n      {begin: '%r-', end: '-'},\n      {begin: '%r\\\\|', end: '\\\\|'},\n    ],\n    relevance: 0\n  };\n  var ATTRIBUTE = {\n    className: 'meta',\n    begin: '@\\\\[', end: '\\\\]',\n    contains: [\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'})\n    ]\n  };\n  var CRYSTAL_DEFAULT_CONTAINS = [\n    EXPANSION,\n    STRING,\n    REGEXP,\n    REGEXP2,\n    ATTRIBUTE,\n    hljs.HASH_COMMENT_MODE,\n    {\n      className: 'class',\n      beginKeywords: 'class module struct', end: '$|;',\n      illegal: /=/,\n      contains: [\n        hljs.HASH_COMMENT_MODE,\n        hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n        {begin: '<'} // relevance booster for inheritance\n      ]\n    },\n    {\n      className: 'class',\n      beginKeywords: 'lib enum union', end: '$|;',\n      illegal: /=/,\n      contains: [\n        hljs.HASH_COMMENT_MODE,\n        hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n      ],\n      relevance: 10\n    },\n    {\n      className: 'function',\n      beginKeywords: 'def', end: /\\B\\b/,\n      contains: [\n        hljs.inherit(hljs.TITLE_MODE, {\n          begin: CRYSTAL_METHOD_RE,\n          endsParent: true\n        })\n      ]\n    },\n    {\n      className: 'function',\n      beginKeywords: 'fun macro', end: /\\B\\b/,\n      contains: [\n        hljs.inherit(hljs.TITLE_MODE, {\n          begin: CRYSTAL_METHOD_RE,\n          endsParent: true\n        })\n      ],\n      relevance: 5\n    },\n    {\n      className: 'symbol',\n      begin: hljs.UNDERSCORE_IDENT_RE + '(\\\\!|\\\\?)?:',\n      relevance: 0\n    },\n    {\n      className: 'symbol',\n      begin: ':',\n      contains: [STRING, {begin: CRYSTAL_METHOD_RE}],\n      relevance: 0\n    },\n    {\n      className: 'number',\n      variants: [\n        { begin: '\\\\b0b([01_]*[01])' + NUM_SUFFIX },\n        { begin: '\\\\b0o([0-7_]*[0-7])' + NUM_SUFFIX },\n        { begin: '\\\\b0x([A-Fa-f0-9_]*[A-Fa-f0-9])' + NUM_SUFFIX },\n        { begin: '\\\\b(([0-9][0-9_]*[0-9]|[0-9])(\\\\.[0-9_]*[0-9])?([eE][+-]?[0-9_]*[0-9])?)' + NUM_SUFFIX}\n      ],\n      relevance: 0\n    }\n  ];\n  SUBST.contains = CRYSTAL_DEFAULT_CONTAINS;\n  EXPANSION.contains = CRYSTAL_DEFAULT_CONTAINS.slice(1); // without EXPANSION\n\n  return {\n    aliases: ['cr'],\n    lexemes: CRYSTAL_IDENT_RE,\n    keywords: CRYSTAL_KEYWORDS,\n    contains: CRYSTAL_DEFAULT_CONTAINS\n  };\n}\n},{name:\"cs\",create:/*\nLanguage: C#\nAuthor: Jason Diamond <jason@diamond.name>\nCategory: common\n*/\n\nfunction(hljs) {\n  var KEYWORDS = {\n    keyword:\n      // Normal keywords.\n      'abstract as base bool break byte case catch char checked const continue decimal dynamic ' +\n      'default delegate do double else enum event explicit extern finally fixed float ' +\n      'for foreach goto if implicit in int interface internal is lock long when ' +\n      'object operator out override params private protected public readonly ref sbyte ' +\n      'sealed short sizeof stackalloc static string struct switch this try typeof ' +\n      'uint ulong unchecked unsafe ushort using virtual volatile void while async ' +\n      'nameof ' +\n      // Contextual keywords.\n      'ascending descending from get group into join let orderby partial select set value var ' +\n      'where yield',\n    literal:\n      'null false true'\n  };\n\n  var VERBATIM_STRING = {\n    className: 'string',\n    begin: '@\"', end: '\"',\n    contains: [{begin: '\"\"'}]\n  };\n  var VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, {illegal: /\\n/});\n  var SUBST = {\n    className: 'subst',\n    begin: '{', end: '}',\n    keywords: KEYWORDS\n  };\n  var SUBST_NO_LF = hljs.inherit(SUBST, {illegal: /\\n/});\n  var INTERPOLATED_STRING = {\n    className: 'string',\n    begin: /\\$\"/, end: '\"',\n    illegal: /\\n/,\n    contains: [{begin: '{{'}, {begin: '}}'}, hljs.BACKSLASH_ESCAPE, SUBST_NO_LF]\n  };\n  var INTERPOLATED_VERBATIM_STRING = {\n    className: 'string',\n    begin: /\\$@\"/, end: '\"',\n    contains: [{begin: '{{'}, {begin: '}}'}, {begin: '\"\"'}, SUBST]\n  };\n  var INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n    illegal: /\\n/,\n    contains: [{begin: '{{'}, {begin: '}}'}, {begin: '\"\"'}, SUBST_NO_LF]\n  });\n  SUBST.contains = [\n    INTERPOLATED_VERBATIM_STRING,\n    INTERPOLATED_STRING,\n    VERBATIM_STRING,\n    hljs.APOS_STRING_MODE,\n    hljs.QUOTE_STRING_MODE,\n    hljs.C_NUMBER_MODE,\n    hljs.C_BLOCK_COMMENT_MODE\n  ];\n  SUBST_NO_LF.contains = [\n    INTERPOLATED_VERBATIM_STRING_NO_LF,\n    INTERPOLATED_STRING,\n    VERBATIM_STRING_NO_LF,\n    hljs.APOS_STRING_MODE,\n    hljs.QUOTE_STRING_MODE,\n    hljs.C_NUMBER_MODE,\n    hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, {illegal: /\\n/})\n  ];\n  var STRING = {\n    variants: [\n      INTERPOLATED_VERBATIM_STRING,\n      INTERPOLATED_STRING,\n      VERBATIM_STRING,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE\n    ]\n  };\n\n  var TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '>)?(\\\\[\\\\])?';\n  return {\n    aliases: ['csharp'],\n    keywords: KEYWORDS,\n    illegal: /::/,\n    contains: [\n      hljs.COMMENT(\n        '///',\n        '$',\n        {\n          returnBegin: true,\n          contains: [\n            {\n              className: 'doctag',\n              variants: [\n                {\n                  begin: '///', relevance: 0\n                },\n                {\n                  begin: '<!--|-->'\n                },\n                {\n                  begin: '</?', end: '>'\n                }\n              ]\n            }\n          ]\n        }\n      ),\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'meta',\n        begin: '#', end: '$',\n        keywords: {'meta-keyword': 'if else elif endif define undef warning error line region endregion pragma checksum'}\n      },\n      STRING,\n      hljs.C_NUMBER_MODE,\n      {\n        beginKeywords: 'class interface', end: /[{;=]/,\n        illegal: /[^\\s:]/,\n        contains: [\n          hljs.TITLE_MODE,\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE\n        ]\n      },\n      {\n        beginKeywords: 'namespace', end: /[{;=]/,\n        illegal: /[^\\s:]/,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {begin: '[a-zA-Z](\\\\.?\\\\w)*'}),\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE\n        ]\n      },\n      {\n        // Expression keywords prevent 'keyword Name(...)' from being\n        // recognized as a function definition\n        beginKeywords: 'new return throw await',\n        relevance: 0\n      },\n      {\n        className: 'function',\n        begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true, end: /[{;=]/,\n        excludeEnd: true,\n        keywords: KEYWORDS,\n        contains: [\n          {\n            begin: hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n            contains: [hljs.TITLE_MODE],\n            relevance: 0\n          },\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            excludeBegin: true,\n            excludeEnd: true,\n            keywords: KEYWORDS,\n            relevance: 0,\n            contains: [\n              STRING,\n              hljs.C_NUMBER_MODE,\n              hljs.C_BLOCK_COMMENT_MODE\n            ]\n          },\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE\n        ]\n      }\n    ]\n  };\n}\n},{name:\"csp\",create:/*\nLanguage: CSP\nDescription: Content Security Policy definition highlighting \nAuthor: Taras <oxdef@oxdef.info>\n\nvim: ts=2 sw=2 st=2\n*/\n\nfunction(hljs) {\n  return {\n    case_insensitive: false,\n    lexemes: '[a-zA-Z][a-zA-Z0-9_-]*',\n    keywords: {\n      keyword: 'base-uri child-src connect-src default-src font-src form-action' +\n        ' frame-ancestors frame-src img-src media-src object-src plugin-types' +\n        ' report-uri sandbox script-src style-src', \n    },\n    contains: [\n    {\n      className: 'string',\n      begin: \"'\", end: \"'\"\n    },\n    {\n      className: 'attribute',\n      begin: '^Content', end: ':', excludeEnd: true,\n    },\n    ]\n  };\n}\n},{name:\"css\",create:/*\nLanguage: CSS\nCategory: common, css\n*/\n\nfunction(hljs) {\n  var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n  var RULE = {\n    begin: /[A-Z\\_\\.\\-]+\\s*:/, returnBegin: true, end: ';', endsWithParent: true,\n    contains: [\n      {\n        className: 'attribute',\n        begin: /\\S/, end: ':', excludeEnd: true,\n        starts: {\n          endsWithParent: true, excludeEnd: true,\n          contains: [\n            {\n              begin: /[\\w-]+\\(/, returnBegin: true,\n              contains: [\n                {\n                  className: 'built_in',\n                  begin: /[\\w-]+/\n                },\n                {\n                  begin: /\\(/, end: /\\)/,\n                  contains: [\n                    hljs.APOS_STRING_MODE,\n                    hljs.QUOTE_STRING_MODE\n                  ]\n                }\n              ]\n            },\n            hljs.CSS_NUMBER_MODE,\n            hljs.QUOTE_STRING_MODE,\n            hljs.APOS_STRING_MODE,\n            hljs.C_BLOCK_COMMENT_MODE,\n            {\n              className: 'number', begin: '#[0-9A-Fa-f]+'\n            },\n            {\n              className: 'meta', begin: '!important'\n            }\n          ]\n        }\n      }\n    ]\n  };\n\n  return {\n    case_insensitive: true,\n    illegal: /[=\\/|'\\$]/,\n    contains: [\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'selector-id', begin: /#[A-Za-z0-9_-]+/\n      },\n      {\n        className: 'selector-class', begin: /\\.[A-Za-z0-9_-]+/\n      },\n      {\n        className: 'selector-attr',\n        begin: /\\[/, end: /\\]/,\n        illegal: '$'\n      },\n      {\n        className: 'selector-pseudo',\n        begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/\n      },\n      {\n        begin: '@(font-face|page)',\n        lexemes: '[a-z-]+',\n        keywords: 'font-face page'\n      },\n      {\n        begin: '@', end: '[{;]', // at_rule eating first \"{\" is a good thing\n                                 // because it doesn’t let it to be parsed as\n                                 // a rule set but instead drops parser into\n                                 // the default mode which is how it should be.\n        illegal: /:/, // break on Less variables @var: ...\n        contains: [\n          {\n            className: 'keyword',\n            begin: /\\w+/\n          },\n          {\n            begin: /\\s/, endsWithParent: true, excludeEnd: true,\n            relevance: 0,\n            contains: [\n              hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE,\n              hljs.CSS_NUMBER_MODE\n            ]\n          }\n        ]\n      },\n      {\n        className: 'selector-tag', begin: IDENT_RE,\n        relevance: 0\n      },\n      {\n        begin: '{', end: '}',\n        illegal: /\\S/,\n        contains: [\n          hljs.C_BLOCK_COMMENT_MODE,\n          RULE,\n        ]\n      }\n    ]\n  };\n}\n},{name:\"d\",create:/*\nLanguage: D\nAuthor: Aleksandar Ruzicic <aleksandar@ruzicic.info>\nDescription: D is a language with C-like syntax and static typing. It pragmatically combines efficiency, control, and modeling power, with safety and programmer productivity.\nVersion: 1.0a\nDate: 2012-04-08\n*/\n\n/**\n * Known issues:\n *\n * - invalid hex string literals will be recognized as a double quoted strings\n *   but 'x' at the beginning of string will not be matched\n *\n * - delimited string literals are not checked for matching end delimiter\n *   (not possible to do with js regexp)\n *\n * - content of token string is colored as a string (i.e. no keyword coloring inside a token string)\n *   also, content of token string is not validated to contain only valid D tokens\n *\n * - special token sequence rule is not strictly following D grammar (anything following #line\n *   up to the end of line is matched as special token sequence)\n */\n\nfunction(hljs) {\n  /**\n   * Language keywords\n   *\n   * @type {Object}\n   */\n  var D_KEYWORDS = {\n    keyword:\n      'abstract alias align asm assert auto body break byte case cast catch class ' +\n      'const continue debug default delete deprecated do else enum export extern final ' +\n      'finally for foreach foreach_reverse|10 goto if immutable import in inout int ' +\n      'interface invariant is lazy macro mixin module new nothrow out override package ' +\n      'pragma private protected public pure ref return scope shared static struct ' +\n      'super switch synchronized template this throw try typedef typeid typeof union ' +\n      'unittest version void volatile while with __FILE__ __LINE__ __gshared|10 ' +\n      '__thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__',\n    built_in:\n      'bool cdouble cent cfloat char creal dchar delegate double dstring float function ' +\n      'idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar ' +\n      'wstring',\n    literal:\n      'false null true'\n  };\n\n  /**\n   * Number literal regexps\n   *\n   * @type {String}\n   */\n  var decimal_integer_re = '(0|[1-9][\\\\d_]*)',\n    decimal_integer_nosus_re = '(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d)',\n    binary_integer_re = '0[bB][01_]+',\n    hexadecimal_digits_re = '([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*)',\n    hexadecimal_integer_re = '0[xX]' + hexadecimal_digits_re,\n\n    decimal_exponent_re = '([eE][+-]?' + decimal_integer_nosus_re + ')',\n    decimal_float_re = '(' + decimal_integer_nosus_re + '(\\\\.\\\\d*|' + decimal_exponent_re + ')|' +\n                '\\\\d+\\\\.' + decimal_integer_nosus_re + decimal_integer_nosus_re + '|' +\n                '\\\\.' + decimal_integer_re + decimal_exponent_re + '?' +\n              ')',\n    hexadecimal_float_re = '(0[xX](' +\n                  hexadecimal_digits_re + '\\\\.' + hexadecimal_digits_re + '|'+\n                  '\\\\.?' + hexadecimal_digits_re +\n                 ')[pP][+-]?' + decimal_integer_nosus_re + ')',\n\n    integer_re = '(' +\n      decimal_integer_re + '|' +\n      binary_integer_re  + '|' +\n       hexadecimal_integer_re   +\n    ')',\n\n    float_re = '(' +\n      hexadecimal_float_re + '|' +\n      decimal_float_re  +\n    ')';\n\n  /**\n   * Escape sequence supported in D string and character literals\n   *\n   * @type {String}\n   */\n  var escape_sequence_re = '\\\\\\\\(' +\n              '[\\'\"\\\\?\\\\\\\\abfnrtv]|' +  // common escapes\n              'u[\\\\dA-Fa-f]{4}|' +     // four hex digit unicode codepoint\n              '[0-7]{1,3}|' +       // one to three octal digit ascii char code\n              'x[\\\\dA-Fa-f]{2}|' +    // two hex digit ascii char code\n              'U[\\\\dA-Fa-f]{8}' +      // eight hex digit unicode codepoint\n              ')|' +\n              '&[a-zA-Z\\\\d]{2,};';      // named character entity\n\n  /**\n   * D integer number literals\n   *\n   * @type {Object}\n   */\n  var D_INTEGER_MODE = {\n    className: 'number',\n      begin: '\\\\b' + integer_re + '(L|u|U|Lu|LU|uL|UL)?',\n      relevance: 0\n  };\n\n  /**\n   * [D_FLOAT_MODE description]\n   * @type {Object}\n   */\n  var D_FLOAT_MODE = {\n    className: 'number',\n    begin: '\\\\b(' +\n        float_re + '([fF]|L|i|[fF]i|Li)?|' +\n        integer_re + '(i|[fF]i|Li)' +\n      ')',\n    relevance: 0\n  };\n\n  /**\n   * D character literal\n   *\n   * @type {Object}\n   */\n  var D_CHARACTER_MODE = {\n    className: 'string',\n    begin: '\\'(' + escape_sequence_re + '|.)', end: '\\'',\n    illegal: '.'\n  };\n\n  /**\n   * D string escape sequence\n   *\n   * @type {Object}\n   */\n  var D_ESCAPE_SEQUENCE = {\n    begin: escape_sequence_re,\n    relevance: 0\n  };\n\n  /**\n   * D double quoted string literal\n   *\n   * @type {Object}\n   */\n  var D_STRING_MODE = {\n    className: 'string',\n    begin: '\"',\n    contains: [D_ESCAPE_SEQUENCE],\n    end: '\"[cwd]?'\n  };\n\n  /**\n   * D wysiwyg and delimited string literals\n   *\n   * @type {Object}\n   */\n  var D_WYSIWYG_DELIMITED_STRING_MODE = {\n    className: 'string',\n    begin: '[rq]\"',\n    end: '\"[cwd]?',\n    relevance: 5\n  };\n\n  /**\n   * D alternate wysiwyg string literal\n   *\n   * @type {Object}\n   */\n  var D_ALTERNATE_WYSIWYG_STRING_MODE = {\n    className: 'string',\n    begin: '`',\n    end: '`[cwd]?'\n  };\n\n  /**\n   * D hexadecimal string literal\n   *\n   * @type {Object}\n   */\n  var D_HEX_STRING_MODE = {\n    className: 'string',\n    begin: 'x\"[\\\\da-fA-F\\\\s\\\\n\\\\r]*\"[cwd]?',\n    relevance: 10\n  };\n\n  /**\n   * D delimited string literal\n   *\n   * @type {Object}\n   */\n  var D_TOKEN_STRING_MODE = {\n    className: 'string',\n    begin: 'q\"\\\\{',\n    end: '\\\\}\"'\n  };\n\n  /**\n   * Hashbang support\n   *\n   * @type {Object}\n   */\n  var D_HASHBANG_MODE = {\n    className: 'meta',\n    begin: '^#!',\n    end: '$',\n    relevance: 5\n  };\n\n  /**\n   * D special token sequence\n   *\n   * @type {Object}\n   */\n  var D_SPECIAL_TOKEN_SEQUENCE_MODE = {\n    className: 'meta',\n    begin: '#(line)',\n    end: '$',\n    relevance: 5\n  };\n\n  /**\n   * D attributes\n   *\n   * @type {Object}\n   */\n  var D_ATTRIBUTE_MODE = {\n    className: 'keyword',\n    begin: '@[a-zA-Z_][a-zA-Z_\\\\d]*'\n  };\n\n  /**\n   * D nesting comment\n   *\n   * @type {Object}\n   */\n  var D_NESTING_COMMENT_MODE = hljs.COMMENT(\n    '\\\\/\\\\+',\n    '\\\\+\\\\/',\n    {\n      contains: ['self'],\n      relevance: 10\n    }\n  );\n\n  return {\n    lexemes: hljs.UNDERSCORE_IDENT_RE,\n    keywords: D_KEYWORDS,\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n        hljs.C_BLOCK_COMMENT_MODE,\n        D_NESTING_COMMENT_MODE,\n        D_HEX_STRING_MODE,\n        D_STRING_MODE,\n        D_WYSIWYG_DELIMITED_STRING_MODE,\n        D_ALTERNATE_WYSIWYG_STRING_MODE,\n        D_TOKEN_STRING_MODE,\n        D_FLOAT_MODE,\n        D_INTEGER_MODE,\n        D_CHARACTER_MODE,\n        D_HASHBANG_MODE,\n        D_SPECIAL_TOKEN_SEQUENCE_MODE,\n        D_ATTRIBUTE_MODE\n    ]\n  };\n}\n},{name:\"dart\",create:/*\nLanguage: Dart\nRequires: markdown.js\nAuthor: Maxim Dikun <dikmax@gmail.com>\nDescription: Dart is a JavaScript replacement language developed by Google. For more information see http://dartlang.org/\nCategory: scripting\n*/\n\nfunction (hljs) {\n  var SUBST = {\n    className: 'subst',\n    begin: '\\\\$\\\\{', end: '}',\n    keywords: 'true false null this is new super'\n  };\n\n  var STRING = {\n    className: 'string',\n    variants: [\n      {\n        begin: 'r\\'\\'\\'', end: '\\'\\'\\''\n      },\n      {\n        begin: 'r\"\"\"', end: '\"\"\"'\n      },\n      {\n        begin: 'r\\'', end: '\\'',\n        illegal: '\\\\n'\n      },\n      {\n        begin: 'r\"', end: '\"',\n        illegal: '\\\\n'\n      },\n      {\n        begin: '\\'\\'\\'', end: '\\'\\'\\'',\n        contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n      },\n      {\n        begin: '\"\"\"', end: '\"\"\"',\n        contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n      },\n      {\n        begin: '\\'', end: '\\'',\n        illegal: '\\\\n',\n        contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n      },\n      {\n        begin: '\"', end: '\"',\n        illegal: '\\\\n',\n        contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n      }\n    ]\n  };\n  SUBST.contains = [\n    hljs.C_NUMBER_MODE, STRING\n  ];\n\n  var KEYWORDS = {\n    keyword: 'assert async await break case catch class const continue default do else enum extends false final ' +\n      'finally for if in is new null rethrow return super switch sync this throw true try var void while with yield ' +\n      'abstract as dynamic export external factory get implements import library operator part set static typedef',\n    built_in:\n      // dart:core\n      'print Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set ' +\n      'Stopwatch String StringBuffer StringSink Symbol Type Uri bool double int num ' +\n      // dart:html\n      'document window querySelector querySelectorAll Element ElementList'\n  };\n\n  return {\n    keywords: KEYWORDS,\n    contains: [\n      STRING,\n      hljs.COMMENT(\n        '/\\\\*\\\\*',\n        '\\\\*/',\n        {\n          subLanguage: 'markdown'\n        }\n      ),\n      hljs.COMMENT(\n        '///',\n        '$',\n        {\n          subLanguage: 'markdown'\n        }\n      ),\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'class',\n        beginKeywords: 'class interface', end: '{', excludeEnd: true,\n        contains: [\n          {\n            beginKeywords: 'extends implements'\n          },\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'meta', begin: '@[A-Za-z]+'\n      },\n      {\n        begin: '=>' // No markup, just a relevance booster\n      }\n    ]\n  }\n}\n\n},{name:\"delphi\",create:/*\nLanguage: Delphi\n*/\n\nfunction(hljs) {\n  var KEYWORDS =\n    'exports register file shl array record property for mod while set ally label uses raise not ' +\n    'stored class safecall var interface or private static exit index inherited to else stdcall ' +\n    'override shr asm far resourcestring finalization packed virtual out and protected library do ' +\n    'xorwrite goto near function end div overload object unit begin string on inline repeat until ' +\n    'destructor write message program with read initialization except default nil if case cdecl in ' +\n    'downto threadvar of try pascal const external constructor type public then implementation ' +\n    'finally published procedure';\n  var COMMENT_MODES = [\n    hljs.C_LINE_COMMENT_MODE,\n    hljs.COMMENT(\n      /\\{/,\n      /\\}/,\n      {\n        relevance: 0\n      }\n    ),\n    hljs.COMMENT(\n      /\\(\\*/,\n      /\\*\\)/,\n      {\n        relevance: 10\n      }\n    )\n  ];\n  var STRING = {\n    className: 'string',\n    begin: /'/, end: /'/,\n    contains: [{begin: /''/}]\n  };\n  var CHAR_STRING = {\n    className: 'string', begin: /(#\\d+)+/\n  };\n  var CLASS = {\n    begin: hljs.IDENT_RE + '\\\\s*=\\\\s*class\\\\s*\\\\(', returnBegin: true,\n    contains: [\n      hljs.TITLE_MODE\n    ]\n  };\n  var FUNCTION = {\n    className: 'function',\n    beginKeywords: 'function constructor destructor procedure', end: /[:;]/,\n    keywords: 'function constructor|10 destructor|10 procedure|10',\n    contains: [\n      hljs.TITLE_MODE,\n      {\n        className: 'params',\n        begin: /\\(/, end: /\\)/,\n        keywords: KEYWORDS,\n        contains: [STRING, CHAR_STRING]\n      }\n    ].concat(COMMENT_MODES)\n  };\n  return {\n    aliases: ['dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm'],\n    case_insensitive: true,\n    keywords: KEYWORDS,\n    illegal: /\"|\\$[G-Zg-z]|\\/\\*|<\\/|\\|/,\n    contains: [\n      STRING, CHAR_STRING,\n      hljs.NUMBER_MODE,\n      CLASS,\n      FUNCTION\n    ].concat(COMMENT_MODES)\n  };\n}\n},{name:\"diff\",create:/*\nLanguage: Diff\nDescription: Unified and context diff\nAuthor: Vasily Polovnyov <vast@whiteants.net>\nCategory: common\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['patch'],\n    contains: [\n      {\n        className: 'meta',\n        relevance: 10,\n        variants: [\n          {begin: /^@@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +@@$/},\n          {begin: /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/},\n          {begin: /^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$/}\n        ]\n      },\n      {\n        className: 'comment',\n        variants: [\n          {begin: /Index: /, end: /$/},\n          {begin: /={3,}/, end: /$/},\n          {begin: /^\\-{3}/, end: /$/},\n          {begin: /^\\*{3} /, end: /$/},\n          {begin: /^\\+{3}/, end: /$/},\n          {begin: /\\*{5}/, end: /\\*{5}$/}\n        ]\n      },\n      {\n        className: 'addition',\n        begin: '^\\\\+', end: '$'\n      },\n      {\n        className: 'deletion',\n        begin: '^\\\\-', end: '$'\n      },\n      {\n        className: 'addition',\n        begin: '^\\\\!', end: '$'\n      }\n    ]\n  };\n}\n},{name:\"django\",create:/*\nLanguage: Django\nRequires: xml.js\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nContributors: Ilya Baryshev <baryshev@gmail.com>\nCategory: template\n*/\n\nfunction(hljs) {\n  var FILTER = {\n    begin: /\\|[A-Za-z]+:?/,\n    keywords: {\n      name:\n        'truncatewords removetags linebreaksbr yesno get_digit timesince random striptags ' +\n        'filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands ' +\n        'title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode ' +\n        'timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort ' +\n        'dictsortreversed default_if_none pluralize lower join center default ' +\n        'truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first ' +\n        'escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize ' +\n        'localtime utc timezone'\n    },\n    contains: [\n      hljs.QUOTE_STRING_MODE,\n      hljs.APOS_STRING_MODE\n    ]\n  };\n\n  return {\n    aliases: ['jinja'],\n    case_insensitive: true,\n    subLanguage: 'xml',\n    contains: [\n      hljs.COMMENT(/\\{%\\s*comment\\s*%}/, /\\{%\\s*endcomment\\s*%}/),\n      hljs.COMMENT(/\\{#/, /#}/),\n      {\n        className: 'template-tag',\n        begin: /\\{%/, end: /%}/,\n        contains: [\n          {\n            className: 'name',\n            begin: /\\w+/,\n            keywords: {\n              name:\n                'comment endcomment load templatetag ifchanged endifchanged if endif firstof for ' +\n                'endfor ifnotequal endifnotequal widthratio extends include spaceless ' +\n                'endspaceless regroup ifequal endifequal ssi now with cycle url filter ' +\n                'endfilter debug block endblock else autoescape endautoescape csrf_token empty elif ' +\n                'endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix ' +\n                'plural get_current_language language get_available_languages ' +\n                'get_current_language_bidi get_language_info get_language_info_list localize ' +\n                'endlocalize localtime endlocaltime timezone endtimezone get_current_timezone ' +\n                'verbatim'\n            },\n            starts: {\n              endsWithParent: true,\n              keywords: 'in by as',\n              contains: [FILTER],\n              relevance: 0\n            }\n          }\n        ]\n      },\n      {\n        className: 'template-variable',\n        begin: /\\{\\{/, end: /}}/,\n        contains: [FILTER]\n      }\n    ]\n  };\n}\n},{name:\"dns\",create:/*\nLanguage: DNS Zone file\nAuthor: Tim Schumacher <tim@datenknoten.me>\nCategory: config\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['bind', 'zone'],\n    keywords: {\n      keyword:\n        'IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX ' +\n        'LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT'\n    },\n    contains: [\n      hljs.COMMENT(';', '$', {relevance: 0}),\n      {\n        className: 'meta',\n        begin: /^\\$(TTL|GENERATE|INCLUDE|ORIGIN)\\b/\n      },\n      // IPv6\n      {\n        className: 'number',\n        begin: '((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))\\\\b'\n      },\n      // IPv4\n      {\n        className: 'number',\n        begin: '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b'\n      },\n      hljs.inherit(hljs.NUMBER_MODE, {begin: /\\b\\d+[dhwm]?/})\n    ]\n  };\n}\n},{name:\"dockerfile\",create:/*\nLanguage: Dockerfile\nRequires: bash.js\nAuthor: Alexis Hénaut <alexis@henaut.net>\nDescription: language definition for Dockerfile files\nCategory: config\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['docker'],\n    case_insensitive: true,\n    keywords: 'from maintainer cmd expose add copy entrypoint volume user workdir onbuild run env label',\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      {\n        keywords: 'run cmd entrypoint volume add copy workdir onbuild label',\n        begin: /^ *(onbuild +)?(run|cmd|entrypoint|volume|add|copy|workdir|label) +/,\n        starts: {\n          end: /[^\\\\]\\n/,\n          subLanguage: 'bash'\n        }\n      },\n      {\n        keywords: 'from maintainer expose env user onbuild',\n        begin: /^ *(onbuild +)?(from|maintainer|expose|env|user|onbuild) +/, end: /[^\\\\]\\n/,\n        contains: [\n          hljs.APOS_STRING_MODE,\n          hljs.QUOTE_STRING_MODE,\n          hljs.NUMBER_MODE,\n          hljs.HASH_COMMENT_MODE\n        ]\n      }\n    ]\n  }\n}\n},{name:\"dos\",create:/*\nLanguage: DOS .bat\nAuthor: Alexander Makarov <sam@rmcreative.ru>\nContributors: Anton Kochkov <anton.kochkov@gmail.com>\n*/\n\nfunction(hljs) {\n  var COMMENT = hljs.COMMENT(\n    /^\\s*@?rem\\b/, /$/,\n    {\n      relevance: 10\n    }\n  );\n  var LABEL = {\n    className: 'symbol',\n    begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)',\n    relevance: 0\n  };\n  return {\n    aliases: ['bat', 'cmd'],\n    case_insensitive: true,\n    illegal: /\\/\\*/,\n    keywords: {\n      keyword:\n        'if else goto for in do call exit not exist errorlevel defined ' +\n        'equ neq lss leq gtr geq',\n      built_in:\n        'prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux ' +\n        'shift cd dir echo setlocal endlocal set pause copy ' +\n        'append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color ' +\n        'comp compact convert date dir diskcomp diskcopy doskey erase fs ' +\n        'find findstr format ftype graftabl help keyb label md mkdir mode more move path ' +\n        'pause print popd pushd promt rd recover rem rename replace restore rmdir shift' +\n        'sort start subst time title tree type ver verify vol ' +\n        // winutils\n        'ping net ipconfig taskkill xcopy ren del'\n    },\n    contains: [\n      {\n        className: 'variable', begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/\n      },\n      {\n        className: 'function',\n        begin: LABEL.begin, end: 'goto:eof',\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n          COMMENT\n        ]\n      },\n      {\n        className: 'number', begin: '\\\\b\\\\d+',\n        relevance: 0\n      },\n      COMMENT\n    ]\n  };\n}\n},{name:\"dsconfig\",create:/*\n Language: dsconfig\n Description: dsconfig batch configuration language for LDAP directory servers\n Contributors: Jacob Childress <jacobc@gmail.com>\n Category: enterprise, config\n */\nfunction(hljs) {\n  var QUOTED_PROPERTY = {\n    className: 'string',\n    begin: /\"/, end: /\"/\n  };\n  var APOS_PROPERTY = {\n    className: 'string',\n    begin: /'/, end: /'/\n  };\n  var UNQUOTED_PROPERTY = {\n    className: 'string',\n    begin: '[\\\\w-?]+:\\\\w+', end: '\\\\W',\n    relevance: 0\n  };\n  var VALUELESS_PROPERTY = {\n    className: 'string',\n    begin: '\\\\w+-?\\\\w+', end: '\\\\W',\n    relevance: 0\n  };\n\n  return {\n    keywords: 'dsconfig',\n    contains: [\n      {\n        className: 'keyword',\n        begin: '^dsconfig', end: '\\\\s', excludeEnd: true,\n        relevance: 10\n      },\n      {\n        className: 'built_in',\n        begin: '(list|create|get|set|delete)-(\\\\w+)', end: '\\\\s', excludeEnd: true,\n        illegal: '!@#$%^&*()',\n        relevance: 10\n      },\n      {\n        className: 'built_in',\n        begin: '--(\\\\w+)', end: '\\\\s', excludeEnd: true\n      },\n      QUOTED_PROPERTY,\n      APOS_PROPERTY,\n      UNQUOTED_PROPERTY,\n      VALUELESS_PROPERTY,\n      hljs.HASH_COMMENT_MODE\n    ]\n  };\n}\n},{name:\"dts\",create:/*\nLanguage: Device Tree\nDescription: *.dts files used in the Linux kernel\nAuthor: Martin Braun <martin.braun@ettus.com>, Moritz Fischer <moritz.fischer@ettus.com>\nCategory: config\n*/\n\nfunction(hljs) {\n  var STRINGS = {\n    className: 'string',\n    variants: [\n      hljs.inherit(hljs.QUOTE_STRING_MODE, { begin: '((u8?|U)|L)?\"' }),\n      {\n        begin: '(u8?|U)?R\"', end: '\"',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n      {\n        begin: '\\'\\\\\\\\?.', end: '\\'',\n        illegal: '.'\n      }\n    ]\n  };\n\n  var NUMBERS = {\n    className: 'number',\n    variants: [\n      { begin: '\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)(u|U|l|L|ul|UL|f|F)' },\n      { begin: hljs.C_NUMBER_RE }\n    ],\n    relevance: 0\n  };\n\n  var PREPROCESSOR = {\n    className: 'meta',\n    begin: '#', end: '$',\n    keywords: {'meta-keyword': 'if else elif endif define undef ifdef ifndef'},\n    contains: [\n      {\n        begin: /\\\\\\n/, relevance: 0\n      },\n      {\n        beginKeywords: 'include', end: '$',\n        keywords: {'meta-keyword': 'include'},\n        contains: [\n          hljs.inherit(STRINGS, {className: 'meta-string'}),\n          {\n            className: 'meta-string',\n            begin: '<', end: '>',\n            illegal: '\\\\n'\n          }\n        ]\n      },\n      STRINGS,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE\n    ]\n  };\n\n  var DTS_REFERENCE = {\n    className: 'variable',\n    begin: '\\\\&[a-z\\\\d_]*\\\\b'\n  };\n\n  var DTS_KEYWORD = {\n    className: 'meta-keyword',\n    begin: '/[a-z][a-z\\\\d-]*/'\n  };\n\n  var DTS_LABEL = {\n    className: 'symbol',\n    begin: '^\\\\s*[a-zA-Z_][a-zA-Z\\\\d_]*:'\n  };\n\n  var DTS_CELL_PROPERTY = {\n    className: 'params',\n    begin: '<',\n    end: '>',\n    contains: [\n      NUMBERS,\n      DTS_REFERENCE\n    ]\n  };\n\n  var DTS_NODE = {\n    className: 'class',\n    begin: /[a-zA-Z_][a-zA-Z\\d_@]*\\s{/,\n    end: /[{;=]/,\n    returnBegin: true,\n    excludeEnd: true\n  };\n\n  var DTS_ROOT_NODE = {\n    className: 'class',\n    begin: '/\\\\s*{',\n    end: '};',\n    relevance: 10,\n    contains: [\n      DTS_REFERENCE,\n      DTS_KEYWORD,\n      DTS_LABEL,\n      DTS_NODE,\n      DTS_CELL_PROPERTY,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      NUMBERS,\n      STRINGS\n    ]\n  };\n\n  return {\n    keywords: \"\",\n    contains: [\n      DTS_ROOT_NODE,\n      DTS_REFERENCE,\n      DTS_KEYWORD,\n      DTS_LABEL,\n      DTS_NODE,\n      DTS_CELL_PROPERTY,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      NUMBERS,\n      STRINGS,\n      PREPROCESSOR,\n      {\n        begin: hljs.IDENT_RE + '::',\n        keywords: \"\"\n      }\n    ]\n  };\n}\n\n},{name:\"dust\",create:/*\nLanguage: Dust\nRequires: xml.js\nAuthor: Michael Allen <michael.allen@benefitfocus.com>\nDescription: Matcher for dust.js templates.\nCategory: template\n*/\n\nfunction(hljs) {\n  var EXPRESSION_KEYWORDS = 'if eq ne lt lte gt gte select default math sep';\n  return {\n    aliases: ['dst'],\n    case_insensitive: true,\n    subLanguage: 'xml',\n    contains: [\n      {\n        className: 'template-tag',\n        begin: /\\{[#\\/]/, end: /\\}/, illegal: /;/,\n        contains: [\n          {\n            className: 'name',\n            begin: /[a-zA-Z\\.-]+/,\n            starts: {\n              endsWithParent: true, relevance: 0,\n              contains: [\n                hljs.QUOTE_STRING_MODE\n              ]\n            }\n          }\n        ]\n      },\n      {\n        className: 'template-variable',\n        begin: /\\{/, end: /\\}/, illegal: /;/,\n        keywords: EXPRESSION_KEYWORDS\n      }\n    ]\n  };\n}\n},{name:\"ebnf\",create:/*\nLanguage: Extended Backus-Naur Form\nAuthor: Alex McKibben <alex@nullscope.net>\n*/\n\nfunction(hljs) {\n    var commentMode = hljs.COMMENT(/\\(\\*/, /\\*\\)/);\n\n    var nonTerminalMode = {\n        className: \"attribute\",\n        begin: /^[ ]*[a-zA-Z][a-zA-Z-]*([\\s-]+[a-zA-Z][a-zA-Z]*)*/\n    };\n\n    var specialSequenceMode = {\n        className: \"meta\",\n        begin: /\\?.*\\?/\n    };\n\n    var ruleBodyMode = {\n        begin: /=/, end: /;/,\n        contains: [\n            commentMode,\n            specialSequenceMode,\n            // terminals\n            hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE\n        ]\n    };\n\n    return {\n        illegal: /\\S/,\n        contains: [\n            commentMode,\n            nonTerminalMode,\n            ruleBodyMode\n        ]\n    };\n}\n},{name:\"elixir\",create:/*\nLanguage: Elixir\nAuthor: Josh Adams <josh@isotope11.com>\nDescription: language definition for Elixir source code files (.ex and .exs).  Based on ruby language support.\nCategory: functional\n*/\n\nfunction(hljs) {\n  var ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_]*(\\\\!|\\\\?)?';\n  var ELIXIR_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n  var ELIXIR_KEYWORDS =\n    'and false then defined module in return redo retry end for true self when ' +\n    'next until do begin unless nil break not case cond alias while ensure or ' +\n    'include use alias fn quote';\n  var SUBST = {\n    className: 'subst',\n    begin: '#\\\\{', end: '}',\n    lexemes: ELIXIR_IDENT_RE,\n    keywords: ELIXIR_KEYWORDS\n  };\n  var STRING = {\n    className: 'string',\n    contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n    variants: [\n      {\n        begin: /'/, end: /'/\n      },\n      {\n        begin: /\"/, end: /\"/\n      }\n    ]\n  };\n  var FUNCTION = {\n    className: 'function',\n    beginKeywords: 'def defp defmacro', end: /\\B\\b/, // the mode is ended by the title\n    contains: [\n      hljs.inherit(hljs.TITLE_MODE, {\n        begin: ELIXIR_IDENT_RE,\n        endsParent: true\n      })\n    ]\n  };\n  var CLASS = hljs.inherit(FUNCTION, {\n    className: 'class',\n    beginKeywords: 'defimpl defmodule defprotocol defrecord', end: /\\bdo\\b|$|;/\n  });\n  var ELIXIR_DEFAULT_CONTAINS = [\n    STRING,\n    hljs.HASH_COMMENT_MODE,\n    CLASS,\n    FUNCTION,\n    {\n      className: 'symbol',\n      begin: ':(?!\\\\s)',\n      contains: [STRING, {begin: ELIXIR_METHOD_RE}],\n      relevance: 0\n    },\n    {\n      className: 'symbol',\n      begin: ELIXIR_IDENT_RE + ':',\n      relevance: 0\n    },\n    {\n      className: 'number',\n      begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n      relevance: 0\n    },\n    {\n      className: 'variable',\n      begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))'\n    },\n    {\n      begin: '->'\n    },\n    { // regexp container\n      begin: '(' + hljs.RE_STARTERS_RE + ')\\\\s*',\n      contains: [\n        hljs.HASH_COMMENT_MODE,\n        {\n          className: 'regexp',\n          illegal: '\\\\n',\n          contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n          variants: [\n            {\n              begin: '/', end: '/[a-z]*'\n            },\n            {\n              begin: '%r\\\\[', end: '\\\\][a-z]*'\n            }\n          ]\n        }\n      ],\n      relevance: 0\n    }\n  ];\n  SUBST.contains = ELIXIR_DEFAULT_CONTAINS;\n\n  return {\n    lexemes: ELIXIR_IDENT_RE,\n    keywords: ELIXIR_KEYWORDS,\n    contains: ELIXIR_DEFAULT_CONTAINS\n  };\n}\n},{name:\"elm\",create:/*\nLanguage: Elm\nAuthor: Janis Voigtlaender <janis.voigtlaender@gmail.com>\nCategory: functional\n*/\n\nfunction(hljs) {\n  var COMMENT = {\n    variants: [\n      hljs.COMMENT('--', '$'),\n      hljs.COMMENT(\n        '{-',\n        '-}',\n        {\n          contains: ['self']\n        }\n      )\n    ]\n  };\n\n  var CONSTRUCTOR = {\n    className: 'type',\n    begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (built-in, infix).\n    relevance: 0\n  };\n\n  var LIST = {\n    begin: '\\\\(', end: '\\\\)',\n    illegal: '\"',\n    contains: [\n      {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\n      COMMENT\n    ]\n  };\n\n  var RECORD = {\n    begin: '{', end: '}',\n    contains: LIST.contains\n  };\n\n  return {\n    keywords:\n      'let in if then else case of where module import exposing ' +\n      'type alias as infix infixl infixr port effect command subscription',\n    contains: [\n\n      // Top-level constructions.\n\n      {\n        beginKeywords: 'port effect module', end: 'exposing',\n        keywords: 'port effect module where command subscription exposing',\n        contains: [LIST, COMMENT],\n        illegal: '\\\\W\\\\.|;'\n      },\n      {\n        begin: 'import', end: '$',\n        keywords: 'import as exposing',\n        contains: [LIST, COMMENT],\n        illegal: '\\\\W\\\\.|;'\n      },\n      {\n        begin: 'type', end: '$',\n        keywords: 'type alias',\n        contains: [CONSTRUCTOR, LIST, RECORD, COMMENT]\n      },\n      {\n        beginKeywords: 'infix infixl infixr', end: '$',\n        contains: [hljs.C_NUMBER_MODE, COMMENT]\n      },\n      {\n        begin: 'port', end: '$',\n        keywords: 'port',\n        contains: [COMMENT]\n      },\n\n      // Literals and names.\n\n      // TODO: characters.\n      hljs.QUOTE_STRING_MODE,\n      hljs.C_NUMBER_MODE,\n      CONSTRUCTOR,\n      hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\n      COMMENT,\n\n      {begin: '->|<-'} // No markup, relevance booster\n    ]\n  };\n}\n},{name:\"erb\",create:/*\nLanguage: ERB (Embedded Ruby)\nRequires: xml.js, ruby.js\nAuthor: Lucas Mazza <lucastmazza@gmail.com>\nContributors: Kassio Borges <kassioborgesm@gmail.com>\nDescription: \"Bridge\" language defining fragments of Ruby in HTML within <% .. %>\nCategory: template\n*/\n\nfunction(hljs) {\n  return {\n    subLanguage: 'xml',\n    contains: [\n      hljs.COMMENT('<%#', '%>'),\n      {\n        begin: '<%[%=-]?', end: '[%-]?%>',\n        subLanguage: 'ruby',\n        excludeBegin: true,\n        excludeEnd: true\n      }\n    ]\n  };\n}\n},{name:\"erlang-repl\",create:/*\n Language: Erlang REPL\n Author: Sergey Ignatov <sergey@ignatov.spb.su>\nCategory: functional\n */\n\nfunction(hljs) {\n  return {\n    keywords: {\n      built_in:\n        'spawn spawn_link self',\n      keyword:\n        'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if ' +\n        'let not of or orelse|10 query receive rem try when xor'\n    },\n    contains: [\n      {\n        className: 'meta', begin: '^[0-9]+> ',\n        relevance: 10\n      },\n      hljs.COMMENT('%', '$'),\n      {\n        className: 'number',\n        begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\n        relevance: 0\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        begin: '\\\\?(::)?([A-Z]\\\\w*(::)?)+'\n      },\n      {\n        begin: '->'\n      },\n      {\n        begin: 'ok'\n      },\n      {\n        begin: '!'\n      },\n      {\n        begin: '(\\\\b[a-z\\'][a-zA-Z0-9_\\']*:[a-z\\'][a-zA-Z0-9_\\']*)|(\\\\b[a-z\\'][a-zA-Z0-9_\\']*)',\n        relevance: 0\n      },\n      {\n        begin: '[A-Z][a-zA-Z0-9_\\']*',\n        relevance: 0\n      }\n    ]\n  };\n}\n},{name:\"erlang\",create:/*\nLanguage: Erlang\nDescription: Erlang is a general-purpose functional language, with strict evaluation, single assignment, and dynamic typing.\nAuthor: Nikolay Zakharov <nikolay.desh@gmail.com>, Dmitry Kovega <arhibot@gmail.com>\nCategory: functional\n*/\n\nfunction(hljs) {\n  var BASIC_ATOM_RE = '[a-z\\'][a-zA-Z0-9_\\']*';\n  var FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')';\n  var ERLANG_RESERVED = {\n    keyword:\n      'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if ' +\n      'let not of orelse|10 query receive rem try when xor',\n    literal:\n      'false true'\n  };\n\n  var COMMENT = hljs.COMMENT('%', '$');\n  var NUMBER = {\n    className: 'number',\n    begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\n    relevance: 0\n  };\n  var NAMED_FUN = {\n    begin: 'fun\\\\s+' + BASIC_ATOM_RE + '/\\\\d+'\n  };\n  var FUNCTION_CALL = {\n    begin: FUNCTION_NAME_RE + '\\\\(', end: '\\\\)',\n    returnBegin: true,\n    relevance: 0,\n    contains: [\n      {\n        begin: FUNCTION_NAME_RE, relevance: 0\n      },\n      {\n        begin: '\\\\(', end: '\\\\)', endsWithParent: true,\n        returnEnd: true,\n        relevance: 0\n        // \"contains\" defined later\n      }\n    ]\n  };\n  var TUPLE = {\n    begin: '{', end: '}',\n    relevance: 0\n    // \"contains\" defined later\n  };\n  var VAR1 = {\n    begin: '\\\\b_([A-Z][A-Za-z0-9_]*)?',\n    relevance: 0\n  };\n  var VAR2 = {\n    begin: '[A-Z][a-zA-Z0-9_]*',\n    relevance: 0\n  };\n  var RECORD_ACCESS = {\n    begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n    relevance: 0,\n    returnBegin: true,\n    contains: [\n      {\n        begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n        relevance: 0\n      },\n      {\n        begin: '{', end: '}',\n        relevance: 0\n        // \"contains\" defined later\n      }\n    ]\n  };\n\n  var BLOCK_STATEMENTS = {\n    beginKeywords: 'fun receive if try case', end: 'end',\n    keywords: ERLANG_RESERVED\n  };\n  BLOCK_STATEMENTS.contains = [\n    COMMENT,\n    NAMED_FUN,\n    hljs.inherit(hljs.APOS_STRING_MODE, {className: ''}),\n    BLOCK_STATEMENTS,\n    FUNCTION_CALL,\n    hljs.QUOTE_STRING_MODE,\n    NUMBER,\n    TUPLE,\n    VAR1, VAR2,\n    RECORD_ACCESS\n  ];\n\n  var BASIC_MODES = [\n    COMMENT,\n    NAMED_FUN,\n    BLOCK_STATEMENTS,\n    FUNCTION_CALL,\n    hljs.QUOTE_STRING_MODE,\n    NUMBER,\n    TUPLE,\n    VAR1, VAR2,\n    RECORD_ACCESS\n  ];\n  FUNCTION_CALL.contains[1].contains = BASIC_MODES;\n  TUPLE.contains = BASIC_MODES;\n  RECORD_ACCESS.contains[1].contains = BASIC_MODES;\n\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\(', end: '\\\\)',\n    contains: BASIC_MODES\n  };\n  return {\n    aliases: ['erl'],\n    keywords: ERLANG_RESERVED,\n    illegal: '(</|\\\\*=|\\\\+=|-=|/\\\\*|\\\\*/|\\\\(\\\\*|\\\\*\\\\))',\n    contains: [\n      {\n        className: 'function',\n        begin: '^' + BASIC_ATOM_RE + '\\\\s*\\\\(', end: '->',\n        returnBegin: true,\n        illegal: '\\\\(|#|//|/\\\\*|\\\\\\\\|:|;',\n        contains: [\n          PARAMS,\n          hljs.inherit(hljs.TITLE_MODE, {begin: BASIC_ATOM_RE})\n        ],\n        starts: {\n          end: ';|\\\\.',\n          keywords: ERLANG_RESERVED,\n          contains: BASIC_MODES\n        }\n      },\n      COMMENT,\n      {\n        begin: '^-', end: '\\\\.',\n        relevance: 0,\n        excludeEnd: true,\n        returnBegin: true,\n        lexemes: '-' + hljs.IDENT_RE,\n        keywords:\n          '-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn ' +\n          '-import -include -include_lib -compile -define -else -endif -file -behaviour ' +\n          '-behavior -spec',\n        contains: [PARAMS]\n      },\n      NUMBER,\n      hljs.QUOTE_STRING_MODE,\n      RECORD_ACCESS,\n      VAR1, VAR2,\n      TUPLE,\n      {begin: /\\.$/} // relevance booster\n    ]\n  };\n}\n},{name:\"excel\",create:/*\nLanguage: Excel\nAuthor: Victor Zhou <OiCMudkips@users.noreply.github.com>\nDescription: Excel formulae\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['xlsx', 'xls'],\n    case_insensitive: true,\n    lexemes: /[a-zA-Z][\\w\\.]*/,\n    // built-in functions imported from https://web.archive.org/web/20160513042710/https://support.office.com/en-us/article/Excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188\n    keywords: {\n        built_in: 'ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF|0 IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST'\n    },\n    contains: [\n      {\n        /* matches a beginning equal sign found in Excel formula examples */ \n        begin: /^=/,\n        end: /[^=]/, returnEnd: true, illegal: /=/, /* only allow single equal sign at front of line */\n        relevance: 10\n      },\n      /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */\n      {\n        /* matches a reference to a single cell */\n        className: 'symbol',\n        begin: /\\b[A-Z]{1,2}\\d+\\b/,\n        end: /[^\\d]/, excludeEnd: true,\n        relevance: 0\n      },\n      {\n        /* matches a reference to a range of cells */\n        className: 'symbol',\n        begin: /[A-Z]{0,2}\\d*:[A-Z]{0,2}\\d*/,\n        relevance: 0\n      },\n      hljs.BACKSLASH_ESCAPE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'number',\n        begin: hljs.NUMBER_RE + '(%)?',\n        relevance: 0\n      },\n      /* Excel formula comments are done by putting the comment in a function call to N() */\n      hljs.COMMENT(/\\bN\\(/,/\\)/,\n      {\n        excludeBegin: true,\n        excludeEnd: true,\n        illegal: /\\n/\n      })\n    ]\n  };\n}\n},{name:\"fix\",create:/*\nLanguage: FIX\nAuthor: Brent Bradbury <brent@brentium.com>\n*/\n\nfunction(hljs) {\n  return {\n    contains: [\n    {\n      begin: /[^\\u2401\\u0001]+/,\n      end: /[\\u2401\\u0001]/,\n      excludeEnd: true,\n      returnBegin: true,\n      returnEnd: false,\n      contains: [\n      {\n        begin: /([^\\u2401\\u0001=]+)/,\n        end: /=([^\\u2401\\u0001=]+)/,\n        returnEnd: true,\n        returnBegin: false,\n        className: 'attr'\n      },\n      {\n        begin: /=/,\n        end: /([\\u2401\\u0001])/,\n        excludeEnd: true,\n        excludeBegin: true,\n        className: 'string'\n      }]\n    }],\n    case_insensitive: true\n  };\n}\n},{name:\"fortran\",create:/*\nLanguage: Fortran\nAuthor: Anthony Scemama <scemama@irsamc.ups-tlse.fr>\nCategory: scientific\n*/\n\nfunction(hljs) {\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\(', end: '\\\\)'\n  };\n\n  var F_KEYWORDS = {\n    literal: '.False. .True.',\n    keyword: 'kind do while private call intrinsic where elsewhere ' +\n      'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n      'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n      'goto save else use module select case ' +\n      'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n      'continue format pause cycle exit ' +\n      'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n      'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n      'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n      'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n      'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n      'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n      'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated  c_f_pointer ' +\n      'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n      'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n      'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n      'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n      'integer real character complex logical dimension allocatable|10 parameter ' +\n      'external implicit|10 none double precision assign intent optional pointer ' +\n      'target in out common equivalence data',\n    built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n      'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n      'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n      'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n      'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n      'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n      'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n      'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n      'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n      'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n      'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n      'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n      'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n      'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of'  +\n      'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n      'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n      'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n      'num_images parity popcnt poppar shifta shiftl shiftr this_image'\n  };\n  return {\n    case_insensitive: true,\n    aliases: ['f90', 'f95'],\n    keywords: F_KEYWORDS,\n    illegal: /\\/\\*/,\n    contains: [\n      hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\n      {\n        className: 'function',\n        beginKeywords: 'subroutine function program',\n        illegal: '[${=\\\\n]',\n        contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n      },\n      hljs.COMMENT('!', '$', {relevance: 0}),\n      {\n        className: 'number',\n        begin: '(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',\n        relevance: 0\n      }\n    ]\n  };\n}\n},{name:\"fsharp\",create:/*\nLanguage: F#\nAuthor: Jonas Follesø <jonas@follesoe.no>\nContributors: Troy Kershaw <hello@troykershaw.com>, Henrik Feldt <henrik@haf.se>\nCategory: functional\n*/\nfunction(hljs) {\n  var TYPEPARAM = {\n    begin: '<', end: '>',\n    contains: [\n      hljs.inherit(hljs.TITLE_MODE, {begin: /'[a-zA-Z0-9_]+/})\n    ]\n  };\n\n  return {\n    aliases: ['fs'],\n    keywords:\n      'abstract and as assert base begin class default delegate do done ' +\n      'downcast downto elif else end exception extern false finally for ' +\n      'fun function global if in inherit inline interface internal lazy let ' +\n      'match member module mutable namespace new null of open or ' +\n      'override private public rec return sig static struct then to ' +\n      'true try type upcast use val void when while with yield',\n    illegal: /\\/\\*/,\n    contains: [\n      {\n        // monad builder keywords (matches before non-bang kws)\n        className: 'keyword',\n        begin: /\\b(yield|return|let|do)!/\n      },\n      {\n        className: 'string',\n        begin: '@\"', end: '\"',\n        contains: [{begin: '\"\"'}]\n      },\n      {\n        className: 'string',\n        begin: '\"\"\"', end: '\"\"\"'\n      },\n      hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n      {\n        className: 'class',\n        beginKeywords: 'type', end: '\\\\(|=|$', excludeEnd: true,\n        contains: [\n          hljs.UNDERSCORE_TITLE_MODE,\n          TYPEPARAM\n        ]\n      },\n      {\n        className: 'meta',\n        begin: '\\\\[<', end: '>\\\\]',\n        relevance: 10\n      },\n      {\n        className: 'symbol',\n        begin: '\\\\B(\\'[A-Za-z])\\\\b',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n      hljs.C_NUMBER_MODE\n    ]\n  };\n}\n},{name:\"gams\",create:\n/*\n Language: GAMS\n Author: Stefan Bechert <stefan.bechert@gmx.net>\n Contributors: Oleg Efimov <efimovov@gmail.com>, Mikko Kouhia <mikko.kouhia@iki.fi>\n Description: The General Algebraic Modeling System language\n Category: scientific\n */\n\nfunction (hljs) {\n  var KEYWORDS = {\n    'keyword':\n      'abort acronym acronyms alias all and assign binary card diag display ' +\n      'else eq file files for free ge gt if integer le loop lt maximizing ' +\n      'minimizing model models ne negative no not option options or ord ' +\n      'positive prod put putpage puttl repeat sameas semicont semiint smax ' +\n      'smin solve sos1 sos2 sum system table then until using while xor yes',\n    'literal': 'eps inf na',\n    'built-in':\n      'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' +\n      'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' +\n      'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' +\n      'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' +\n      'randBinomial randLinear randTriangle round rPower sigmoid sign ' +\n      'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' +\n      'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' +\n      'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' +\n      'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' +\n      'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' +\n      'handleCollect handleDelete handleStatus handleSubmit heapFree ' +\n      'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' +\n      'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' +\n      'timeElapsed timeExec timeStart'\n  };\n  var PARAMS = {\n    className: 'params',\n    begin: /\\(/, end: /\\)/,\n    excludeBegin: true,\n    excludeEnd: true,\n  };\n  var SYMBOLS = {\n    className: 'symbol',\n    variants: [\n      {begin: /\\=[lgenxc]=/},\n      {begin: /\\$/},\n    ]\n  };\n  var QSTR = { // One-line quoted comment string\n    className: 'comment',\n    variants: [\n      {begin: '\\'', end: '\\''},\n      {begin: '\"', end: '\"'},\n    ],\n    illegal: '\\\\n',\n    contains: [hljs.BACKSLASH_ESCAPE]\n  };\n  var ASSIGNMENT = {\n    begin: '/',\n    end: '/',\n    keywords: KEYWORDS,\n    contains: [\n      QSTR,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.C_NUMBER_MODE,\n    ],\n  };\n  var DESCTEXT = { // Parameter/set/variable description text\n    begin: /[a-z][a-z0-9_]*(\\([a-z0-9_, ]*\\))?[ \\t]+/,\n    excludeBegin: true,\n    end: '$',\n    endsWithParent: true,\n    contains: [\n      QSTR,\n      ASSIGNMENT,\n      {\n        className: 'comment',\n        begin: /([ ]*[a-z0-9&#*=?@>\\\\<:\\-,()$\\[\\]_.{}!+%^]+)+/,\n        relevance: 0\n      },\n    ],\n  };\n\n  return {\n    aliases: ['gms'],\n    case_insensitive: true,\n    keywords: KEYWORDS,\n    contains: [\n      hljs.COMMENT(/^\\$ontext/, /^\\$offtext/),\n      {\n        className: 'meta',\n        begin: '^\\\\$[a-z0-9]+',\n        end: '$',\n        returnBegin: true,\n        contains: [\n          {\n            className: 'meta-keyword',\n            begin: '^\\\\$[a-z0-9]+',\n          }\n        ]\n      },\n      hljs.COMMENT('^\\\\*', '$'),\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.APOS_STRING_MODE,\n      // Declarations\n      {\n        beginKeywords:\n          'set sets parameter parameters variable variables ' +\n          'scalar scalars equation equations',\n        end: ';',\n        contains: [\n          hljs.COMMENT('^\\\\*', '$'),\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          hljs.QUOTE_STRING_MODE,\n          hljs.APOS_STRING_MODE,\n          ASSIGNMENT,\n          DESCTEXT,\n        ]\n      },\n      { // table environment\n        beginKeywords: 'table',\n        end: ';',\n        returnBegin: true,\n        contains: [\n          { // table header row\n            beginKeywords: 'table',\n            end: '$',\n            contains: [DESCTEXT],\n          },\n          hljs.COMMENT('^\\\\*', '$'),\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          hljs.QUOTE_STRING_MODE,\n          hljs.APOS_STRING_MODE,\n          hljs.C_NUMBER_MODE,\n          // Table does not contain DESCTEXT or ASSIGNMENT\n        ]\n      },\n      // Function definitions\n      {\n        className: 'function',\n        begin: /^[a-z][a-z0-9_,\\-+' ()$]+\\.{2}/,\n        returnBegin: true,\n        contains: [\n              { // Function title\n                className: 'title',\n                begin: /^[a-z][a-z0-9_]+/,\n              },\n              PARAMS,\n              SYMBOLS,\n            ],\n      },\n      hljs.C_NUMBER_MODE,\n      SYMBOLS,\n    ]\n  };\n}\n},{name:\"gauss\",create:/*\nLanguage: GAUSS\nAuthor: Matt Evans <matt@aptech.com>\nCategory: scientific\nDescription: GAUSS Mathematical and Statistical language\n*/\nfunction(hljs) {\n  var KEYWORDS = {\n    keyword: 'and bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' +\n              'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' +\n              'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' +\n              'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' +\n              'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' +\n              'matrix msym ndpclex new not open or output outwidth plot plotsym pop prcsn print ' +\n              'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' +\n              'scroll setarray show sparse stop string struct system trace trap threadfor ' +\n              'threadendfor threadbegin threadjoin threadstat threadend until use while winprint',\n    built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' +\n              'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' +\n              'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' +\n              'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' +\n              'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' +\n              'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' +\n              'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' +\n              'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' +\n              'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' +\n              'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' +\n              'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' +\n              'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' +\n              'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' +\n              'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' +\n              'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' +\n              'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' +\n              'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' +\n              'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' +\n              'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' +\n              'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' +\n              'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' +\n              'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' +\n              'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' +\n              'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' +\n              'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' +\n              'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' +\n              'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' +\n              'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' +\n              'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' +\n              'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' +\n              'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' +\n              'EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq ' +\n              'feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt ' +\n              'floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC ' +\n              'gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders ' +\n              'gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse ' +\n              'gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray ' +\n              'getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders ' +\n              'getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT ' +\n              'gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm ' +\n              'hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 ' +\n              'indicesf indicesfn indnv indsav indx integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 ' +\n              'inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf ' +\n              'isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv ' +\n              'lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn ' +\n              'lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind ' +\n              'loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars ' +\n              'makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli ' +\n              'mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave ' +\n              'movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate ' +\n              'olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto ' +\n              'pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox ' +\n              'plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea ' +\n              'plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout ' +\n              'plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill ' +\n              'plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol ' +\n              'plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange ' +\n              'plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel ' +\n              'plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot ' +\n              'pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames ' +\n              'pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector ' +\n              'pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate ' +\n              'qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr ' +\n              'real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn ' +\n              'rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel ' +\n              'rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn ' +\n              'rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh ' +\n              'rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind ' +\n              'scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa ' +\n              'setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind ' +\n              'sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL ' +\n              'spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense ' +\n              'spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet ' +\n              'sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt ' +\n              'strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr ' +\n              'surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname threadBegin threadEnd threadEndFor threadFor ' +\n              'threadJoin threadStat time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk ' +\n              'trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt ' +\n              'utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs ' +\n              'vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window ' +\n              'writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM ' +\n              'xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics',\n    literal: 'DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS ' +\n             'DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 ' +\n             'DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS ' +\n             'DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES ' +\n             'DB_TRANSACTIONS DB_UNICODE DB_VIEWS'\n  };\n\n  var PREPROCESSOR =\n  {\n    className: 'meta',\n    begin: '#', end: '$',\n    keywords: {'meta-keyword': 'define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline'},\n    contains: [\n      {\n        begin: /\\\\\\n/, relevance: 0\n      },\n      {\n        beginKeywords: 'include', end: '$',\n        keywords: {'meta-keyword': 'include'},\n        contains: [\n          {\n            className: 'meta-string',\n            begin: '\"', end: '\"',\n            illegal: '\\\\n'\n          }\n        ]\n      },\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE\n    ]\n  };\n\n  var FUNCTION_TITLE = hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(?';\n  var PARSE_PARAMS = [\n    {\n      className: 'params',\n      begin: /\\(/, end: /\\)/,\n      keywords: KEYWORDS,\n      relevance: 0,\n      contains: [\n        hljs.C_NUMBER_MODE,\n        hljs.C_LINE_COMMENT_MODE,\n        hljs.C_BLOCK_COMMENT_MODE\n      ]\n    }\n  ];\n\n  return {\n    aliases: ['gss'],\n    case_insensitive: true, // language is case-insensitive\n    keywords: KEYWORDS,\n    illegal: '(\\\\{[%#]|[%#]\\\\})',\n    contains: [\n      hljs.C_NUMBER_MODE,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.COMMENT('@', '@'),\n      PREPROCESSOR,\n      {\n        className: 'string',\n        begin: '\"', end: '\"',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n      {\n        className: 'function',\n        beginKeywords: 'proc keyword',\n        end: ';',\n        excludeEnd: true,\n        keywords: KEYWORDS,\n        contains: [\n          {\n            begin: FUNCTION_TITLE, returnBegin: true,\n            contains: [hljs.UNDERSCORE_TITLE_MODE],\n            relevance: 0\n          },\n          hljs.C_NUMBER_MODE,\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          PREPROCESSOR\n        ].concat(PARSE_PARAMS)\n      },\n      {\n        className: 'function',\n        beginKeywords: 'fn',\n        end: ';',\n        excludeEnd: true,\n        keywords: KEYWORDS,\n        contains: [\n          {\n            begin: FUNCTION_TITLE + hljs.IDENT_RE + '\\\\)?\\\\s*\\\\=\\\\s*', returnBegin: true,\n            contains: [hljs.UNDERSCORE_TITLE_MODE],\n            relevance: 0\n          },\n          hljs.C_NUMBER_MODE,\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE\n        ].concat(PARSE_PARAMS)\n      },\n      {\n        className: 'function',\n        begin: '\\\\bexternal (proc|keyword|fn)\\\\s+',\n        end: ';',\n        excludeEnd: true,\n        keywords: KEYWORDS,\n        contains: [\n          {\n            begin: FUNCTION_TITLE, returnBegin: true,\n            contains: [hljs.UNDERSCORE_TITLE_MODE],\n            relevance: 0\n          },\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE\n        ]\n      },\n      {\n        className: 'function',\n        begin: '\\\\bexternal (matrix|string|array|sparse matrix|struct ' + hljs.IDENT_RE + ')\\\\s+',\n        end: ';',\n        excludeEnd: true,\n        keywords: KEYWORDS,\n        contains: [\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE\n        ]\n      }\n    ]\n  };\n}\n},{name:\"gcode\",create:/*\n Language: G-code (ISO 6983)\n Contributors: Adam Joseph Cook <adam.joseph.cook@gmail.com>\n Description: G-code syntax highlighter for Fanuc and other common CNC machine tool controls.\n */\n\nfunction(hljs) {\n    var GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n    var GCODE_CLOSE_RE = '\\\\%';\n    var GCODE_KEYWORDS =\n      'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +\n      'EQ LT GT NE GE LE OR XOR';\n    var GCODE_START = {\n        className: 'meta',\n        begin: '([O])([0-9]+)'\n    };\n    var GCODE_CODE = [\n        hljs.C_LINE_COMMENT_MODE,\n        hljs.C_BLOCK_COMMENT_MODE,\n        hljs.COMMENT(/\\(/, /\\)/),\n        hljs.inherit(hljs.C_NUMBER_MODE, {begin: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))|' + hljs.C_NUMBER_RE}),\n        hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n        hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n        {\n            className: 'name',\n            begin: '([G])([0-9]+\\\\.?[0-9]?)'\n        },\n        {\n            className: 'name',\n            begin: '([M])([0-9]+\\\\.?[0-9]?)'\n        },\n        {\n            className: 'attr',\n            begin: '(VC|VS|#)',\n            end: '(\\\\d+)'\n        },\n        {\n            className: 'attr',\n            begin: '(VZOFX|VZOFY|VZOFZ)'\n        },\n        {\n            className: 'built_in',\n            begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\\\[)',\n            end: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))(\\\\])'\n        },\n        {\n            className: 'symbol',\n            variants: [\n                {\n                    begin: 'N', end: '\\\\d+',\n                    illegal: '\\\\W'\n                }\n            ]\n        }\n    ];\n\n    return {\n        aliases: ['nc'],\n        // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.\n        // However, most prefer all uppercase and uppercase is customary.\n        case_insensitive: true,\n        lexemes: GCODE_IDENT_RE,\n        keywords: GCODE_KEYWORDS,\n        contains: [\n            {\n                className: 'meta',\n                begin: GCODE_CLOSE_RE\n            },\n            GCODE_START\n        ].concat(GCODE_CODE)\n    };\n}\n},{name:\"gherkin\",create:/*\n Language: Gherkin\n Author: Sam Pikesley (@pikesley) <sam.pikesley@theodi.org>\n Description: Gherkin (Cucumber etc)\n */\n\nfunction (hljs) {\n  return {\n    aliases: ['feature'],\n    keywords: 'Feature Background Ability Business\\ Need Scenario Scenarios Scenario\\ Outline Scenario\\ Template Examples Given And Then But When',\n    contains: [\n      {\n        className: 'symbol',\n        begin: '\\\\*',\n        relevance: 0\n      },\n      {\n        className: 'meta',\n        begin: '@[^@\\\\s]+'\n      },\n      {\n        begin: '\\\\|', end: '\\\\|\\\\w*$',\n        contains: [\n          {\n            className: 'string',\n            begin: '[^|]+'\n          }\n        ]\n      },\n      {\n        className: 'variable',\n        begin: '<', end: '>'\n      },\n      hljs.HASH_COMMENT_MODE,\n      {\n        className: 'string',\n        begin: '\"\"\"', end: '\"\"\"'\n      },\n      hljs.QUOTE_STRING_MODE\n    ]\n  };\n}\n},{name:\"glsl\",create:/*\nLanguage: GLSL\nDescription: OpenGL Shading Language\nAuthor: Sergey Tikhomirov <sergey@tikhomirov.io>\nCategory: graphics\n*/\n\nfunction(hljs) {\n  return {\n    keywords: {\n      keyword:\n        // Statements\n        'break continue discard do else for if return while' +\n        // Qualifiers\n        'attribute binding buffer ccw centroid centroid varying coherent column_major const cw ' +\n        'depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing ' +\n        'flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant ' +\n        'invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y ' +\n        'local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left ' +\n        'out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f '+\n        'r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict ' +\n        'rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 ' +\n        'rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 ' +\n        'rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip ' +\n        'triangles triangles_adjacency uniform varying vertices volatile writeonly',\n      type:\n        'atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 ' +\n        'dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray ' +\n        'iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer' +\n        'iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray ' +\n        'image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray ' +\n        'isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D ' +\n        'isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 ' +\n        'mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray ' +\n        'sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow ' +\n        'sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D ' +\n        'samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow ' +\n        'image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect ' +\n        'uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray ' +\n        'usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D ' +\n        'samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void',\n      built_in:\n        // Constants\n        'gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes ' +\n        'gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms ' +\n        'gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers ' +\n        'gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits ' +\n        'gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize ' +\n        'gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters ' +\n        'gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors ' +\n        'gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers ' +\n        'gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents ' +\n        'gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits ' +\n        'gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents ' +\n        'gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset ' +\n        'gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms ' +\n        'gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits ' +\n        'gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents ' +\n        'gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters ' +\n        'gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents ' +\n        'gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents ' +\n        'gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits ' +\n        'gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors ' +\n        'gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms ' +\n        'gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits ' +\n        'gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset ' +\n        // Variables\n        'gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial ' +\n        'gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color ' +\n        'gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord ' +\n        'gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor ' +\n        'gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial ' +\n        'gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel ' +\n        'gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix ' +\n        'gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose ' +\n        'gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose ' +\n        'gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 ' +\n        'gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 ' +\n        'gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ ' +\n        'gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord ' +\n        'gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse ' +\n        'gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask ' +\n        'gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter ' +\n        'gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose ' +\n        'gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out ' +\n        // Functions\n        'EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin ' +\n        'asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement ' +\n        'atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier ' +\n        'bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross ' +\n        'dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB ' +\n        'floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan ' +\n        'greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap ' +\n        'imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad ' +\n        'imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset ' +\n        'interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log ' +\n        'log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer ' +\n        'memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 ' +\n        'normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 ' +\n        'packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod ' +\n        'shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh ' +\n        'smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod ' +\n        'texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod ' +\n        'texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod ' +\n        'textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset ' +\n        'textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset ' +\n        'textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod ' +\n        'textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 ' +\n        'unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow',\n      literal: 'true false'\n    },\n    illegal: '\"',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'meta',\n        begin: '#', end: '$'\n      }\n    ]\n  };\n}\n},{name:\"go\",create:/*\nLanguage: Go\nAuthor: Stephan Kountso aka StepLg <steplg@gmail.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>\nDescription: Google go language (golang). For info about language see http://golang.org/\nCategory: system\n*/\n\nfunction(hljs) {\n  var GO_KEYWORDS = {\n    keyword:\n      'break default func interface select case map struct chan else goto package switch ' +\n      'const fallthrough if range type continue for import return var go defer ' +\n      'bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 ' +\n      'uint16 uint32 uint64 int uint uintptr rune',\n    literal:\n       'true false iota nil',\n    built_in:\n      'append cap close complex copy imag len make new panic print println real recover delete'\n  };\n  return {\n    aliases: ['golang'],\n    keywords: GO_KEYWORDS,\n    illegal: '</',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'string',\n        variants: [\n          hljs.QUOTE_STRING_MODE,\n          {begin: '\\'', end: '[^\\\\\\\\]\\''},\n          {begin: '`', end: '`'},\n        ]\n      },\n      {\n        className: 'number',\n        variants: [\n          {begin: hljs.C_NUMBER_RE + '[dflsi]', relevance: 1},\n          hljs.C_NUMBER_MODE\n        ]\n      },\n      {\n        begin: /:=/ // relevance booster\n      },\n      {\n        className: 'function',\n        beginKeywords: 'func', end: /\\s*\\{/, excludeEnd: true,\n        contains: [\n          hljs.TITLE_MODE,\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            keywords: GO_KEYWORDS,\n            illegal: /[\"']/\n          }\n        ]\n      }\n    ]\n  };\n}\n},{name:\"golo\",create:/*\nLanguage: Golo\nAuthor: Philippe Charriere <ph.charriere@gmail.com>\nDescription: a lightweight dynamic language for the JVM, see http://golo-lang.org/\n*/\n\nfunction(hljs) {\n    return {\n      keywords: {\n        keyword:\n          'println readln print import module function local return let var ' +\n          'while for foreach times in case when match with break continue ' +\n          'augment augmentation each find filter reduce ' +\n          'if then else otherwise try catch finally raise throw orIfNull ' +\n          'DynamicObject|10 DynamicVariable struct Observable map set vector list array',\n        literal:\n          'true false null'\n      },\n      contains: [\n        hljs.HASH_COMMENT_MODE,\n        hljs.QUOTE_STRING_MODE,\n        hljs.C_NUMBER_MODE,\n        {\n          className: 'meta', begin: '@[A-Za-z]+'\n        }\n      ]\n    }\n}\n},{name:\"gradle\",create:/*\nLanguage: Gradle\nAuthor: Damian Mee <mee.damian@gmail.com>\nWebsite: http://meeDamian.com\n*/\n\nfunction(hljs) {\n  return {\n    case_insensitive: true,\n    keywords: {\n      keyword:\n        'task project allprojects subprojects artifacts buildscript configurations ' +\n        'dependencies repositories sourceSets description delete from into include ' +\n        'exclude source classpath destinationDir includes options sourceCompatibility ' +\n        'targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant ' +\n        'def abstract break case catch continue default do else extends final finally ' +\n        'for if implements instanceof native new private protected public return static ' +\n        'switch synchronized throw throws transient try volatile while strictfp package ' +\n        'import false null super this true antlrtask checkstyle codenarc copy boolean ' +\n        'byte char class double float int interface long short void compile runTime ' +\n        'file fileTree abs any append asList asWritable call collect compareTo count ' +\n        'div dump each eachByte eachFile eachLine every find findAll flatten getAt ' +\n        'getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods ' +\n        'isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter ' +\n        'newReader newWriter next plus pop power previous print println push putAt read ' +\n        'readBytes readLines reverse reverseEach round size sort splitEachLine step subMap ' +\n        'times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader ' +\n        'withStream withWriter withWriterAppend write writeLine'\n    },\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.NUMBER_MODE,\n      hljs.REGEXP_MODE\n\n    ]\n  }\n}\n},{name:\"groovy\",create:/*\n Language: Groovy\n Author: Guillaume Laforge <glaforge@gmail.com>\n Website: http://glaforge.appspot.com\n Description: Groovy programming language implementation inspired from Vsevolod's Java mode\n */\n\nfunction(hljs) {\n    return {\n        keywords: {\n            literal : 'true false null',\n            keyword:\n            'byte short char int long boolean float double void ' +\n            // groovy specific keywords\n            'def as in assert trait ' +\n            // common keywords with Java\n            'super this abstract static volatile transient public private protected synchronized final ' +\n            'class interface enum if else for while switch case break default continue ' +\n            'throw throws try catch finally implements extends new import package return instanceof'\n        },\n\n        contains: [\n            hljs.COMMENT(\n                '/\\\\*\\\\*',\n                '\\\\*/',\n                {\n                    relevance : 0,\n                    contains : [\n                      {\n                          // eat up @'s in emails to prevent them to be recognized as doctags\n                          begin: /\\w+@/, relevance: 0\n                      },\n                      {\n                          className : 'doctag',\n                          begin : '@[A-Za-z]+'\n                      }\n                    ]\n                }\n            ),\n            hljs.C_LINE_COMMENT_MODE,\n            hljs.C_BLOCK_COMMENT_MODE,\n            {\n                className: 'string',\n                begin: '\"\"\"', end: '\"\"\"'\n            },\n            {\n                className: 'string',\n                begin: \"'''\", end: \"'''\"\n            },\n            {\n                className: 'string',\n                begin: \"\\\\$/\", end: \"/\\\\$\",\n                relevance: 10\n            },\n            hljs.APOS_STRING_MODE,\n            {\n                className: 'regexp',\n                begin: /~?\\/[^\\/\\n]+\\//,\n                contains: [\n                    hljs.BACKSLASH_ESCAPE\n                ]\n            },\n            hljs.QUOTE_STRING_MODE,\n            {\n                className: 'meta',\n                begin: \"^#!/usr/bin/env\", end: '$',\n                illegal: '\\n'\n            },\n            hljs.BINARY_NUMBER_MODE,\n            {\n                className: 'class',\n                beginKeywords: 'class interface trait enum', end: '{',\n                illegal: ':',\n                contains: [\n                    {beginKeywords: 'extends implements'},\n                    hljs.UNDERSCORE_TITLE_MODE\n                ]\n            },\n            hljs.C_NUMBER_MODE,\n            {\n                className: 'meta', begin: '@[A-Za-z]+'\n            },\n            {\n                // highlight map keys and named parameters as strings\n                className: 'string', begin: /[^\\?]{0}[A-Za-z0-9_$]+ *:/\n            },\n            {\n                // catch middle element of the ternary operator\n                // to avoid highlight it as a label, named parameter, or map key\n                begin: /\\?/, end: /\\:/\n            },\n            {\n                // highlight labeled statements\n                className: 'symbol', begin: '^\\\\s*[A-Za-z0-9_$]+:',\n                relevance: 0\n            }\n        ],\n        illegal: /#|<\\//\n    }\n}\n},{name:\"haml\",create:/*\nLanguage: Haml\nRequires: ruby.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://google.com/profiles/dan.j.allen\nCategory: template\n*/\n\n// TODO support filter tags like :javascript, support inline HTML\nfunction(hljs) {\n  return {\n    case_insensitive: true,\n    contains: [\n      {\n        className: 'meta',\n        begin: '^!!!( (5|1\\\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\\\b.*))?$',\n        relevance: 10\n      },\n      // FIXME these comments should be allowed to span indented lines\n      hljs.COMMENT(\n        '^\\\\s*(!=#|=#|-#|/).*$',\n        false,\n        {\n          relevance: 0\n        }\n      ),\n      {\n        begin: '^\\\\s*(-|=|!=)(?!#)',\n        starts: {\n          end: '\\\\n',\n          subLanguage: 'ruby'\n        }\n      },\n      {\n        className: 'tag',\n        begin: '^\\\\s*%',\n        contains: [\n          {\n            className: 'selector-tag',\n            begin: '\\\\w+'\n          },\n          {\n            className: 'selector-id',\n            begin: '#[\\\\w-]+'\n          },\n          {\n            className: 'selector-class',\n            begin: '\\\\.[\\\\w-]+'\n          },\n          {\n            begin: '{\\\\s*',\n            end: '\\\\s*}',\n            contains: [\n              {\n                begin: ':\\\\w+\\\\s*=>',\n                end: ',\\\\s+',\n                returnBegin: true,\n                endsWithParent: true,\n                contains: [\n                  {\n                    className: 'attr',\n                    begin: ':\\\\w+'\n                  },\n                  hljs.APOS_STRING_MODE,\n                  hljs.QUOTE_STRING_MODE,\n                  {\n                    begin: '\\\\w+',\n                    relevance: 0\n                  }\n                ]\n              }\n            ]\n          },\n          {\n            begin: '\\\\(\\\\s*',\n            end: '\\\\s*\\\\)',\n            excludeEnd: true,\n            contains: [\n              {\n                begin: '\\\\w+\\\\s*=',\n                end: '\\\\s+',\n                returnBegin: true,\n                endsWithParent: true,\n                contains: [\n                  {\n                    className: 'attr',\n                    begin: '\\\\w+',\n                    relevance: 0\n                  },\n                  hljs.APOS_STRING_MODE,\n                  hljs.QUOTE_STRING_MODE,\n                  {\n                    begin: '\\\\w+',\n                    relevance: 0\n                  }\n                ]\n              }\n            ]\n          }\n        ]\n      },\n      {\n        begin: '^\\\\s*[=~]\\\\s*'\n      },\n      {\n        begin: '#{',\n        starts: {\n          end: '}',\n          subLanguage: 'ruby'\n        }\n      }\n    ]\n  };\n}\n},{name:\"handlebars\",create:/*\nLanguage: Handlebars\nRequires: xml.js\nAuthor: Robin Ward <robin.ward@gmail.com>\nDescription: Matcher for Handlebars as well as EmberJS additions.\nCategory: template\n*/\n\nfunction(hljs) {\n  var BUILT_INS = {'builtin-name': 'each in with if else unless bindattr action collection debugger log outlet template unbound view yield'};\n  return {\n    aliases: ['hbs', 'html.hbs', 'html.handlebars'],\n    case_insensitive: true,\n    subLanguage: 'xml',\n    contains: [\n    hljs.COMMENT('{{!(--)?', '(--)?}}'),\n      {\n        className: 'template-tag',\n        begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\n        contains: [\n          {\n            className: 'name',\n            begin: /[a-zA-Z\\.-]+/,\n            keywords: BUILT_INS,\n            starts: {\n              endsWithParent: true, relevance: 0,\n              contains: [\n                hljs.QUOTE_STRING_MODE\n              ]\n            }\n          }\n        ]\n      },\n      {\n        className: 'template-variable',\n        begin: /\\{\\{/, end: /\\}\\}/,\n        keywords: BUILT_INS\n      }\n    ]\n  };\n}\n},{name:\"haskell\",create:/*\nLanguage: Haskell\nAuthor: Jeremy Hull <sourdrums@gmail.com>\nContributors: Zena Treep <zena.treep@gmail.com>\nCategory: functional\n*/\n\nfunction(hljs) {\n  var COMMENT = {\n    variants: [\n      hljs.COMMENT('--', '$'),\n      hljs.COMMENT(\n        '{-',\n        '-}',\n        {\n          contains: ['self']\n        }\n      )\n    ]\n  };\n\n  var PRAGMA = {\n    className: 'meta',\n    begin: '{-#', end: '#-}'\n  };\n\n  var PREPROCESSOR = {\n    className: 'meta',\n    begin: '^#', end: '$'\n  };\n\n  var CONSTRUCTOR = {\n    className: 'type',\n    begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (build-in, infix).\n    relevance: 0\n  };\n\n  var LIST = {\n    begin: '\\\\(', end: '\\\\)',\n    illegal: '\"',\n    contains: [\n      PRAGMA,\n      PREPROCESSOR,\n      {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\n      hljs.inherit(hljs.TITLE_MODE, {begin: '[_a-z][\\\\w\\']*'}),\n      COMMENT\n    ]\n  };\n\n  var RECORD = {\n    begin: '{', end: '}',\n    contains: LIST.contains\n  };\n\n  return {\n    aliases: ['hs'],\n    keywords:\n      'let in if then else case of where do module import hiding ' +\n      'qualified type data newtype deriving class instance as default ' +\n      'infix infixl infixr foreign export ccall stdcall cplusplus ' +\n      'jvm dotnet safe unsafe family forall mdo proc rec',\n    contains: [\n\n      // Top-level constructions.\n\n      {\n        beginKeywords: 'module', end: 'where',\n        keywords: 'module where',\n        contains: [LIST, COMMENT],\n        illegal: '\\\\W\\\\.|;'\n      },\n      {\n        begin: '\\\\bimport\\\\b', end: '$',\n        keywords: 'import qualified as hiding',\n        contains: [LIST, COMMENT],\n        illegal: '\\\\W\\\\.|;'\n      },\n\n      {\n        className: 'class',\n        begin: '^(\\\\s*)?(class|instance)\\\\b', end: 'where',\n        keywords: 'class family instance where',\n        contains: [CONSTRUCTOR, LIST, COMMENT]\n      },\n      {\n        className: 'class',\n        begin: '\\\\b(data|(new)?type)\\\\b', end: '$',\n        keywords: 'data family type newtype deriving',\n        contains: [PRAGMA, CONSTRUCTOR, LIST, RECORD, COMMENT]\n      },\n      {\n        beginKeywords: 'default', end: '$',\n        contains: [CONSTRUCTOR, LIST, COMMENT]\n      },\n      {\n        beginKeywords: 'infix infixl infixr', end: '$',\n        contains: [hljs.C_NUMBER_MODE, COMMENT]\n      },\n      {\n        begin: '\\\\bforeign\\\\b', end: '$',\n        keywords: 'foreign import export ccall stdcall cplusplus jvm ' +\n                  'dotnet safe unsafe',\n        contains: [CONSTRUCTOR, hljs.QUOTE_STRING_MODE, COMMENT]\n      },\n      {\n        className: 'meta',\n        begin: '#!\\\\/usr\\\\/bin\\\\/env\\ runhaskell', end: '$'\n      },\n\n      // \"Whitespaces\".\n\n      PRAGMA,\n      PREPROCESSOR,\n\n      // Literals and names.\n\n      // TODO: characters.\n      hljs.QUOTE_STRING_MODE,\n      hljs.C_NUMBER_MODE,\n      CONSTRUCTOR,\n      hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\n\n      COMMENT,\n\n      {begin: '->|<-'} // No markup, relevance booster\n    ]\n  };\n}\n},{name:\"haxe\",create:/*\nLanguage: Haxe\nAuthor: Christopher Kaster <ikasoki@gmail.com> (Based on the actionscript.js language file by Alexander Myadzel)\n*/\n\nfunction(hljs) {\n  var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';\n  var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';\n\n  return {\n    aliases: ['hx'],\n    keywords: {\n      keyword: 'break callback case cast catch class continue default do dynamic else enum extends extern ' +\n    'for function here if implements import in inline interface never new override package private ' +\n    'public return static super switch this throw trace try typedef untyped using var while',\n      literal: 'true false null'\n    },\n    contains: [\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'class',\n        beginKeywords: 'class interface', end: '{', excludeEnd: true,\n        contains: [\n          {\n            beginKeywords: 'extends implements'\n          },\n          hljs.TITLE_MODE\n        ]\n      },\n      {\n        className: 'meta',\n        begin: '#', end: '$',\n        keywords: {'meta-keyword': 'if else elseif end error'}\n      },\n      {\n        className: 'function',\n        beginKeywords: 'function', end: '[{;]', excludeEnd: true,\n        illegal: '\\\\S',\n        contains: [\n          hljs.TITLE_MODE,\n          {\n            className: 'params',\n            begin: '\\\\(', end: '\\\\)',\n            contains: [\n              hljs.APOS_STRING_MODE,\n              hljs.QUOTE_STRING_MODE,\n              hljs.C_LINE_COMMENT_MODE,\n              hljs.C_BLOCK_COMMENT_MODE\n            ]\n          },\n          {\n            begin: ':\\\\s*' + IDENT_FUNC_RETURN_TYPE_RE\n          }\n        ]\n      }\n    ]\n  };\n}\n},{name:\"hsp\",create:/*\nLanguage: HSP\nAuthor: prince <MC.prince.0203@gmail.com>\nWebsite: http://prince.webcrow.jp/\nCategory: scripting\n*/\n\nfunction(hljs) {\n  return {\n    case_insensitive: true,\n    lexemes: /[\\w\\._]+/,\n    keywords: 'goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.APOS_STRING_MODE,\n\n      {\n        // multi-line string\n        className: 'string',\n        begin: '{\"', end: '\"}',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n\n      hljs.COMMENT(';', '$', {relevance: 0}),\n\n      {\n        // pre-processor\n        className: 'meta',\n        begin: '#', end: '$',\n        keywords: {'meta-keyword': 'addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib'},\n        contains: [\n          hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'}),\n          hljs.NUMBER_MODE,\n          hljs.C_NUMBER_MODE,\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE\n        ]\n      },\n\n      {\n        // label\n        className: 'symbol',\n        begin: '^\\\\*(\\\\w+|@)'\n      },\n\n      hljs.NUMBER_MODE,\n      hljs.C_NUMBER_MODE\n    ]\n  };\n}\n},{name:\"htmlbars\",create:/*\nLanguage: HTMLBars\nRequires: xml.js\nAuthor: Michael Johnston <lastobelus@gmail.com>\nDescription: Matcher for HTMLBars\nCategory: template\n*/\n\nfunction(hljs) {\n  var BUILT_INS = 'action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view';\n\n  var ATTR_ASSIGNMENT = {\n    illegal: /\\}\\}/,\n    begin: /[a-zA-Z0-9_]+=/,\n    returnBegin: true,\n    relevance: 0,\n    contains: [\n      {\n        className: 'attr', begin: /[a-zA-Z0-9_]+/\n      }\n    ]\n  };\n\n  var SUB_EXPR = {\n    illegal: /\\}\\}/,\n    begin: /\\)/, end: /\\)/,\n    contains: [\n      {\n        begin: /[a-zA-Z\\.\\-]+/,\n        keywords: {built_in: BUILT_INS},\n        starts: {\n          endsWithParent: true, relevance: 0,\n          contains: [\n            hljs.QUOTE_STRING_MODE,\n          ]\n        }\n      }\n    ]\n  };\n\n  var TAG_INNARDS = {\n    endsWithParent: true, relevance: 0,\n    keywords: {keyword: 'as', built_in: BUILT_INS},\n    contains: [\n      hljs.QUOTE_STRING_MODE,\n      ATTR_ASSIGNMENT,\n      hljs.NUMBER_MODE\n    ]\n  };\n\n  return {\n    case_insensitive: true,\n    subLanguage: 'xml',\n    contains: [\n      hljs.COMMENT('{{!(--)?', '(--)?}}'),\n      {\n        className: 'template-tag',\n        begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\n        contains: [\n          {\n            className: 'name',\n            begin: /[a-zA-Z\\.\\-]+/,\n            keywords: {'builtin-name': BUILT_INS},\n            starts: TAG_INNARDS\n          }\n        ]\n      },\n      {\n        className: 'template-variable',\n        begin: /\\{\\{[a-zA-Z][a-zA-Z\\-]+/, end: /\\}\\}/,\n        keywords: {keyword: 'as', built_in: BUILT_INS},\n        contains: [\n          hljs.QUOTE_STRING_MODE\n        ]\n      }\n    ]\n  };\n}\n},{name:\"http\",create:/*\nLanguage: HTTP\nDescription: HTTP request and response headers with automatic body highlighting\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nCategory: common, protocols\n*/\n\nfunction(hljs) {\n  var VERSION = 'HTTP/[0-9\\\\.]+';\n  return {\n    aliases: ['https'],\n    illegal: '\\\\S',\n    contains: [\n      {\n        begin: '^' + VERSION, end: '$',\n        contains: [{className: 'number', begin: '\\\\b\\\\d{3}\\\\b'}]\n      },\n      {\n        begin: '^[A-Z]+ (.*?) ' + VERSION + '$', returnBegin: true, end: '$',\n        contains: [\n          {\n            className: 'string',\n            begin: ' ', end: ' ',\n            excludeBegin: true, excludeEnd: true\n          },\n          {\n            begin: VERSION\n          },\n          {\n            className: 'keyword',\n            begin: '[A-Z]+'\n          }\n        ]\n      },\n      {\n        className: 'attribute',\n        begin: '^\\\\w', end: ': ', excludeEnd: true,\n        illegal: '\\\\n|\\\\s|=',\n        starts: {end: '$', relevance: 0}\n      },\n      {\n        begin: '\\\\n\\\\n',\n        starts: {subLanguage: [], endsWithParent: true}\n      }\n    ]\n  };\n}\n},{name:\"inform7\",create:/*\nLanguage: Inform 7\nAuthor: Bruno Dias <bruno.r.dias@gmail.com>\nDescription: Language definition for Inform 7, a DSL for writing parser interactive fiction.\n*/\n\nfunction(hljs) {\n  var START_BRACKET = '\\\\[';\n  var END_BRACKET = '\\\\]';\n  return {\n    aliases: ['i7'],\n    case_insensitive: true,\n    keywords: {\n      // Some keywords more or less unique to I7, for relevance.\n      keyword:\n        // kind:\n        'thing room person man woman animal container ' +\n        'supporter backdrop door ' +\n        // characteristic:\n        'scenery open closed locked inside gender ' +\n        // verb:\n        'is are say understand ' +\n        // misc keyword:\n        'kind of rule'\n    },\n    contains: [\n      {\n        className: 'string',\n        begin: '\"', end: '\"',\n        relevance: 0,\n        contains: [\n          {\n            className: 'subst',\n            begin: START_BRACKET, end: END_BRACKET\n          }\n        ]\n      },\n      {\n        className: 'section',\n        begin: /^(Volume|Book|Part|Chapter|Section|Table)\\b/,\n        end: '$'\n      },\n      {\n        // Rule definition\n        // This is here for relevance.\n        begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\\b/,\n        end: ':',\n        contains: [\n          {\n            //Rule name\n            begin: '\\\\(This', end: '\\\\)'\n          }\n        ]\n      },\n      {\n        className: 'comment',\n        begin: START_BRACKET, end: END_BRACKET,\n        contains: ['self']\n      }\n    ]\n  };\n}\n},{name:\"ini\",create:/*\nLanguage: Ini\nContributors: Guillaume Gomez <guillaume1.gomez@gmail.com>\nCategory: common, config\n*/\n\nfunction(hljs) {\n  var STRING = {\n    className: \"string\",\n    contains: [hljs.BACKSLASH_ESCAPE],\n    variants: [\n      {\n        begin: \"'''\", end: \"'''\",\n        relevance: 10\n      }, {\n        begin: '\"\"\"', end: '\"\"\"',\n        relevance: 10\n      }, {\n        begin: '\"', end: '\"'\n      }, {\n        begin: \"'\", end: \"'\"\n      }\n    ]\n  };\n  return {\n    aliases: ['toml'],\n    case_insensitive: true,\n    illegal: /\\S/,\n    contains: [\n      hljs.COMMENT(';', '$'),\n      hljs.HASH_COMMENT_MODE,\n      {\n        className: 'section',\n        begin: /^\\s*\\[+/, end: /\\]+/\n      },\n      {\n        begin: /^[a-z0-9\\[\\]_-]+\\s*=\\s*/, end: '$',\n        returnBegin: true,\n        contains: [\n          {\n            className: 'attr',\n            begin: /[a-z0-9\\[\\]_-]+/\n          },\n          {\n            begin: /=/, endsWithParent: true,\n            relevance: 0,\n            contains: [\n              {\n                className: 'literal',\n                begin: /\\bon|off|true|false|yes|no\\b/\n              },\n              {\n                className: 'variable',\n                variants: [\n                  {begin: /\\$[\\w\\d\"][\\w\\d_]*/},\n                  {begin: /\\$\\{(.*?)}/}\n                ]\n              },\n              STRING,\n              {\n                className: 'number',\n                begin: /([\\+\\-]+)?[\\d]+_[\\d_]+/\n              },\n              hljs.NUMBER_MODE\n            ]\n          }\n        ]\n      }\n    ]\n  };\n}\n},{name:\"irpf90\",create:/*\nLanguage: IRPF90\nAuthor: Anthony Scemama <scemama@irsamc.ups-tlse.fr>\nDescription: IRPF90 is an open-source Fortran code generator : http://irpf90.ups-tlse.fr\nCategory: scientific\n*/\n\nfunction(hljs) {\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\(', end: '\\\\)'\n  };\n\n  var F_KEYWORDS = {\n    literal: '.False. .True.',\n    keyword: 'kind do while private call intrinsic where elsewhere ' +\n      'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n      'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n      'goto save else use module select case ' +\n      'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n      'continue format pause cycle exit ' +\n      'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n      'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n      'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n      'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n      'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n      'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n      'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated  c_f_pointer ' +\n      'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n      'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n      'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n      'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n      'integer real character complex logical dimension allocatable|10 parameter ' +\n      'external implicit|10 none double precision assign intent optional pointer ' +\n      'target in out common equivalence data ' +\n      // IRPF90 special keywords\n      'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch ' +\n      'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read',\n    built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n      'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n      'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n      'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n      'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n      'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n      'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n      'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n      'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n      'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n      'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n      'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n      'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n      'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of'  +\n      'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n      'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n      'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n      'num_images parity popcnt poppar shifta shiftl shiftr this_image ' +\n      // IRPF90 special built_ins\n      'IRP_ALIGN irp_here'\n  };\n  return {\n    case_insensitive: true,\n    keywords: F_KEYWORDS,\n    illegal: /\\/\\*/,\n    contains: [\n      hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\n      {\n        className: 'function',\n        beginKeywords: 'subroutine function program',\n        illegal: '[${=\\\\n]',\n        contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n      },\n      hljs.COMMENT('!', '$', {relevance: 0}),\n      hljs.COMMENT('begin_doc', 'end_doc', {relevance: 10}),\n      {\n        className: 'number',\n        begin: '(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',\n        relevance: 0\n      }\n    ]\n  };\n}\n},{name:\"java\",create:/*\nLanguage: Java\nAuthor: Vsevolod Solovyov <vsevolod.solovyov@gmail.com>\nCategory: common, enterprise\n*/\n\nfunction(hljs) {\n  var GENERIC_IDENT_RE = hljs.UNDERSCORE_IDENT_RE + '(<' + hljs.UNDERSCORE_IDENT_RE + '(\\\\s*,\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')*>)?';\n  var KEYWORDS =\n    'false synchronized int abstract float private char boolean static null if const ' +\n    'for true while long strictfp finally protected import native final void ' +\n    'enum else break transient catch instanceof byte super volatile case assert short ' +\n    'package default double public try this switch continue throws protected public private ' +\n    'module requires exports';\n\n  // https://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html\n  var JAVA_NUMBER_RE = '\\\\b' +\n    '(' +\n      '0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...\n      '|' +\n      '0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...\n      '|' +\n      '(' +\n        '([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?' +\n        '|' +\n        '\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)' +\n      ')' +\n      '([eE][-+]?\\\\d+)?' + // octal, decimal, float\n    ')' +\n    '[lLfF]?';\n  var JAVA_NUMBER_MODE = {\n    className: 'number',\n    begin: JAVA_NUMBER_RE,\n    relevance: 0\n  };\n\n  return {\n    aliases: ['jsp'],\n    keywords: KEYWORDS,\n    illegal: /<\\/|#/,\n    contains: [\n      hljs.COMMENT(\n        '/\\\\*\\\\*',\n        '\\\\*/',\n        {\n          relevance : 0,\n          contains : [\n            {\n              // eat up @'s in emails to prevent them to be recognized as doctags\n              begin: /\\w+@/, relevance: 0\n            },\n            {\n              className : 'doctag',\n              begin : '@[A-Za-z]+'\n            }\n          ]\n        }\n      ),\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'class',\n        beginKeywords: 'class interface', end: /[{;=]/, excludeEnd: true,\n        keywords: 'class interface',\n        illegal: /[:\"\\[\\]]/,\n        contains: [\n          {beginKeywords: 'extends implements'},\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      {\n        // Expression keywords prevent 'keyword Name(...)' from being\n        // recognized as a function definition\n        beginKeywords: 'new throw return else',\n        relevance: 0\n      },\n      {\n        className: 'function',\n        begin: '(' + GENERIC_IDENT_RE + '\\\\s+)+' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true, end: /[{;=]/,\n        excludeEnd: true,\n        keywords: KEYWORDS,\n        contains: [\n          {\n            begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n            relevance: 0,\n            contains: [hljs.UNDERSCORE_TITLE_MODE]\n          },\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            keywords: KEYWORDS,\n            relevance: 0,\n            contains: [\n              hljs.APOS_STRING_MODE,\n              hljs.QUOTE_STRING_MODE,\n              hljs.C_NUMBER_MODE,\n              hljs.C_BLOCK_COMMENT_MODE\n            ]\n          },\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE\n        ]\n      },\n      JAVA_NUMBER_MODE,\n      {\n        className: 'meta', begin: '@[A-Za-z]+'\n      }\n    ]\n  };\n}\n},{name:\"javascript\",create:/*\nLanguage: JavaScript\nCategory: common, scripting\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['js', 'jsx'],\n    keywords: {\n      keyword:\n        'in of if for while finally var new function do return void else break catch ' +\n        'instanceof with throw case default try this switch continue typeof delete ' +\n        'let yield const export super debugger as async await static ' +\n        // ECMAScript 6 modules import\n        'import from as'\n      ,\n      literal:\n        'true false null undefined NaN Infinity',\n      built_in:\n        'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n        'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n        'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n        'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n        'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n        'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n        'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n        'Promise'\n    },\n    contains: [\n      {\n        className: 'meta',\n        relevance: 10,\n        begin: /^\\s*['\"]use (strict|asm)['\"]/\n      },\n      {\n        className: 'meta',\n        begin: /^#!/, end: /$/\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      { // template string\n        className: 'string',\n        begin: '`', end: '`',\n        contains: [\n          hljs.BACKSLASH_ESCAPE,\n          {\n            className: 'subst',\n            begin: '\\\\$\\\\{', end: '\\\\}'\n          }\n        ]\n      },\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'number',\n        variants: [\n          { begin: '\\\\b(0[bB][01]+)' },\n          { begin: '\\\\b(0[oO][0-7]+)' },\n          { begin: hljs.C_NUMBER_RE }\n        ],\n        relevance: 0\n      },\n      { // \"value\" container\n        begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n        keywords: 'return throw case',\n        contains: [\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          hljs.REGEXP_MODE,\n          { // E4X / JSX\n            begin: /</, end: /(\\/\\w+|\\w+\\/)>/,\n            subLanguage: 'xml',\n            contains: [\n              {begin: /<\\w+\\s*\\/>/, skip: true},\n              {begin: /<\\w+/, end: /(\\/\\w+|\\w+\\/)>/, skip: true, contains: ['self']}\n            ]\n          }\n        ],\n        relevance: 0\n      },\n      {\n        className: 'function',\n        beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            excludeBegin: true,\n            excludeEnd: true,\n            contains: [\n              hljs.C_LINE_COMMENT_MODE,\n              hljs.C_BLOCK_COMMENT_MODE\n            ]\n          }\n        ],\n        illegal: /\\[|%/\n      },\n      {\n        begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n      },\n      hljs.METHOD_GUARD,\n      { // ES6 class\n        className: 'class',\n        beginKeywords: 'class', end: /[{;=]/, excludeEnd: true,\n        illegal: /[:\"\\[\\]]/,\n        contains: [\n          {beginKeywords: 'extends'},\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      {\n        beginKeywords: 'constructor', end: /\\{/, excludeEnd: true\n      }\n    ],\n    illegal: /#(?!!)/\n  };\n}\n},{name:\"json\",create:/*\nLanguage: JSON\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nCategory: common, protocols\n*/\n\nfunction(hljs) {\n  var LITERALS = {literal: 'true false null'};\n  var TYPES = [\n    hljs.QUOTE_STRING_MODE,\n    hljs.C_NUMBER_MODE\n  ];\n  var VALUE_CONTAINER = {\n    end: ',', endsWithParent: true, excludeEnd: true,\n    contains: TYPES,\n    keywords: LITERALS\n  };\n  var OBJECT = {\n    begin: '{', end: '}',\n    contains: [\n      {\n        className: 'attr',\n        begin: /\"/, end: /\"/,\n        contains: [hljs.BACKSLASH_ESCAPE],\n        illegal: '\\\\n',\n      },\n      hljs.inherit(VALUE_CONTAINER, {begin: /:/})\n    ],\n    illegal: '\\\\S'\n  };\n  var ARRAY = {\n    begin: '\\\\[', end: '\\\\]',\n    contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents\n    illegal: '\\\\S'\n  };\n  TYPES.splice(TYPES.length, 0, OBJECT, ARRAY);\n  return {\n    contains: TYPES,\n    keywords: LITERALS,\n    illegal: '\\\\S'\n  };\n}\n},{name:\"julia\",create:/*\nLanguage: Julia\nAuthor: Kenta Sato <bicycle1885@gmail.com>\n*/\n\nfunction(hljs) {\n  // Since there are numerous special names in Julia, it is too much trouble\n  // to maintain them by hand. Hence these names (i.e. keywords, literals and\n  // built-ins) are automatically generated from Julia (v0.3.0 and v0.4.1)\n  // itself through following scripts for each.\n\n  var KEYWORDS = {\n    // # keyword generator\n    // println(\"in\")\n    // for kw in Base.REPLCompletions.complete_keyword(\"\")\n    //     println(kw)\n    // end\n    keyword:\n      'in abstract baremodule begin bitstype break catch ccall const continue do else elseif end export ' +\n      'finally for function global if immutable import importall let local macro module quote return try type ' +\n      'typealias using while',\n\n    // # literal generator\n    // println(\"true\")\n    // println(\"false\")\n    // for name in Base.REPLCompletions.completions(\"\", 0)[1]\n    //     try\n    //         s = symbol(name)\n    //         v = eval(s)\n    //         if !isa(v, Function) &&\n    //            !isa(v, DataType) &&\n    //            !isa(v, IntrinsicFunction) &&\n    //            !issubtype(typeof(v), Tuple) &&\n    //            !isa(v, Union) &&\n    //            !isa(v, Module) &&\n    //            !isa(v, TypeConstructor) &&\n    //            !isa(v, TypeVar) &&\n    //            !isa(v, Colon)\n    //             println(name)\n    //         end\n    //     end\n    // end\n    literal:\n      // v0.3\n      'true false ARGS CPU_CORES C_NULL DL_LOAD_PATH DevNull ENDIAN_BOM ENV I|0 Inf Inf16 Inf32 ' +\n      'InsertionSort JULIA_HOME LOAD_PATH MS_ASYNC MS_INVALIDATE MS_SYNC MergeSort NaN NaN16 NaN32 OS_NAME QuickSort ' +\n      'RTLD_DEEPBIND RTLD_FIRST RTLD_GLOBAL RTLD_LAZY RTLD_LOCAL RTLD_NODELETE RTLD_NOLOAD RTLD_NOW RoundDown ' +\n      'RoundFromZero RoundNearest RoundToZero RoundUp STDERR STDIN STDOUT VERSION WORD_SIZE catalan cglobal e|0 eu|0 ' +\n      'eulergamma golden im nothing pi γ π φ ' +\n      // v0.4 (diff)\n      'Inf64 NaN64 RoundNearestTiesAway RoundNearestTiesUp ',\n\n    // # built_in generator:\n    // for name in Base.REPLCompletions.completions(\"\", 0)[1]\n    //     try\n    //         v = eval(symbol(name))\n    //         if isa(v, DataType) || isa(v, TypeConstructor) || isa(v, TypeVar)\n    //             println(name)\n    //         end\n    //     end\n    // end\n    built_in:\n      // v0.3\n      'ANY ASCIIString AbstractArray AbstractRNG AbstractSparseArray Any ArgumentError Array Associative Base64Pipe ' +\n      'Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError Box CFILE Cchar Cdouble Cfloat Char ' +\n      'CharString Cint Clong Clonglong ClusterManager Cmd Coff_t Colon Complex Complex128 Complex32 Complex64 ' +\n      'Condition Cptrdiff_t Cshort Csize_t Cssize_t Cuchar Cuint Culong Culonglong Cushort Cwchar_t DArray DataType ' +\n      'DenseArray Diagonal Dict DimensionMismatch DirectIndexString Display DivideError DomainError EOFError ' +\n      'EachLine Enumerate ErrorException Exception Expr Factorization FileMonitor FileOffset Filter Float16 Float32 ' +\n      'Float64 FloatRange FloatingPoint Function GetfieldNode GotoNode Hermitian IO IOBuffer IOStream IPv4 IPv6 ' +\n      'InexactError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException IntrinsicFunction KeyError ' +\n      'LabelNode LambdaStaticData LineNumberNode LoadError LocalProcess MIME MathConst MemoryError MersenneTwister ' +\n      'Method MethodError MethodTable Module NTuple NewvarNode Nothing Number ObjectIdDict OrdinalRange ' +\n      'OverflowError ParseError PollingFileWatcher ProcessExitedException ProcessGroup Ptr QuoteNode Range Range1 ' +\n      'Ranges Rational RawFD Real Regex RegexMatch RemoteRef RepString RevString RopeString RoundingMode Set ' +\n      'SharedArray Signed SparseMatrixCSC StackOverflowError Stat StatStruct StepRange String SubArray SubString ' +\n      'SymTridiagonal Symbol SymbolNode Symmetric SystemError Task TextDisplay Timer TmStruct TopNode Triangular ' +\n      'Tridiagonal Type TypeConstructor TypeError TypeName TypeVar UTF16String UTF32String UTF8String UdpSocket ' +\n      'Uint Uint128 Uint16 Uint32 Uint64 Uint8 UndefRefError UndefVarError UniformScaling UnionType UnitRange ' +\n      'Unsigned Vararg VersionNumber WString WeakKeyDict WeakRef Woodbury Zip ' +\n      // v0.4 (diff)\n      'AbstractChannel AbstractFloat AbstractString AssertionError Base64DecodePipe Base64EncodePipe BufferStream ' +\n      'CapturedException CartesianIndex CartesianRange Channel Cintmax_t CompositeException Cstring Cuintmax_t ' +\n      'Cwstring Date DateTime Dims Enum GenSym GlobalRef HTML InitError InvalidStateException Irrational LinSpace ' +\n      'LowerTriangular NullException Nullable OutOfMemoryError Pair PartialQuickSort Pipe RandomDevice ' +\n      'ReadOnlyMemoryError ReentrantLock Ref RemoteException SegmentationFault SerializationState SimpleVector ' +\n      'TCPSocket Text Tuple UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UnicodeError Union UpperTriangular ' +\n      'Val Void WorkerConfig AbstractMatrix AbstractSparseMatrix AbstractSparseVector AbstractVecOrMat AbstractVector ' +\n      'DenseMatrix DenseVecOrMat DenseVector Matrix SharedMatrix SharedVector StridedArray StridedMatrix ' +\n      'StridedVecOrMat StridedVector VecOrMat Vector '\n  };\n\n  // ref: http://julia.readthedocs.org/en/latest/manual/variables/#allowed-variable-names\n  var VARIABLE_NAME_RE = '[A-Za-z_\\\\u00A1-\\\\uFFFF][A-Za-z_0-9\\\\u00A1-\\\\uFFFF]*';\n\n  // placeholder for recursive self-reference\n  var DEFAULT = { lexemes: VARIABLE_NAME_RE, keywords: KEYWORDS, illegal: /<\\// };\n\n  var TYPE_ANNOTATION = {\n    className: 'type',\n    begin: /::/\n  };\n\n  var SUBTYPE = {\n    className: 'type',\n    begin: /<:/\n  };\n\n  // ref: http://julia.readthedocs.org/en/latest/manual/integers-and-floating-point-numbers/\n  var NUMBER = {\n    className: 'number',\n    // supported numeric literals:\n    //  * binary literal (e.g. 0x10)\n    //  * octal literal (e.g. 0o76543210)\n    //  * hexadecimal literal (e.g. 0xfedcba876543210)\n    //  * hexadecimal floating point literal (e.g. 0x1p0, 0x1.2p2)\n    //  * decimal literal (e.g. 9876543210, 100_000_000)\n    //  * floating pointe literal (e.g. 1.2, 1.2f, .2, 1., 1.2e10, 1.2e-10)\n    begin: /(\\b0x[\\d_]*(\\.[\\d_]*)?|0x\\.\\d[\\d_]*)p[-+]?\\d+|\\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\\b\\d[\\d_]*(\\.[\\d_]*)?|\\.\\d[\\d_]*)([eEfF][-+]?\\d+)?/,\n    relevance: 0\n  };\n\n  var CHAR = {\n    className: 'string',\n    begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\n  };\n\n  var INTERPOLATION = {\n    className: 'subst',\n    begin: /\\$\\(/, end: /\\)/,\n    keywords: KEYWORDS\n  };\n\n  var INTERPOLATED_VARIABLE = {\n    className: 'variable',\n    begin: '\\\\$' + VARIABLE_NAME_RE\n  };\n\n  // TODO: neatly escape normal code in string literal\n  var STRING = {\n    className: 'string',\n    contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\n    variants: [\n      { begin: /\\w*\"\"\"/, end: /\"\"\"\\w*/, relevance: 10 },\n      { begin: /\\w*\"/, end: /\"\\w*/ }\n    ]\n  };\n\n  var COMMAND = {\n    className: 'string',\n    contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\n    begin: '`', end: '`'\n  };\n\n  var MACROCALL = {\n    className: 'meta',\n    begin: '@' + VARIABLE_NAME_RE\n  };\n\n  var COMMENT = {\n    className: 'comment',\n    variants: [\n      { begin: '#=', end: '=#', relevance: 10 },\n      { begin: '#', end: '$' }\n    ]\n  };\n\n  DEFAULT.contains = [\n    NUMBER,\n    CHAR,\n    TYPE_ANNOTATION,\n    SUBTYPE,\n    STRING,\n    COMMAND,\n    MACROCALL,\n    COMMENT,\n    hljs.HASH_COMMENT_MODE\n  ];\n  INTERPOLATION.contains = DEFAULT.contains;\n\n  return DEFAULT;\n}\n},{name:\"kotlin\",create:/*\n Language: Kotlin\n Author: Sergey Mashkov <cy6erGn0m@gmail.com>\n */\n\n\nfunction (hljs) {\n  var KEYWORDS = {\n    keyword:\n      'abstract as val var vararg get set class object open private protected public noinline ' +\n      'crossinline dynamic final enum if else do while for when throw try catch finally ' +\n      'import package is in fun override companion reified inline ' +\n      'interface annotation data sealed internal infix operator out by constructor super ' +\n      // to be deleted soon\n      'trait volatile transient native default',\n    built_in:\n      'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n    literal:\n      'true false null'\n  };\n  var KEYWORDS_WITH_LABEL = {\n    className: 'keyword',\n    begin: /\\b(break|continue|return|this)\\b/,\n    starts: {\n      contains: [\n        {\n          className: 'symbol',\n          begin: /@\\w+/\n        }\n      ]\n    }\n  };\n  var LABEL = {\n    className: 'symbol', begin: hljs.UNDERSCORE_IDENT_RE + '@'\n  };\n\n  // for string templates\n  var SUBST = {\n    className: 'subst',\n    variants: [\n      {begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE},\n      {begin: '\\\\${', end: '}', contains: [hljs.APOS_STRING_MODE, hljs.C_NUMBER_MODE]}\n    ]\n  };\n  var STRING = {\n    className: 'string',\n    variants: [\n      {\n        begin: '\"\"\"', end: '\"\"\"',\n        contains: [SUBST]\n      },\n      // Can't use built-in modes easily, as we want to use STRING in the meta\n      // context as 'meta-string' and there's no syntax to remove explicitly set\n      // classNames in built-in modes.\n      {\n        begin: '\\'', end: '\\'',\n        illegal: /\\n/,\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n      {\n        begin: '\"', end: '\"',\n        illegal: /\\n/,\n        contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n      }\n    ]\n  };\n\n  var ANNOTATION_USE_SITE = {\n    className: 'meta', begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n  };\n  var ANNOTATION = {\n    className: 'meta', begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n    contains: [\n      {\n        begin: /\\(/, end: /\\)/,\n        contains: [\n          hljs.inherit(STRING, {className: 'meta-string'})\n        ]\n      }\n    ]\n  };\n\n  return {\n    keywords: KEYWORDS,\n    contains : [\n      hljs.COMMENT(\n        '/\\\\*\\\\*',\n        '\\\\*/',\n        {\n          relevance : 0,\n          contains : [{\n            className : 'doctag',\n            begin : '@[A-Za-z]+'\n          }]\n        }\n      ),\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      KEYWORDS_WITH_LABEL,\n      LABEL,\n      ANNOTATION_USE_SITE,\n      ANNOTATION,\n      {\n        className: 'function',\n        beginKeywords: 'fun', end: '[(]|$',\n        returnBegin: true,\n        excludeEnd: true,\n        keywords: KEYWORDS,\n        illegal: /fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=/,\n        relevance: 5,\n        contains: [\n          {\n            begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n            relevance: 0,\n            contains: [hljs.UNDERSCORE_TITLE_MODE]\n          },\n          {\n            className: 'type',\n            begin: /</, end: />/, keywords: 'reified',\n            relevance: 0\n          },\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            endsParent: true,\n            keywords: KEYWORDS,\n            relevance: 0,\n            contains: [\n              {\n                begin: /:/, end: /[=,\\/]/, endsWithParent: true,\n                contains: [\n                  {className: 'type', begin: hljs.UNDERSCORE_IDENT_RE},\n                  hljs.C_LINE_COMMENT_MODE,\n                  hljs.C_BLOCK_COMMENT_MODE\n                ],\n                relevance: 0\n              },\n              hljs.C_LINE_COMMENT_MODE,\n              hljs.C_BLOCK_COMMENT_MODE,\n              ANNOTATION_USE_SITE,\n              ANNOTATION,\n              STRING,\n              hljs.C_NUMBER_MODE\n            ]\n          },\n          hljs.C_BLOCK_COMMENT_MODE\n        ]\n      },\n      {\n        className: 'class',\n        beginKeywords: 'class interface trait', end: /[:\\{(]|$/, // remove 'trait' when removed from KEYWORDS\n        excludeEnd: true,\n        illegal: 'extends implements',\n        contains: [\n          {beginKeywords: 'public protected internal private constructor'},\n          hljs.UNDERSCORE_TITLE_MODE,\n          {\n            className: 'type',\n            begin: /</, end: />/, excludeBegin: true, excludeEnd: true,\n            relevance: 0\n          },\n          {\n            className: 'type',\n            begin: /[,:]\\s*/, end: /[<\\(,]|$/, excludeBegin: true, returnEnd: true\n          },\n          ANNOTATION_USE_SITE,\n          ANNOTATION\n        ]\n      },\n      STRING,\n      {\n        className: 'meta',\n        begin: \"^#!/usr/bin/env\", end: '$',\n        illegal: '\\n'\n      },\n      hljs.C_NUMBER_MODE\n    ]\n  };\n}\n},{name:\"lasso\",create:/*\nLanguage: Lasso\nAuthor: Eric Knibbe <eric@lassosoft.com>\nDescription: Lasso is a language and server platform for database-driven web applications. This definition handles Lasso 9 syntax and LassoScript for Lasso 8.6 and earlier.\n*/\n\nfunction(hljs) {\n  var LASSO_IDENT_RE = '[a-zA-Z_][\\\\w.]*';\n  var LASSO_ANGLE_RE = '<\\\\?(lasso(script)?|=)';\n  var LASSO_CLOSE_RE = '\\\\]|\\\\?>';\n  var LASSO_KEYWORDS = {\n    literal:\n      'true false none minimal full all void and or not ' +\n      'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft',\n    built_in:\n      'array date decimal duration integer map pair string tag xml null ' +\n      'boolean bytes keyword list locale queue set stack staticarray ' +\n      'local var variable global data self inherited currentcapture givenblock',\n    keyword:\n      'cache database_names database_schemanames database_tablenames ' +\n      'define_tag define_type email_batch encode_set html_comment handle ' +\n      'handle_error header if inline iterate ljax_target link ' +\n      'link_currentaction link_currentgroup link_currentrecord link_detail ' +\n      'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' +\n      'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' +\n      'loop namespace_using output_none portal private protect records ' +\n      'referer referrer repeating resultset rows search_args ' +\n      'search_arguments select sort_args sort_arguments thread_atomic ' +\n      'value_list while abort case else fail_if fail_ifnot fail if_empty ' +\n      'if_false if_null if_true loop_abort loop_continue loop_count params ' +\n      'params_up return return_value run_children soap_definetag ' +\n      'soap_lastrequest soap_lastresponse tag_name ascending average by ' +\n      'define descending do equals frozen group handle_failure import in ' +\n      'into join let match max min on order parent protected provide public ' +\n      'require returnhome skip split_thread sum take thread to trait type ' +\n      'where with yield yieldhome'\n  };\n  var HTML_COMMENT = hljs.COMMENT(\n    '<!--',\n    '-->',\n    {\n      relevance: 0\n    }\n  );\n  var LASSO_NOPROCESS = {\n    className: 'meta',\n    begin: '\\\\[noprocess\\\\]',\n    starts: {\n      end: '\\\\[/noprocess\\\\]',\n      returnEnd: true,\n      contains: [HTML_COMMENT]\n    }\n  };\n  var LASSO_START = {\n    className: 'meta',\n    begin: '\\\\[/noprocess|' + LASSO_ANGLE_RE\n  };\n  var LASSO_DATAMEMBER = {\n    className: 'symbol',\n    begin: '\\'' + LASSO_IDENT_RE + '\\''\n  };\n  var LASSO_CODE = [\n    hljs.C_LINE_COMMENT_MODE,\n    hljs.C_BLOCK_COMMENT_MODE,\n    hljs.inherit(hljs.C_NUMBER_MODE, {begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\\\b'}),\n    hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n    hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n    {\n      className: 'string',\n      begin: '`', end: '`'\n    },\n    { // variables\n      variants: [\n        {\n          begin: '[#$]' + LASSO_IDENT_RE\n        },\n        {\n          begin: '#', end: '\\\\d+',\n          illegal: '\\\\W'\n        }\n      ]\n    },\n    {\n      className: 'type',\n      begin: '::\\\\s*', end: LASSO_IDENT_RE,\n      illegal: '\\\\W'\n    },\n    {\n      className: 'params',\n      variants: [\n        {\n          begin: '-(?!infinity)' + LASSO_IDENT_RE,\n          relevance: 0\n        },\n        {\n          begin: '(\\\\.\\\\.\\\\.)'\n        }\n      ]\n    },\n    {\n      begin: /(->|\\.)\\s*/,\n      relevance: 0,\n      contains: [LASSO_DATAMEMBER]\n    },\n    {\n      className: 'class',\n      beginKeywords: 'define',\n      returnEnd: true, end: '\\\\(|=>',\n      contains: [\n        hljs.inherit(hljs.TITLE_MODE, {begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)'})\n      ]\n    }\n  ];\n  return {\n    aliases: ['ls', 'lassoscript'],\n    case_insensitive: true,\n    lexemes: LASSO_IDENT_RE + '|&[lg]t;',\n    keywords: LASSO_KEYWORDS,\n    contains: [\n      {\n        className: 'meta',\n        begin: LASSO_CLOSE_RE,\n        relevance: 0,\n        starts: { // markup\n          end: '\\\\[|' + LASSO_ANGLE_RE,\n          returnEnd: true,\n          relevance: 0,\n          contains: [HTML_COMMENT]\n        }\n      },\n      LASSO_NOPROCESS,\n      LASSO_START,\n      {\n        className: 'meta',\n        begin: '\\\\[no_square_brackets',\n        starts: {\n          end: '\\\\[/no_square_brackets\\\\]', // not implemented in the language\n          lexemes: LASSO_IDENT_RE + '|&[lg]t;',\n          keywords: LASSO_KEYWORDS,\n          contains: [\n            {\n              className: 'meta',\n              begin: LASSO_CLOSE_RE,\n              relevance: 0,\n              starts: {\n                end: '\\\\[noprocess\\\\]|' + LASSO_ANGLE_RE,\n                returnEnd: true,\n                contains: [HTML_COMMENT]\n              }\n            },\n            LASSO_NOPROCESS,\n            LASSO_START\n          ].concat(LASSO_CODE)\n        }\n      },\n      {\n        className: 'meta',\n        begin: '\\\\[',\n        relevance: 0\n      },\n      {\n        className: 'meta',\n        begin: '^#!', end:'lasso9$',\n        relevance: 10\n      }\n    ].concat(LASSO_CODE)\n  };\n}\n},{name:\"ldif\",create:/*\nLanguage: LDIF\nContributors: Jacob Childress <jacobc@gmail.com>\nCategory: enterprise, config\n*/\nfunction(hljs) {\n  return {\n    contains: [\n      {\n        className: 'attribute',\n        begin: '^dn', end: ': ', excludeEnd: true,\n        starts: {end: '$', relevance: 0},\n        relevance: 10\n      },\n      {\n        className: 'attribute',\n        begin: '^\\\\w', end: ': ', excludeEnd: true,\n        starts: {end: '$', relevance: 0}\n      },\n      {\n        className: 'literal',\n        begin: '^-', end: '$'\n      },\n      hljs.HASH_COMMENT_MODE\n    ]\n  };\n}\n},{name:\"less\",create:/*\nLanguage: Less\nAuthor:   Max Mikhailov <seven.phases.max@gmail.com>\nCategory: css\n*/\n\nfunction(hljs) {\n  var IDENT_RE        = '[\\\\w-]+'; // yes, Less identifiers may begin with a digit\n  var INTERP_IDENT_RE = '(' + IDENT_RE + '|@{' + IDENT_RE + '})';\n\n  /* Generic Modes */\n\n  var RULES = [], VALUE = []; // forward def. for recursive modes\n\n  var STRING_MODE = function(c) { return {\n    // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\n    className: 'string', begin: '~?' + c + '.*?' + c\n  };};\n\n  var IDENT_MODE = function(name, begin, relevance) { return {\n    className: name, begin: begin, relevance: relevance\n  };};\n\n  var PARENS_MODE = {\n    // used only to properly balance nested parens inside mixin call, def. arg list\n    begin: '\\\\(', end: '\\\\)', contains: VALUE, relevance: 0\n  };\n\n  // generic Less highlighter (used almost everywhere except selectors):\n  VALUE.push(\n    hljs.C_LINE_COMMENT_MODE,\n    hljs.C_BLOCK_COMMENT_MODE,\n    STRING_MODE(\"'\"),\n    STRING_MODE('\"'),\n    hljs.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(\n    {\n      begin: '(url|data-uri)\\\\(',\n      starts: {className: 'string', end: '[\\\\)\\\\n]', excludeEnd: true}\n    },\n    IDENT_MODE('number', '#[0-9A-Fa-f]+\\\\b'),\n    PARENS_MODE,\n    IDENT_MODE('variable', '@@?' + IDENT_RE, 10),\n    IDENT_MODE('variable', '@{'  + IDENT_RE + '}'),\n    IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string\n    { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):\n      className: 'attribute', begin: IDENT_RE + '\\\\s*:', end: ':', returnBegin: true, excludeEnd: true\n    },\n    {\n      className: 'meta',\n      begin: '!important'\n    }\n  );\n\n  var VALUE_WITH_RULESETS = VALUE.concat({\n    begin: '{', end: '}', contains: RULES\n  });\n\n  var MIXIN_GUARD_MODE = {\n    beginKeywords: 'when', endsWithParent: true,\n    contains: [{beginKeywords: 'and not'}].concat(VALUE) // using this form to override VALUE’s 'function' match\n  };\n\n  /* Rule-Level Modes */\n\n  var RULE_MODE = {\n    begin: INTERP_IDENT_RE + '\\\\s*:', returnBegin: true, end: '[;}]',\n    relevance: 0,\n    contains: [\n      {\n        className: 'attribute',\n        begin: INTERP_IDENT_RE, end: ':', excludeEnd: true,\n        starts: {\n          endsWithParent: true, illegal: '[<=$]',\n          relevance: 0,\n          contains: VALUE\n        }\n      }\n    ]\n  };\n\n  var AT_RULE_MODE = {\n    className: 'keyword',\n    begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b',\n    starts: {end: '[;{}]', returnEnd: true, contains: VALUE, relevance: 0}\n  };\n\n  // variable definitions and calls\n  var VAR_RULE_MODE = {\n    className: 'variable',\n    variants: [\n      // using more strict pattern for higher relevance to increase chances of Less detection.\n      // this is *the only* Less specific statement used in most of the sources, so...\n      // (we’ll still often loose to the css-parser unless there's '//' comment,\n      // simply because 1 variable just can't beat 99 properties :)\n      {begin: '@' + IDENT_RE + '\\\\s*:', relevance: 15},\n      {begin: '@' + IDENT_RE}\n    ],\n    starts: {end: '[;}]', returnEnd: true, contains: VALUE_WITH_RULESETS}\n  };\n\n  var SELECTOR_MODE = {\n    // first parse unambiguous selectors (i.e. those not starting with tag)\n    // then fall into the scary lookahead-discriminator variant.\n    // this mode also handles mixin definitions and calls\n    variants: [{\n      begin: '[\\\\.#:&\\\\[>]', end: '[;{}]'  // mixin calls end with ';'\n      }, {\n      begin: INTERP_IDENT_RE + '[^;]*{',\n      end: '{'\n    }],\n    returnBegin: true,\n    returnEnd:   true,\n    illegal: '[<=\\'$\"]',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      MIXIN_GUARD_MODE,\n      IDENT_MODE('keyword',  'all\\\\b'),\n      IDENT_MODE('variable', '@{'  + IDENT_RE + '}'),     // otherwise it’s identified as tag\n      IDENT_MODE('selector-tag',  INTERP_IDENT_RE + '%?', 0), // '%' for more consistent coloring of @keyframes \"tags\"\n      IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),\n      IDENT_MODE('selector-class', '\\\\.' + INTERP_IDENT_RE, 0),\n      IDENT_MODE('selector-tag',  '&', 0),\n      {className: 'selector-attr', begin: '\\\\[', end: '\\\\]'},\n      {className: 'selector-pseudo', begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},\n      {begin: '\\\\(', end: '\\\\)', contains: VALUE_WITH_RULESETS}, // argument list of parametric mixins\n      {begin: '!important'} // eat !important after mixin call or it will be colored as tag\n    ]\n  };\n\n  RULES.push(\n    hljs.C_LINE_COMMENT_MODE,\n    hljs.C_BLOCK_COMMENT_MODE,\n    AT_RULE_MODE,\n    VAR_RULE_MODE,\n    RULE_MODE,\n    SELECTOR_MODE\n  );\n\n  return {\n    case_insensitive: true,\n    illegal: '[=>\\'/<($\"]',\n    contains: RULES\n  };\n}\n},{name:\"abnf\",create:/*\nLanguage: Augmented Backus-Naur Form\nAuthor: Alex McKibben <alex@nullscope.net>\n*/\n\nfunction(hljs) {\n    var regexes = {\n        ruleDeclaration: \"^[a-zA-Z][a-zA-Z0-9-]*\",\n        unexpectedChars: \"[!@#$^&',?+~`|:]\"\n    };\n\n    var keywords = [\n        \"ALPHA\",\n        \"BIT\",\n        \"CHAR\",\n        \"CR\",\n        \"CRLF\",\n        \"CTL\",\n        \"DIGIT\",\n        \"DQUOTE\",\n        \"HEXDIG\",\n        \"HTAB\",\n        \"LF\",\n        \"LWSP\",\n        \"OCTET\",\n        \"SP\",\n        \"VCHAR\",\n        \"WSP\"\n    ];\n\n    var commentMode = hljs.COMMENT(\";\", \"$\");\n\n    var terminalBinaryMode = {\n        className: \"symbol\",\n        begin: /%b[0-1]+(-[0-1]+|(\\.[0-1]+)+){0,1}/\n    };\n\n    var terminalDecimalMode = {\n        className: \"symbol\",\n        begin: /%d[0-9]+(-[0-9]+|(\\.[0-9]+)+){0,1}/\n    };\n\n    var terminalHexadecimalMode = {\n        className: \"symbol\",\n        begin: /%x[0-9A-F]+(-[0-9A-F]+|(\\.[0-9A-F]+)+){0,1}/,\n    };\n\n    var caseSensitivityIndicatorMode = {\n        className: \"symbol\",\n        begin: /%[si]/\n    };\n\n    var ruleDeclarationMode = {\n        begin: regexes.ruleDeclaration + '\\\\s*=',\n        returnBegin: true,\n        end: /=/,\n        relevance: 0,\n        contains: [{className: \"attribute\", begin: regexes.ruleDeclaration}]\n    };\n\n    return {\n      illegal: regexes.unexpectedChars,\n      keywords: keywords.join(\" \"),\n      contains: [\n          ruleDeclarationMode,\n          commentMode,\n          terminalBinaryMode,\n          terminalDecimalMode,\n          terminalHexadecimalMode,\n          caseSensitivityIndicatorMode,\n          hljs.QUOTE_STRING_MODE,\n          hljs.NUMBER_MODE\n      ]\n    };\n}\n},{name:\"livecodeserver\",create:/*\nLanguage: LiveCode\nAuthor: Ralf Bitter <rabit@revigniter.com>\nDescription: Language definition for LiveCode server accounting for revIgniter (a web application framework) characteristics.\nVersion: 1.0a\nDate: 2013-06-03\nCategory: enterprise\n*/\n\nfunction(hljs) {\n  var VARIABLE = {\n    begin: '\\\\b[gtps][A-Z]+[A-Za-z0-9_\\\\-]*\\\\b|\\\\$_[A-Z]+',\n    relevance: 0\n  };\n  var COMMENT_MODES = [\n    hljs.C_BLOCK_COMMENT_MODE,\n    hljs.HASH_COMMENT_MODE,\n    hljs.COMMENT('--', '$'),\n    hljs.COMMENT('[^:]//', '$')\n  ];\n  var TITLE1 = hljs.inherit(hljs.TITLE_MODE, {\n    variants: [\n      {begin: '\\\\b_*rig[A-Z]+[A-Za-z0-9_\\\\-]*'},\n      {begin: '\\\\b_[a-z0-9\\\\-]+'}\n    ]\n  });\n  var TITLE2 = hljs.inherit(hljs.TITLE_MODE, {begin: '\\\\b([A-Za-z0-9_\\\\-]+)\\\\b'});\n  return {\n    case_insensitive: false,\n    keywords: {\n      keyword:\n        '$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER ' +\n        'codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph ' +\n        'after byte bytes english the until http forever descending using line real8 with seventh ' +\n        'for stdout finally element word words fourth before black ninth sixth characters chars stderr ' +\n        'uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid ' +\n        'at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 ' +\n        'int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat ' +\n        'end repeat URL in try into switch to words https token binfile each tenth as ticks tick ' +\n        'system real4 by dateItems without char character ascending eighth whole dateTime numeric short ' +\n        'first ftp integer abbreviated abbr abbrev private case while if ' +\n        'div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within ' +\n        'contains ends with begins the keys of keys',\n      literal:\n        'SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE ' +\n        'QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO ' +\n        'six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five ' +\n        'quote empty one true return cr linefeed right backslash null seven tab three two ' +\n        'RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK ' +\n        'FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK',\n      built_in:\n        'put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode ' +\n        'base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum ' +\n        'cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress ' +\n        'constantNames cos date dateFormat decompress directories ' +\n        'diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global ' +\n        'globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset ' +\n        'keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders ' +\n        'libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 ' +\n        'longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge millisec ' +\n        'millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar ' +\n        'numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets ' +\n        'paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation ' +\n        'populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile ' +\n        'revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull ' +\n        'revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered ' +\n        'revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames ' +\n        'revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull ' +\n        'revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections ' +\n        'revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype ' +\n        'revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext ' +\n        'revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames ' +\n        'revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase ' +\n        'revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute ' +\n        'revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces ' +\n        'revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode ' +\n        'revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling ' +\n        'revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error ' +\n        'revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute ' +\n        'revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort ' +\n        'revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree ' +\n        'revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance ' +\n        'sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound ' +\n        'stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper ' +\n        'transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames ' +\n        'variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet ' +\n        'xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process ' +\n        'combine constant convert create new alias folder directory decrypt delete variable word line folder ' +\n        'directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile ' +\n        'libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback ' +\n        'libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime ' +\n        'libURLSetStatusCallback load multiply socket prepare process post seek rel relative read from process rename ' +\n        'replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase ' +\n        'revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees ' +\n        'revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord ' +\n        'revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase ' +\n        'revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD ' +\n        'revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost ' +\n        'revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData ' +\n        'revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel ' +\n        'revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback ' +\n        'revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop ' +\n        'subtract union unload wait write'\n    },\n    contains: [\n      VARIABLE,\n      {\n        className: 'keyword',\n        begin: '\\\\bend\\\\sif\\\\b'\n      },\n      {\n        className: 'function',\n        beginKeywords: 'function', end: '$',\n        contains: [\n          VARIABLE,\n          TITLE2,\n          hljs.APOS_STRING_MODE,\n          hljs.QUOTE_STRING_MODE,\n          hljs.BINARY_NUMBER_MODE,\n          hljs.C_NUMBER_MODE,\n          TITLE1\n        ]\n      },\n      {\n        className: 'function',\n        begin: '\\\\bend\\\\s+', end: '$',\n        keywords: 'end',\n        contains: [\n          TITLE2,\n          TITLE1\n        ],\n        relevance: 0\n      },\n      {\n        beginKeywords: 'command on', end: '$',\n        contains: [\n          VARIABLE,\n          TITLE2,\n          hljs.APOS_STRING_MODE,\n          hljs.QUOTE_STRING_MODE,\n          hljs.BINARY_NUMBER_MODE,\n          hljs.C_NUMBER_MODE,\n          TITLE1\n        ]\n      },\n      {\n        className: 'meta',\n        variants: [\n          {\n            begin: '<\\\\?(rev|lc|livecode)',\n            relevance: 10\n          },\n          { begin: '<\\\\?' },\n          { begin: '\\\\?>' }\n        ]\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.BINARY_NUMBER_MODE,\n      hljs.C_NUMBER_MODE,\n      TITLE1\n    ].concat(COMMENT_MODES),\n    illegal: ';$|^\\\\[|^=|&|{'\n  };\n}\n},{name:\"livescript\",create:/*\nLanguage: LiveScript\nAuthor: Taneli Vatanen <taneli.vatanen@gmail.com>\nContributors: Jen Evers-Corvina <jen@sevvie.net>\nOrigin: coffeescript.js\nDescription: LiveScript is a programming language that transcompiles to JavaScript. For info about language see http://livescript.net/\nCategory: scripting\n*/\n\nfunction(hljs) {\n  var KEYWORDS = {\n    keyword:\n      // JS keywords\n      'in if for while finally new do return else break catch instanceof throw try this ' +\n      'switch continue typeof delete debugger case default function var with ' +\n      // LiveScript keywords\n      'then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super ' +\n      'case default function var void const let enum export import native ' +\n      '__hasProp __extends __slice __bind __indexOf',\n    literal:\n      // JS literals\n      'true false null undefined ' +\n      // LiveScript literals\n      'yes no on off it that void',\n    built_in:\n      'npm require console print module global window document'\n  };\n  var JS_IDENT_RE = '[A-Za-z$_](?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*';\n  var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n  var SUBST = {\n    className: 'subst',\n    begin: /#\\{/, end: /}/,\n    keywords: KEYWORDS\n  };\n  var SUBST_SIMPLE = {\n    className: 'subst',\n    begin: /#[A-Za-z$_]/, end: /(?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,\n    keywords: KEYWORDS\n  };\n  var EXPRESSIONS = [\n    hljs.BINARY_NUMBER_MODE,\n    {\n      className: 'number',\n      begin: '(\\\\b0[xX][a-fA-F0-9_]+)|(\\\\b\\\\d(\\\\d|_\\\\d)*(\\\\.(\\\\d(\\\\d|_\\\\d)*)?)?(_*[eE]([-+]\\\\d(_\\\\d|\\\\d)*)?)?[_a-z]*)',\n      relevance: 0,\n      starts: {end: '(\\\\s*/)?', relevance: 0} // a number tries to eat the following slash to prevent treating it as a regexp\n    },\n    {\n      className: 'string',\n      variants: [\n        {\n          begin: /'''/, end: /'''/,\n          contains: [hljs.BACKSLASH_ESCAPE]\n        },\n        {\n          begin: /'/, end: /'/,\n          contains: [hljs.BACKSLASH_ESCAPE]\n        },\n        {\n          begin: /\"\"\"/, end: /\"\"\"/,\n          contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\n        },\n        {\n          begin: /\"/, end: /\"/,\n          contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\n        },\n        {\n          begin: /\\\\/, end: /(\\s|$)/,\n          excludeEnd: true\n        }\n      ]\n    },\n    {\n      className: 'regexp',\n      variants: [\n        {\n          begin: '//', end: '//[gim]*',\n          contains: [SUBST, hljs.HASH_COMMENT_MODE]\n        },\n        {\n          // regex can't start with space to parse x / 2 / 3 as two divisions\n          // regex can't start with *, and it supports an \"illegal\" in the main mode\n          begin: /\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/\n        }\n      ]\n    },\n    {\n      begin: '@' + JS_IDENT_RE\n    },\n    {\n      begin: '``', end: '``',\n      excludeBegin: true, excludeEnd: true,\n      subLanguage: 'javascript'\n    }\n  ];\n  SUBST.contains = EXPRESSIONS;\n\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\(', returnBegin: true,\n    /* We need another contained nameless mode to not have every nested\n    pair of parens to be called \"params\" */\n    contains: [\n      {\n        begin: /\\(/, end: /\\)/,\n        keywords: KEYWORDS,\n        contains: ['self'].concat(EXPRESSIONS)\n      }\n    ]\n  };\n\n  return {\n    aliases: ['ls'],\n    keywords: KEYWORDS,\n    illegal: /\\/\\*/,\n    contains: EXPRESSIONS.concat([\n      hljs.COMMENT('\\\\/\\\\*', '\\\\*\\\\/'),\n      hljs.HASH_COMMENT_MODE,\n      {\n        className: 'function',\n        contains: [TITLE, PARAMS],\n        returnBegin: true,\n        variants: [\n          {\n            begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B\\\\->\\\\*?', end: '\\\\->\\\\*?'\n          },\n          {\n            begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?!?(\\\\(.*\\\\))?\\\\s*\\\\B[-~]{1,2}>\\\\*?', end: '[-~]{1,2}>\\\\*?'\n          },\n          {\n            begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B!?[-~]{1,2}>\\\\*?', end: '!?[-~]{1,2}>\\\\*?'\n          }\n        ]\n      },\n      {\n        className: 'class',\n        beginKeywords: 'class',\n        end: '$',\n        illegal: /[:=\"\\[\\]]/,\n        contains: [\n          {\n            beginKeywords: 'extends',\n            endsWithParent: true,\n            illegal: /[:=\"\\[\\]]/,\n            contains: [TITLE]\n          },\n          TITLE\n        ]\n      },\n      {\n        begin: JS_IDENT_RE + ':', end: ':',\n        returnBegin: true, returnEnd: true,\n        relevance: 0\n      }\n    ])\n  };\n}\n},{name:\"lsl\",create:/*\nLanguage: Linden Scripting Language\nDescription: The Linden Scripting Language is used in Second Life by Linden Labs.\nAuthor: Builder's Brewery <buildersbrewery@gmail.com>\nCategory: scripting\n*/\n\nfunction(hljs) {\n\n    var LSL_STRING_ESCAPE_CHARS = {\n        className: 'subst',\n        begin: /\\\\[tn\"\\\\]/\n    };\n\n    var LSL_STRINGS = {\n        className: 'string',\n        begin: '\"',\n        end: '\"',\n        contains: [\n            LSL_STRING_ESCAPE_CHARS\n        ]\n    };\n\n    var LSL_NUMBERS = {\n        className: 'number',\n        begin: hljs.C_NUMBER_RE\n    };\n\n    var LSL_CONSTANTS = {\n        className: 'literal',\n        variants: [\n            {\n                begin: '\\\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\\\b'\n            },\n            {\n                begin: '\\\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_ON_REZ|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP|CREATOR|ATTACHED_POINT|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\\\b'\n            },\n            {\n                begin: '\\\\b(?:FALSE|TRUE)\\\\b'\n            },\n            {\n                begin: '\\\\b(?:ZERO_ROTATION)\\\\b'\n            },\n            {\n                begin: '\\\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\\\b'\n            },\n            {\n                begin: '\\\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\\\b'\n            }\n        ]\n    };\n\n    var LSL_FUNCTIONS = {\n        className: 'built_in',\n        begin: '\\\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\\\b'\n    };\n\n    return {\n        illegal: ':',\n        contains: [\n            LSL_STRINGS,\n            {\n                className: 'comment',\n                variants: [\n                    hljs.COMMENT('//', '$'),\n                    hljs.COMMENT('/\\\\*', '\\\\*/')\n                ]\n            },\n            LSL_NUMBERS,\n            {\n                className: 'section',\n                variants: [\n                    {\n                        begin: '\\\\b(?:state|default)\\\\b'\n                    },\n                    {\n                        begin: '\\\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\\\b'\n                    }\n                ]\n            },\n            LSL_FUNCTIONS,\n            LSL_CONSTANTS,\n            {\n                className: 'type',\n                begin: '\\\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\\\b'\n            }\n        ]\n    };\n}\n},{name:\"lua\",create:/*\nLanguage: Lua\nAuthor: Andrew Fedorov <dmmdrs@mail.ru>\nCategory: scripting\n*/\n\nfunction(hljs) {\n  var OPENING_LONG_BRACKET = '\\\\[=*\\\\[';\n  var CLOSING_LONG_BRACKET = '\\\\]=*\\\\]';\n  var LONG_BRACKETS = {\n    begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n    contains: ['self']\n  };\n  var COMMENTS = [\n    hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),\n    hljs.COMMENT(\n      '--' + OPENING_LONG_BRACKET,\n      CLOSING_LONG_BRACKET,\n      {\n        contains: [LONG_BRACKETS],\n        relevance: 10\n      }\n    )\n  ];\n  return {\n    lexemes: hljs.UNDERSCORE_IDENT_RE,\n    keywords: {\n      keyword:\n        'and break do else elseif end false for if in local nil not or repeat return then ' +\n        'true until while',\n      built_in:\n        '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' +\n        'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' +\n        'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' +\n        'io math os package string table'\n    },\n    contains: COMMENTS.concat([\n      {\n        className: 'function',\n        beginKeywords: 'function', end: '\\\\)',\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n          {\n            className: 'params',\n            begin: '\\\\(', endsWithParent: true,\n            contains: COMMENTS\n          }\n        ].concat(COMMENTS)\n      },\n      hljs.C_NUMBER_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'string',\n        begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n        contains: [LONG_BRACKETS],\n        relevance: 5\n      }\n    ])\n  };\n}\n},{name:\"makefile\",create:/*\nLanguage: Makefile\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nCategory: common\n*/\n\nfunction(hljs) {\n  var VARIABLE = {\n    className: 'variable',\n    begin: /\\$\\(/, end: /\\)/,\n    contains: [hljs.BACKSLASH_ESCAPE]\n  };\n  return {\n    aliases: ['mk', 'mak'],\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      {\n        begin: /^\\w+\\s*\\W*=/, returnBegin: true,\n        relevance: 0,\n        starts: {\n          end: /\\s*\\W*=/, excludeEnd: true,\n          starts: {\n            end: /$/,\n            relevance: 0,\n            contains: [\n              VARIABLE\n            ]\n          }\n        }\n      },\n      {\n        className: 'section',\n        begin: /^[\\w]+:\\s*$/\n      },\n      {\n        className: 'meta',\n        begin: /^\\.PHONY:/, end: /$/,\n        keywords: {'meta-keyword': '.PHONY'}, lexemes: /[\\.\\w]+/\n      },\n      {\n        begin: /^\\t+/, end: /$/,\n        relevance: 0,\n        contains: [\n          hljs.QUOTE_STRING_MODE,\n          VARIABLE\n        ]\n      }\n    ]\n  };\n}\n},{name:\"markdown\",create:/*\nLanguage: Markdown\nRequires: xml.js\nAuthor: John Crepezzi <john.crepezzi@gmail.com>\nWebsite: http://seejohncode.com/\nCategory: common, markup\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['md', 'mkdown', 'mkd'],\n    contains: [\n      // highlight headers\n      {\n        className: 'section',\n        variants: [\n          { begin: '^#{1,6}', end: '$' },\n          { begin: '^.+?\\\\n[=-]{2,}$' }\n        ]\n      },\n      // inline html\n      {\n        begin: '<', end: '>',\n        subLanguage: 'xml',\n        relevance: 0\n      },\n      // lists (indicators only)\n      {\n        className: 'bullet',\n        begin: '^([*+-]|(\\\\d+\\\\.))\\\\s+'\n      },\n      // strong segments\n      {\n        className: 'strong',\n        begin: '[*_]{2}.+?[*_]{2}'\n      },\n      // emphasis segments\n      {\n        className: 'emphasis',\n        variants: [\n          { begin: '\\\\*.+?\\\\*' },\n          { begin: '_.+?_'\n          , relevance: 0\n          }\n        ]\n      },\n      // blockquotes\n      {\n        className: 'quote',\n        begin: '^>\\\\s+', end: '$'\n      },\n      // code snippets\n      {\n        className: 'code',\n        variants: [\n          {\n            begin: '^```\\w*\\s*$', end: '^```\\s*$'\n          },\n          {\n            begin: '`.+?`'\n          },\n          {\n            begin: '^( {4}|\\t)', end: '$',\n            relevance: 0\n          }\n        ]\n      },\n      // horizontal rules\n      {\n        begin: '^[-\\\\*]{3,}', end: '$'\n      },\n      // using links - title and link\n      {\n        begin: '\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]',\n        returnBegin: true,\n        contains: [\n          {\n            className: 'string',\n            begin: '\\\\[', end: '\\\\]',\n            excludeBegin: true,\n            returnEnd: true,\n            relevance: 0\n          },\n          {\n            className: 'link',\n            begin: '\\\\]\\\\(', end: '\\\\)',\n            excludeBegin: true, excludeEnd: true\n          },\n          {\n            className: 'symbol',\n            begin: '\\\\]\\\\[', end: '\\\\]',\n            excludeBegin: true, excludeEnd: true\n          }\n        ],\n        relevance: 10\n      },\n      {\n        begin: /^\\[[^\\n]+\\]:/,\n        returnBegin: true,\n        contains: [\n          {\n            className: 'symbol',\n            begin: /\\[/, end: /\\]/,\n            excludeBegin: true, excludeEnd: true\n          },\n          {\n            className: 'link',\n            begin: /:\\s*/, end: /$/,\n            excludeBegin: true\n          }\n        ]\n      }\n    ]\n  };\n}\n},{name:\"mathematica\",create:/*\nLanguage: Mathematica\nAuthor: Daniel Kvasnicka <dkvasnicka@vendavo.com>\nCategory: scientific\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['mma'],\n    lexemes: '(\\\\$|\\\\b)' + hljs.IDENT_RE + '\\\\b',\n    keywords: 'AbelianGroup Abort AbortKernels AbortProtect Above Abs Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Active ActiveItem ActiveStyle AcyclicGraphQ AddOnHelpPath AddTo AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AffineTransform After AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowedDimensions AllowGroupClose AllowInlineCells AllowKernelInitialization AllowReverseGroupClose AllowScriptLevelChange AlphaChannel AlternatingGroup AlternativeHypothesis Alternatives AmbientLight Analytic AnchoredSearch And AndersonDarlingTest AngerJ AngleBracket AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotation Annuity AnnuityDue Antialiasing Antisymmetric Apart ApartSquareFree Appearance AppearanceElements AppellF1 Append AppendTo Apply ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess ARProcess Array ArrayComponents ArrayDepth ArrayFlatten ArrayPad ArrayPlot ArrayQ ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads AspectRatio AspectRatioFixed Assert Assuming Assumptions AstronomicalData Asynchronous AsynchronousTaskObject AsynchronousTasks AtomQ Attributes AugmentedSymmetricPolynomial AutoAction AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords Axes AxesEdge AxesLabel AxesOrigin AxesStyle Axis ' +\n      'BabyMonsterGroupB Back Background BackgroundTasksSettings Backslash Backsubstitution Backward Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseForm Baseline BaselinePosition BaseStyle BatesDistribution BattleLemarieWavelet Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized BetweennessCentrality BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms Booleans BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryStyle Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BubbleChart BubbleChart3D BubbleScale BubbleSizes BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteCount ByteOrdering ' +\n      'C CachedValue CacheGraphics CalendarData CalendarType CallPacket CanberraDistance Cancel CancelButton CandlestickChart Cap CapForm CapitalDifferentialD CardinalBSplineBasis CarmichaelLambda Cases Cashflow Casoratian Catalan CatalanNumber Catch CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterDot CentralMoment CentralMomentGeneratingFunction CForm ChampernowneNumber ChanVeseBinarize Character CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop Circle CircleBox CircleDot CircleMinus CirclePlus CircleTimes CirculantGraph CityData Clear ClearAll ClearAttributes ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent ClusteringComponents CMYKColor Coarse Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorCombine ColorConvert ColorData ColorDataFunction ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorSpace Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CommonDefaultFormatTypes Commonest CommonestFilter CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledFunction Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComponentMeasurements ' +\n      'ComponentwiseContextMenu Compose ComposeList ComposeSeries Composition CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath Congruent Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphQ ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray Constants ConstrainedMax ConstrainedMin ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFilename ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean Control ControlActive ControlAlignment ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateDialog CreateDirectory CreateDocument CreateIntermediateDirectories CreatePalette CreatePalettePacket CreateScheduledTask CreateTemporary CreateWindow CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossingDetect CrossMatrix Csc Csch CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrentImage CurrentlySpeakingPacket CurrentValue CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecomposition ' +\n      'D DagumDistribution DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DataCompression DataDistribution DataRange DataReversed Date DateDelimiters DateDifference DateFunction DateList DateListLogPlot DateListPlot DatePattern DatePlus DateRange DateString DateTicksFormat DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayMatchQ DayName DayPlus DayRange DayRound DeBruijnGraph Debug DebugTag Decimal DeclareKnownSymbols DeclarePackage Decompose Decrement DedekindEta Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic Deinitialization Del Deletable Delete DeleteBorderComponents DeleteCases DeleteContents DeleteDirectory DeleteDuplicates DeleteFile DeleteSmallComponents DeleteWithContents DeletionWarning Delimiter DelimiterFlashTime DelimiterMatching Delimiters Denominator DensityGraphics DensityHistogram DensityPlot DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DescriptorStateSpace DesignMatrix Det DGaussianWavelet DiacriticalPositioning Diagonal DiagonalMatrix Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DifferenceDelta DifferenceOrder DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralGroup Dilation Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletCharacter DirichletConvolve DirichletDistribution DirichletL DirichletTransform DirichletWindow DisableConsolePrintPacket DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform ' +\n      'DiscreteWaveletTransform Discriminant Disjunction Disk DiskBox DiskMatrix Dispatch DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentNotebook DominantColors DOSTextFormat Dot DotDashed DotEqual Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DSolve Dt DualLinearProgramming DualSystemsModel DumpGet DumpSave DuplicateFreeQ Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptions ' +\n      'E EccentricityCentrality EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeCost EdgeCount EdgeCoverQ EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData Eliminate EliminationOrder EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EnableConsolePrintPacket Enabled Encode End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfFile EndOfLine EndOfString EndPackage EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entropy EntropyFilter Environment Epilog Equal EqualColumns EqualRows EqualTilde EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerE EulerGamma EulerianGraphQ EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluationCell EvaluationCompletionAction EvaluationElements EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpToTrig ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalCall ExternalDataCharacterEncoding Extract ExtractArchive ExtremeValueDistribution ' +\n      'FaceForm FaceGrids FaceGridsStyle Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail FailureDistribution False FARIMAProcess FEDisableConsolePrintPacket FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket Fibonacci FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileDate FileExistsQ FileExtension FileFormat FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileType FilledCurve FilledCurveBox Filling FillingStyle FillingTransform FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindArgMax FindArgMin FindClique FindClusters FindCurvePath FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEulerianCycle FindFaces FindFile FindFit FindGeneratingFunction FindGeoLocation FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMaximum FindMaximumFlow FindMaxValue FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindPermutation FindPostmanTour FindProcessParameters FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindThreshold FindVertexCover FindVertexCut Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstPassageTimeDistribution FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FittedModel FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlatTopWindow FlipView Floor FlushPrintOutputPacket Fold FoldList Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrequencySamplingFilterKernel FresnelC FresnelS Friday FrobeniusNumber FrobeniusSolve ' +\n      'FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullOptions FullSimplify Function FunctionExpand FunctionInterpolation FunctionSpace FussellVeselyImportance ' +\n      'GaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins Gamma GammaDistribution GammaRegularized GapPenalty Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateConditions GeneratedCell GeneratedParameters GeneratingFunction Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDistance GeoGridPosition GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoPosition GeoPositionENU GeoPositionXYZ GeoProjectionData GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter Graph GraphAssortativity GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion ' +\n      'GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel GreatCircleDistance Greater GreaterEqual GreaterEqualLess GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterTilde Green Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain Gudermannian GumbelDistribution ' +\n      'HaarWavelet HadamardMatrix HalfNormalDistribution HamiltonianGraphQ HammingDistance HammingWindow HankelH1 HankelH2 HankelMatrix HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash HashTable Haversine HazardFunction Head HeadCompose Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenSurface HighlightGraph HighlightImage HighpassFilter HigmanSimsGroupHS HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HitMissTransform HITSCentrality HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HotellingTSquareDistribution HoytDistribution HTMLSave Hue HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestData ' +\n      'I Identity IdentityMatrix If IgnoreCase Im Image Image3D Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageAspectRatio ImageAssemble ImageCache ImageCacheValid ImageCapture ImageChannels ImageClip ImageColorSpace ImageCompose ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDataPacket ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDistance ImageEffect ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageForestingComponents ImageForwardTransformation ImageHistogram ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarkers ImageMeasurements ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImageQ ImageRangeCache ImageReflect ImageRegion ImageResize ImageResolution ImageRotate ImageRotated ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions Implies Import ImportAutoReplacements ImportString ImprovementImportance In IncidenceGraph IncidenceList IncidenceMatrix IncludeConstantBasis IncludeFileExtension IncludePods IncludeSingularTerm Increment Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentUnit IndependentVertexSetQ Indeterminate IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers Infinity Infix Information Inherited InheritScope Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InlineCounterAssignments InlineCounterIncrements InlineRules Inner Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionPointObject InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Install InstallService InString Integer IntegerDigits IntegerExponent IntegerLength IntegerPart IntegerPartitions IntegerQ Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction ' +\n      'InterpretTemplate InterquartileRange Interrupt InterruptSettings Intersection Interval IntervalIntersection IntervalMemberQ IntervalUnion Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHaversine InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InversePermutation InverseRadon InverseSeries InverseSurvivalFunction InverseWaveletTransform InverseWeierstrassP InverseZTransform Invisible InvisibleApplication InvisibleTimes IrreduciblePolynomialQ IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcess ' +\n      'JaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join Joined JoinedCurve JoinedCurveBox JoinForm JordanDecomposition JordanModelDecomposition ' +\n      'K KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelMixtureDistribution KernelObject Kernels Ket Khinchin KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnightTourGraph KnotData KnownUnitQ KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter ' +\n      'Label Labeled LabeledSlider LabelingFunction LabelStyle LaguerreL LambdaComponents LambertW LanczosWindow LandauDistribution Language LanguageCategory LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCM LeafCount LeapYearQ LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessFullEqual LessGreater LessLess LessSlantEqual LessTilde LetterCharacter LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox LinearFilter LinearFractionalTransform LinearModelFit LinearOffsetFunction LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBreak LinebreakAdjustments LineBreakChart LineBreakWithin LineColor LineForm LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRead LinkReadHeld LinkReadyQ Links LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot Listen ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalClusteringCoefficient LocalizeVariables LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions ' +\n      'LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestAscendingSequence LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow Loopback LoopFreeGraphQ LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LyapunovSolve LyonsGroupLy ' +\n      'MachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules MangoldtLambda ManhattanDistance Manipulate Manipulator MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixPlot MatrixPower MatrixQ MatrixRank Max MaxBend MaxDetect MaxExtraBandwidths MaxExtraConditions MaxFeatures MaxFilter Maximize MaxIterations MaxMemoryUsed MaxMixtureKernels MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxValue MaxwellDistribution McLaughlinGroupMcL Mean MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter Median MedianDeviation MedianFilter Medium MeijerG MeixnerDistribution MemberQ MemoryConstrained MemoryInUse Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuPacket MenuSortingValue MenuStyle MenuView MergeDifferences Mesh MeshFunctions MeshRange MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation Method MethodOptions MexicanHatWavelet MeyerWavelet Min MinDetect MinFilter MinimalPolynomial MinimalStateSpaceModel Minimize Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingDataMethod MittagLefflerE MixedRadix MixedRadixQuantity MixtureDistribution Mod Modal Mode Modular ModularLambda Module Modulus MoebiusMu Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction Monday Monitor MonomialList MonomialOrder MonsterGroupM MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform Most MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovingAverage MovingMedian MoyalDistribution MultiedgeStyle MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistribution ' +\n      'N NakagamiDistribution NameQ Names NamespaceBox Nand NArgMax NArgMin NBernoulliB NCache NDSolve NDSolveValue Nearest NearestFunction NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeMultinomialDistribution NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestList NestWhile NestWhileList NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextPrime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants None NonlinearModelFit NonlocalMeansFilter NonNegative NonPositive Nor NorlundB Norm Normal NormalDistribution NormalGrouping Normalize NormalizedSquaredEuclideanDistance NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde NotHumpDownHump NotHumpEqual NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms Null NullRecords NullSpace NullWords Number NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator ' +\n      'NumberSigns NumberString Numerator NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlot ' +\n      'O ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OddQ Off Offset OLEData On ONanGroupON OneIdentity Opacity Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering Orderless OrnsteinUhlenbeckProcess Orthogonalize Out Outer OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OwenT OwnValues ' +\n      'PackingMethod PaddedForm Padding PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageWidth PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParetoDistribution Part PartialCorrelationFunction PartialD ParticleData Partition PartitionsP PartitionsQ ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PerformanceGoal PeriodicInterpolation Periodogram PeriodogramArray PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PERTDistribution PetersenGraph PhaseMargins Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest Pink Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarGraphQ Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangePadding PlotRegion PlotStyle Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox PointBox PointFigureChart PointForm PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonBox PolygonBoxOptions PolygonHoleScale PolygonIntersections PolygonScale PolyhedronData PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position Positive PositiveDefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList ' +\n      'PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement PredictionRoot PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependTo PreserveImageOptions Previous PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitiveRoot PrincipalComponents PrincipalValue Print PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessEstimator ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptions ' +\n      'QBinomial QFactorial QGamma QHypergeometricPFQ QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ Quantile QuantilePlot Quantity QuantityForm QuantityMagnitude QuantityQ QuantityUnit Quartics QuartileDeviation Quartiles QuartileSkewness QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainder ' +\n      'RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Random RandomChoice RandomComplex RandomFunction RandomGraph RandomImage RandomInteger RandomPermutation RandomPrime RandomReal RandomSample RandomSeed RandomVariate RandomWalkProcess Range RangeFilter RangeSpecification RankedMax RankedMin Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios Raw RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadList ReadProtected Real RealBlockDiagonalForm RealDigits RealExponent Reals Reap Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate RegionBinarize RegionFunction RegionPlot RegionPlot3D RegularExpression Regularization Reinstall Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot Remove RemoveAlphaChannel RemoveAsynchronousTask Removed RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart Repeated RepeatedNull RepeatedString Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated Resampling Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask Residue Resolve Rest Resultant ResumePacket Return ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulerUnits Run RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilarity ' +\n      'SameQ SameTest SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveDefinitions SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTaskActiveQ ScheduledTaskData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition Sec Sech SechDistribution SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemialgebraicComponentInstances SendMail Sequence SequenceAlignment SequenceForm SequenceHold SequenceLimit Series SeriesCoefficient SeriesData SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPrecision SetProperty SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share Sharpen ShearingMatrix ShearingTransform ShenCastanMatrix Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortUpArrow Show ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiegelTheta SiegelTukeyTest Sign Signature SignedRankTest SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution Skip SliceDistribution Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDelayCompensator SmithWatermanSimilarity ' +\n      'SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SocialMediaData Socket SokalSneathDissimilarity Solve SolveAlways SolveDelayed Sort SortBy Sound SoundAndGraphics SoundNote SoundVolume Sow Space SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution Speak SpeakTextPacket SpearmanRankTest SpearmanRho Spectrogram SpectrogramArray Specularity SpellingCorrection SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackInhibit StandardDeviation StandardDeviationFilter StandardForm Standardize StandbyDistribution Star StarGraph StartAsynchronousTask StartingStepSize StartOfLine StartOfString StartScheduledTask StartupSound StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringCount StringDrop StringExpression StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPosition StringQ StringReplace StringReplaceList StringReplacePart StringReverse StringRotateLeft StringRotateRight StringSkeleton StringSplit StringTake StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleBoxOptions StyleData StyleDefinitions StyleForm StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders ' +\n      'SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subset SubsetEqual Subsets SubStar Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde SuchThat Sum SumConvergence Sunday SuperDagger SuperMinus SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceColor SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SystemDialogInput SystemException SystemHelpPath SystemInformation SystemInformationData SystemOpen SystemOptions SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemStub ' +\n      'Tab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeWhile Tally Tan Tanh TargetFunctions TargetUnits TautologyQ TelegraphProcess TemplateBox TemplateBoxOptions TemplateSlotSequence TemporalData Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCell TextClipboardType TextData TextForm TextJustification TextLine TextPacket TextParagraph TextRecognize TextRendering TextStyle Texture TextureCoordinateFunction TextureCoordinateScaling Therefore ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreeJSymbol Threshold Through Throw Thumbnail Thursday Ticks TicksStyle Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint Times TimesBy TimeSeriesForecast TimeSeriesInvertibility TimeUsed TimeValue TimeZone Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate ToDiscreteTimeModel ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform TopologicalSort ToRadicals ToRules ToString Total TotalHeight TotalVariationFilter TotalWidth TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField Translate TranslationTransform TransparentColor Transpose TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle TriangleWave TriangularDistribution Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean True TrueQ TruncatedDistribution TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow Tuples TuranGraph TuringMachine ' +\n      'Transparent ' +\n      'UnateQ Uncompress Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UndirectedEdge UndirectedGraph UndirectedGraphQ UndocumentedTestFEParserPacket UndocumentedTestGetSelectionPacket Unequal Unevaluated UniformDistribution UniformGraphDistribution UniformSumDistribution Uninstall Union UnionPlus Unique UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitTriangle UnitVector Unprotect UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpValues URL URLFetch URLFetchAsynchronous URLSave URLSaveAsynchronous UseGraphicsRange Using UsingFrontEnd ' +\n      'V2Get ValidationLength Value ValueBox ValueBoxOptions ValueForm ValueQ ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerifyConvergence VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoigtDistribution VonMisesDistribution ' +\n      'WaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeberE Wedge Wednesday WeibullDistribution WeierstrassHalfPeriods WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WilksW WilksWTest WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult Word WordBoundary WordCharacter WordData WordSearch WordSeparators WorkingPrecision Write WriteString Wronskian ' +\n      'XMLElement XMLObject Xnor Xor ' +\n      'Yellow YuleDissimilarity ' +\n      'ZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZipfDistribution ZTest ZTransform ' +\n      '$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AssertFunction $Assumptions $AsynchronousTask $BaseDirectory $BatchInput $BatchOutput $BoxForms $ByteOrdering $Canceled $CharacterEncoding $CharacterEncodings $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $CreationDate $CurrentLink $DateStringFormat $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $Epilog $ExportFormats $Failed $FinancialDataSource $FormatType $FrontEnd $FrontEndSession $GeoLocation $HistoryLength $HomeDirectory $HTTPCookies $IgnoreEOF $ImagingDevices $ImportFormats $InitialDirectory $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $ModuleNumber $NetworkLicense $NewMessage $NewSymbol $Notebooks $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $PipeSupported $Post $Pre $PreferencesDirectory $PrePrint $PreRead $PrintForms $PrintLiteral $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $RandomState $RecursionLimit $ReleaseNumber $RootDirectory $ScheduledTask $ScriptCommandLine $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemWordLength $TemporaryDirectory $TemporaryPrefix $TextStyle $TimedOut $TimeUnit $TimeZone $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $Urgent $UserAddOnsDirectory $UserBaseDirectory $UserDocumentsDirectory $UserName $Version $VersionNumber',\n    contains: [\n      {\n        className: 'comment',\n        begin: /\\(\\*/, end: /\\*\\)/\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.C_NUMBER_MODE,\n      {\n        begin: /\\{/, end: /\\}/,\n        illegal: /:/\n      }\n    ]\n  };\n}\n},{name:\"matlab\",create:/*\nLanguage: Matlab\nAuthor: Denis Bardadym <bardadymchik@gmail.com>\nContributors: Eugene Nizhibitsky <nizhibitsky@ya.ru>\nCategory: scientific\n*/\n\nfunction(hljs) {\n  var COMMON_CONTAINS = [\n    hljs.C_NUMBER_MODE,\n    {\n      className: 'string',\n      begin: '\\'', end: '\\'',\n      contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\n    }\n  ];\n  var TRANSPOSE = {\n    relevance: 0,\n    contains: [\n      {\n        begin: /'['\\.]*/\n      }\n    ]\n  };\n\n  return {\n    keywords: {\n      keyword:\n        'break case catch classdef continue else elseif end enumerated events for function ' +\n        'global if methods otherwise parfor persistent properties return spmd switch try while',\n      built_in:\n        'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan ' +\n        'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot ' +\n        'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog ' +\n        'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal ' +\n        'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli ' +\n        'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma ' +\n        'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms ' +\n        'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones ' +\n        'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ' +\n        'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril ' +\n        'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute ' +\n        'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan ' +\n        'isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal ' +\n        'rosser toeplitz vander wilkinson'\n    },\n    illegal: '(//|\"|#|/\\\\*|\\\\s+/\\\\w+)',\n    contains: [\n      {\n        className: 'function',\n        beginKeywords: 'function', end: '$',\n        contains: [\n          hljs.UNDERSCORE_TITLE_MODE,\n          {\n            className: 'params',\n            variants: [\n              {begin: '\\\\(', end: '\\\\)'},\n              {begin: '\\\\[', end: '\\\\]'}\n            ]\n          }\n        ]\n      },\n      {\n        begin: /[a-zA-Z_][a-zA-Z_0-9]*'['\\.]*/,\n        returnBegin: true,\n        relevance: 0,\n        contains: [\n          {begin: /[a-zA-Z_][a-zA-Z_0-9]*/, relevance: 0},\n          TRANSPOSE.contains[0]\n        ]\n      },\n      {\n        begin: '\\\\[', end: '\\\\]',\n        contains: COMMON_CONTAINS,\n        relevance: 0,\n        starts: TRANSPOSE\n      },\n      {\n        begin: '\\\\{', end: /}/,\n        contains: COMMON_CONTAINS,\n        relevance: 0,\n        starts: TRANSPOSE\n      },\n      {\n        // transpose operators at the end of a function call\n        begin: /\\)/,\n        relevance: 0,\n        starts: TRANSPOSE\n      },\n      hljs.COMMENT('^\\\\s*\\\\%\\\\{\\\\s*$', '^\\\\s*\\\\%\\\\}\\\\s*$'),\n      hljs.COMMENT('\\\\%', '$')\n    ].concat(COMMON_CONTAINS)\n  };\n}\n},{name:\"maxima\",create:/*\nLanguage: Maxima\nAuthor: Robert Dodier <robert.dodier@gmail.com>\nCategory: scientific\n*/\n\nfunction(hljs) {\n  var KEYWORDS = 'if then else elseif for thru do while unless step in and or not';\n  var LITERALS = 'true false unknown inf minf ind und %e %i %pi %phi %gamma';\n  var BUILTIN_FUNCTIONS =\n        ' abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate'\n      + ' addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix'\n      + ' adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type'\n      + ' alias allroots alphacharp alphanumericp amortization %and annuity_fv'\n      + ' annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2'\n      + ' applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply'\n      + ' arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger'\n      + ' asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order'\n      + ' asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method'\n      + ' av average_degree backtrace bars barsplot barsplot_description base64 base64_decode'\n      + ' bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx'\n      + ' bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify'\n      + ' bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized'\n      + ' bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp'\n      + ' bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition'\n      + ' block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description'\n      + ' break bug_report build_info|10 buildq build_sample burn cabs canform canten'\n      + ' cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli'\n      + ' cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform'\n      + ' cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel'\n      + ' cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial'\n      + ' cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson'\n      + ' cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay'\n      + ' ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic'\n      + ' cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2'\n      + ' charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps'\n      + ' chinese cholesky christof chromatic_index chromatic_number cint circulant_graph'\n      + ' clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph'\n      + ' clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse'\n      + ' collectterms columnop columnspace columnswap columnvector combination combine'\n      + ' comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph'\n      + ' complete_graph complex_number_p components compose_functions concan concat'\n      + ' conjugate conmetderiv connected_components connect_vertices cons constant'\n      + ' constantp constituent constvalue cont2part content continuous_freq contortion'\n      + ' contour_plot contract contract_edge contragrad contrib_ode convert coord'\n      + ' copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1'\n      + ' covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline'\n      + ' ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph'\n      + ' cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate'\n      + ' declare declare_constvalue declare_dimensions declare_fundamental_dimensions'\n      + ' declare_fundamental_units declare_qty declare_translated declare_unit_conversion'\n      + ' declare_units declare_weights decsym defcon define define_alt_display define_variable'\n      + ' defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten'\n      + ' delta demo demoivre denom depends derivdegree derivlist describe desolve'\n      + ' determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag'\n      + ' diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export'\n      + ' dimacs_import dimension dimensionless dimensions dimensions_as_list direct'\n      + ' directory discrete_freq disjoin disjointp disolate disp dispcon dispform'\n      + ' dispfun dispJordan display disprule dispterms distrib divide divisors divsum'\n      + ' dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart'\n      + ' draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring'\n      + ' edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth'\n      + ' einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome'\n      + ' ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using'\n      + ' ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi'\n      + ' ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp'\n      + ' equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors'\n      + ' euler ev eval_string evenp every evolution evolution2d evundiff example exp'\n      + ' expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci'\n      + ' expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li'\n      + ' expintegral_shi expintegral_si explicit explose exponentialize express expt'\n      + ' exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum'\n      + ' factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements'\n      + ' fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge'\n      + ' file_search file_type fillarray findde find_root find_root_abs find_root_error'\n      + ' find_root_rel first fix flatten flength float floatnump floor flower_snark'\n      + ' flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran'\n      + ' fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp'\n      + ' foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s'\n      + ' from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp'\n      + ' fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units'\n      + ' fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized'\n      + ' gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide'\n      + ' gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym'\n      + ' geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean'\n      + ' geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string'\n      + ' get_pixel get_plot_option get_tex_environment get_tex_environment_default'\n      + ' get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close'\n      + ' gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum'\n      + ' gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import'\n      + ' graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery'\n      + ' graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph'\n      + ' grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path'\n      + ' hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite'\n      + ' hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description'\n      + ' hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph'\n      + ' icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy'\n      + ' ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart'\n      + ' imetric implicit implicit_derivative implicit_plot indexed_tensor indices'\n      + ' induced_subgraph inferencep inference_result infix info_display init_atensor'\n      + ' init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions'\n      + ' integrate intersect intersection intervalp intopois intosum invariant1 invariant2'\n      + ' inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc'\n      + ' inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns'\n      + ' inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint'\n      + ' invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph'\n      + ' is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate'\n      + ' isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph'\n      + ' items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc'\n      + ' jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd'\n      + ' jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill'\n      + ' killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis'\n      + ' kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform'\n      + ' kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete'\n      + ' kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace'\n      + ' kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2'\n      + ' kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson'\n      + ' kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange'\n      + ' laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp'\n      + ' lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length'\n      + ' let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit'\n      + ' Lindstedt linear linearinterpol linear_program linear_regression line_graph'\n      + ' linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials'\n      + ' listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry'\n      + ' log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst'\n      + ' lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact'\n      + ' lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub'\n      + ' lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma'\n      + ' make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country'\n      + ' make_polygon make_random_state make_rgb_picture makeset make_string_input_stream'\n      + ' make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom'\n      + ' maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display'\n      + ' mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker'\n      + ' max max_clique max_degree max_flow maximize_lp max_independent_set max_matching'\n      + ' maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform'\n      + ' mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete'\n      + ' mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic'\n      + ' mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t'\n      + ' mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull'\n      + ' median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree'\n      + ' min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor'\n      + ' minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton'\n      + ' mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions'\n      + ' multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff'\n      + ' multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary'\n      + ' natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext'\n      + ' newdet new_graph newline newton new_variable next_prime nicedummies niceindices'\n      + ' ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp'\n      + ' nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst'\n      + ' nthroot nullity nullspace num numbered_boundaries numberp number_to_octets'\n      + ' num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai'\n      + ' nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin'\n      + ' oid_to_octets op opena opena_binary openr openr_binary openw openw_binary'\n      + ' operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless'\n      + ' orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap'\n      + ' out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface'\n      + ' parg parGosper parse_string parse_timedate part part2cont partfrac partition'\n      + ' partition_set partpol path_digraph path_graph pathname_directory pathname_name'\n      + ' pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform'\n      + ' pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete'\n      + ' pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal'\n      + ' pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal'\n      + ' pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t'\n      + ' pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph'\n      + ' petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding'\n      + ' playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff'\n      + ' poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar'\n      + ' polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion'\n      + ' poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal'\n      + ' poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal'\n      + ' poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation'\n      + ' poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm'\n      + ' poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form'\n      + ' poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part'\n      + ' poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension'\n      + ' poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod'\n      + ' powerseries powerset prefix prev_prime primep primes principal_components'\n      + ' print printf printfile print_graph printpois printprops prodrac product properties'\n      + ' propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct'\n      + ' puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp'\n      + ' quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile'\n      + ' quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2'\n      + ' quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f'\n      + ' quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel'\n      + ' quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal'\n      + ' quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t'\n      + ' quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t'\n      + ' quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan'\n      + ' radius random random_bernoulli random_beta random_binomial random_bipartite_graph'\n      + ' random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform'\n      + ' random_exp random_f random_gamma random_general_finite_discrete random_geometric'\n      + ' random_graph random_graph1 random_gumbel random_hypergeometric random_laplace'\n      + ' random_logistic random_lognormal random_negative_binomial random_network'\n      + ' random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto'\n      + ' random_permutation random_poisson random_rayleigh random_regular_graph random_student_t'\n      + ' random_tournament random_tree random_weibull range rank rat ratcoef ratdenom'\n      + ' ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump'\n      + ' ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array'\n      + ' read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline'\n      + ' read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate'\n      + ' realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar'\n      + ' rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus'\n      + ' rem remainder remarray rembox remcomps remcon remcoord remfun remfunction'\n      + ' remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions'\n      + ' remove_fundamental_units remove_plot_option remove_vertex rempart remrule'\n      + ' remsym remvalue rename rename_file reset reset_displays residue resolvante'\n      + ' resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein'\n      + ' resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer'\n      + ' rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann'\n      + ' rinvariant risch rk rmdir rncombine romberg room rootscontract round row'\n      + ' rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i'\n      + ' scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description'\n      + ' scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second'\n      + ' sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight'\n      + ' setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state'\n      + ' set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications'\n      + ' set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path'\n      + ' show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform'\n      + ' simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert'\n      + ' sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial'\n      + ' skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp'\n      + ' skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric'\n      + ' skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic'\n      + ' skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t'\n      + ' skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t'\n      + ' skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph'\n      + ' smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve'\n      + ' solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export'\n      + ' sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1'\n      + ' spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition'\n      + ' sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus'\n      + ' ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot'\n      + ' starplot_description status std std1 std_bernoulli std_beta std_binomial'\n      + ' std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma'\n      + ' std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace'\n      + ' std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t'\n      + ' std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull'\n      + ' stemplot stirling stirling1 stirling2 strim striml strimr string stringout'\n      + ' stringp strong_components struve_h struve_l sublis sublist sublist_indices'\n      + ' submatrix subsample subset subsetp subst substinpart subst_parallel substpart'\n      + ' substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext'\n      + ' symbolp symmdifference symmetricp system take_channel take_inference tan'\n      + ' tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract'\n      + ' tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference'\n      + ' test_normality test_proportion test_proportions_difference test_rank_sum'\n      + ' test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display'\n      + ' texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter'\n      + ' toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep'\n      + ' totalfourier totient tpartpol trace tracematrix trace_options transform_sample'\n      + ' translate translate_file transpose treefale tree_reduce treillis treinat'\n      + ' triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate'\n      + ' truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph'\n      + ' truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget'\n      + ' ultraspherical underlying_graph undiff union unique uniteigenvectors unitp'\n      + ' units unit_step unitvector unorder unsum untellrat untimer'\n      + ' untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli'\n      + ' var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform'\n      + ' var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel'\n      + ' var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial'\n      + ' var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson'\n      + ' var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp'\n      + ' verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance'\n      + ' vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle'\n      + ' vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j'\n      + ' wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian'\n      + ' xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta'\n      + ' zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors'\n      + ' zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table'\n      + ' absboxchar activecontexts adapt_depth additive adim aform algebraic'\n      + ' algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic'\n      + ' animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar'\n      + ' asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top'\n      + ' azimuth background background_color backsubst berlefact bernstein_explicit'\n      + ' besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest'\n      + ' border boundaries_array box boxchar breakup %c capping cauchysum cbrange'\n      + ' cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics'\n      + ' colorbox columns commutative complex cone context contexts contour contour_levels'\n      + ' cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp'\n      + ' cube current_let_rule_package cylinder data_file_name debugmode decreasing'\n      + ' default_let_rule_package delay dependencies derivabbrev derivsubst detout'\n      + ' diagmetric diff dim dimensions dispflag display2d|10 display_format_internal'\n      + ' distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor'\n      + ' doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules'\n      + ' dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart'\n      + ' edge_color edge_coloring edge_partition edge_type edge_width %edispflag'\n      + ' elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer'\n      + ' epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type'\n      + ' %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand'\n      + ' expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine'\n      + ' factlim factorflag factorial_expand factors_only fb feature features'\n      + ' file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10'\n      + ' file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color'\n      + ' fill_density filled_func fixed_vertices flipflag float2bf font font_size'\n      + ' fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim'\n      + ' gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command'\n      + ' gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command'\n      + ' gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command'\n      + ' gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble'\n      + ' gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args'\n      + ' Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both'\n      + ' head_length head_type height hypergeometric_representation %iargs ibase'\n      + ' icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form'\n      + ' ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval'\n      + ' infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued'\n      + ' integrate_use_rootsof integration_constant integration_constant_counter interpolate_color'\n      + ' intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr'\n      + ' julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment'\n      + ' label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max'\n      + ' leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear'\n      + ' linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params'\n      + ' linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname'\n      + ' loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx'\n      + ' logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros'\n      + ' mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult'\n      + ' matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10'\n      + ' maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint'\n      + ' maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp'\n      + ' mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver'\n      + ' modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag'\n      + ' newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc'\n      + ' noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np'\n      + ' npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties'\n      + ' opsubst optimprefix optionset orientation origin orthopoly_returns_intervals'\n      + ' outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution'\n      + ' %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart'\n      + ' png_file pochhammer_max_index points pointsize point_size points_joined point_type'\n      + ' poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm'\n      + ' poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list'\n      + ' poly_secondary_elimination_order poly_top_reduction_only posfun position'\n      + ' powerdisp pred prederror primep_number_of_tests product_use_gamma program'\n      + ' programmode promote_float_to_bigfloat prompt proportional_axes props psexpand'\n      + ' ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof'\n      + ' ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann'\n      + ' ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw'\n      + ' refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs'\n      + ' rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy'\n      + ' same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck'\n      + ' setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width'\n      + ' show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type'\n      + ' show_vertices show_weight simp simplified_output simplify_products simpproduct'\n      + ' simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn'\n      + ' solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag'\n      + ' stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda'\n      + ' subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric'\n      + ' tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials'\n      + ' tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch'\n      + ' tr track transcompile transform transform_xy translate_fast_arrays transparent'\n      + ' transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex'\n      + ' tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign'\n      + ' trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars'\n      + ' tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode'\n      + ' tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes'\n      + ' ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble'\n      + ' usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition'\n      + ' vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface'\n      + ' wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel'\n      + ' xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate'\n      + ' xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel'\n      + ' xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width'\n      + ' ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis'\n      + ' ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis'\n      + ' yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob'\n      + ' zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest';\n  var SYMBOLS = '_ __ %|0 %%|0';\n\n  return {\n    lexemes: '[A-Za-z_%][0-9A-Za-z_%]*',\n    keywords: {\n      keyword: KEYWORDS,\n      literal: LITERALS,\n      built_in: BUILTIN_FUNCTIONS,\n      symbol: SYMBOLS,\n    },\n    contains: [\n      {\n        className: 'comment',\n        begin: '/\\\\*',\n        end: '\\\\*/',\n        contains: ['self']\n      },\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'number',\n        relevance: 0,\n        variants: [\n          {\n            // float number w/ exponent\n            // hmm, I wonder if we ought to include other exponent markers?\n            begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Ee][-+]?\\\\d+\\\\b',\n          },\n          {\n            // bigfloat number\n            begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Bb][-+]?\\\\d+\\\\b',\n            relevance: 10\n          },\n          {\n            // float number w/out exponent\n            // Doesn't seem to recognize floats which start with '.'\n            begin: '\\\\b(\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)\\\\b',\n          },\n          {\n            // integer in base up to 36\n            // Doesn't seem to recognize integers which end with '.'\n            begin: '\\\\b(\\\\d+|0[0-9A-Za-z]+)\\\\.?\\\\b',\n          }\n        ]\n      }\n    ],\n    illegal: /@/\n  }\n}\n\n},{name:\"mel\",create:/*\nLanguage: MEL\nDescription: Maya Embedded Language\nAuthor: Shuen-Huei Guan <drake.guan@gmail.com>\nCategory: graphics\n*/\n\nfunction(hljs) {\n  return {\n    keywords:\n      'int float string vector matrix if else switch case default while do for in break ' +\n      'continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic ' +\n      'addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey ' +\n      'affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve ' +\n      'alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor ' +\n      'animDisplay animView annotate appendStringArray applicationName applyAttrPreset ' +\n      'applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx ' +\n      'artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu ' +\n      'artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand ' +\n      'assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface ' +\n      'attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu ' +\n      'attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp ' +\n      'attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery ' +\n      'autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults ' +\n      'bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership ' +\n      'bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType ' +\n      'boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu ' +\n      'buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge ' +\n      'cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch ' +\n      'catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox ' +\n      'character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp ' +\n      'checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip ' +\n      'clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore ' +\n      'closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter ' +\n      'cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color ' +\n      'colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp ' +\n      'colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem ' +\n      'componentEditor compositingInterop computePolysetVolume condition cone confirmDialog ' +\n      'connectAttr connectControl connectDynamic connectJoint connectionInfo constrain ' +\n      'constrainValue constructionHistory container containsMultibyte contextInfo control ' +\n      'convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation ' +\n      'convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache ' +\n      'cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel ' +\n      'cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver ' +\n      'cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor ' +\n      'createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer ' +\n      'createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse ' +\n      'currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx ' +\n      'curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface ' +\n      'curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox ' +\n      'defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete ' +\n      'deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes ' +\n      'delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo ' +\n      'dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable ' +\n      'disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected ' +\n      'displayColor displayCull displayLevelOfDetail displayPref displayRGBColor ' +\n      'displaySmoothness displayStats displayString displaySurface distanceDimContext ' +\n      'distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct ' +\n      'doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator ' +\n      'duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression ' +\n      'dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor ' +\n      'dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers ' +\n      'editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor ' +\n      'editorTemplate effector emit emitter enableDevice encodeString endString endsWith env ' +\n      'equivalent equivalentTol erf error eval evalDeferred evalEcho event ' +\n      'exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp ' +\n      'expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof ' +\n      'fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo ' +\n      'filetest filletCurve filter filterCurve filterExpand filterStudioImport ' +\n      'findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster ' +\n      'finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar ' +\n      'floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo ' +\n      'fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint ' +\n      'frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss ' +\n      'geometryConstraint getApplicationVersionAsFloat getAttr getClassification ' +\n      'getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes ' +\n      'getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender ' +\n      'glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl ' +\n      'gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid ' +\n      'gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap ' +\n      'HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor ' +\n      'HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached ' +\n      'HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel ' +\n      'headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey ' +\n      'hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender ' +\n      'hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox ' +\n      'iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ' +\n      'ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ' +\n      'ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform ' +\n      'insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance ' +\n      'instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp ' +\n      'interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf ' +\n      'isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect ' +\n      'itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx ' +\n      'jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner ' +\n      'keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx ' +\n      'keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx ' +\n      'keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx ' +\n      'keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor ' +\n      'layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList ' +\n      'lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep ' +\n      'listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory ' +\n      'listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation ' +\n      'listNodeTypes listPanelCategories listRelatives listSets listTransforms ' +\n      'listUnselected listerEditor loadFluid loadNewShelf loadPlugin ' +\n      'loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log ' +\n      'longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive ' +\n      'makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext ' +\n      'manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx ' +\n      'manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout ' +\n      'menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp ' +\n      'mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move ' +\n      'moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute ' +\n      'nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast ' +\n      'nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint ' +\n      'normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect ' +\n      'nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref ' +\n      'nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType ' +\n      'objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface ' +\n      'offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit ' +\n      'orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier ' +\n      'paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration ' +\n      'panelHistory paramDimContext paramDimension paramLocator parent parentConstraint ' +\n      'particle particleExists particleInstancer particleRenderInfo partition pasteKey ' +\n      'pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture ' +\n      'pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo ' +\n      'pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult ' +\n      'pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend ' +\n      'polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal ' +\n      'polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge ' +\n      'polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge ' +\n      'polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet ' +\n      'polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet ' +\n      'polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection ' +\n      'polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge ' +\n      'polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet ' +\n      'polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix ' +\n      'polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut ' +\n      'polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet ' +\n      'polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge ' +\n      'polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex ' +\n      'polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection ' +\n      'polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection ' +\n      'polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint ' +\n      'polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate ' +\n      'polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge ' +\n      'polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing ' +\n      'polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet ' +\n      'polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace ' +\n      'popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer ' +\n      'projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx ' +\n      'propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd ' +\n      'python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection ' +\n      'radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl ' +\n      'readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference ' +\n      'referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE ' +\n      'registerPluginResource rehash reloadImage removeJoint removeMultiInstance ' +\n      'removePanelCategory rename renameAttr renameSelectionList renameUI render ' +\n      'renderGlobalsNode renderInfo renderLayerButton renderLayerParent ' +\n      'renderLayerPostProcess renderLayerUnparent renderManip renderPartition ' +\n      'renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor ' +\n      'renderWindowSelectContext renderer reorder reorderDeformers requires reroot ' +\n      'resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget ' +\n      'reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx ' +\n      'rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout ' +\n      'runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage ' +\n      'saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale ' +\n      'scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor ' +\n      'sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable ' +\n      'scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt ' +\n      'searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey ' +\n      'selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType ' +\n      'selectedNodes selectionConnection separator setAttr setAttrEnumResource ' +\n      'setAttrMapping setAttrNiceNameResource setConstraintRestPosition ' +\n      'setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr ' +\n      'setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe ' +\n      'setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag ' +\n      'setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject ' +\n      'setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets ' +\n      'shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare ' +\n      'shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField ' +\n      'shortNameOf showHelp showHidden showManipCtx showSelectionInTitle ' +\n      'showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface ' +\n      'size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep ' +\n      'snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound ' +\n      'soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort ' +\n      'spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString ' +\n      'startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp ' +\n      'stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex ' +\n      'stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex ' +\n      'stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString ' +\n      'stringToStringArray strip stripPrefixFromName stroke subdAutoProjection ' +\n      'subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV ' +\n      'subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror ' +\n      'subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease ' +\n      'subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring ' +\n      'surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton ' +\n      'symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext ' +\n      'texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext ' +\n      'texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text ' +\n      'textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList ' +\n      'textToShelf textureDisplacePlane textureHairColor texturePlacementContext ' +\n      'textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath ' +\n      'toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower ' +\n      'toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper ' +\n      'trace track trackCtx transferAttributes transformCompare transformLimits translator ' +\n      'trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence ' +\n      'twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit ' +\n      'unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink ' +\n      'uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane ' +\n      'viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex ' +\n      'waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire ' +\n      'wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform',\n    illegal: '</',\n    contains: [\n      hljs.C_NUMBER_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'string',\n        begin: '`', end: '`',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n      { // eats variables\n        begin: '[\\\\$\\\\%\\\\@](\\\\^\\\\w\\\\b|#\\\\w+|[^\\\\s\\\\w{]|{\\\\w+}|\\\\w+)'\n      },\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE\n    ]\n  };\n}\n},{name:\"mercury\",create:/*\nLanguage: Mercury\nAuthor: mucaho <mkucko@gmail.com>\nDescription: Mercury is a logic/functional programming language which combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features.\n*/\n\nfunction(hljs) {\n  var KEYWORDS = {\n    keyword:\n      'module use_module import_module include_module end_module initialise ' +\n      'mutable initialize finalize finalise interface implementation pred ' +\n      'mode func type inst solver any_pred any_func is semidet det nondet ' +\n      'multi erroneous failure cc_nondet cc_multi typeclass instance where ' +\n      'pragma promise external trace atomic or_else require_complete_switch ' +\n      'require_det require_semidet require_multi require_nondet ' +\n      'require_cc_multi require_cc_nondet require_erroneous require_failure',\n    meta:\n      // pragma\n      'inline no_inline type_spec source_file fact_table obsolete memo ' +\n      'loop_check minimal_model terminates does_not_terminate ' +\n      'check_termination promise_equivalent_clauses ' +\n      // preprocessor\n      'foreign_proc foreign_decl foreign_code foreign_type ' +\n      'foreign_import_module foreign_export_enum foreign_export ' +\n      'foreign_enum may_call_mercury will_not_call_mercury thread_safe ' +\n      'not_thread_safe maybe_thread_safe promise_pure promise_semipure ' +\n      'tabled_for_io local untrailed trailed attach_to_io_state ' +\n      'can_pass_as_mercury_type stable will_not_throw_exception ' +\n      'may_modify_trail will_not_modify_trail may_duplicate ' +\n      'may_not_duplicate affects_liveness does_not_affect_liveness ' +\n      'doesnt_affect_liveness no_sharing unknown_sharing sharing',\n    built_in:\n      'some all not if then else true fail false try catch catch_any ' +\n      'semidet_true semidet_false semidet_fail impure_true impure semipure'\n  };\n\n  var COMMENT = hljs.COMMENT('%', '$');\n\n  var NUMCODE = {\n    className: 'number',\n    begin: \"0'.\\\\|0[box][0-9a-fA-F]*\"\n  };\n\n  var ATOM = hljs.inherit(hljs.APOS_STRING_MODE, {relevance: 0});\n  var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {relevance: 0});\n  var STRING_FMT = {\n    className: 'subst',\n    begin: '\\\\\\\\[abfnrtv]\\\\|\\\\\\\\x[0-9a-fA-F]*\\\\\\\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]',\n    relevance: 0\n  };\n  STRING.contains.push(STRING_FMT);\n\n  var IMPLICATION = {\n    className: 'built_in',\n    variants: [\n      {begin: '<=>'},\n      {begin: '<=', relevance: 0},\n      {begin: '=>', relevance: 0},\n      {begin: '/\\\\\\\\'},\n      {begin: '\\\\\\\\/'}\n    ]\n  };\n\n  var HEAD_BODY_CONJUNCTION = {\n    className: 'built_in',\n    variants: [\n      {begin: ':-\\\\|-->'},\n      {begin: '=', relevance: 0}\n    ]\n  };\n\n  return {\n    aliases: ['m', 'moo'],\n    keywords: KEYWORDS,\n    contains: [\n      IMPLICATION,\n      HEAD_BODY_CONJUNCTION,\n      COMMENT,\n      hljs.C_BLOCK_COMMENT_MODE,\n      NUMCODE,\n      hljs.NUMBER_MODE,\n      ATOM,\n      STRING,\n      {begin: /:-/} // relevance booster\n    ]\n  };\n}\n},{name:\"mipsasm\",create:/*\nLanguage: MIPS Assembly\nAuthor: Nebuleon Fumika <nebuleon.fumika@gmail.com>\nDescription: MIPS Assembly (up to MIPS32R2)\nCategory: assembler\n*/\n\nfunction(hljs) {\n    //local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n  return {\n    case_insensitive: true,\n    aliases: ['mips'],\n    lexemes: '\\\\.?' + hljs.IDENT_RE,\n    keywords: {\n      meta:\n        //GNU preprocs\n        '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ',\n      built_in:\n        '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' + // integer registers\n        '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' + // integer registers\n        'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' + // integer register aliases\n        't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' + // integer register aliases\n        'k0 k1 gp sp fp ra ' + // integer register aliases\n        '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' + // floating-point registers\n        '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' + // floating-point registers\n        'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' + // Coprocessor 0 registers\n        'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' + // Coprocessor 0 registers\n        'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' + // Coprocessor 0 registers\n        'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers\n    },\n    contains: [\n      {\n        className: 'keyword',\n        begin: '\\\\b('+     //mnemonics\n            // 32-bit integer instructions\n            'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|' +\n            'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|' +\n            'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|' +\n            'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|' +\n            'srlv?|subu?|sw[lr]?|xori?|wsbh|' +\n            // floating-point instructions\n            'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|' +\n            'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|' +\n            '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|' +\n            'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|' +\n            'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|' +\n            'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|' +\n            'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|' +\n            'swx?c1|' +\n            // system control instructions\n            'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|' +\n            'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|' +\n            'tlti?u?|tnei?|wait|wrpgpr'+\n        ')',\n        end: '\\\\s'\n      },\n      hljs.COMMENT('[;#]', '$'),\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'string',\n        begin: '\\'',\n        end: '[^\\\\\\\\]\\'',\n        relevance: 0\n      },\n      {\n        className: 'title',\n        begin: '\\\\|', end: '\\\\|',\n        illegal: '\\\\n',\n        relevance: 0\n      },\n      {\n        className: 'number',\n        variants: [\n            {begin: '0x[0-9a-f]+'}, //hex\n            {begin: '\\\\b-?\\\\d+'}           //bare number\n        ],\n        relevance: 0\n      },\n      {\n        className: 'symbol',\n        variants: [\n            {begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'}, //GNU MIPS syntax\n            {begin: '^\\\\s*[0-9]+:'}, // numbered local labels\n            {begin: '[0-9]+[bf]' }  // number local label reference (backwards, forwards)\n        ],\n        relevance: 0\n      }\n    ],\n    illegal: '\\/'\n  };\n}\n},{name:\"mizar\",create:/*\nLanguage: Mizar\nAuthor: Kelley van Evert <kelleyvanevert@gmail.com>\nCategory: scientific\n*/\n\nfunction(hljs) {\n  return {\n    keywords:\n      'environ vocabularies notations constructors definitions ' +\n      'registrations theorems schemes requirements begin end definition ' +\n      'registration cluster existence pred func defpred deffunc theorem ' +\n      'proof let take assume then thus hence ex for st holds consider ' +\n      'reconsider such that and in provided of as from be being by means ' +\n      'equals implies iff redefine define now not or attr is mode ' +\n      'suppose per cases set thesis contradiction scheme reserve struct ' +\n      'correctness compatibility coherence symmetry assymetry ' +\n      'reflexivity irreflexivity connectedness uniqueness commutativity ' +\n      'idempotence involutiveness projectivity',\n    contains: [\n      hljs.COMMENT('::', '$')\n    ]\n  };\n}\n},{name:\"mojolicious\",create:/*\nLanguage: Mojolicious\nRequires: xml.js, perl.js\nAuthor: Dotan Dimet <dotan@corky.net>\nDescription: Mojolicious .ep (Embedded Perl) templates\nCategory: template\n*/\nfunction(hljs) {\n  return {\n    subLanguage: 'xml',\n    contains: [\n      {\n        className: 'meta',\n        begin: '^__(END|DATA)__$'\n      },\n    // mojolicious line\n      {\n        begin: \"^\\\\s*%{1,2}={0,2}\", end: '$',\n        subLanguage: 'perl'\n      },\n    // mojolicious block\n      {\n        begin: \"<%{1,2}={0,2}\",\n        end: \"={0,1}%>\",\n        subLanguage: 'perl',\n        excludeBegin: true,\n        excludeEnd: true\n      }\n    ]\n  };\n}\n},{name:\"monkey\",create:/*\nLanguage: Monkey\nAuthor: Arthur Bikmullin <devolonter@gmail.com>\n*/\n\nfunction(hljs) {\n  var NUMBER = {\n    className: 'number', relevance: 0,\n    variants: [\n      {\n        begin: '[$][a-fA-F0-9]+'\n      },\n      hljs.NUMBER_MODE\n    ]\n  };\n\n  return {\n    case_insensitive: true,\n    keywords: {\n      keyword: 'public private property continue exit extern new try catch ' +\n        'eachin not abstract final select case default const local global field ' +\n        'end if then else elseif endif while wend repeat until forever for ' +\n        'to step next return module inline throw import',\n\n      built_in: 'DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil ' +\n        'Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI',\n\n      literal: 'true false null and or shl shr mod'\n    },\n    illegal: /\\/\\*/,\n    contains: [\n      hljs.COMMENT('#rem', '#end'),\n      hljs.COMMENT(\n        \"'\",\n        '$',\n        {\n          relevance: 0\n        }\n      ),\n      {\n        className: 'function',\n        beginKeywords: 'function method', end: '[(=:]|$',\n        illegal: /\\n/,\n        contains: [\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      {\n        className: 'class',\n        beginKeywords: 'class interface', end: '$',\n        contains: [\n          {\n            beginKeywords: 'extends implements'\n          },\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      {\n        className: 'built_in',\n        begin: '\\\\b(self|super)\\\\b'\n      },\n      {\n        className: 'meta',\n        begin: '\\\\s*#', end: '$',\n        keywords: {'meta-keyword': 'if else elseif endif end then'}\n      },\n      {\n        className: 'meta',\n        begin: '^\\\\s*strict\\\\b'\n      },\n      {\n        beginKeywords: 'alias', end: '=',\n        contains: [hljs.UNDERSCORE_TITLE_MODE]\n      },\n      hljs.QUOTE_STRING_MODE,\n      NUMBER\n    ]\n  }\n}\n},{name:\"moonscript\",create:/*\nLanguage: MoonScript\nAuthor: Billy Quith <chinbillybilbo@gmail.com>\nDescription: MoonScript is a programming language that transcompiles to Lua. For info about language see http://moonscript.org/\nOrigin: coffeescript.js\nCategory: scripting\n*/\n\nfunction(hljs) {\n  var KEYWORDS = {\n    keyword:\n      // Moonscript keywords\n      'if then not for in while do return else elseif break continue switch and or ' +\n      'unless when class extends super local import export from using',\n    literal:\n      'true false nil',\n    built_in:\n      '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' +\n      'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' +\n      'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' +\n      'io math os package string table'\n  };\n  var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n  var SUBST = {\n    className: 'subst',\n    begin: /#\\{/, end: /}/,\n    keywords: KEYWORDS\n  };\n  var EXPRESSIONS = [\n    hljs.inherit(hljs.C_NUMBER_MODE,\n      {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\n    {\n      className: 'string',\n      variants: [\n        {\n          begin: /'/, end: /'/,\n          contains: [hljs.BACKSLASH_ESCAPE]\n        },\n        {\n          begin: /\"/, end: /\"/,\n          contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n        }\n      ]\n    },\n    {\n      className: 'built_in',\n      begin: '@__' + hljs.IDENT_RE\n    },\n    {\n      begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript\n    },\n    {\n      begin: hljs.IDENT_RE + '\\\\\\\\' + hljs.IDENT_RE // inst\\method\n    }\n  ];\n  SUBST.contains = EXPRESSIONS;\n\n  var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n  var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\([^\\\\(]', returnBegin: true,\n    /* We need another contained nameless mode to not have every nested\n    pair of parens to be called \"params\" */\n    contains: [{\n      begin: /\\(/, end: /\\)/,\n      keywords: KEYWORDS,\n      contains: ['self'].concat(EXPRESSIONS)\n    }]\n  };\n\n  return {\n    aliases: ['moon'],\n    keywords: KEYWORDS,\n    illegal: /\\/\\*/,\n    contains: EXPRESSIONS.concat([\n      hljs.COMMENT('--', '$'),\n      {\n        className: 'function',  // function: -> =>\n        begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\n        returnBegin: true,\n        contains: [TITLE, PARAMS]\n      },\n      {\n        begin: /[\\(,:=]\\s*/, // anonymous function start\n        relevance: 0,\n        contains: [\n          {\n            className: 'function',\n            begin: PARAMS_RE, end: '[-=]>',\n            returnBegin: true,\n            contains: [PARAMS]\n          }\n        ]\n      },\n      {\n        className: 'class',\n        beginKeywords: 'class',\n        end: '$',\n        illegal: /[:=\"\\[\\]]/,\n        contains: [\n          {\n            beginKeywords: 'extends',\n            endsWithParent: true,\n            illegal: /[:=\"\\[\\]]/,\n            contains: [TITLE]\n          },\n          TITLE\n        ]\n      },\n      {\n        className: 'name',    // table\n        begin: JS_IDENT_RE + ':', end: ':',\n        returnBegin: true, returnEnd: true,\n        relevance: 0\n      }\n    ])\n  };\n}\n},{name:\"nginx\",create:/*\nLanguage: Nginx\nAuthor: Peter Leonov <gojpeg@yandex.ru>\nContributors: Ivan Sagalaev <maniac@softwaremaniacs.org>\nCategory: common, config\n*/\n\nfunction(hljs) {\n  var VAR = {\n    className: 'variable',\n    variants: [\n      {begin: /\\$\\d+/},\n      {begin: /\\$\\{/, end: /}/},\n      {begin: '[\\\\$\\\\@]' + hljs.UNDERSCORE_IDENT_RE}\n    ]\n  };\n  var DEFAULT = {\n    endsWithParent: true,\n    lexemes: '[a-z/_]+',\n    keywords: {\n      literal:\n        'on off yes no true false none blocked debug info notice warn error crit ' +\n        'select break last permanent redirect kqueue rtsig epoll poll /dev/poll'\n    },\n    relevance: 0,\n    illegal: '=>',\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      {\n        className: 'string',\n        contains: [hljs.BACKSLASH_ESCAPE, VAR],\n        variants: [\n          {begin: /\"/, end: /\"/},\n          {begin: /'/, end: /'/}\n        ]\n      },\n      // this swallows entire URLs to avoid detecting numbers within\n      {\n        begin: '([a-z]+):/', end: '\\\\s', endsWithParent: true, excludeEnd: true,\n        contains: [VAR]\n      },\n      {\n        className: 'regexp',\n        contains: [hljs.BACKSLASH_ESCAPE, VAR],\n        variants: [\n          {begin: \"\\\\s\\\\^\", end: \"\\\\s|{|;\", returnEnd: true},\n          // regexp locations (~, ~*)\n          {begin: \"~\\\\*?\\\\s+\", end: \"\\\\s|{|;\", returnEnd: true},\n          // *.example.com\n          {begin: \"\\\\*(\\\\.[a-z\\\\-]+)+\"},\n          // sub.example.*\n          {begin: \"([a-z\\\\-]+\\\\.)+\\\\*\"}\n        ]\n      },\n      // IP\n      {\n        className: 'number',\n        begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n      },\n      // units\n      {\n        className: 'number',\n        begin: '\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b',\n        relevance: 0\n      },\n      VAR\n    ]\n  };\n\n  return {\n    aliases: ['nginxconf'],\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      {\n        begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s+{', returnBegin: true,\n        end: '{',\n        contains: [\n          {\n            className: 'section',\n            begin: hljs.UNDERSCORE_IDENT_RE\n          }\n        ],\n        relevance: 0\n      },\n      {\n        begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s', end: ';|{', returnBegin: true,\n        contains: [\n          {\n            className: 'attribute',\n            begin: hljs.UNDERSCORE_IDENT_RE,\n            starts: DEFAULT\n          }\n        ],\n        relevance: 0\n      }\n    ],\n    illegal: '[^\\\\s\\\\}]'\n  };\n}\n},{name:\"nimrod\",create:/*\nLanguage: Nimrod\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['nim'],\n    keywords: {\n      keyword:\n        'addr and as asm bind block break case cast const continue converter ' +\n        'discard distinct div do elif else end enum except export finally ' +\n        'for from generic if import in include interface is isnot iterator ' +\n        'let macro method mixin mod nil not notin object of or out proc ptr ' +\n        'raise ref return shl shr static template try tuple type using var ' +\n        'when while with without xor yield',\n      literal:\n        'shared guarded stdin stdout stderr result true false',\n      built_in:\n        'int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float ' +\n        'float32 float64 bool char string cstring pointer expr stmt void ' +\n        'auto any range array openarray varargs seq set clong culong cchar ' +\n        'cschar cshort cint csize clonglong cfloat cdouble clongdouble ' +\n        'cuchar cushort cuint culonglong cstringarray semistatic'\n    },\n    contains: [ {\n        className: 'meta', // Actually pragma\n        begin: /{\\./,\n        end: /\\.}/,\n        relevance: 10\n      }, {\n        className: 'string',\n        begin: /[a-zA-Z]\\w*\"/,\n        end: /\"/,\n        contains: [{begin: /\"\"/}]\n      }, {\n        className: 'string',\n        begin: /([a-zA-Z]\\w*)?\"\"\"/,\n        end: /\"\"\"/\n      },\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'type',\n        begin: /\\b[A-Z]\\w+\\b/,\n        relevance: 0\n      }, {\n        className: 'number',\n        relevance: 0,\n        variants: [\n          {begin: /\\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},\n          {begin: /\\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},\n          {begin: /\\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},\n          {begin: /\\b(\\d[_\\d]*)('?[iIuUfF](8|16|32|64))?/}\n        ]\n      },\n      hljs.HASH_COMMENT_MODE\n    ]\n  }\n}\n},{name:\"nix\",create:/*\nLanguage: Nix\nAuthor: Domen Kožar <domen@dev.si>\nDescription: Nix functional language. See http://nixos.org/nix\n*/\n\n\nfunction(hljs) {\n  var NIX_KEYWORDS = {\n    keyword:\n      'rec with let in inherit assert if else then',\n    literal:\n      'true false or and null',\n    built_in:\n      'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +\n      'toString derivation'\n  };\n  var ANTIQUOTE = {\n    className: 'subst',\n    begin: /\\$\\{/,\n    end: /}/,\n    keywords: NIX_KEYWORDS\n  };\n  var ATTRS = {\n    begin: /[a-zA-Z0-9-_]+(\\s*=)/, returnBegin: true,\n    relevance: 0,\n    contains: [\n      {\n        className: 'attr',\n        begin: /\\S+/\n      }\n    ]\n  };\n  var STRING = {\n    className: 'string',\n    contains: [ANTIQUOTE],\n    variants: [\n      {begin: \"''\", end: \"''\"},\n      {begin: '\"', end: '\"'}\n    ]\n  };\n  var EXPRESSIONS = [\n    hljs.NUMBER_MODE,\n    hljs.HASH_COMMENT_MODE,\n    hljs.C_BLOCK_COMMENT_MODE,\n    STRING,\n    ATTRS\n  ];\n  ANTIQUOTE.contains = EXPRESSIONS;\n  return {\n    aliases: [\"nixos\"],\n    keywords: NIX_KEYWORDS,\n    contains: EXPRESSIONS\n  };\n}\n},{name:\"nsis\",create:/*\nLanguage: NSIS\nDescription: Nullsoft Scriptable Install System\nAuthor: Jan T. Sott <jan.sott@gmail.com>\nWebsite: http://github.com/idleberg\n*/\n\nfunction(hljs) {\n  var CONSTANTS = {\n    className: 'variable',\n    begin: '\\\\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)'\n  };\n\n  var DEFINES = {\n    // ${defines}\n    className: 'variable',\n    begin: '\\\\$+{[a-zA-Z0-9_]+}'\n  };\n\n  var VARIABLES = {\n    // $variables\n    className: 'variable',\n    begin: '\\\\$+[a-zA-Z0-9_]+',\n    illegal: '\\\\(\\\\){}'\n  };\n\n  var LANGUAGES = {\n    // $(language_strings)\n    className: 'variable',\n    begin: '\\\\$+\\\\([a-zA-Z0-9_]+\\\\)'\n  };\n\n  var PARAMETERS = {\n    // command parameters\n    className: 'built_in',\n    begin: '(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)'\n  };\n\n  var COMPILER ={\n    // !compiler_flags\n    className: 'keyword',\n    begin: '\\\\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversionsystem|ifdef|ifmacrodef|ifmacrondef|ifndef|if|include|insertmacro|macroend|macro|makensis|packhdr|searchparse|searchreplace|tempfile|undef|verbose|warning)'\n  };\n\n  return {\n    case_insensitive: false,\n    keywords: {\n      keyword:\n      'Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText IntCmp IntCmpU IntFmt IntOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetPluginUnload SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption SubSectionEnd Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegStr WriteUninstaller XPStyle',\n      literal:\n      'admin all auto both colored current false force hide highest lastused leave listonly none normal notset off on open print show silent silentlog smooth textonly true user '\n    },\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'string',\n        begin: '\"', end: '\"',\n        illegal: '\\\\n',\n        contains: [\n          { // $\\n, $\\r, $\\t, $$\n            begin: '\\\\$(\\\\\\\\(n|r|t)|\\\\$)'\n          },\n          CONSTANTS,\n          DEFINES,\n          VARIABLES,\n          LANGUAGES\n        ]\n      },\n      hljs.COMMENT(\n        ';',\n        '$',\n        {\n          relevance: 0\n        }\n      ),\n      {\n        className: 'function',\n        beginKeywords: 'Function PageEx Section SectionGroup SubSection', end: '$'\n      },\n      COMPILER,\n      DEFINES,\n      VARIABLES,\n      LANGUAGES,\n      PARAMETERS,\n      hljs.NUMBER_MODE,\n      { // plug::ins\n        begin: hljs.IDENT_RE + '::' + hljs.IDENT_RE\n      }\n    ]\n  };\n}\n},{name:\"objectivec\",create:/*\nLanguage: Objective-C\nAuthor: Valerii Hiora <valerii.hiora@gmail.com>\nContributors: Angel G. Olloqui <angelgarcia.mail@gmail.com>, Matt Diephouse <matt@diephouse.com>, Andrew Farmer <ahfarmer@gmail.com>, Minh Nguyễn <mxn@1ec5.org>\nCategory: common\n*/\n\nfunction(hljs) {\n  var API_CLASS = {\n    className: 'built_in',\n    begin: '\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+',\n  };\n  var OBJC_KEYWORDS = {\n    keyword:\n      'int float while char export sizeof typedef const struct for union ' +\n      'unsigned long volatile static bool mutable if do return goto void ' +\n      'enum else break extern asm case short default double register explicit ' +\n      'signed typename this switch continue wchar_t inline readonly assign ' +\n      'readwrite self @synchronized id typeof ' +\n      'nonatomic super unichar IBOutlet IBAction strong weak copy ' +\n      'in out inout bycopy byref oneway __strong __weak __block __autoreleasing ' +\n      '@private @protected @public @try @property @end @throw @catch @finally ' +\n      '@autoreleasepool @synthesize @dynamic @selector @optional @required ' +\n      '@encode @package @import @defs @compatibility_alias ' +\n      '__bridge __bridge_transfer __bridge_retained __bridge_retain ' +\n      '__covariant __contravariant __kindof ' +\n      '_Nonnull _Nullable _Null_unspecified ' +\n      '__FUNCTION__ __PRETTY_FUNCTION__ __attribute__ ' +\n      'getter setter retain unsafe_unretained ' +\n      'nonnull nullable null_unspecified null_resettable class instancetype ' +\n      'NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER ' +\n      'NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED ' +\n      'NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE ' +\n      'NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END ' +\n      'NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW ' +\n      'NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN',\n    literal:\n      'false true FALSE TRUE nil YES NO NULL',\n    built_in:\n      'BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once'\n  };\n  var LEXEMES = /[a-zA-Z@][a-zA-Z0-9_]*/;\n  var CLASS_KEYWORDS = '@interface @class @protocol @implementation';\n  return {\n    aliases: ['mm', 'objc', 'obj-c'],\n    keywords: OBJC_KEYWORDS,\n    lexemes: LEXEMES,\n    illegal: '</',\n    contains: [\n      API_CLASS,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.C_NUMBER_MODE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'string',\n        variants: [\n          {\n            begin: '@\"', end: '\"',\n            illegal: '\\\\n',\n            contains: [hljs.BACKSLASH_ESCAPE]\n          },\n          {\n            begin: '\\'', end: '[^\\\\\\\\]\\'',\n            illegal: '[^\\\\\\\\][^\\']'\n          }\n        ]\n      },\n      {\n        className: 'meta',\n        begin: '#',\n        end: '$',\n        contains: [\n          {\n            className: 'meta-string',\n            variants: [\n              { begin: '\\\"', end: '\\\"' },\n              { begin: '<', end: '>' }\n            ]\n          }\n        ]\n      },\n      {\n        className: 'class',\n        begin: '(' + CLASS_KEYWORDS.split(' ').join('|') + ')\\\\b', end: '({|$)', excludeEnd: true,\n        keywords: CLASS_KEYWORDS, lexemes: LEXEMES,\n        contains: [\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      {\n        begin: '\\\\.'+hljs.UNDERSCORE_IDENT_RE,\n        relevance: 0\n      }\n    ]\n  };\n}\n},{name:\"ocaml\",create:/*\nLanguage: OCaml\nAuthor: Mehdi Dogguy <mehdi@dogguy.org>\nContributors: Nicolas Braud-Santoni <nicolas.braud-santoni@ens-cachan.fr>, Mickael Delahaye <mickael.delahaye@gmail.com>\nDescription: OCaml language definition.\nCategory: functional\n*/\nfunction(hljs) {\n  /* missing support for heredoc-like string (OCaml 4.0.2+) */\n  return {\n    aliases: ['ml'],\n    keywords: {\n      keyword:\n        'and as assert asr begin class constraint do done downto else end ' +\n        'exception external for fun function functor if in include ' +\n        'inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method ' +\n        'mod module mutable new object of open! open or private rec sig struct ' +\n        'then to try type val! val virtual when while with ' +\n        /* camlp4 */\n        'parser value',\n      built_in:\n        /* built-in types */\n        'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit ' +\n        /* (some) types in Pervasives */\n        'in_channel out_channel ref',\n      literal:\n        'true false'\n    },\n    illegal: /\\/\\/|>>/,\n    lexemes: '[a-z_]\\\\w*!?',\n    contains: [\n      {\n        className: 'literal',\n        begin: '\\\\[(\\\\|\\\\|)?\\\\]|\\\\(\\\\)',\n        relevance: 0\n      },\n      hljs.COMMENT(\n        '\\\\(\\\\*',\n        '\\\\*\\\\)',\n        {\n          contains: ['self']\n        }\n      ),\n      { /* type variable */\n        className: 'symbol',\n        begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\n        /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\n      },\n      { /* polymorphic variant */\n        className: 'type',\n        begin: '`[A-Z][\\\\w\\']*'\n      },\n      { /* module or constructor */\n        className: 'type',\n        begin: '\\\\b[A-Z][\\\\w\\']*',\n        relevance: 0\n      },\n      { /* don't color identifiers, but safely catch all identifiers with '*/\n        begin: '[a-z_]\\\\w*\\'[\\\\w\\']*', relevance: 0\n      },\n      hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n      {\n        className: 'number',\n        begin:\n          '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n          '0[oO][0-7_]+[Lln]?|' +\n          '0[bB][01_]+[Lln]?|' +\n          '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\n        relevance: 0\n      },\n      {\n        begin: /[-=]>/ // relevance booster\n      }\n    ]\n  }\n}\n},{name:\"openscad\",create:/*\nLanguage: OpenSCAD\nAuthor: Dan Panzarella <alsoelp@gmail.com>\nDescription: OpenSCAD is a language for the 3D CAD modeling software of the same name.\nCategory: scientific\n*/\n\nfunction(hljs) {\n\tvar SPECIAL_VARS = {\n\t\tclassName: 'keyword',\n\t\tbegin: '\\\\$(f[asn]|t|vp[rtd]|children)'\n\t},\n\tLITERALS = {\n\t\tclassName: 'literal',\n\t\tbegin: 'false|true|PI|undef'\n\t},\n\tNUMBERS = {\n\t\tclassName: 'number',\n\t\tbegin: '\\\\b\\\\d+(\\\\.\\\\d+)?(e-?\\\\d+)?', //adds 1e5, 1e-10\n\t\trelevance: 0\n\t},\n\tSTRING = hljs.inherit(hljs.QUOTE_STRING_MODE,{illegal: null}),\n\tPREPRO = {\n\t\tclassName: 'meta',\n\t\tkeywords: {'meta-keyword': 'include use'},\n\t\tbegin: 'include|use <',\n\t\tend: '>'\n\t},\n\tPARAMS = {\n\t\tclassName: 'params',\n\t\tbegin: '\\\\(', end: '\\\\)',\n\t\tcontains: ['self', NUMBERS, STRING, SPECIAL_VARS, LITERALS]\n\t},\n\tMODIFIERS = {\n\t\tbegin: '[*!#%]',\n\t\trelevance: 0\n\t},\n\tFUNCTIONS = {\n\t\tclassName: 'function',\n\t\tbeginKeywords: 'module function',\n\t\tend: '\\\\=|\\\\{',\n\t\tcontains: [PARAMS, hljs.UNDERSCORE_TITLE_MODE]\n\t};\n\n\treturn {\n\t\taliases: ['scad'],\n\t\tkeywords: {\n\t\t\tkeyword: 'function module include use for intersection_for if else \\\\%',\n\t\t\tliteral: 'false true PI undef',\n\t\t\tbuilt_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign'\n\t\t},\n\t\tcontains: [\n\t\t\thljs.C_LINE_COMMENT_MODE,\n\t\t\thljs.C_BLOCK_COMMENT_MODE,\n\t\t\tNUMBERS,\n\t\t\tPREPRO,\n\t\t\tSTRING,\n\t\t\tSPECIAL_VARS,\n\t\t\tMODIFIERS,\n\t\t\tFUNCTIONS\n\t\t]\n\t}\n}\n},{name:\"oxygene\",create:/*\nLanguage: Oxygene\nAuthor: Carlo Kok <ck@remobjects.com>\nDescription: Language definition for RemObjects Oxygene (http://www.remobjects.com)\n*/\n\nfunction(hljs) {\n  var OXYGENE_KEYWORDS = 'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue '+\n    'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false '+\n    'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited '+\n    'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of '+\n    'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly '+\n    'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple '+\n    'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal '+\n    'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained';\n  var CURLY_COMMENT =  hljs.COMMENT(\n    '{',\n    '}',\n    {\n      relevance: 0\n    }\n  );\n  var PAREN_COMMENT = hljs.COMMENT(\n    '\\\\(\\\\*',\n    '\\\\*\\\\)',\n    {\n      relevance: 10\n    }\n  );\n  var STRING = {\n    className: 'string',\n    begin: '\\'', end: '\\'',\n    contains: [{begin: '\\'\\''}]\n  };\n  var CHAR_STRING = {\n    className: 'string', begin: '(#\\\\d+)+'\n  };\n  var FUNCTION = {\n    className: 'function',\n    beginKeywords: 'function constructor destructor procedure method', end: '[:;]',\n    keywords: 'function constructor|10 destructor|10 procedure|10 method|10',\n    contains: [\n      hljs.TITLE_MODE,\n      {\n        className: 'params',\n        begin: '\\\\(', end: '\\\\)',\n        keywords: OXYGENE_KEYWORDS,\n        contains: [STRING, CHAR_STRING]\n      },\n      CURLY_COMMENT, PAREN_COMMENT\n    ]\n  };\n  return {\n    case_insensitive: true,\n    lexemes: /\\.?\\w+/,\n    keywords: OXYGENE_KEYWORDS,\n    illegal: '(\"|\\\\$[G-Zg-z]|\\\\/\\\\*|</|=>|->)',\n    contains: [\n      CURLY_COMMENT, PAREN_COMMENT, hljs.C_LINE_COMMENT_MODE,\n      STRING, CHAR_STRING,\n      hljs.NUMBER_MODE,\n      FUNCTION,\n      {\n        className: 'class',\n        begin: '=\\\\bclass\\\\b', end: 'end;',\n        keywords: OXYGENE_KEYWORDS,\n        contains: [\n          STRING, CHAR_STRING,\n          CURLY_COMMENT, PAREN_COMMENT, hljs.C_LINE_COMMENT_MODE,\n          FUNCTION\n        ]\n      }\n    ]\n  };\n}\n},{name:\"parser3\",create:/*\nLanguage: Parser3\nRequires: xml.js\nAuthor: Oleg Volchkov <oleg@volchkov.net>\nCategory: template\n*/\n\nfunction(hljs) {\n  var CURLY_SUBCOMMENT = hljs.COMMENT(\n    '{',\n    '}',\n    {\n      contains: ['self']\n    }\n  );\n  return {\n    subLanguage: 'xml', relevance: 0,\n    contains: [\n      hljs.COMMENT('^#', '$'),\n      hljs.COMMENT(\n        '\\\\^rem{',\n        '}',\n        {\n          relevance: 10,\n          contains: [\n            CURLY_SUBCOMMENT\n          ]\n        }\n      ),\n      {\n        className: 'meta',\n        begin: '^@(?:BASE|USE|CLASS|OPTIONS)$',\n        relevance: 10\n      },\n      {\n        className: 'title',\n        begin: '@[\\\\w\\\\-]+\\\\[[\\\\w^;\\\\-]*\\\\](?:\\\\[[\\\\w^;\\\\-]*\\\\])?(?:.*)$'\n      },\n      {\n        className: 'variable',\n        begin: '\\\\$\\\\{?[\\\\w\\\\-\\\\.\\\\:]+\\\\}?'\n      },\n      {\n        className: 'keyword',\n        begin: '\\\\^[\\\\w\\\\-\\\\.\\\\:]+'\n      },\n      {\n        className: 'number',\n        begin: '\\\\^#[0-9a-fA-F]+'\n      },\n      hljs.C_NUMBER_MODE\n    ]\n  };\n}\n},{name:\"perl\",create:/*\nLanguage: Perl\nAuthor: Peter Leonov <gojpeg@yandex.ru>\nCategory: common\n*/\n\nfunction(hljs) {\n  var PERL_KEYWORDS = 'getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ' +\n    'ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime ' +\n    'readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq' +\n    'fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent ' +\n    'shutdown dump chomp connect getsockname die socketpair close flock exists index shmget' +\n    'sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr ' +\n    'unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 ' +\n    'getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline ' +\n    'endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand ' +\n    'mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink ' +\n    'getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr ' +\n    'untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link ' +\n    'getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller ' +\n    'lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and ' +\n    'sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 ' +\n    'chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach ' +\n    'tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir' +\n    'ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe ' +\n    'atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when';\n  var SUBST = {\n    className: 'subst',\n    begin: '[$@]\\\\{', end: '\\\\}',\n    keywords: PERL_KEYWORDS\n  };\n  var METHOD = {\n    begin: '->{', end: '}'\n    // contains defined later\n  };\n  var VAR = {\n    variants: [\n      {begin: /\\$\\d/},\n      {begin: /[\\$%@](\\^\\w\\b|#\\w+(::\\w+)*|{\\w+}|\\w+(::\\w*)*)/},\n      {begin: /[\\$%@][^\\s\\w{]/, relevance: 0}\n    ]\n  };\n  var STRING_CONTAINS = [hljs.BACKSLASH_ESCAPE, SUBST, VAR];\n  var PERL_DEFAULT_CONTAINS = [\n    VAR,\n    hljs.HASH_COMMENT_MODE,\n    hljs.COMMENT(\n      '^\\\\=\\\\w',\n      '\\\\=cut',\n      {\n        endsWithParent: true\n      }\n    ),\n    METHOD,\n    {\n      className: 'string',\n      contains: STRING_CONTAINS,\n      variants: [\n        {\n          begin: 'q[qwxr]?\\\\s*\\\\(', end: '\\\\)',\n          relevance: 5\n        },\n        {\n          begin: 'q[qwxr]?\\\\s*\\\\[', end: '\\\\]',\n          relevance: 5\n        },\n        {\n          begin: 'q[qwxr]?\\\\s*\\\\{', end: '\\\\}',\n          relevance: 5\n        },\n        {\n          begin: 'q[qwxr]?\\\\s*\\\\|', end: '\\\\|',\n          relevance: 5\n        },\n        {\n          begin: 'q[qwxr]?\\\\s*\\\\<', end: '\\\\>',\n          relevance: 5\n        },\n        {\n          begin: 'qw\\\\s+q', end: 'q',\n          relevance: 5\n        },\n        {\n          begin: '\\'', end: '\\'',\n          contains: [hljs.BACKSLASH_ESCAPE]\n        },\n        {\n          begin: '\"', end: '\"'\n        },\n        {\n          begin: '`', end: '`',\n          contains: [hljs.BACKSLASH_ESCAPE]\n        },\n        {\n          begin: '{\\\\w+}',\n          contains: [],\n          relevance: 0\n        },\n        {\n          begin: '\\-?\\\\w+\\\\s*\\\\=\\\\>',\n          contains: [],\n          relevance: 0\n        }\n      ]\n    },\n    {\n      className: 'number',\n      begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n      relevance: 0\n    },\n    { // regexp container\n      begin: '(\\\\/\\\\/|' + hljs.RE_STARTERS_RE + '|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*',\n      keywords: 'split return print reverse grep',\n      relevance: 0,\n      contains: [\n        hljs.HASH_COMMENT_MODE,\n        {\n          className: 'regexp',\n          begin: '(s|tr|y)/(\\\\\\\\.|[^/])*/(\\\\\\\\.|[^/])*/[a-z]*',\n          relevance: 10\n        },\n        {\n          className: 'regexp',\n          begin: '(m|qr)?/', end: '/[a-z]*',\n          contains: [hljs.BACKSLASH_ESCAPE],\n          relevance: 0 // allows empty \"//\" which is a common comment delimiter in other languages\n        }\n      ]\n    },\n    {\n      className: 'function',\n      beginKeywords: 'sub', end: '(\\\\s*\\\\(.*?\\\\))?[;{]', excludeEnd: true,\n      relevance: 5,\n      contains: [hljs.TITLE_MODE]\n    },\n    {\n      begin: '-\\\\w\\\\b',\n      relevance: 0\n    },\n    {\n      begin: \"^__DATA__$\",\n      end: \"^__END__$\",\n      subLanguage: 'mojolicious',\n      contains: [\n        {\n            begin: \"^@@.*\",\n            end: \"$\",\n            className: \"comment\"\n        }\n      ]\n    }\n  ];\n  SUBST.contains = PERL_DEFAULT_CONTAINS;\n  METHOD.contains = PERL_DEFAULT_CONTAINS;\n\n  return {\n    aliases: ['pl', 'pm'],\n    lexemes: /[\\w\\.]+/,\n    keywords: PERL_KEYWORDS,\n    contains: PERL_DEFAULT_CONTAINS\n  };\n}\n},{name:\"pf\",create:/*\nLanguage: pf\nCategory: config\nAuthor: Peter Piwowarski <oldlaptop654@aol.com>\nDescription: The pf.conf(5) format as of OpenBSD 5.6\n*/\n\nfunction(hljs) {\n  var MACRO = {\n    className: 'variable',\n    begin: /\\$[\\w\\d#@][\\w\\d_]*/\n  };\n  var TABLE = {\n    className: 'variable',\n    begin: /<(?!\\/)/, end: />/\n  };\n  var QUOTE_STRING = {\n    className: 'string',\n    begin: /\"/, end: /\"/\n  };\n\n  return {\n    aliases: ['pf.conf'],\n    lexemes: /[a-z0-9_<>-]+/,\n    keywords: {\n      built_in: /* block match pass are \"actions\" in pf.conf(5), the rest are\n                 * lexically similar top-level commands.\n                 */\n        'block match pass load anchor|5 antispoof|10 set table',\n      keyword:\n        'in out log quick on rdomain inet inet6 proto from port os to route' +\n        'allow-opts divert-packet divert-reply divert-to flags group icmp-type' +\n        'icmp6-type label once probability recieved-on rtable prio queue' +\n        'tos tag tagged user keep fragment for os drop' +\n        'af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin' +\n        'source-hash static-port' +\n        'dup-to reply-to route-to' +\n        'parent bandwidth default min max qlimit' +\n        'block-policy debug fingerprints hostid limit loginterface optimization' +\n        'reassemble ruleset-optimization basic none profile skip state-defaults' +\n        'state-policy timeout' +\n        'const counters persist' +\n        'no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy' +\n        'source-track global rule max-src-nodes max-src-states max-src-conn' +\n        'max-src-conn-rate overload flush' +\n        'scrub|5 max-mss min-ttl no-df|10 random-id',\n      literal:\n        'all any no-route self urpf-failed egress|5 unknown'\n    },\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      hljs.NUMBER_MODE,\n      hljs.QUOTE_STRING_MODE,\n      MACRO,\n      TABLE\n    ]\n  };\n}\n},{name:\"php\",create:/*\nLanguage: PHP\nAuthor: Victor Karamzin <Victor.Karamzin@enterra-inc.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>, Ivan Sagalaev <maniac@softwaremaniacs.org>\nCategory: common\n*/\n\nfunction(hljs) {\n  var VARIABLE = {\n    begin: '\\\\$+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*'\n  };\n  var PREPROCESSOR = {\n    className: 'meta', begin: /<\\?(php)?|\\?>/\n  };\n  var STRING = {\n    className: 'string',\n    contains: [hljs.BACKSLASH_ESCAPE, PREPROCESSOR],\n    variants: [\n      {\n        begin: 'b\"', end: '\"'\n      },\n      {\n        begin: 'b\\'', end: '\\''\n      },\n      hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n    ]\n  };\n  var NUMBER = {variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]};\n  return {\n    aliases: ['php3', 'php4', 'php5', 'php6'],\n    case_insensitive: true,\n    keywords:\n      'and include_once list abstract global private echo interface as static endswitch ' +\n      'array null if endwhile or const for endforeach self var while isset public ' +\n      'protected exit foreach throw elseif include __FILE__ empty require_once do xor ' +\n      'return parent clone use __CLASS__ __LINE__ else break print eval new ' +\n      'catch __METHOD__ case exception default die require __FUNCTION__ ' +\n      'enddeclare final try switch continue endfor endif declare unset true false ' +\n      'trait goto instanceof insteadof __DIR__ __NAMESPACE__ ' +\n      'yield finally',\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      hljs.COMMENT('//', '$', {contains: [PREPROCESSOR]}),\n      hljs.COMMENT(\n        '/\\\\*',\n        '\\\\*/',\n        {\n          contains: [\n            {\n              className: 'doctag',\n              begin: '@[A-Za-z]+'\n            }\n          ]\n        }\n      ),\n      hljs.COMMENT(\n        '__halt_compiler.+?;',\n        false,\n        {\n          endsWithParent: true,\n          keywords: '__halt_compiler',\n          lexemes: hljs.UNDERSCORE_IDENT_RE\n        }\n      ),\n      {\n        className: 'string',\n        begin: /<<<['\"]?\\w+['\"]?$/, end: /^\\w+;?$/,\n        contains: [\n          hljs.BACKSLASH_ESCAPE,\n          {\n            className: 'subst',\n            variants: [\n              {begin: /\\$\\w+/},\n              {begin: /\\{\\$/, end: /\\}/}\n            ]\n          }\n        ]\n      },\n      PREPROCESSOR,\n      {\n        className: 'keyword', begin: /\\$this\\b/\n      },\n      VARIABLE,\n      {\n        // swallow composed identifiers to avoid parsing them as keywords\n        begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n      },\n      {\n        className: 'function',\n        beginKeywords: 'function', end: /[;{]/, excludeEnd: true,\n        illegal: '\\\\$|\\\\[|%',\n        contains: [\n          hljs.UNDERSCORE_TITLE_MODE,\n          {\n            className: 'params',\n            begin: '\\\\(', end: '\\\\)',\n            contains: [\n              'self',\n              VARIABLE,\n              hljs.C_BLOCK_COMMENT_MODE,\n              STRING,\n              NUMBER\n            ]\n          }\n        ]\n      },\n      {\n        className: 'class',\n        beginKeywords: 'class interface', end: '{', excludeEnd: true,\n        illegal: /[:\\(\\$\"]/,\n        contains: [\n          {beginKeywords: 'extends implements'},\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      {\n        beginKeywords: 'namespace', end: ';',\n        illegal: /[\\.']/,\n        contains: [hljs.UNDERSCORE_TITLE_MODE]\n      },\n      {\n        beginKeywords: 'use', end: ';',\n        contains: [hljs.UNDERSCORE_TITLE_MODE]\n      },\n      {\n        begin: '=>' // No markup, just a relevance booster\n      },\n      STRING,\n      NUMBER\n    ]\n  };\n}\n},{name:\"pony\",create:/*\nLanguage: Pony\nAuthor: Joe Eli McIlvain <joe.eli.mac@gmail.com>\nDescription: Pony is an open-source, object-oriented, actor-model,\n             capabilities-secure, high performance programming language.\n*/\n\nfunction(hljs) {\n  var KEYWORDS = {\n    keyword:\n      'actor addressof and as be break class compile_error compile_intrinsic' +\n      'consume continue delegate digestof do else elseif embed end error' +\n      'for fun if ifdef in interface is isnt lambda let match new not object' +\n      'or primitive recover repeat return struct then trait try type until ' +\n      'use var where while with xor',\n    meta:\n      'iso val tag trn box ref',\n    literal:\n      'this false true'\n  };\n\n  var TRIPLE_QUOTE_STRING_MODE = {\n    className: 'string',\n    begin: '\"\"\"', end: '\"\"\"',\n    relevance: 10\n  };\n\n  var QUOTE_STRING_MODE = {\n    className: 'string',\n    begin: '\"', end: '\"',\n    contains: [hljs.BACKSLASH_ESCAPE]\n  };\n\n  var SINGLE_QUOTE_CHAR_MODE = {\n    className: 'string',\n    begin: '\\'', end: '\\'',\n    contains: [hljs.BACKSLASH_ESCAPE],\n    relevance: 0\n  };\n\n  var TYPE_NAME = {\n    className: 'type',\n    begin: '\\\\b_?[A-Z][\\\\w]*',\n    relevance: 0\n  };\n\n  var PRIMED_NAME = {\n    begin: hljs.IDENT_RE + '\\'', relevance: 0\n  };\n\n  var CLASS = {\n    className: 'class',\n    beginKeywords: 'class actor', end: '$',\n    contains: [\n      hljs.TITLE_MODE,\n      hljs.C_LINE_COMMENT_MODE\n    ]\n  }\n\n  var FUNCTION = {\n    className: 'function',\n    beginKeywords: 'new fun', end: '=>',\n    contains: [\n      hljs.TITLE_MODE,\n      {\n        begin: /\\(/, end: /\\)/,\n        contains: [\n          TYPE_NAME,\n          PRIMED_NAME,\n          hljs.C_NUMBER_MODE,\n          hljs.C_BLOCK_COMMENT_MODE\n        ]\n      },\n      {\n        begin: /:/, endsWithParent: true,\n        contains: [TYPE_NAME]\n      },\n      hljs.C_LINE_COMMENT_MODE\n    ]\n  }\n\n  return {\n    keywords: KEYWORDS,\n    contains: [\n      CLASS,\n      FUNCTION,\n      TYPE_NAME,\n      TRIPLE_QUOTE_STRING_MODE,\n      QUOTE_STRING_MODE,\n      SINGLE_QUOTE_CHAR_MODE,\n      PRIMED_NAME,\n      hljs.C_NUMBER_MODE,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE\n    ]\n  };\n}\n},{name:\"powershell\",create:/*\nLanguage: PowerShell\nAuthor: David Mohundro <david@mohundro.com>\nContributors: Nicholas Blumhardt <nblumhardt@nblumhardt.com>, Victor Zhou <OiCMudkips@users.noreply.github.com>\n*/\n\nfunction(hljs) {\n  var BACKTICK_ESCAPE = {\n    begin: '`[\\\\s\\\\S]',\n    relevance: 0\n  };\n  var VAR = {\n    className: 'variable',\n    variants: [\n      {begin: /\\$[\\w\\d][\\w\\d_:]*/}\n    ]\n  };\n  var LITERAL = {\n    className: 'literal',\n    begin: /\\$(null|true|false)\\b/\n  };\n  var QUOTE_STRING = {\n    className: 'string',\n    variants: [\n      { begin: /\"/, end: /\"/ },\n      { begin: /@\"/, end: /^\"@/ }\n    ],\n    contains: [\n      BACKTICK_ESCAPE,\n      VAR,\n      {\n        className: 'variable',\n        begin: /\\$[A-z]/, end: /[^A-z]/\n      }\n    ]\n  };\n  var APOS_STRING = {\n    className: 'string',\n    variants: [\n      { begin: /'/, end: /'/ },\n      { begin: /@'/, end: /^'@/ }\n    ]\n  };\n\n  var PS_HELPTAGS = {\n    className: 'doctag',\n    variants: [\n      /* no paramater help tags */ \n      { begin: /\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ },\n      /* one parameter help tags */\n      { begin: /\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/ }\n    ]\n  };\n  var PS_COMMENT = hljs.inherit(\n    hljs.COMMENT(null, null),\n    {\n      variants: [\n        /* single-line comment */\n        { begin: /#/, end: /$/ },\n        /* multi-line comment */\n        { begin: /<#/, end: /#>/ }\n      ],\n      contains: [PS_HELPTAGS]\n    }\n  );\n\n  return {\n    aliases: ['ps'],\n    lexemes: /-?[A-z\\.\\-]+/,\n    case_insensitive: true,\n    keywords: {\n      keyword: 'if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch',\n      built_in: 'Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning',\n      nomarkup: '-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace'\n    },\n    contains: [\n      BACKTICK_ESCAPE,\n      hljs.NUMBER_MODE,\n      QUOTE_STRING,\n      APOS_STRING,\n      LITERAL,\n      VAR,\n      PS_COMMENT\n    ]\n  };\n}\n},{name:\"processing\",create:/*\nLanguage: Processing\nAuthor: Erik Paluka <erik.paluka@gmail.com>\nCategory: graphics\n*/\n\nfunction(hljs) {\n  return {\n    keywords: {\n      keyword: 'BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color ' +\n        'double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject ' +\n        'Object StringDict StringList Table TableRow XML ' +\n        // Java keywords\n        'false synchronized int abstract float private char boolean static null if const ' +\n        'for true while long throw strictfp finally protected import native final return void ' +\n        'enum else break transient new catch instanceof byte super volatile case assert short ' +\n        'package default double public try this switch continue throws protected public private',\n      literal: 'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI',\n      title: 'setup draw',\n      built_in: 'displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key ' +\n        'keyCode pixels focused frameCount frameRate height width ' +\n        'size createGraphics beginDraw createShape loadShape PShape arc ellipse line point ' +\n        'quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint ' +\n        'curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex ' +\n        'endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap ' +\n        'strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased ' +\n        'mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour ' +\n        'millis minute month second year background clear colorMode fill noFill noStroke stroke alpha ' +\n        'blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY ' +\n        'screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ' +\n        'ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle ' +\n        'pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf ' +\n        'nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset ' +\n        'box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings ' +\n        'loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput ' +\n        'createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings ' +\n        'saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale ' +\n        'shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal ' +\n        'pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap ' +\n        'blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont ' +\n        'loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil ' +\n        'constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees ' +\n        'radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed'\n    },\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.C_NUMBER_MODE\n    ]\n  };\n}\n},{name:\"profile\",create:/*\nLanguage: Python profile\nDescription: Python profiler results\nAuthor: Brian Beck <exogen@gmail.com>\n*/\n\nfunction(hljs) {\n  return {\n    contains: [\n      hljs.C_NUMBER_MODE,\n      {\n        begin: '[a-zA-Z_][\\\\da-zA-Z_]+\\\\.[\\\\da-zA-Z_]{1,3}', end: ':',\n        excludeEnd: true\n      },\n      {\n        begin: '(ncalls|tottime|cumtime)', end: '$',\n        keywords: 'ncalls tottime|10 cumtime|10 filename',\n        relevance: 10\n      },\n      {\n        begin: 'function calls', end: '$',\n        contains: [hljs.C_NUMBER_MODE],\n        relevance: 10\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'string',\n        begin: '\\\\(', end: '\\\\)$',\n        excludeBegin: true, excludeEnd: true,\n        relevance: 0\n      }\n    ]\n  };\n}\n},{name:\"prolog\",create:/*\nLanguage: Prolog\nDescription: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.\nAuthor: Raivo Laanemets <raivo@infdot.com>\n*/\n\nfunction(hljs) {\n\n  var ATOM = {\n\n    begin: /[a-z][A-Za-z0-9_]*/,\n    relevance: 0\n  };\n\n  var VAR = {\n\n    className: 'symbol',\n    variants: [\n      {begin: /[A-Z][a-zA-Z0-9_]*/},\n      {begin: /_[A-Za-z0-9_]*/},\n    ],\n    relevance: 0\n  };\n\n  var PARENTED = {\n\n    begin: /\\(/,\n    end: /\\)/,\n    relevance: 0\n  };\n\n  var LIST = {\n\n    begin: /\\[/,\n    end: /\\]/\n  };\n\n  var LINE_COMMENT = {\n\n    className: 'comment',\n    begin: /%/, end: /$/,\n    contains: [hljs.PHRASAL_WORDS_MODE]\n  };\n\n  var BACKTICK_STRING = {\n\n    className: 'string',\n    begin: /`/, end: /`/,\n    contains: [hljs.BACKSLASH_ESCAPE]\n  };\n\n  var CHAR_CODE = {\n\n    className: 'string', // 0'a etc.\n    begin: /0\\'(\\\\\\'|.)/\n  };\n\n  var SPACE_CODE = {\n\n    className: 'string',\n    begin: /0\\'\\\\s/ // 0'\\s\n  };\n\n  var PRED_OP = { // relevance booster\n    begin: /:-/\n  };\n\n  var inner = [\n\n    ATOM,\n    VAR,\n    PARENTED,\n    PRED_OP,\n    LIST,\n    LINE_COMMENT,\n    hljs.C_BLOCK_COMMENT_MODE,\n    hljs.QUOTE_STRING_MODE,\n    hljs.APOS_STRING_MODE,\n    BACKTICK_STRING,\n    CHAR_CODE,\n    SPACE_CODE,\n    hljs.C_NUMBER_MODE\n  ];\n\n  PARENTED.contains = inner;\n  LIST.contains = inner;\n\n  return {\n    contains: inner.concat([\n      {begin: /\\.$/} // relevance booster\n    ])\n  };\n}\n},{name:\"protobuf\",create:/*\nLanguage: Protocol Buffers\nAuthor: Dan Tao <daniel.tao@gmail.com>\nDescription: Protocol buffer message definition format\nCategory: protocols\n*/\n\nfunction(hljs) {\n  return {\n    keywords: {\n      keyword: 'package import option optional required repeated group',\n      built_in: 'double float int32 int64 uint32 uint64 sint32 sint64 ' +\n        'fixed32 fixed64 sfixed32 sfixed64 bool string bytes',\n      literal: 'true false'\n    },\n    contains: [\n      hljs.QUOTE_STRING_MODE,\n      hljs.NUMBER_MODE,\n      hljs.C_LINE_COMMENT_MODE,\n      {\n        className: 'class',\n        beginKeywords: 'message enum service', end: /\\{/,\n        illegal: /\\n/,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {\n            starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n          })\n        ]\n      },\n      {\n        className: 'function',\n        beginKeywords: 'rpc',\n        end: /;/, excludeEnd: true,\n        keywords: 'rpc returns'\n      },\n      {\n        begin: /^\\s*[A-Z_]+/,\n        end: /\\s*=/, excludeEnd: true\n      }\n    ]\n  };\n}\n},{name:\"puppet\",create:/*\nLanguage: Puppet\nAuthor: Jose Molina Colmenero <gaudy41@gmail.com>\nCategory: config\n*/\n\nfunction(hljs) {\n\n  var PUPPET_KEYWORDS = {\n    keyword:\n    /* language keywords */\n      'and case default else elsif false if in import enherits node or true undef unless main settings $string ',\n    literal:\n    /* metaparameters */\n      'alias audit before loglevel noop require subscribe tag ' +\n    /* normal attributes */\n      'owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check ' +\n      'en_address ip_address realname command environment hour monute month monthday special target weekday '+\n      'creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore ' +\n      'links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source ' +\n      'souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid '+\n      'ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel ' +\n      'native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options ' +\n      'device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use ' +\n      'message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform ' +\n      'responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running ' +\n      'start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age ' +\n      'password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled ' +\n      'enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist ' +\n      'priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey ' +\n      'sslverify mounted',\n    built_in:\n    /* core facts */\n      'architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers ' +\n      'domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces '+\n      'ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion ' +\n      'kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease ' +\n      'lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major ' +\n      'macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease '+\n      'operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion '+\n      'rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced '+\n      'selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime '+\n      'uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version'\n  };\n\n  var COMMENT = hljs.COMMENT('#', '$');\n\n  var IDENT_RE = '([A-Za-z_]|::)(\\\\w|::)*';\n\n  var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE});\n\n  var VARIABLE = {className: 'variable', begin: '\\\\$' + IDENT_RE};\n\n  var STRING = {\n    className: 'string',\n    contains: [hljs.BACKSLASH_ESCAPE, VARIABLE],\n    variants: [\n      {begin: /'/, end: /'/},\n      {begin: /\"/, end: /\"/}\n    ]\n  };\n\n  return {\n    aliases: ['pp'],\n    contains: [\n      COMMENT,\n      VARIABLE,\n      STRING,\n      {\n        beginKeywords: 'class', end: '\\\\{|;',\n        illegal: /=/,\n        contains: [TITLE, COMMENT]\n      },\n      {\n        beginKeywords: 'define', end: /\\{/,\n        contains: [\n          {\n            className: 'section', begin: hljs.IDENT_RE, endsParent: true\n          }\n        ]\n      },\n      {\n        begin: hljs.IDENT_RE + '\\\\s+\\\\{', returnBegin: true,\n        end: /\\S/,\n        contains: [\n          {\n            className: 'keyword',\n            begin: hljs.IDENT_RE\n          },\n          {\n            begin: /\\{/, end: /\\}/,\n            keywords: PUPPET_KEYWORDS,\n            relevance: 0,\n            contains: [\n              STRING,\n              COMMENT,\n              {\n                begin:'[a-zA-Z_]+\\\\s*=>',\n                returnBegin: true, end: '=>',\n                contains: [\n                  {\n                    className: 'attr',\n                    begin: hljs.IDENT_RE,\n                  }\n                ]\n              },\n              {\n                className: 'number',\n                begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n                relevance: 0\n              },\n              VARIABLE\n            ]\n          }\n        ],\n        relevance: 0\n      }\n    ]\n  }\n}\n},{name:\"purebasic\",create:/*\nLanguage: PureBASIC\nAuthor: Tristano Ajmone <tajmone@gmail.com>\nDescription: Syntax highlighting for PureBASIC (v.5). No inline ASM highlighting. First release (v.1.0), April 2016.\nCredits: I've taken inspiration from the PureBasic language file for GeSHi, created by Gustavo Julio Fiorenza (GuShH).\n*/\n\n// Base deafult colors in PB IDE: background: #FFFFDF; foreground: #000000;\n\nfunction(hljs) {\n  var STRINGS = { // PB IDE color: #0080FF (Azure Radiance)\n    className: 'string',\n    begin: '(~)?\"', end: '\"',\n    illegal: '\\\\n'\n  };\n  var CONSTANTS = { // PB IDE color: #924B72 (Cannon Pink)\n    //  \"#\" + a letter or underscore + letters, digits or underscores + (optional) \"$\"\n    className: 'symbol',\n    begin: '#[a-zA-Z_]\\\\w*\\\\$?'\n  };\n\n  return {\n    aliases: ['pb', 'pbi'],\n    keywords: // PB IDE color: #006666 (Blue Stone) + Bold\n      // The following keywords list was taken and adapted from GuShH's PureBasic language file for GeSHi...\n      'And As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerEndIf CompilerEndSelect ' +\n      'CompilerError CompilerIf CompilerSelect Continue Data DataSection EndDataSection Debug DebugLevel ' +\n      'Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM ' +\n      'EnableDebugger EnableExplicit End EndEnumeration EndIf EndImport EndInterface EndMacro EndProcedure ' +\n      'EndSelect EndStructure EndStructureUnion EndWith Enumeration Extends FakeReturn For Next ForEach ' +\n      'ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface Macro ' +\n      'NewList Not Or ProcedureReturn Protected Prototype ' +\n      'PrototypeC Read ReDim Repeat Until Restore Return Select Shared Static Step Structure StructureUnion ' +\n      'Swap To Wend While With XIncludeFile XOr ' +\n      'Procedure ProcedureC ProcedureCDLL ProcedureDLL Declare DeclareC DeclareCDLL DeclareDLL',\n    contains: [\n      // COMMENTS | PB IDE color: #00AAAA (Persian Green)\n      hljs.COMMENT(';', '$', {relevance: 0}),\n\n      { // PROCEDURES DEFINITIONS\n        className: 'function',\n        begin: '\\\\b(Procedure|Declare)(C|CDLL|DLL)?\\\\b',\n        end: '\\\\(',\n        excludeEnd: true,\n        returnBegin: true,\n        contains: [\n          { // PROCEDURE KEYWORDS | PB IDE color: #006666 (Blue Stone) + Bold\n            className: 'keyword',\n            begin: '(Procedure|Declare)(C|CDLL|DLL)?',\n            excludeEnd: true\n          },\n          { // PROCEDURE RETURN TYPE SETTING | PB IDE color: #000000 (Black)\n            className: 'type',\n            begin: '\\\\.\\\\w*'\n            // end: ' ',\n          },\n          hljs.UNDERSCORE_TITLE_MODE // PROCEDURE NAME | PB IDE color: #006666 (Blue Stone)\n        ]\n      },\n      STRINGS,\n      CONSTANTS\n    ]\n  };\n}\n},{name:\"python\",create:/*\nLanguage: Python\nCategory: common\n*/\n\nfunction(hljs) {\n  var PROMPT = {\n    className: 'meta',  begin: /^(>>>|\\.\\.\\.) /\n  };\n  var STRING = {\n    className: 'string',\n    contains: [hljs.BACKSLASH_ESCAPE],\n    variants: [\n      {\n        begin: /(u|b)?r?'''/, end: /'''/,\n        contains: [PROMPT],\n        relevance: 10\n      },\n      {\n        begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\n        contains: [PROMPT],\n        relevance: 10\n      },\n      {\n        begin: /(u|r|ur)'/, end: /'/,\n        relevance: 10\n      },\n      {\n        begin: /(u|r|ur)\"/, end: /\"/,\n        relevance: 10\n      },\n      {\n        begin: /(b|br)'/, end: /'/\n      },\n      {\n        begin: /(b|br)\"/, end: /\"/\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE\n    ]\n  };\n  var NUMBER = {\n    className: 'number', relevance: 0,\n    variants: [\n      {begin: hljs.BINARY_NUMBER_RE + '[lLjJ]?'},\n      {begin: '\\\\b(0o[0-7]+)[lLjJ]?'},\n      {begin: hljs.C_NUMBER_RE + '[lLjJ]?'}\n    ]\n  };\n  var PARAMS = {\n    className: 'params',\n    begin: /\\(/, end: /\\)/,\n    contains: ['self', PROMPT, NUMBER, STRING]\n  };\n  return {\n    aliases: ['py', 'gyp'],\n    keywords: {\n      keyword:\n        'and elif is global as in if from raise for except finally print import pass return ' +\n        'exec else break not with class assert yield try while continue del or def lambda ' +\n        'async await nonlocal|10 None True False',\n      built_in:\n        'Ellipsis NotImplemented'\n    },\n    illegal: /(<\\/|->|\\?)/,\n    contains: [\n      PROMPT,\n      NUMBER,\n      STRING,\n      hljs.HASH_COMMENT_MODE,\n      {\n        variants: [\n          {className: 'function', beginKeywords: 'def', relevance: 10},\n          {className: 'class', beginKeywords: 'class'}\n        ],\n        end: /:/,\n        illegal: /[${=;\\n,]/,\n        contains: [\n          hljs.UNDERSCORE_TITLE_MODE,\n          PARAMS,\n          {\n            begin: /->/, endsWithParent: true,\n            keywords: 'None'\n          }\n        ]\n      },\n      {\n        className: 'meta',\n        begin: /^[\\t ]*@/, end: /$/\n      },\n      {\n        begin: /\\b(print|exec)\\(/ // don’t highlight keywords-turned-functions in Python 3\n      }\n    ]\n  };\n}\n},{name:\"q\",create:/*\nLanguage: Q\nAuthor: Sergey Vidyuk <svidyuk@gmail.com>\nDescription: K/Q/Kdb+ from Kx Systems\n*/\nfunction(hljs) {\n  var Q_KEYWORDS = {\n  keyword:\n    'do while select delete by update from',\n  literal:\n    '0b 1b',\n  built_in:\n    'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum',\n  type:\n    '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid'\n  };\n  return {\n  aliases:['k', 'kdb'],\n  keywords: Q_KEYWORDS,\n  lexemes: /(`?)[A-Za-z0-9_]+\\b/,\n  contains: [\n  hljs.C_LINE_COMMENT_MODE,\n    hljs.QUOTE_STRING_MODE,\n    hljs.C_NUMBER_MODE\n     ]\n  };\n}\n},{name:\"qml\",create:/*\nLanguage: QML\nRequires: javascript.js, xml.js\nAuthor: John Foster <jfoster@esri.com>\nDescription: Syntax highlighting for the Qt Quick QML scripting language, based mostly off\n             the JavaScript parser.\nCategory: scripting\n*/\n\nfunction(hljs) {\n  var KEYWORDS = {\n      keyword:\n        'in of on if for while finally var new function do return void else break catch ' +\n        'instanceof with throw case default try this switch continue typeof delete ' +\n        'let yield const export super debugger as async await import',\n      literal:\n        'true false null undefined NaN Infinity',\n      built_in:\n        'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n        'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n        'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n        'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n        'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n        'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n        'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n        'Behavior bool color coordinate date double enumeration font geocircle georectangle ' +\n        'geoshape int list matrix4x4 parent point quaternion real rect ' +\n        'size string url var variant vector2d vector3d vector4d' +\n        'Promise'\n    };\n\n  var QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\\\._]*';\n\n  // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line.\n  // Use property class.\n  var PROPERTY = {\n      className: 'keyword',\n      begin: '\\\\bproperty\\\\b',\n      starts: {\n        className: 'string',\n        end: '(:|=|;|,|//|/\\\\*|$)',\n        returnEnd: true\n      }\n  };\n\n  // Isolate signal statements. Ends at a ) a comment or end of line.\n  // Use property class.\n  var SIGNAL = {\n      className: 'keyword',\n      begin: '\\\\bsignal\\\\b',\n      starts: {\n        className: 'string',\n        end: '(\\\\(|:|=|;|,|//|/\\\\*|$)',\n        returnEnd: true\n      }\n  };\n\n  // id: is special in QML. When we see id: we want to mark the id: as attribute and\n  // emphasize the token following.\n  var ID_ID = {\n      className: 'attribute',\n      begin: '\\\\bid\\\\s*:',\n      starts: {\n        className: 'string',\n        end: QML_IDENT_RE,\n        returnEnd: false\n      }\n  };\n\n  // Find QML object attribute. An attribute is a QML identifier followed by :.\n  // Unfortunately it's hard to know where it ends, as it may contain scalars,\n  // objects, object definitions, or javascript. The true end is either when the parent\n  // ends or the next attribute is detected.\n  var QML_ATTRIBUTE = {\n    begin: QML_IDENT_RE + '\\\\s*:',\n    returnBegin: true,\n    contains: [\n      {\n        className: 'attribute',\n        begin: QML_IDENT_RE,\n        end: '\\\\s*:',\n        excludeEnd: true,\n        relevance: 0\n      }\n    ],\n    relevance: 0\n  };\n\n  // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }.\n  // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {.\n  var QML_OBJECT = {\n    begin: QML_IDENT_RE + '\\\\s*{', end: '{',\n    returnBegin: true,\n    relevance: 0,\n    contains: [\n      hljs.inherit(hljs.TITLE_MODE, {begin: QML_IDENT_RE})\n    ]\n  };\n\n  return {\n    aliases: ['qt'],\n    case_insensitive: false,\n    keywords: KEYWORDS,\n    contains: [\n      {\n        className: 'meta',\n        begin: /^\\s*['\"]use (strict|asm)['\"]/\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      { // template string\n        className: 'string',\n        begin: '`', end: '`',\n        contains: [\n          hljs.BACKSLASH_ESCAPE,\n          {\n            className: 'subst',\n            begin: '\\\\$\\\\{', end: '\\\\}'\n          }\n        ]\n      },\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'number',\n        variants: [\n          { begin: '\\\\b(0[bB][01]+)' },\n          { begin: '\\\\b(0[oO][0-7]+)' },\n          { begin: hljs.C_NUMBER_RE }\n        ],\n        relevance: 0\n      },\n      { // \"value\" container\n        begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n        keywords: 'return throw case',\n        contains: [\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          hljs.REGEXP_MODE,\n          { // E4X / JSX\n            begin: /</, end: />\\s*[);\\]]/,\n            relevance: 0,\n            subLanguage: 'xml'\n          }\n        ],\n        relevance: 0\n      },\n      SIGNAL,\n      PROPERTY,\n      {\n        className: 'function',\n        beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            excludeBegin: true,\n            excludeEnd: true,\n            contains: [\n              hljs.C_LINE_COMMENT_MODE,\n              hljs.C_BLOCK_COMMENT_MODE\n            ]\n          }\n        ],\n        illegal: /\\[|%/\n      },\n      {\n        begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n      },\n      ID_ID,\n      QML_ATTRIBUTE,\n      QML_OBJECT\n    ],\n    illegal: /#/\n  };\n}\n},{name:\"r\",create:/*\nLanguage: R\nAuthor: Joe Cheng <joe@rstudio.org>\nCategory: scientific\n*/\n\nfunction(hljs) {\n  var IDENT_RE = '([a-zA-Z]|\\\\.[a-zA-Z.])[a-zA-Z0-9._]*';\n\n  return {\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      {\n        begin: IDENT_RE,\n        lexemes: IDENT_RE,\n        keywords: {\n          keyword:\n            'function if in break next repeat else for return switch while try tryCatch ' +\n            'stop warning require library attach detach source setMethod setGeneric ' +\n            'setGroupGeneric setClass ...',\n          literal:\n            'NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 ' +\n            'NA_complex_|10'\n        },\n        relevance: 0\n      },\n      {\n        // hex value\n        className: 'number',\n        begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n        relevance: 0\n      },\n      {\n        // explicit integer\n        className: 'number',\n        begin: \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\n        relevance: 0\n      },\n      {\n        // number with trailing decimal\n        className: 'number',\n        begin: \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\n        relevance: 0\n      },\n      {\n        // number\n        className: 'number',\n        begin: \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n        relevance: 0\n      },\n      {\n        // number with leading decimal\n        className: 'number',\n        begin: \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n        relevance: 0\n      },\n\n      {\n        // escaped identifier\n        begin: '`',\n        end: '`',\n        relevance: 0\n      },\n\n      {\n        className: 'string',\n        contains: [hljs.BACKSLASH_ESCAPE],\n        variants: [\n          {begin: '\"', end: '\"'},\n          {begin: \"'\", end: \"'\"}\n        ]\n      }\n    ]\n  };\n}\n},{name:\"rib\",create:/*\nLanguage: RenderMan RIB\nAuthor: Konstantin Evdokimenko <qewerty@gmail.com>\nContributors: Shuen-Huei Guan <drake.guan@gmail.com>\nCategory: graphics\n*/\n\nfunction(hljs) {\n  return {\n    keywords:\n      'ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis ' +\n      'Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone ' +\n      'CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail ' +\n      'DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format ' +\n      'FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry ' +\n      'Hider Hyperboloid Identity Illuminate Imager Interior LightSource ' +\n      'MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte ' +\n      'MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option ' +\n      'Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples ' +\n      'PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection ' +\n      'Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ' +\n      'ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere ' +\n      'SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd ' +\n      'TransformPoints Translate TrimCurve WorldBegin WorldEnd',\n    illegal: '</',\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      hljs.C_NUMBER_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE\n    ]\n  };\n}\n},{name:\"roboconf\",create:/*\nLanguage: Roboconf\nAuthor: Vincent Zurczak <vzurczak@linagora.com>\nWebsite: http://roboconf.net\nDescription: Syntax highlighting for Roboconf's DSL\nCategory: config\n*/\n\nfunction(hljs) {\n  var IDENTIFIER = '[a-zA-Z-_][^\\\\n{]+\\\\{';\n\n  var PROPERTY = {\n    className: 'attribute',\n    begin: /[a-zA-Z-_]+/, end: /\\s*:/, excludeEnd: true,\n    starts: {\n      end: ';',\n      relevance: 0,\n      contains: [\n        {\n          className: 'variable',\n          begin: /\\.[a-zA-Z-_]+/\n        },\n        {\n          className: 'keyword',\n          begin: /\\(optional\\)/\n        }\n      ]\n    }\n  };\n\n  return {\n    aliases: ['graph', 'instances'],\n    case_insensitive: true,\n    keywords: 'import',\n    contains: [\n      // Facet sections\n      {\n        begin: '^facet ' + IDENTIFIER,\n        end: '}',\n        keywords: 'facet',\n        contains: [\n          PROPERTY,\n          hljs.HASH_COMMENT_MODE\n        ]\n      },\n\n      // Instance sections\n      {\n        begin: '^\\\\s*instance of ' + IDENTIFIER,\n        end: '}',\n        keywords: 'name count channels instance-data instance-state instance of',\n        illegal: /\\S/,\n        contains: [\n          'self',\n          PROPERTY,\n          hljs.HASH_COMMENT_MODE\n        ]\n      },\n\n      // Component sections\n      {\n        begin: '^' + IDENTIFIER,\n        end: '}',\n        contains: [\n          PROPERTY,\n          hljs.HASH_COMMENT_MODE\n        ]\n      },\n\n      // Comments\n      hljs.HASH_COMMENT_MODE\n    ]\n  };\n}\n},{name:\"rsl\",create:/*\nLanguage: RenderMan RSL\nAuthor: Konstantin Evdokimenko <qewerty@gmail.com>\nContributors: Shuen-Huei Guan <drake.guan@gmail.com>\nCategory: graphics\n*/\n\nfunction(hljs) {\n  return {\n    keywords: {\n      keyword:\n        'float color point normal vector matrix while for if do return else break extern continue',\n      built_in:\n        'abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise ' +\n        'clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp ' +\n        'faceforward filterstep floor format fresnel incident length lightsource log match ' +\n        'max min mod noise normalize ntransform opposite option phong pnoise pow printf ' +\n        'ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp ' +\n        'setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan ' +\n        'texture textureinfo trace transform vtransform xcomp ycomp zcomp'\n    },\n    illegal: '</',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'meta',\n        begin: '#', end: '$'\n      },\n      {\n        className: 'class',\n        beginKeywords: 'surface displacement light volume imager', end: '\\\\('\n      },\n      {\n        beginKeywords: 'illuminate illuminance gather', end: '\\\\('\n      }\n    ]\n  };\n}\n},{name:\"ruby\",create:/*\nLanguage: Ruby\nAuthor: Anton Kovalyov <anton@kovalyov.net>\nContributors: Peter Leonov <gojpeg@yandex.ru>, Vasily Polovnyov <vast@whiteants.net>, Loren Segal <lsegal@soen.ca>, Pascal Hurni <phi@ruby-reactive.org>, Cedric Sohrauer <sohrauer@googlemail.com>\nCategory: common\n*/\n\nfunction(hljs) {\n  var RUBY_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n  var RUBY_KEYWORDS = {\n    keyword:\n      'and then defined module in return redo if BEGIN retry end for self when ' +\n      'next until do begin unless END rescue else break undef not super class case ' +\n      'require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor',\n    literal:\n      'true false nil'\n  };\n  var YARDOCTAG = {\n    className: 'doctag',\n    begin: '@[A-Za-z]+'\n  };\n  var IRB_OBJECT = {\n    begin: '#<', end: '>'\n  };\n  var COMMENT_MODES = [\n    hljs.COMMENT(\n      '#',\n      '$',\n      {\n        contains: [YARDOCTAG]\n      }\n    ),\n    hljs.COMMENT(\n      '^\\\\=begin',\n      '^\\\\=end',\n      {\n        contains: [YARDOCTAG],\n        relevance: 10\n      }\n    ),\n    hljs.COMMENT('^__END__', '\\\\n$')\n  ];\n  var SUBST = {\n    className: 'subst',\n    begin: '#\\\\{', end: '}',\n    keywords: RUBY_KEYWORDS\n  };\n  var STRING = {\n    className: 'string',\n    contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n    variants: [\n      {begin: /'/, end: /'/},\n      {begin: /\"/, end: /\"/},\n      {begin: /`/, end: /`/},\n      {begin: '%[qQwWx]?\\\\(', end: '\\\\)'},\n      {begin: '%[qQwWx]?\\\\[', end: '\\\\]'},\n      {begin: '%[qQwWx]?{', end: '}'},\n      {begin: '%[qQwWx]?<', end: '>'},\n      {begin: '%[qQwWx]?/', end: '/'},\n      {begin: '%[qQwWx]?%', end: '%'},\n      {begin: '%[qQwWx]?-', end: '-'},\n      {begin: '%[qQwWx]?\\\\|', end: '\\\\|'},\n      {\n        // \\B in the beginning suppresses recognition of ?-sequences where ?\n        // is the last character of a preceding identifier, as in: `func?4`\n        begin: /\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b/\n      }\n    ]\n  };\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\(', end: '\\\\)', endsParent: true,\n    keywords: RUBY_KEYWORDS\n  };\n\n  var RUBY_DEFAULT_CONTAINS = [\n    STRING,\n    IRB_OBJECT,\n    {\n      className: 'class',\n      beginKeywords: 'class module', end: '$|;',\n      illegal: /=/,\n      contains: [\n        hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n        {\n          begin: '<\\\\s*',\n          contains: [{\n            begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE\n          }]\n        }\n      ].concat(COMMENT_MODES)\n    },\n    {\n      className: 'function',\n      beginKeywords: 'def', end: '$|;',\n      contains: [\n        hljs.inherit(hljs.TITLE_MODE, {begin: RUBY_METHOD_RE}),\n        PARAMS\n      ].concat(COMMENT_MODES)\n    },\n    {\n      // swallow namespace qualifiers before symbols\n      begin: hljs.IDENT_RE + '::'\n    },\n    {\n      className: 'symbol',\n      begin: hljs.UNDERSCORE_IDENT_RE + '(\\\\!|\\\\?)?:',\n      relevance: 0\n    },\n    {\n      className: 'symbol',\n      begin: ':(?!\\\\s)',\n      contains: [STRING, {begin: RUBY_METHOD_RE}],\n      relevance: 0\n    },\n    {\n      className: 'number',\n      begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n      relevance: 0\n    },\n    {\n      begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))' // variables\n    },\n    {\n      className: 'params',\n      begin: /\\|/, end: /\\|/,\n      keywords: RUBY_KEYWORDS\n    },\n    { // regexp container\n      begin: '(' + hljs.RE_STARTERS_RE + ')\\\\s*',\n      contains: [\n        IRB_OBJECT,\n        {\n          className: 'regexp',\n          contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n          illegal: /\\n/,\n          variants: [\n            {begin: '/', end: '/[a-z]*'},\n            {begin: '%r{', end: '}[a-z]*'},\n            {begin: '%r\\\\(', end: '\\\\)[a-z]*'},\n            {begin: '%r!', end: '![a-z]*'},\n            {begin: '%r\\\\[', end: '\\\\][a-z]*'}\n          ]\n        }\n      ].concat(COMMENT_MODES),\n      relevance: 0\n    }\n  ].concat(COMMENT_MODES);\n\n  SUBST.contains = RUBY_DEFAULT_CONTAINS;\n  PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n  var SIMPLE_PROMPT = \"[>?]>\";\n  var DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>\";\n  var RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d(p\\\\d+)?[^>]+>\";\n\n  var IRB_DEFAULT = [\n    {\n      begin: /^\\s*=>/,\n      starts: {\n        end: '$', contains: RUBY_DEFAULT_CONTAINS\n      }\n    },\n    {\n      className: 'meta',\n      begin: '^('+SIMPLE_PROMPT+\"|\"+DEFAULT_PROMPT+'|'+RVM_PROMPT+')',\n      starts: {\n        end: '$', contains: RUBY_DEFAULT_CONTAINS\n      }\n    }\n  ];\n\n  return {\n    aliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb'],\n    keywords: RUBY_KEYWORDS,\n    illegal: /\\/\\*/,\n    contains: COMMENT_MODES.concat(IRB_DEFAULT).concat(RUBY_DEFAULT_CONTAINS)\n  };\n}\n},{name:\"ruleslanguage\",create:/*\nLanguage: Oracle Rules Language\nAuthor: Jason Jacobson <jason.a.jacobson@gmail.com>\nDescription: The Oracle Utilities Rules Language is used to program the Oracle Utilities Applications acquired from LODESTAR Corporation.  The products include Billing Component, LPSS, Pricing Component etc. through version 1.6.1.\nCategory: enterprise\n*/\n\nfunction(hljs) {\n  return {\n    keywords: {\n       keyword: 'BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE ' +\n         'INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 ' +\n         'INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 ' +\n         'INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 ' +\n         'INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 ' +\n         'INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 ' +\n         'INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 ' +\n         'INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 ' +\n         'INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 ' +\n         'INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 ' +\n         'INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 ' +\n         'INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 ' +\n         'INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 ' +\n         'INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 ' +\n         'INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 ' +\n         'MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER ' +\n         'OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE ' +\n         'NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH ' +\n         'IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND ' +\n         'UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ' +\n         'ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE ' +\n         'GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE ' +\n         'SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING ' +\n         'DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF ' +\n         'MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY ' +\n         'YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE ' +\n         'COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR ' +\n         'READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ' +\n         'ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE ' +\n         'EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE ' +\n         'SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL ' +\n         'COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN ' +\n         'MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING ' +\n         'FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ' +\n         'NUMDAYS READ_DATE STAGING',\n       built_in: 'IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML ' +\n         'DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT ' +\n         'DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE ' +\n         'DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT ' +\n         'DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME'\n    },\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'literal',\n        variants: [\n          {begin: '#\\\\s+[a-zA-Z\\\\ \\\\.]*', relevance: 0}, // looks like #-comment\n          {begin: '#[a-zA-Z\\\\ \\\\.]+'}\n        ]\n      }\n    ]\n  };\n}\n},{name:\"rust\",create:/*\nLanguage: Rust\nAuthor: Andrey Vlasovskikh <andrey.vlasovskikh@gmail.com>\nContributors: Roman Shmatov <romanshmatov@gmail.com>\nCategory: system\n*/\n\nfunction(hljs) {\n  var NUM_SUFFIX = '([uif](8|16|32|64|size))\\?';\n  var BLOCK_COMMENT = hljs.inherit(hljs.C_BLOCK_COMMENT_MODE);\n  BLOCK_COMMENT.contains.push('self');\n  var KEYWORDS =\n    'alignof as be box break const continue crate do else enum extern ' +\n    'false fn for if impl in let loop match mod mut offsetof once priv ' +\n    'proc pub pure ref return self Self sizeof static struct super trait true ' +\n    'type typeof unsafe unsized use virtual while where yield move default ' +\n    'int i8 i16 i32 i64 isize ' +\n    'uint u8 u32 u64 usize ' +\n    'float f32 f64 ' +\n    'str char bool'\n  var BUILTINS =\n    // prelude\n    'Copy Send Sized Sync Drop Fn FnMut FnOnce drop Box ToOwned Clone ' +\n    'PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator ' +\n    'Extend IntoIterator DoubleEndedIterator ExactSizeIterator Option ' +\n    'Result SliceConcatExt String ToString Vec ' +\n    // macros\n    'assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! ' +\n    'debug_assert! debug_assert_eq! env! panic! file! format! format_args! ' +\n    'include_bin! include_str! line! local_data_key! module_path! ' +\n    'option_env! print! println! select! stringify! try! unimplemented! ' +\n    'unreachable! vec! write! writeln! macro_rules!';\n  return {\n    aliases: ['rs'],\n    keywords: {\n      keyword:\n        KEYWORDS,\n      literal:\n        'true false Some None Ok Err',\n      built_in:\n        BUILTINS\n    },\n    lexemes: hljs.IDENT_RE + '!?',\n    illegal: '</',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      BLOCK_COMMENT,\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {begin: /b?\"/, illegal: null}),\n      {\n        className: 'string',\n        variants: [\n           { begin: /r(#*)\".*?\"\\1(?!#)/ },\n           { begin: /b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/ }\n        ]\n      },\n      {\n        className: 'symbol',\n        begin: /'[a-zA-Z_][a-zA-Z0-9_]*/\n      },\n      {\n        className: 'number',\n        variants: [\n          { begin: '\\\\b0b([01_]+)' + NUM_SUFFIX },\n          { begin: '\\\\b0o([0-7_]+)' + NUM_SUFFIX },\n          { begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUM_SUFFIX },\n          { begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)' +\n                   NUM_SUFFIX\n          }\n        ],\n        relevance: 0\n      },\n      {\n        className: 'function',\n        beginKeywords: 'fn', end: '(\\\\(|<)', excludeEnd: true,\n        contains: [hljs.UNDERSCORE_TITLE_MODE]\n      },\n      {\n        className: 'meta',\n        begin: '#\\\\!?\\\\[', end: '\\\\]',\n        contains: [\n          {\n            className: 'meta-string',\n            begin: /\"/, end: /\"/\n          }\n        ]\n      },\n      {\n        className: 'class',\n        beginKeywords: 'type', end: ';',\n        contains: [\n          hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n        ],\n        illegal: '\\\\S'\n      },\n      {\n        className: 'class',\n        beginKeywords: 'trait enum struct', end: '{',\n        contains: [\n          hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n        ],\n        illegal: '[\\\\w\\\\d]'\n      },\n      {\n        begin: hljs.IDENT_RE + '::',\n        keywords: {built_in: BUILTINS}\n      },\n      {\n        begin: '->'\n      }\n    ]\n  };\n}\n},{name:\"scala\",create:/*\nLanguage: Scala\nCategory: functional\nAuthor: Jan Berkel <jan.berkel@gmail.com>\nContributors: Erik Osheim <d_m@plastic-idolatry.com>\n*/\n\nfunction(hljs) {\n\n  var ANNOTATION = { className: 'meta', begin: '@[A-Za-z]+' };\n\n  // used in strings for escaping/interpolation/substitution\n  var SUBST = {\n    className: 'subst',\n    variants: [\n      {begin: '\\\\$[A-Za-z0-9_]+'},\n      {begin: '\\\\${', end: '}'}\n    ]\n  };\n\n  var STRING = {\n    className: 'string',\n    variants: [\n      {\n        begin: '\"', end: '\"',\n        illegal: '\\\\n',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n      {\n        begin: '\"\"\"', end: '\"\"\"',\n        relevance: 10\n      },\n      {\n        begin: '[a-z]+\"', end: '\"',\n        illegal: '\\\\n',\n        contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n      },\n      {\n        className: 'string',\n        begin: '[a-z]+\"\"\"', end: '\"\"\"',\n        contains: [SUBST],\n        relevance: 10\n      }\n    ]\n\n  };\n\n  var SYMBOL = {\n    className: 'symbol',\n    begin: '\\'\\\\w[\\\\w\\\\d_]*(?!\\')'\n  };\n\n  var TYPE = {\n    className: 'type',\n    begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n    relevance: 0\n  };\n\n  var NAME = {\n    className: 'title',\n    begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/,\n    relevance: 0\n  };\n\n  var CLASS = {\n    className: 'class',\n    beginKeywords: 'class object trait type',\n    end: /[:={\\[\\n;]/,\n    excludeEnd: true,\n    contains: [\n      {\n        beginKeywords: 'extends with',\n        relevance: 10\n      },\n      {\n        begin: /\\[/,\n        end: /\\]/,\n        excludeBegin: true,\n        excludeEnd: true,\n        relevance: 0,\n        contains: [TYPE]\n      },\n      {\n        className: 'params',\n        begin: /\\(/,\n        end: /\\)/,\n        excludeBegin: true,\n        excludeEnd: true,\n        relevance: 0,\n        contains: [TYPE]\n      },\n      NAME\n    ]\n  };\n\n  var METHOD = {\n    className: 'function',\n    beginKeywords: 'def',\n    end: /[:={\\[(\\n;]/,\n    excludeEnd: true,\n    contains: [NAME]\n  };\n\n  return {\n    keywords: {\n      literal: 'true false null',\n      keyword: 'type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit'\n    },\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      STRING,\n      SYMBOL,\n      TYPE,\n      METHOD,\n      CLASS,\n      hljs.C_NUMBER_MODE,\n      ANNOTATION\n    ]\n  };\n}\n},{name:\"scheme\",create:/*\nLanguage: Scheme\nDescription: Keywords based on http://community.schemewiki.org/?scheme-keywords\nAuthor: JP Verkamp <me@jverkamp.com>\nContributors: Ivan Sagalaev <maniac@softwaremaniacs.org>\nOrigin: clojure.js\nCategory: lisp\n*/\n\nfunction(hljs) {\n  var SCHEME_IDENT_RE = '[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\",\\'`;#|\\\\\\\\\\\\s]+';\n  var SCHEME_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+([./]\\\\d+)?';\n  var SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i';\n  var BUILTINS = {\n    'builtin-name':\n      'case-lambda call/cc class define-class exit-handler field import ' +\n      'inherit init-field interface let*-values let-values let/ec mixin ' +\n      'opt-lambda override protect provide public rename require ' +\n      'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' +\n      'when with-syntax and begin call-with-current-continuation ' +\n      'call-with-input-file call-with-output-file case cond define ' +\n      'define-syntax delay do dynamic-wind else for-each if lambda let let* ' +\n      'let-syntax letrec letrec-syntax map or syntax-rules \\' * + , ,@ - ... / ' +\n      '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' +\n      'boolean? caar cadr call-with-input-file call-with-output-file ' +\n      'call-with-values car cdddar cddddr cdr ceiling char->integer ' +\n      'char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? ' +\n      'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' +\n      'char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? ' +\n      'char? close-input-port close-output-port complex? cons cos ' +\n      'current-input-port current-output-port denominator display eof-object? ' +\n      'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' +\n      'force gcd imag-part inexact->exact inexact? input-port? integer->char ' +\n      'integer? interaction-environment lcm length list list->string ' +\n      'list->vector list-ref list-tail list? load log magnitude make-polar ' +\n      'make-rectangular make-string make-vector max member memq memv min ' +\n      'modulo negative? newline not null-environment null? number->string ' +\n      'number? numerator odd? open-input-file open-output-file output-port? ' +\n      'pair? peek-char port? positive? procedure? quasiquote quote quotient ' +\n      'rational? rationalize read read-char real-part real? remainder reverse ' +\n      'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' +\n      'string->list string->number string->symbol string-append string-ci<=? ' +\n      'string-ci<? string-ci=? string-ci>=? string-ci>? string-copy ' +\n      'string-fill! string-length string-ref string-set! string<=? string<? ' +\n      'string=? string>=? string>? string? substring symbol->string symbol? ' +\n      'tan transcript-off transcript-on truncate values vector ' +\n      'vector->list vector-fill! vector-length vector-ref vector-set! ' +\n      'with-input-from-file with-output-to-file write write-char zero?'\n  };\n\n  var SHEBANG = {\n    className: 'meta',\n    begin: '^#!',\n    end: '$'\n  };\n\n  var LITERAL = {\n    className: 'literal',\n    begin: '(#t|#f|#\\\\\\\\' + SCHEME_IDENT_RE + '|#\\\\\\\\.)'\n  };\n\n  var NUMBER = {\n    className: 'number',\n    variants: [\n      { begin: SCHEME_SIMPLE_NUMBER_RE, relevance: 0 },\n      { begin: SCHEME_COMPLEX_NUMBER_RE, relevance: 0 },\n      { begin: '#b[0-1]+(/[0-1]+)?' },\n      { begin: '#o[0-7]+(/[0-7]+)?' },\n      { begin: '#x[0-9a-f]+(/[0-9a-f]+)?' }\n    ]\n  };\n\n  var STRING = hljs.QUOTE_STRING_MODE;\n\n  var REGULAR_EXPRESSION = {\n    className: 'regexp',\n    begin: '#[pr]x\"',\n    end: '[^\\\\\\\\]\"'\n  };\n\n  var COMMENT_MODES = [\n    hljs.COMMENT(\n      ';',\n      '$',\n      {\n        relevance: 0\n      }\n    ),\n    hljs.COMMENT('#\\\\|', '\\\\|#')\n  ];\n\n  var IDENT = {\n    begin: SCHEME_IDENT_RE,\n    relevance: 0\n  };\n\n  var QUOTED_IDENT = {\n    className: 'symbol',\n    begin: '\\'' + SCHEME_IDENT_RE\n  };\n\n  var BODY = {\n    endsWithParent: true,\n    relevance: 0\n  };\n\n  var QUOTED_LIST = {\n    begin: /'/,\n    contains: [\n      {\n        begin: '\\\\(', end: '\\\\)',\n        contains: ['self', LITERAL, STRING, NUMBER, IDENT, QUOTED_IDENT]\n      }\n    ]\n  };\n\n  var NAME = {\n    className: 'name',\n    begin: SCHEME_IDENT_RE,\n    lexemes: SCHEME_IDENT_RE,\n    keywords: BUILTINS\n  };\n\n  var LAMBDA = {\n    begin: /lambda/, endsWithParent: true, returnBegin: true,\n    contains: [\n      NAME,\n      {\n        begin: /\\(/, end: /\\)/, endsParent: true,\n        contains: [IDENT],\n      }\n    ]\n  };\n\n  var LIST = {\n    variants: [\n      { begin: '\\\\(', end: '\\\\)' },\n      { begin: '\\\\[', end: '\\\\]' }\n    ],\n    contains: [LAMBDA, NAME, BODY]\n  };\n\n  BODY.contains = [LITERAL, NUMBER, STRING, IDENT, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES);\n\n  return {\n    illegal: /\\S/,\n    contains: [SHEBANG, NUMBER, STRING, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES)\n  };\n}\n},{name:\"scilab\",create:/*\nLanguage: Scilab\nAuthor: Sylvestre Ledru <sylvestre.ledru@scilab-enterprises.com>\nOrigin: matlab.js\nDescription: Scilab is a port from Matlab\nCategory: scientific\n*/\n\nfunction(hljs) {\n\n  var COMMON_CONTAINS = [\n    hljs.C_NUMBER_MODE,\n    {\n      className: 'string',\n      begin: '\\'|\\\"', end: '\\'|\\\"',\n      contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\n    }\n  ];\n\n  return {\n    aliases: ['sci'],\n    lexemes: /%?\\w+/,\n    keywords: {\n      keyword: 'abort break case clear catch continue do elseif else endfunction end for function '+\n        'global if pause return resume select try then while',\n      literal:\n        '%f %F %t %T %pi %eps %inf %nan %e %i %z %s',\n      built_in: // Scilab has more than 2000 functions. Just list the most commons\n       'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error '+\n       'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty '+\n       'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log '+\n       'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real '+\n       'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan '+\n       'type typename warning zeros matrix'\n    },\n    illegal: '(\"|#|/\\\\*|\\\\s+/\\\\w+)',\n    contains: [\n      {\n        className: 'function',\n        beginKeywords: 'function', end: '$',\n        contains: [\n          hljs.UNDERSCORE_TITLE_MODE,\n          {\n            className: 'params',\n            begin: '\\\\(', end: '\\\\)'\n          }\n        ]\n      },\n      {\n        begin: '[a-zA-Z_][a-zA-Z_0-9]*(\\'+[\\\\.\\']*|[\\\\.\\']+)', end: '',\n        relevance: 0\n      },\n      {\n        begin: '\\\\[', end: '\\\\]\\'*[\\\\.\\']*',\n        relevance: 0,\n        contains: COMMON_CONTAINS\n      },\n      hljs.COMMENT('//', '$')\n    ].concat(COMMON_CONTAINS)\n  };\n}\n},{name:\"scss\",create:/*\nLanguage: SCSS\nAuthor: Kurt Emch <kurt@kurtemch.com>\nCategory: css\n*/\nfunction(hljs) {\n  var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n  var VARIABLE = {\n    className: 'variable',\n    begin: '(\\\\$' + IDENT_RE + ')\\\\b'\n  };\n  var HEXCOLOR = {\n    className: 'number', begin: '#[0-9A-Fa-f]+'\n  };\n  var DEF_INTERNALS = {\n    className: 'attribute',\n    begin: '[A-Z\\\\_\\\\.\\\\-]+', end: ':',\n    excludeEnd: true,\n    illegal: '[^\\\\s]',\n    starts: {\n      endsWithParent: true, excludeEnd: true,\n      contains: [\n        HEXCOLOR,\n        hljs.CSS_NUMBER_MODE,\n        hljs.QUOTE_STRING_MODE,\n        hljs.APOS_STRING_MODE,\n        hljs.C_BLOCK_COMMENT_MODE,\n        {\n          className: 'meta', begin: '!important'\n        }\n      ]\n    }\n  };\n  return {\n    case_insensitive: true,\n    illegal: '[=/|\\']',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'selector-id', begin: '\\\\#[A-Za-z0-9_-]+',\n        relevance: 0\n      },\n      {\n        className: 'selector-class', begin: '\\\\.[A-Za-z0-9_-]+',\n        relevance: 0\n      },\n      {\n        className: 'selector-attr', begin: '\\\\[', end: '\\\\]',\n        illegal: '$'\n      },\n      {\n        className: 'selector-tag', // begin: IDENT_RE, end: '[,|\\\\s]'\n        begin: '\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b',\n        relevance: 0\n      },\n      {\n        begin: ':(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)'\n      },\n      {\n        begin: '::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)'\n      },\n      VARIABLE,\n      {\n        className: 'attribute',\n        begin: '\\\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b',\n        illegal: '[^\\\\s]'\n      },\n      {\n        begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b'\n      },\n      {\n        begin: ':', end: ';',\n        contains: [\n          VARIABLE,\n          HEXCOLOR,\n          hljs.CSS_NUMBER_MODE,\n          hljs.QUOTE_STRING_MODE,\n          hljs.APOS_STRING_MODE,\n          {\n            className: 'meta', begin: '!important'\n          }\n        ]\n      },\n      {\n        begin: '@', end: '[{;]',\n        keywords: 'mixin include extend for if else each while charset import debug media page content font-face namespace warn',\n        contains: [\n          VARIABLE,\n          hljs.QUOTE_STRING_MODE,\n          hljs.APOS_STRING_MODE,\n          HEXCOLOR,\n          hljs.CSS_NUMBER_MODE,\n          {\n            begin: '\\\\s[A-Za-z0-9_.-]+',\n            relevance: 0\n          }\n        ]\n      }\n    ]\n  };\n}\n},{name:\"smali\",create:/*\nLanguage: Smali\nAuthor: Dennis Titze <dennis.titze@gmail.com>\nDescription: Basic Smali highlighting\n*/\n\nfunction(hljs) {\n  var smali_instr_low_prio = ['add', 'and', 'cmp', 'cmpg', 'cmpl', 'const', 'div', 'double', 'float', 'goto', 'if', 'int', 'long', 'move', 'mul', 'neg', 'new', 'nop', 'not', 'or', 'rem', 'return', 'shl', 'shr', 'sput', 'sub', 'throw', 'ushr', 'xor'];\n  var smali_instr_high_prio = ['aget', 'aput', 'array', 'check', 'execute', 'fill', 'filled', 'goto/16', 'goto/32', 'iget', 'instance', 'invoke', 'iput', 'monitor', 'packed', 'sget', 'sparse'];\n  var smali_keywords = ['transient', 'constructor', 'abstract', 'final', 'synthetic', 'public', 'private', 'protected', 'static', 'bridge', 'system'];\n  return {\n    aliases: ['smali'],\n    contains: [\n      {\n        className: 'string',\n        begin: '\"', end: '\"',\n        relevance: 0\n      },\n      hljs.COMMENT(\n        '#',\n        '$',\n        {\n          relevance: 0\n        }\n      ),\n      {\n        className: 'keyword',\n        variants: [\n          {begin: '\\\\s*\\\\.end\\\\s[a-zA-Z0-9]*'},\n          {begin: '^[ ]*\\\\.[a-zA-Z]*', relevance: 0},\n          {begin: '\\\\s:[a-zA-Z_0-9]*', relevance: 0},\n          {begin: '\\\\s(' + smali_keywords.join('|') + ')'}\n        ]\n      },\n      {\n        className: 'built_in',\n        variants : [\n          {\n            begin: '\\\\s('+smali_instr_low_prio.join('|')+')\\\\s'\n          },\n          {\n            begin: '\\\\s('+smali_instr_low_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)+\\\\s',\n            relevance: 10\n          },\n          {\n            begin: '\\\\s('+smali_instr_high_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)*\\\\s',\n            relevance: 10\n          },\n        ]\n      },\n      {\n        className: 'class',\n        begin: 'L[^\\(;:\\n]*;',\n        relevance: 0\n      },\n      {\n        begin: '[vp][0-9]+',\n      }\n    ]\n  };\n}\n},{name:\"smalltalk\",create:/*\nLanguage: Smalltalk\nAuthor: Vladimir Gubarkov <xonixx@gmail.com>\n*/\n\nfunction(hljs) {\n  var VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*';\n  var CHAR = {\n    className: 'string',\n    begin: '\\\\$.{1}'\n  };\n  var SYMBOL = {\n    className: 'symbol',\n    begin: '#' + hljs.UNDERSCORE_IDENT_RE\n  };\n  return {\n    aliases: ['st'],\n    keywords: 'self super nil true false thisContext', // only 6\n    contains: [\n      hljs.COMMENT('\"', '\"'),\n      hljs.APOS_STRING_MODE,\n      {\n        className: 'type',\n        begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n        relevance: 0\n      },\n      {\n        begin: VAR_IDENT_RE + ':',\n        relevance: 0\n      },\n      hljs.C_NUMBER_MODE,\n      SYMBOL,\n      CHAR,\n      {\n        // This looks more complicated than needed to avoid combinatorial\n        // explosion under V8. It effectively means `| var1 var2 ... |` with\n        // whitespace adjacent to `|` being optional.\n        begin: '\\\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\\\|',\n        returnBegin: true, end: /\\|/,\n        illegal: /\\S/,\n        contains: [{begin: '(\\\\|[ ]*)?' + VAR_IDENT_RE}]\n      },\n      {\n        begin: '\\\\#\\\\(', end: '\\\\)',\n        contains: [\n          hljs.APOS_STRING_MODE,\n          CHAR,\n          hljs.C_NUMBER_MODE,\n          SYMBOL\n        ]\n      }\n    ]\n  };\n}\n},{name:\"sml\",create:/*\nLanguage: SML\nAuthor: Edwin Dalorzo <edwin@dalorzo.org>\nDescription: SML language definition.\nOrigin: ocaml.js\nCategory: functional\n*/\nfunction(hljs) {\n  return {\n    aliases: ['ml'],\n    keywords: {\n      keyword:\n        /* according to Definition of Standard ML 97  */\n        'abstype and andalso as case datatype do else end eqtype ' +\n        'exception fn fun functor handle if in include infix infixr ' +\n        'let local nonfix of op open orelse raise rec sharing sig ' +\n        'signature struct structure then type val with withtype where while',\n      built_in:\n        /* built-in types according to basis library */\n        'array bool char exn int list option order real ref string substring vector unit word',\n      literal:\n        'true false NONE SOME LESS EQUAL GREATER nil'\n    },\n    illegal: /\\/\\/|>>/,\n    lexemes: '[a-z_]\\\\w*!?',\n    contains: [\n      {\n        className: 'literal',\n        begin: /\\[(\\|\\|)?\\]|\\(\\)/,\n        relevance: 0\n      },\n      hljs.COMMENT(\n        '\\\\(\\\\*',\n        '\\\\*\\\\)',\n        {\n          contains: ['self']\n        }\n      ),\n      { /* type variable */\n        className: 'symbol',\n        begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\n        /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\n      },\n      { /* polymorphic variant */\n        className: 'type',\n        begin: '`[A-Z][\\\\w\\']*'\n      },\n      { /* module or constructor */\n        className: 'type',\n        begin: '\\\\b[A-Z][\\\\w\\']*',\n        relevance: 0\n      },\n      { /* don't color identifiers, but safely catch all identifiers with '*/\n        begin: '[a-z_]\\\\w*\\'[\\\\w\\']*'\n      },\n      hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n      {\n        className: 'number',\n        begin:\n          '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n          '0[oO][0-7_]+[Lln]?|' +\n          '0[bB][01_]+[Lln]?|' +\n          '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\n        relevance: 0\n      },\n      {\n        begin: /[-=]>/ // relevance booster\n      }\n    ]\n  };\n}\n},{name:\"sqf\",create:/*\nLanguage: SQF\nAuthor: Søren Enevoldsen <senevoldsen90@gmail.com>\nDescription: Scripting language for the Arma game series\nRequires: cpp.js\n*/\n\nfunction(hljs) {\n  var CPP = hljs.getLanguage('cpp').exports;\n\n  // In SQF strings, quotes matching the start are escaped by adding a consecutive.\n  // Example of single escaped quotes: \" \"\" \" and  ' '' '.\n  var STRINGS = {\n    className: 'string',\n    variants: [\n      {\n        begin: '\"',\n        end: '\"',\n        contains: [{begin: '\"\"', relevance: 0}]\n      },\n      {\n        begin: '\\'',\n        end: '\\'',\n        contains: [{begin: '\\'\\'', relevance: 0}]\n      }\n    ]\n  };\n\n  return {\n    aliases: ['sqf'],\n    case_insensitive: true,\n    keywords: {\n      keyword:\n        'case catch default do else exit exitWith for forEach from if ' +\n        'switch then throw to try while with',\n      built_in:\n        'or plus abs accTime acos action actionKeys actionKeysImages ' +\n        'actionKeysNames actionKeysNamesArray actionName activateAddons ' +\n        'activatedAddons activateKey addAction addBackpack addBackpackCargo ' +\n        'addBackpackCargoGlobal addBackpackGlobal addCamShake ' +\n        'addCuratorAddons addCuratorCameraArea addCuratorEditableObjects ' +\n        'addCuratorEditingArea addCuratorPoints addEditorObject ' +\n        'addEventHandler addGoggles addGroupIcon addHandgunItem addHeadgear ' +\n        'addItem addItemCargo addItemCargoGlobal addItemPool ' +\n        'addItemToBackpack addItemToUniform addItemToVest addLiveStats ' +\n        'addMagazine addMagazine array addMagazineAmmoCargo ' +\n        'addMagazineCargo addMagazineCargoGlobal addMagazineGlobal ' +\n        'addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem ' +\n        'addMissionEventHandler addMPEventHandler addMusicEventHandler ' +\n        'addPrimaryWeaponItem addPublicVariableEventHandler addRating ' +\n        'addResources addScore addScoreSide addSecondaryWeaponItem ' +\n        'addSwitchableUnit addTeamMember addToRemainsCollector addUniform ' +\n        'addVehicle addVest addWaypoint addWeapon addWeaponCargo ' +\n        'addWeaponCargoGlobal addWeaponGlobal addWeaponPool addWeaponTurret ' +\n        'agent agents AGLToASL aimedAtTarget aimPos airDensityRTD ' +\n        'airportSide AISFinishHeal alive allControls allCurators allDead ' +\n        'allDeadMen allDisplays allGroups allMapMarkers allMines ' +\n        'allMissionObjects allow3DMode allowCrewInImmobile ' +\n        'allowCuratorLogicIgnoreAreas allowDamage allowDammage ' +\n        'allowFileOperations allowFleeing allowGetIn allPlayers allSites ' +\n        'allTurrets allUnits allUnitsUAV allVariables ammo and animate ' +\n        'animateDoor animationPhase animationState append armoryPoints ' +\n        'arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo ' +\n        'assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner ' +\n        'assignAsTurret assignCurator assignedCargo assignedCommander ' +\n        'assignedDriver assignedGunner assignedItems assignedTarget ' +\n        'assignedTeam assignedVehicle assignedVehicleRole assignItem ' +\n        'assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject ' +\n        'attachedObjects attachedTo attachObject attachTo attackEnabled ' +\n        'backpack backpackCargo backpackContainer backpackItems ' +\n        'backpackMagazines backpackSpaceFor behaviour benchmark binocular ' +\n        'blufor boundingBox boundingBoxReal boundingCenter breakOut breakTo ' +\n        'briefingName buildingExit buildingPos buttonAction buttonSetAction ' +\n        'cadetMode call callExtension camCommand camCommit ' +\n        'camCommitPrepared camCommitted camConstuctionSetParams camCreate ' +\n        'camDestroy cameraEffect cameraEffectEnableHUD cameraInterest ' +\n        'cameraOn cameraView campaignConfigFile camPreload camPreloaded ' +\n        'camPrepareBank camPrepareDir camPrepareDive camPrepareFocus ' +\n        'camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos ' +\n        'camPrepareTarget camSetBank camSetDir camSetDive camSetFocus ' +\n        'camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget ' +\n        'camTarget camUseNVG canAdd canAddItemToBackpack ' +\n        'canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination ' +\n        'canFire canMove canSlingLoad canStand canUnloadInCombat captive ' +\n        'captiveNum cbChecked cbSetChecked ceil cheatsEnabled ' +\n        'checkAIFeature civilian className clearAllItemsFromBackpack ' +\n        'clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons ' +\n        'clearItemCargo clearItemCargoGlobal clearItemPool ' +\n        'clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool ' +\n        'clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal ' +\n        'clearWeaponPool closeDialog closeDisplay closeOverlay ' +\n        'collapseObjectTree combatMode commandArtilleryFire commandChat ' +\n        'commander commandFire commandFollow commandFSM commandGetOut ' +\n        'commandingMenu commandMove commandRadio commandStop commandTarget ' +\n        'commandWatch comment commitOverlay compile compileFinal ' +\n        'completedFSM composeText configClasses configFile configHierarchy ' +\n        'configName configProperties configSourceMod configSourceModList ' +\n        'connectTerminalToUAV controlNull controlsGroupCtrl ' +\n        'copyFromClipboard copyToClipboard copyWaypoints cos count ' +\n        'countEnemy countFriendly countSide countType countUnknown ' +\n        'createAgent createCenter createDialog createDiaryLink ' +\n        'createDiaryRecord createDiarySubject createDisplay ' +\n        'createGearDialog createGroup createGuardedPoint createLocation ' +\n        'createMarker createMarkerLocal createMenu createMine ' +\n        'createMissionDisplay createSimpleTask createSite createSoundSource ' +\n        'createTask createTeam createTrigger createUnit createUnit array ' +\n        'createVehicle createVehicle array createVehicleCrew ' +\n        'createVehicleLocal crew ctrlActivate ctrlAddEventHandler ' +\n        'ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ' +\n        'ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ' +\n        'ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ' +\n        'ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ' +\n        'ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ' +\n        'ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ' +\n        'ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlPosition ' +\n        'ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ' +\n        'ctrlSetActiveColor ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ' +\n        'ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ' +\n        'ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ' +\n        'ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ' +\n        'ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ' +\n        'ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ' +\n        'ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ' +\n        'ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ' +\n        'ctrlSetFontHeightH6 ctrlSetFontP ctrlSetFontPB ' +\n        'ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ' +\n        'ctrlSetModelScale ctrlSetPosition ctrlSetScale ' +\n        'ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ' +\n        'ctrlSetTooltipColorBox ctrlSetTooltipColorShade ' +\n        'ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ' +\n        'ctrlType ctrlVisible curatorAddons curatorCamera curatorCameraArea ' +\n        'curatorCameraAreaCeiling curatorCoef curatorEditableObjects ' +\n        'curatorEditingArea curatorEditingAreaType curatorMouseOver ' +\n        'curatorPoints curatorRegisteredObjects curatorSelected ' +\n        'curatorWaypointCost currentChannel currentCommand currentMagazine ' +\n        'currentMagazineDetail currentMagazineDetailTurret ' +\n        'currentMagazineTurret currentMuzzle currentNamespace currentTask ' +\n        'currentTasks currentThrowable currentVisionMode currentWaypoint ' +\n        'currentWeapon currentWeaponMode currentWeaponTurret currentZeroing ' +\n        'cursorTarget customChat customRadio cutFadeOut cutObj cutRsc ' +\n        'cutText damage date dateToNumber daytime deActivateKey ' +\n        'debriefingText debugFSM debugLog deg deleteAt deleteCenter ' +\n        'deleteCollection deleteEditorObject deleteGroup deleteIdentity ' +\n        'deleteLocation deleteMarker deleteMarkerLocal deleteRange ' +\n        'deleteResources deleteSite deleteStatus deleteTeam deleteVehicle ' +\n        'deleteVehicleCrew deleteWaypoint detach detectedMines ' +\n        'diag activeMissionFSMs diag activeSQFScripts diag activeSQSScripts ' +\n        'diag captureFrame diag captureSlowFrame diag fps diag fpsMin ' +\n        'diag frameNo diag log diag logSlowFrame diag tickTime dialog ' +\n        'diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled ' +\n        'difficultyEnabledRTD direction directSay disableAI ' +\n        'disableCollisionWith disableConversation disableDebriefingStats ' +\n        'disableSerialization disableTIEquipment disableUAVConnectability ' +\n        'disableUserInput displayAddEventHandler displayCtrl displayNull ' +\n        'displayRemoveAllEventHandlers displayRemoveEventHandler ' +\n        'displaySetEventHandler dissolveTeam distance distance2D ' +\n        'distanceSqr distributionRegion doArtilleryFire doFire doFollow ' +\n        'doFSM doGetOut doMove doorPhase doStop doTarget doWatch drawArrow ' +\n        'drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink ' +\n        'drawLocation drawRectangle driver drop east echo editObject ' +\n        'editorSetEventHandler effectiveCommander emptyPositions enableAI ' +\n        'enableAIFeature enableAttack enableCamShake enableCaustics ' +\n        'enableCollisionWith enableCopilot enableDebriefingStats ' +\n        'enableDiagLegend enableEndDialog enableEngineArtillery ' +\n        'enableEnvironment enableFatigue enableGunLights enableIRLasers ' +\n        'enableMimics enablePersonTurret enableRadio enableReload ' +\n        'enableRopeAttach enableSatNormalOnDetail enableSaving ' +\n        'enableSentences enableSimulation enableSimulationGlobal ' +\n        'enableTeamSwitch enableUAVConnectability enableUAVWaypoints ' +\n        'endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD ' +\n        'enginesTorqueRTD entities estimatedEndServerTime estimatedTimeLeft ' +\n        'evalObjectArgument everyBackpack everyContainer exec ' +\n        'execEditorScript execFSM execVM exp expectedDestination ' +\n        'eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound ' +\n        'fadeSpeech failMission fillWeaponsFromPool find findCover ' +\n        'findDisplay findEditorObject findEmptyPosition ' +\n        'findEmptyPositionReady findNearestEnemy finishMissionInit finite ' +\n        'fire fireAtTarget firstBackpack flag flagOwner fleeing floor ' +\n        'flyInHeight fog fogForecast fogParams forceAddUniform forceEnd ' +\n        'forceMap forceRespawn forceSpeed forceWalk forceWeaponFire ' +\n        'forceWeatherChange forEachMember forEachMemberAgent ' +\n        'forEachMemberTeam format formation formationDirection ' +\n        'formationLeader formationMembers formationPosition formationTask ' +\n        'formatText formLeader freeLook fromEditor fuel fullCrew ' +\n        'gearSlotAmmoCount gearSlotData getAllHitPointsDamage getAmmoCargo ' +\n        'getArray getArtilleryAmmo getArtilleryComputerSettings ' +\n        'getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit ' +\n        'getBackpackCargo getBleedingRemaining getBurningValue ' +\n        'getCargoIndex getCenterOfMass getClientState getConnectedUAV ' +\n        'getDammage getDescription getDir getDirVisual getDLCs ' +\n        'getEditorCamera getEditorMode getEditorObjectScope ' +\n        'getElevationOffset getFatigue getFriend getFSMVariable ' +\n        'getFuelCargo getGroupIcon getGroupIconParams getGroupIcons ' +\n        'getHideFrom getHit getHitIndex getHitPointDamage getItemCargo ' +\n        'getMagazineCargo getMarkerColor getMarkerPos getMarkerSize ' +\n        'getMarkerType getMass getModelInfo getNumber getObjectArgument ' +\n        'getObjectChildren getObjectDLC getObjectMaterials getObjectProxy ' +\n        'getObjectTextures getObjectType getObjectViewDistance ' +\n        'getOxygenRemaining getPersonUsedDLCs getPlayerChannel getPlayerUID ' +\n        'getPos getPosASL getPosASLVisual getPosASLW getPosATL ' +\n        'getPosATLVisual getPosVisual getPosWorld getRepairCargo ' +\n        'getResolution getShadowDistance getSlingLoad getSpeed ' +\n        'getSuppression getTerrainHeightASL getText getVariable ' +\n        'getWeaponCargo getWPPos glanceAt globalChat globalRadio goggles ' +\n        'goto group groupChat groupFromNetId groupIconSelectable ' +\n        'groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits ' +\n        'groupSelectUnit grpNull gunner gusts halt handgunItems ' +\n        'handgunMagazine handgunWeapon handsHit hasInterface hasWeapon ' +\n        'hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup ' +\n        'hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear ' +\n        'hideBody hideObject hideObjectGlobal hint hintC hintCadet ' +\n        'hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity ' +\n        'image importAllGroups importance in incapacitatedState independent ' +\n        'inflame inflamed inGameUISetEventHandler inheritsFrom ' +\n        'initAmbientLife inputAction inRangeOfArtillery insertEditorObject ' +\n        'intersect isAbleToBreathe isAgent isArray isAutoHoverOn ' +\n        'isAutonomous isAutotest isBleeding isBurning isClass ' +\n        'isCollisionLightOn isCopilotEnabled isDedicated isDLCAvailable ' +\n        'isEngineOn isEqualTo isFlashlightOn isFlatEmpty isForcedWalk ' +\n        'isFormationLeader isHidden isInRemainsCollector ' +\n        'isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf ' +\n        'isLightOn isLocalized isManualFire isMarkedForCollection ' +\n        'isMultiplayer isNil isNull isNumber isObjectHidden isObjectRTD ' +\n        'isOnRoad isPipEnabled isPlayer isRealTime isServer ' +\n        'isShowing3DIcons isSteamMission isStreamFriendlyUIEnabled isText ' +\n        'isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable ' +\n        'isUAVConnected isUniformAllowed isWalking isWeaponDeployed ' +\n        'isWeaponRested itemCargo items itemsWithMagazines join joinAs ' +\n        'joinAsSilent joinSilent joinString kbAddDatabase ' +\n        'kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic ' +\n        'kbTell kbWasSaid keyImage keyName knowsAbout land landAt ' +\n        'landResult language laserTarget lbAdd lbClear lbColor lbCurSel ' +\n        'lbData lbDelete lbIsSelected lbPicture lbSelection lbSetColor ' +\n        'lbSetCurSel lbSetData lbSetPicture lbSetPictureColor ' +\n        'lbSetPictureColorDisabled lbSetPictureColorSelected ' +\n        'lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetTooltip ' +\n        'lbSetValue lbSize lbSort lbSortByValue lbText lbValue leader ' +\n        'leaderboardDeInit leaderboardGetRows leaderboardInit leaveVehicle ' +\n        'libraryCredits libraryDisclaimers lifeState lightAttachObject ' +\n        'lightDetachObject lightIsOn lightnings limitSpeed linearConversion ' +\n        'lineBreak lineIntersects lineIntersectsObjs lineIntersectsSurfaces ' +\n        'lineIntersectsWith linkItem list listObjects ln lnbAddArray ' +\n        'lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData ' +\n        'lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture ' +\n        'lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData ' +\n        'lnbSetPicture lnbSetText lnbSetValue lnbSize lnbText lnbValue load ' +\n        'loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine ' +\n        'loadOverlay loadStatus loadUniform loadVest local localize ' +\n        'locationNull locationPosition lock lockCameraTo lockCargo ' +\n        'lockDriver locked lockedCargo lockedDriver lockedTurret lockTurret ' +\n        'lockWP log logEntities lookAt lookAtPos magazineCargo magazines ' +\n        'magazinesAllTurrets magazinesAmmo magazinesAmmoCargo ' +\n        'magazinesAmmoFull magazinesDetail magazinesDetailBackpack ' +\n        'magazinesDetailUniform magazinesDetailVest magazinesTurret ' +\n        'magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit ' +\n        'mapAnimDone mapCenterOnCamera mapGridPosition ' +\n        'markAsFinishedOnSteam markerAlpha markerBrush markerColor ' +\n        'markerDir markerPos markerShape markerSize markerText markerType ' +\n        'max members min mineActive mineDetectedBy missionConfigFile ' +\n        'missionName missionNamespace missionStart mod modelToWorld ' +\n        'modelToWorldVisual moonIntensity morale move moveInAny moveInCargo ' +\n        'moveInCommander moveInDriver moveInGunner moveInTurret ' +\n        'moveObjectToEnd moveOut moveTime moveTo moveToCompleted ' +\n        'moveToFailed musicVolume name name location nameSound nearEntities ' +\n        'nearestBuilding nearestLocation nearestLocations ' +\n        'nearestLocationWithDubbing nearestObject nearestObjects ' +\n        'nearObjects nearObjectsReady nearRoads nearSupplies nearTargets ' +\n        'needReload netId netObjNull newOverlay nextMenuItemIndex ' +\n        'nextWeatherChange nMenuItems not numberToDate objectCurators ' +\n        'objectFromNetId objectParent objNull objStatus onBriefingGroup ' +\n        'onBriefingNotes onBriefingPlan onBriefingTeamSwitch ' +\n        'onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick ' +\n        'onGroupIconOverEnter onGroupIconOverLeave ' +\n        'onHCGroupSelectionChanged onMapSingleClick onPlayerConnected ' +\n        'onPlayerDisconnected onPreloadFinished onPreloadStarted ' +\n        'onShowNewObject onTeamSwitch openCuratorInterface openMap ' +\n        'openYoutubeVideo opfor or orderGetIn overcast overcastForecast ' +\n        'owner param params parseNumber parseText parsingNamespace ' +\n        'particlesQuality pi pickWeaponPool pitch playableSlotsNumber ' +\n        'playableUnits playAction playActionNow player playerRespawnTime ' +\n        'playerSide playersNumber playGesture playMission playMove ' +\n        'playMoveNow playMusic playScriptedMission playSound playSound3D ' +\n        'position positionCameraToWorld posScreenToWorld posWorldToScreen ' +\n        'ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ' +\n        'ppEffectDestroy ppEffectEnable ppEffectForceInNVG precision ' +\n        'preloadCamera preloadObject preloadSound preloadTitleObj ' +\n        'preloadTitleRsc preprocessFile preprocessFileLineNumbers ' +\n        'primaryWeapon primaryWeaponItems primaryWeaponMagazine priority ' +\n        'private processDiaryLink productVersion profileName ' +\n        'profileNamespace profileNameSteam progressLoadingScreen ' +\n        'progressPosition progressSetPosition publicVariable ' +\n        'publicVariableClient publicVariableServer pushBack putWeaponPool ' +\n        'queryItemsPool queryMagazinePool queryWeaponPool rad ' +\n        'radioChannelAdd radioChannelCreate radioChannelRemove ' +\n        'radioChannelSetCallSign radioChannelSetLabel radioVolume rain ' +\n        'rainbow random rank rankId rating rectangular registeredTasks ' +\n        'registerTask reload reloadEnabled remoteControl remoteExec ' +\n        'remoteExecCall removeAction removeAllActions ' +\n        'removeAllAssignedItems removeAllContainers removeAllCuratorAddons ' +\n        'removeAllCuratorCameraAreas removeAllCuratorEditingAreas ' +\n        'removeAllEventHandlers removeAllHandgunItems removeAllItems ' +\n        'removeAllItemsWithMagazines removeAllMissionEventHandlers ' +\n        'removeAllMPEventHandlers removeAllMusicEventHandlers ' +\n        'removeAllPrimaryWeaponItems removeAllWeapons removeBackpack ' +\n        'removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea ' +\n        'removeCuratorEditableObjects removeCuratorEditingArea ' +\n        'removeDrawIcon removeDrawLinks removeEventHandler ' +\n        'removeFromRemainsCollector removeGoggles removeGroupIcon ' +\n        'removeHandgunItem removeHeadgear removeItem removeItemFromBackpack ' +\n        'removeItemFromUniform removeItemFromVest removeItems ' +\n        'removeMagazine removeMagazineGlobal removeMagazines ' +\n        'removeMagazinesTurret removeMagazineTurret removeMenuItem ' +\n        'removeMissionEventHandler removeMPEventHandler ' +\n        'removeMusicEventHandler removePrimaryWeaponItem ' +\n        'removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit ' +\n        'removeTeamMember removeUniform removeVest removeWeapon ' +\n        'removeWeaponGlobal removeWeaponTurret requiredVersion ' +\n        'resetCamShake resetSubgroupDirection resistance resize resources ' +\n        'respawnVehicle restartEditorCamera reveal revealMine reverse ' +\n        'reversedMouseY roadsConnectedTo roleDescription ' +\n        'ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ' +\n        'ropeCreate ropeCut ropeEndPosition ropeLength ropes ropeUnwind ' +\n        'ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript ' +\n        'safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY ' +\n        'saveGame saveIdentity saveJoysticks saveOverlay ' +\n        'saveProfileNamespace saveStatus saveVar savingEnabled say say2D ' +\n        'say3D scopeName score scoreSide screenToWorld scriptDone ' +\n        'scriptName scriptNull scudState secondaryWeapon ' +\n        'secondaryWeaponItems secondaryWeaponMagazine select ' +\n        'selectBestPlaces selectDiarySubject selectedEditorObjects ' +\n        'selectEditorObject selectionPosition selectLeader selectNoPlayer ' +\n        'selectPlayer selectWeapon selectWeaponTurret sendAUMessage ' +\n        'sendSimpleCommand sendTask sendTaskResult sendUDPMessage ' +\n        'serverCommand serverCommandAvailable serverCommandExecutable ' +\n        'serverName serverTime set setAccTime setAirportSide setAmmo ' +\n        'setAmmoCargo setAperture setApertureNew setArmoryPoints ' +\n        'setAttributes setAutonomous setBehaviour setBleedingRemaining ' +\n        'setCameraInterest setCamShakeDefParams setCamShakeParams ' +\n        'setCamUseTi setCaptive setCenterOfMass setCollisionLight ' +\n        'setCombatMode setCompassOscillation setCuratorCameraAreaCeiling ' +\n        'setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost ' +\n        'setCurrentChannel setCurrentTask setCurrentWaypoint setDamage ' +\n        'setDammage setDate setDebriefingText setDefaultCamera ' +\n        'setDestination setDetailMapBlendPars setDir setDirection ' +\n        'setDrawIcon setDropInterval setEditorMode setEditorObjectScope ' +\n        'setEffectCondition setFace setFaceAnimation setFatigue ' +\n        'setFlagOwner setFlagSide setFlagTexture setFog setFog array ' +\n        'setFormation setFormationTask setFormDir setFriend setFromEditor ' +\n        'setFSMVariable setFuel setFuelCargo setGroupIcon ' +\n        'setGroupIconParams setGroupIconsSelectable setGroupIconsVisible ' +\n        'setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind ' +\n        'setHit setHitIndex setHitPointDamage setHorizonParallaxCoef ' +\n        'setHUDMovementLevels setIdentity setImportance setLeader ' +\n        'setLightAmbient setLightAttenuation setLightBrightness ' +\n        'setLightColor setLightDayLight setLightFlareMaxDistance ' +\n        'setLightFlareSize setLightIntensity setLightnings setLightUseFlare ' +\n        'setLocalWindParams setMagazineTurretAmmo setMarkerAlpha ' +\n        'setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal ' +\n        'setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal ' +\n        'setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal ' +\n        'setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal ' +\n        'setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition ' +\n        'setMusicEffect setMusicEventHandler setName setNameSound ' +\n        'setObjectArguments setObjectMaterial setObjectProxy ' +\n        'setObjectTexture setObjectTextureGlobal setObjectViewDistance ' +\n        'setOvercast setOwner setOxygenRemaining setParticleCircle ' +\n        'setParticleClass setParticleFire setParticleParams ' +\n        'setParticleRandom setPilotLight setPiPEffect setPitch setPlayable ' +\n        'setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW ' +\n        'setPosATL setPosition setPosWorld setRadioMsg setRain setRainbow ' +\n        'setRandomLip setRank setRectangular setRepairCargo ' +\n        'setShadowDistance setSide setSimpleTaskDescription ' +\n        'setSimpleTaskDestination setSimpleTaskTarget setSimulWeatherLayers ' +\n        'setSize setSkill setSkill array setSlingLoad setSoundEffect ' +\n        'setSpeaker setSpeech setSpeedMode setStatValue setSuppression ' +\n        'setSystemOfUnits setTargetAge setTaskResult setTaskState ' +\n        'setTerrainGrid setText setTimeMultiplier setTitleEffect ' +\n        'setTriggerActivation setTriggerArea setTriggerStatements ' +\n        'setTriggerText setTriggerTimeout setTriggerType setType ' +\n        'setUnconscious setUnitAbility setUnitPos setUnitPosWeak ' +\n        'setUnitRank setUnitRecoilCoefficient setUnloadInCombat ' +\n        'setUserActionText setVariable setVectorDir setVectorDirAndUp ' +\n        'setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor ' +\n        'setVehicleId setVehicleLock setVehiclePosition setVehicleTiPars ' +\n        'setVehicleVarName setVelocity setVelocityTransformation ' +\n        'setViewDistance setVisibleIfTreeCollapsed setWaves ' +\n        'setWaypointBehaviour setWaypointCombatMode ' +\n        'setWaypointCompletionRadius setWaypointDescription ' +\n        'setWaypointFormation setWaypointHousePosition ' +\n        'setWaypointLoiterRadius setWaypointLoiterType setWaypointName ' +\n        'setWaypointPosition setWaypointScript setWaypointSpeed ' +\n        'setWaypointStatements setWaypointTimeout setWaypointType ' +\n        'setWaypointVisible setWeaponReloadingTime setWind setWindDir ' +\n        'setWindForce setWindStr setWPPos show3DIcons showChat ' +\n        'showCinemaBorder showCommandingMenu showCompass showCuratorCompass ' +\n        'showGPS showHUD showLegend showMap shownArtilleryComputer ' +\n        'shownChat shownCompass shownCuratorCompass showNewEditorObject ' +\n        'shownGPS shownHUD shownMap shownPad shownRadio shownUAVFeed ' +\n        'shownWarrant shownWatch showPad showRadio showSubtitles ' +\n        'showUAVFeed showWarrant showWatch showWaypoint side sideChat ' +\n        'sideEnemy sideFriendly sideLogic sideRadio sideUnknown simpleTasks ' +\n        'simulationEnabled simulCloudDensity simulCloudOcclusion ' +\n        'simulInClouds simulWeatherSync sin size sizeOf skill skillFinal ' +\n        'skipTime sleep sliderPosition sliderRange sliderSetPosition ' +\n        'sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown ' +\n        'soldierMagazines someAmmo sort soundVolume spawn speaker speed ' +\n        'speedMode splitString sqrt squadParams stance startLoadingScreen ' +\n        'step stop stopped str sunOrMoon supportInfo suppressFor ' +\n        'surfaceIsWater surfaceNormal surfaceType swimInDepth ' +\n        'switchableUnits switchAction switchCamera switchGesture ' +\n        'switchLight switchMove synchronizedObjects synchronizedTriggers ' +\n        'synchronizedWaypoints synchronizeObjectsAdd ' +\n        'synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint ' +\n        'synchronizeWaypoint trigger systemChat systemOfUnits tan ' +\n        'targetKnowledge targetsAggregate targetsQuery taskChildren ' +\n        'taskCompleted taskDescription taskDestination taskHint taskNull ' +\n        'taskParent taskResult taskState teamMember teamMemberNull teamName ' +\n        'teams teamSwitch teamSwitchEnabled teamType terminate ' +\n        'terrainIntersect terrainIntersectASL text text location textLog ' +\n        'textLogFormat tg time timeMultiplier titleCut titleFadeOut ' +\n        'titleObj titleRsc titleText toArray toLower toString toUpper ' +\n        'triggerActivated triggerActivation triggerArea ' +\n        'triggerAttachedVehicle triggerAttachObject triggerAttachVehicle ' +\n        'triggerStatements triggerText triggerTimeout triggerTimeoutCurrent ' +\n        'triggerType turretLocal turretOwner turretUnit tvAdd tvClear ' +\n        'tvCollapse tvCount tvCurSel tvData tvDelete tvExpand tvPicture ' +\n        'tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetTooltip ' +\n        'tvSetValue tvSort tvSortByValue tvText tvValue type typeName ' +\n        'typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem ' +\n        'unassignTeam unassignVehicle underwater uniform uniformContainer ' +\n        'uniformItems uniformMagazines unitAddons unitBackpack unitPos ' +\n        'unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem ' +\n        'unlockAchievement unregisterTask updateDrawIcon updateMenuItem ' +\n        'updateObjectTree useAudioTimeForMoves vectorAdd vectorCos ' +\n        'vectorCrossProduct vectorDiff vectorDir vectorDirVisual ' +\n        'vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo ' +\n        'vectorMagnitude vectorMagnitudeSqr vectorMultiply vectorNormalized ' +\n        'vectorUp vectorUpVisual vehicle vehicleChat vehicleRadio vehicles ' +\n        'vehicleVarName velocity velocityModelSpace verifySignature vest ' +\n        'vestContainer vestItems vestMagazines viewDistance visibleCompass ' +\n        'visibleGPS visibleMap visiblePosition visiblePositionASL ' +\n        'visibleWatch waitUntil waves waypointAttachedObject ' +\n        'waypointAttachedVehicle waypointAttachObject waypointAttachVehicle ' +\n        'waypointBehaviour waypointCombatMode waypointCompletionRadius ' +\n        'waypointDescription waypointFormation waypointHousePosition ' +\n        'waypointLoiterRadius waypointLoiterType waypointName ' +\n        'waypointPosition waypoints waypointScript waypointsEnabledUAV ' +\n        'waypointShow waypointSpeed waypointStatements waypointTimeout ' +\n        'waypointTimeoutCurrent waypointType waypointVisible ' +\n        'weaponAccessories weaponCargo weaponDirection weaponLowered ' +\n        'weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret ' +\n        'weightRTD west WFSideText wind windDir windStr wingsForcesRTD ' +\n        'worldName worldSize worldToModel worldToModelVisual worldToScreen ' +\n        '_forEachIndex _this _x',\n      literal:\n        'true false nil'\n    },\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.NUMBER_MODE,\n      STRINGS,\n      CPP.preprocessor\n    ],\n    illegal: /#/\n  };\n}\n},{name:\"sql\",create:/*\n Language: SQL\n Contributors: Nikolay Lisienko <info@neor.ru>, Heiko August <post@auge8472.de>, Travis Odom <travis.a.odom@gmail.com>, Vadimtro <vadimtro@yahoo.com>, Benjamin Auder <benjamin.auder@gmail.com>\n Category: common\n */\n\nfunction(hljs) {\n  var COMMENT_MODE = hljs.COMMENT('--', '$');\n  return {\n    case_insensitive: true,\n    illegal: /[<>{}*#]/,\n    contains: [\n      {\n        beginKeywords:\n          'begin end start commit rollback savepoint lock alter create drop rename call ' +\n          'delete do handler insert load replace select truncate update set show pragma grant ' +\n          'merge describe use explain help declare prepare execute deallocate release ' +\n          'unlock purge reset change stop analyze cache flush optimize repair kill ' +\n          'install uninstall checksum restore check backup revoke comment',\n        end: /;/, endsWithParent: true,\n        lexemes: /[\\w\\.]+/,\n        keywords: {\n          keyword:\n            'abort abs absolute acc acce accep accept access accessed accessible account acos action activate add ' +\n            'addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias ' +\n            'allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply ' +\n            'archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan ' +\n            'atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid ' +\n            'authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile ' +\n            'before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float ' +\n            'binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound ' +\n            'buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel ' +\n            'capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base ' +\n            'char_length character_length characters characterset charindex charset charsetform charsetid check ' +\n            'checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close ' +\n            'cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation ' +\n            'collect colu colum column column_value columns columns_updated comment commit compact compatibility ' +\n            'compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn ' +\n            'connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection ' +\n            'consider consistent constant constraint constraints constructor container content contents context ' +\n            'contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost ' +\n            'count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation ' +\n            'critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user ' +\n            'cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add ' +\n            'date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts ' +\n            'day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate ' +\n            'declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults ' +\n            'deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank ' +\n            'depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor ' +\n            'deterministic diagnostics difference dimension direct_load directory disable disable_all ' +\n            'disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div ' +\n            'do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable ' +\n            'editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt ' +\n            'end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors ' +\n            'escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding ' +\n            'execu execut execute exempt exists exit exp expire explain export export_set extended extent external ' +\n            'external_1 external_2 externally extract failed failed_login_attempts failover failure far fast ' +\n            'feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final ' +\n            'finish first first_value fixed flash_cache flashback floor flush following follows for forall force ' +\n            'form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ' +\n            'ftp full function general generated get get_format get_lock getdate getutcdate global global_name ' +\n            'globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups ' +\n            'gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex ' +\n            'hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified ' +\n            'identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment ' +\n            'index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile ' +\n            'initial initialized initially initrans inmemory inner innodb input insert install instance instantiable ' +\n            'instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat ' +\n            'is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists ' +\n            'keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase ' +\n            'lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit ' +\n            'lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate ' +\n            'locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call ' +\n            'logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime ' +\n            'managed management manual map mapping mask master master_pos_wait match matched materialized max ' +\n            'maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans ' +\n            'md5 measures median medium member memcompress memory merge microsecond mid migration min minextents ' +\n            'minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month ' +\n            'months mount move movement multiset mutex name name_const names nan national native natural nav nchar ' +\n            'nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile ' +\n            'nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile ' +\n            'nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder ' +\n            'nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck ' +\n            'noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe ' +\n            'nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ' +\n            'ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old ' +\n            'on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date ' +\n            'oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary ' +\n            'out outer outfile outline output over overflow overriding package pad parallel parallel_enable ' +\n            'parameters parent parse partial partition partitions pascal passing password password_grace_time ' +\n            'password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex ' +\n            'pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc ' +\n            'performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin ' +\n            'policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction ' +\n            'prediction_cost prediction_details prediction_probability prediction_set prepare present preserve ' +\n            'prior priority private private_sga privileges procedural procedure procedure_analyze processlist ' +\n            'profiles project prompt protection public publishingservername purge quarter query quick quiesce quota ' +\n            'quotename radians raise rand range rank raw read reads readsize rebuild record records ' +\n            'recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh ' +\n            'regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy ' +\n            'reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename ' +\n            'repair repeat replace replicate replication required reset resetlogs resize resource respect restore ' +\n            'restricted result result_cache resumable resume retention return returning returns reuse reverse revoke ' +\n            'right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows ' +\n            'rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll ' +\n            'sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select ' +\n            'self sequence sequential serializable server servererror session session_user sessions_per_user set ' +\n            'sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor ' +\n            'si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin ' +\n            'size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex ' +\n            'source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows ' +\n            'sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone ' +\n            'standby start starting startup statement static statistics stats_binomial_test stats_crosstab ' +\n            'stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep ' +\n            'stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev ' +\n            'stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate ' +\n            'subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum ' +\n            'suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate ' +\n            'sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo ' +\n            'template temporary terminated tertiary_weights test than then thread through tier ties time time_format ' +\n            'time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr ' +\n            'timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking ' +\n            'transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate ' +\n            'try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress ' +\n            'under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot ' +\n            'unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert ' +\n            'url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date ' +\n            'utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var ' +\n            'var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray ' +\n            'verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear ' +\n            'wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped ' +\n            'xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces ' +\n            'xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek',\n          literal:\n            'true false null',\n          built_in:\n            'array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number ' +\n            'numeric real record serial serial8 smallint text varchar varying void'\n        },\n        contains: [\n          {\n            className: 'string',\n            begin: '\\'', end: '\\'',\n            contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\n          },\n          {\n            className: 'string',\n            begin: '\"', end: '\"',\n            contains: [hljs.BACKSLASH_ESCAPE, {begin: '\"\"'}]\n          },\n          {\n            className: 'string',\n            begin: '`', end: '`',\n            contains: [hljs.BACKSLASH_ESCAPE]\n          },\n          hljs.C_NUMBER_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          COMMENT_MODE\n        ]\n      },\n      hljs.C_BLOCK_COMMENT_MODE,\n      COMMENT_MODE\n    ]\n  };\n}\n},{name:\"stan\",create:/*\nLanguage: Stan\nAuthor: Brendan Rocks <rocks.brendan@gmail.com>\n Category: scientific\nDescription: The Stan probabilistic programming language (http://mc-stan.org/).\n*/\n\nfunction(hljs) {\n  return {\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        begin: hljs.UNDERSCORE_IDENT_RE,\n        lexemes: hljs.UNDERSCORE_IDENT_RE,\n        keywords: {\n          // Stan's keywords\n          name:\n            'for in while repeat until if then else',\n          // Stan's probablity distributions (less beta and gamma, as commonly\n          // used for parameter names). So far, _log and _rng variants are not\n          // included\n          symbol:\n            'bernoulli bernoulli_logit binomial binomial_logit '               +\n            'beta_binomial hypergeometric categorical categorical_logit '      +\n            'ordered_logistic neg_binomial neg_binomial_2 '                    +\n            'neg_binomial_2_log poisson poisson_log multinomial normal '       +\n            'exp_mod_normal skew_normal student_t cauchy double_exponential '  +\n            'logistic gumbel lognormal chi_square inv_chi_square '             +\n            'scaled_inv_chi_square exponential inv_gamma weibull frechet '     +\n            'rayleigh wiener pareto pareto_type_2 von_mises uniform '          +\n            'multi_normal multi_normal_prec multi_normal_cholesky multi_gp '   +\n            'multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet '    +\n            'lkj_corr lkj_corr_cholesky wishart inv_wishart',\n          // Stan's data types\n          'selector-tag':\n            'int real vector simplex unit_vector ordered positive_ordered '    +\n            'row_vector matrix cholesky_factor_corr cholesky_factor_cov '      +\n            'corr_matrix cov_matrix',\n          // Stan's model blocks\n          title:\n            'functions model data parameters quantities transformed '          +\n            'generated',\n          literal:\n            'true false'\n        },\n        relevance: 0\n      },\n      // The below is all taken from the R language definition\n      {\n        // hex value\n        className: 'number',\n        begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n        relevance: 0\n      },\n      {\n        // hex value\n        className: 'number',\n        begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n        relevance: 0\n      },\n      {\n        // explicit integer\n        className: 'number',\n        begin: \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\n        relevance: 0\n      },\n      {\n        // number with trailing decimal\n        className: 'number',\n        begin: \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\n        relevance: 0\n      },\n      {\n        // number\n        className: 'number',\n        begin: \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n        relevance: 0\n      },\n      {\n        // number with leading decimal\n        className: 'number',\n        begin: \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n        relevance: 0\n      }\n    ]\n  };\n}\n},{name:\"stata\",create:/*\nLanguage: Stata\nAuthor: Brian Quistorff <bquistorff@gmail.com>\nContributors: Drew McDonald <drewmcdo@gmail.com>\nDescription: Syntax highlighting for Stata code. This is a fork and modification of Drew McDonald's file (https://github.com/drewmcdonald/stata-highlighting). I have also included a list of builtin commands from https://bugs.kde.org/show_bug.cgi?id=135646.\nCategory: scientific\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['do', 'ado'],\n    case_insensitive: true,\n    keywords: 'if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize meqparse mer merg merge mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5',\n        contains: [\n      {\n        className: 'symbol',\n        begin: /`[a-zA-Z0-9_]+'/\n      },\n      {\n        className: 'variable',\n        begin: /\\$\\{?[a-zA-Z0-9_]+\\}?/\n      },\n      {\n        className: 'string',\n        variants: [\n          {begin: '`\"[^\\r\\n]*?\"\\''},\n          {begin: '\"[^\\r\\n\"]*\"'}\n        ]\n      },\n\n      {\n        className: 'built_in',\n        variants: [\n          {\n            begin: '\\\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\\\(|$)'\n          }\n        ]\n      },\n\n      hljs.COMMENT('^[ \\t]*\\\\*.*$', false),\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE\n    ]\n  };\n}\n},{name:\"step21\",create:/*\nLanguage: STEP Part 21\nContributors: Adam Joseph Cook <adam.joseph.cook@gmail.com>\nDescription: Syntax highlighter for STEP Part 21 files (ISO 10303-21).\n*/\n\nfunction(hljs) {\n  var STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n  var STEP21_KEYWORDS = {\n    keyword: 'HEADER ENDSEC DATA'\n  };\n  var STEP21_START = {\n    className: 'meta',\n    begin: 'ISO-10303-21;',\n    relevance: 10\n  };\n  var STEP21_CLOSE = {\n    className: 'meta',\n    begin: 'END-ISO-10303-21;',\n    relevance: 10\n  };\n\n  return {\n    aliases: ['p21', 'step', 'stp'],\n    case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.\n    lexemes: STEP21_IDENT_RE,\n    keywords: STEP21_KEYWORDS,\n    contains: [\n      STEP21_START,\n      STEP21_CLOSE,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.COMMENT('/\\\\*\\\\*!', '\\\\*/'),\n      hljs.C_NUMBER_MODE,\n      hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n      {\n        className: 'string',\n        begin: \"'\", end: \"'\"\n      },\n      {\n        className: 'symbol',\n        variants: [\n          {\n            begin: '#', end: '\\\\d+',\n            illegal: '\\\\W'\n          }\n        ]\n      }\n    ]\n  };\n}\n},{name:\"stylus\",create:/*\nLanguage: Stylus\nAuthor: Bryant Williams <b.n.williams@gmail.com>\nDescription: Stylus (https://github.com/LearnBoost/stylus/)\nCategory: css\n*/\n\nfunction(hljs) {\n\n  var VARIABLE = {\n    className: 'variable',\n    begin: '\\\\$' + hljs.IDENT_RE\n  };\n\n  var HEX_COLOR = {\n    className: 'number',\n    begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\n  };\n\n  var AT_KEYWORDS = [\n    'charset',\n    'css',\n    'debug',\n    'extend',\n    'font-face',\n    'for',\n    'import',\n    'include',\n    'media',\n    'mixin',\n    'page',\n    'warn',\n    'while'\n  ];\n\n  var PSEUDO_SELECTORS = [\n    'after',\n    'before',\n    'first-letter',\n    'first-line',\n    'active',\n    'first-child',\n    'focus',\n    'hover',\n    'lang',\n    'link',\n    'visited'\n  ];\n\n  var TAGS = [\n    'a',\n    'abbr',\n    'address',\n    'article',\n    'aside',\n    'audio',\n    'b',\n    'blockquote',\n    'body',\n    'button',\n    'canvas',\n    'caption',\n    'cite',\n    'code',\n    'dd',\n    'del',\n    'details',\n    'dfn',\n    'div',\n    'dl',\n    'dt',\n    'em',\n    'fieldset',\n    'figcaption',\n    'figure',\n    'footer',\n    'form',\n    'h1',\n    'h2',\n    'h3',\n    'h4',\n    'h5',\n    'h6',\n    'header',\n    'hgroup',\n    'html',\n    'i',\n    'iframe',\n    'img',\n    'input',\n    'ins',\n    'kbd',\n    'label',\n    'legend',\n    'li',\n    'mark',\n    'menu',\n    'nav',\n    'object',\n    'ol',\n    'p',\n    'q',\n    'quote',\n    'samp',\n    'section',\n    'span',\n    'strong',\n    'summary',\n    'sup',\n    'table',\n    'tbody',\n    'td',\n    'textarea',\n    'tfoot',\n    'th',\n    'thead',\n    'time',\n    'tr',\n    'ul',\n    'var',\n    'video'\n  ];\n\n  var TAG_END = '[\\\\.\\\\s\\\\n\\\\[\\\\:,]';\n\n  var ATTRIBUTES = [\n    'align-content',\n    'align-items',\n    'align-self',\n    'animation',\n    'animation-delay',\n    'animation-direction',\n    'animation-duration',\n    'animation-fill-mode',\n    'animation-iteration-count',\n    'animation-name',\n    'animation-play-state',\n    'animation-timing-function',\n    'auto',\n    'backface-visibility',\n    'background',\n    'background-attachment',\n    'background-clip',\n    'background-color',\n    'background-image',\n    'background-origin',\n    'background-position',\n    'background-repeat',\n    'background-size',\n    'border',\n    'border-bottom',\n    'border-bottom-color',\n    'border-bottom-left-radius',\n    'border-bottom-right-radius',\n    'border-bottom-style',\n    'border-bottom-width',\n    'border-collapse',\n    'border-color',\n    'border-image',\n    'border-image-outset',\n    'border-image-repeat',\n    'border-image-slice',\n    'border-image-source',\n    'border-image-width',\n    'border-left',\n    'border-left-color',\n    'border-left-style',\n    'border-left-width',\n    'border-radius',\n    'border-right',\n    'border-right-color',\n    'border-right-style',\n    'border-right-width',\n    'border-spacing',\n    'border-style',\n    'border-top',\n    'border-top-color',\n    'border-top-left-radius',\n    'border-top-right-radius',\n    'border-top-style',\n    'border-top-width',\n    'border-width',\n    'bottom',\n    'box-decoration-break',\n    'box-shadow',\n    'box-sizing',\n    'break-after',\n    'break-before',\n    'break-inside',\n    'caption-side',\n    'clear',\n    'clip',\n    'clip-path',\n    'color',\n    'column-count',\n    'column-fill',\n    'column-gap',\n    'column-rule',\n    'column-rule-color',\n    'column-rule-style',\n    'column-rule-width',\n    'column-span',\n    'column-width',\n    'columns',\n    'content',\n    'counter-increment',\n    'counter-reset',\n    'cursor',\n    'direction',\n    'display',\n    'empty-cells',\n    'filter',\n    'flex',\n    'flex-basis',\n    'flex-direction',\n    'flex-flow',\n    'flex-grow',\n    'flex-shrink',\n    'flex-wrap',\n    'float',\n    'font',\n    'font-family',\n    'font-feature-settings',\n    'font-kerning',\n    'font-language-override',\n    'font-size',\n    'font-size-adjust',\n    'font-stretch',\n    'font-style',\n    'font-variant',\n    'font-variant-ligatures',\n    'font-weight',\n    'height',\n    'hyphens',\n    'icon',\n    'image-orientation',\n    'image-rendering',\n    'image-resolution',\n    'ime-mode',\n    'inherit',\n    'initial',\n    'justify-content',\n    'left',\n    'letter-spacing',\n    'line-height',\n    'list-style',\n    'list-style-image',\n    'list-style-position',\n    'list-style-type',\n    'margin',\n    'margin-bottom',\n    'margin-left',\n    'margin-right',\n    'margin-top',\n    'marks',\n    'mask',\n    'max-height',\n    'max-width',\n    'min-height',\n    'min-width',\n    'nav-down',\n    'nav-index',\n    'nav-left',\n    'nav-right',\n    'nav-up',\n    'none',\n    'normal',\n    'object-fit',\n    'object-position',\n    'opacity',\n    'order',\n    'orphans',\n    'outline',\n    'outline-color',\n    'outline-offset',\n    'outline-style',\n    'outline-width',\n    'overflow',\n    'overflow-wrap',\n    'overflow-x',\n    'overflow-y',\n    'padding',\n    'padding-bottom',\n    'padding-left',\n    'padding-right',\n    'padding-top',\n    'page-break-after',\n    'page-break-before',\n    'page-break-inside',\n    'perspective',\n    'perspective-origin',\n    'pointer-events',\n    'position',\n    'quotes',\n    'resize',\n    'right',\n    'tab-size',\n    'table-layout',\n    'text-align',\n    'text-align-last',\n    'text-decoration',\n    'text-decoration-color',\n    'text-decoration-line',\n    'text-decoration-style',\n    'text-indent',\n    'text-overflow',\n    'text-rendering',\n    'text-shadow',\n    'text-transform',\n    'text-underline-position',\n    'top',\n    'transform',\n    'transform-origin',\n    'transform-style',\n    'transition',\n    'transition-delay',\n    'transition-duration',\n    'transition-property',\n    'transition-timing-function',\n    'unicode-bidi',\n    'vertical-align',\n    'visibility',\n    'white-space',\n    'widows',\n    'width',\n    'word-break',\n    'word-spacing',\n    'word-wrap',\n    'z-index'\n  ];\n\n  // illegals\n  var ILLEGAL = [\n    '\\\\?',\n    '(\\\\bReturn\\\\b)', // monkey\n    '(\\\\bEnd\\\\b)', // monkey\n    '(\\\\bend\\\\b)', // vbscript\n    '(\\\\bdef\\\\b)', // gradle\n    ';', // a whole lot of languages\n    '#\\\\s', // markdown\n    '\\\\*\\\\s', // markdown\n    '===\\\\s', // markdown\n    '\\\\|',\n    '%', // prolog\n  ];\n\n  return {\n    aliases: ['styl'],\n    case_insensitive: false,\n    keywords: 'if else for in',\n    illegal: '(' + ILLEGAL.join('|') + ')',\n    contains: [\n\n      // strings\n      hljs.QUOTE_STRING_MODE,\n      hljs.APOS_STRING_MODE,\n\n      // comments\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n\n      // hex colors\n      HEX_COLOR,\n\n      // class tag\n      {\n        begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END,\n        returnBegin: true,\n        contains: [\n          {className: 'selector-class', begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*'}\n        ]\n      },\n\n      // id tag\n      {\n        begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END,\n        returnBegin: true,\n        contains: [\n          {className: 'selector-id', begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*'}\n        ]\n      },\n\n      // tags\n      {\n        begin: '\\\\b(' + TAGS.join('|') + ')' + TAG_END,\n        returnBegin: true,\n        contains: [\n          {className: 'selector-tag', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_-]*'}\n        ]\n      },\n\n      // psuedo selectors\n      {\n        begin: '&?:?:\\\\b(' + PSEUDO_SELECTORS.join('|') + ')' + TAG_END\n      },\n\n      // @ keywords\n      {\n        begin: '\\@(' + AT_KEYWORDS.join('|') + ')\\\\b'\n      },\n\n      // variables\n      VARIABLE,\n\n      // dimension\n      hljs.CSS_NUMBER_MODE,\n\n      // number\n      hljs.NUMBER_MODE,\n\n      // functions\n      //  - only from beginning of line + whitespace\n      {\n        className: 'function',\n        begin: '^[a-zA-Z][a-zA-Z0-9_\\-]*\\\\(.*\\\\)',\n        illegal: '[\\\\n]',\n        returnBegin: true,\n        contains: [\n          {className: 'title', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_\\-]*'},\n          {\n            className: 'params',\n            begin: /\\(/,\n            end: /\\)/,\n            contains: [\n              HEX_COLOR,\n              VARIABLE,\n              hljs.APOS_STRING_MODE,\n              hljs.CSS_NUMBER_MODE,\n              hljs.NUMBER_MODE,\n              hljs.QUOTE_STRING_MODE\n            ]\n          }\n        ]\n      },\n\n      // attributes\n      //  - only from beginning of line + whitespace\n      //  - must have whitespace after it\n      {\n        className: 'attribute',\n        begin: '\\\\b(' + ATTRIBUTES.reverse().join('|') + ')\\\\b',\n        starts: {\n          // value container\n          end: /;|$/,\n          contains: [\n            HEX_COLOR,\n            VARIABLE,\n            hljs.APOS_STRING_MODE,\n            hljs.QUOTE_STRING_MODE,\n            hljs.CSS_NUMBER_MODE,\n            hljs.NUMBER_MODE,\n            hljs.C_BLOCK_COMMENT_MODE\n          ],\n          illegal: /\\./,\n          relevance: 0\n        }\n      }\n    ]\n  };\n}\n},{name:\"subunit\",create:/*\nLanguage: SubUnit\nAuthor: Sergey Bronnikov <sergeyb@bronevichok.ru>\nWebsite: https://bronevichok.ru/\n*/\n\nfunction(hljs) {\n  var DETAILS = {\n    className: 'string',\n    begin: '\\\\[\\n(multipart)?', end: '\\\\]\\n'\n  };\n  var TIME = {\n    className: 'string',\n    begin: '\\\\d{4}-\\\\d{2}-\\\\d{2}(\\\\s+)\\\\d{2}:\\\\d{2}:\\\\d{2}\\.\\\\d+Z'\n  };\n  var PROGRESSVALUE = {\n    className: 'string',\n    begin: '(\\\\+|-)\\\\d+'\n  };\n  var KEYWORDS = {\n    className: 'keyword',\n    relevance: 10,\n    variants: [\n      { begin: '^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\\\s+(test)?' },\n      { begin: '^progress(:?)(\\\\s+)?(pop|push)?' },\n      { begin: '^tags:' },\n      { begin: '^time:' }\n    ],\n  };\n  return {\n    case_insensitive: true,\n    contains: [\n      DETAILS,\n      TIME,\n      PROGRESSVALUE,\n      KEYWORDS\n    ]\n  };\n}\n},{name:\"swift\",create:/*\nLanguage: Swift\nAuthor: Chris Eidhof <chris@eidhof.nl>\nContributors: Nate Cook <natecook@gmail.com>\nCategory: system\n*/\n\n\nfunction(hljs) {\n  var SWIFT_KEYWORDS = {\n      keyword: '__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity ' +\n        'break case catch class continue convenience default defer deinit didSet do ' +\n        'dynamic dynamicType else enum extension fallthrough false final for func ' +\n        'get guard if import in indirect infix init inout internal is lazy left let ' +\n        'mutating nil none nonmutating operator optional override postfix precedence ' +\n        'prefix private protocol Protocol public repeat required rethrows return ' +\n        'right self Self set static struct subscript super switch throw throws true ' +\n        'try try! try? Type typealias unowned var weak where while willSet',\n      literal: 'true false nil',\n      built_in: 'abs advance alignof alignofValue anyGenerator assert assertionFailure ' +\n        'bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC ' +\n        'bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros ' +\n        'debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords ' +\n        'enumerate equal fatalError filter find getBridgedObjectiveCType getVaList ' +\n        'indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC ' +\n        'isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare ' +\n        'map max maxElement min minElement numericCast overlaps partition posix ' +\n        'precondition preconditionFailure print println quickSort readLine reduce reflect ' +\n        'reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split ' +\n        'startsWith stride strideof strideofValue swap toString transcode ' +\n        'underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap ' +\n        'unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer ' +\n        'withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers ' +\n        'withUnsafePointer withUnsafePointers withVaList zip'\n    };\n\n  var TYPE = {\n    className: 'type',\n    begin: '\\\\b[A-Z][\\\\w\\']*',\n    relevance: 0\n  };\n  var BLOCK_COMMENT = hljs.COMMENT(\n    '/\\\\*',\n    '\\\\*/',\n    {\n      contains: ['self']\n    }\n  );\n  var SUBST = {\n    className: 'subst',\n    begin: /\\\\\\(/, end: '\\\\)',\n    keywords: SWIFT_KEYWORDS,\n    contains: [] // assigned later\n  };\n  var NUMBERS = {\n      className: 'number',\n      begin: '\\\\b([\\\\d_]+(\\\\.[\\\\deE_]+)?|0x[a-fA-F0-9_]+(\\\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\\\b',\n      relevance: 0\n  };\n  var QUOTE_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n    contains: [SUBST, hljs.BACKSLASH_ESCAPE]\n  });\n  SUBST.contains = [NUMBERS];\n\n  return {\n    keywords: SWIFT_KEYWORDS,\n    contains: [\n      QUOTE_STRING_MODE,\n      hljs.C_LINE_COMMENT_MODE,\n      BLOCK_COMMENT,\n      TYPE,\n      NUMBERS,\n      {\n        className: 'function',\n        beginKeywords: 'func', end: '{', excludeEnd: true,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {\n            begin: /[A-Za-z$_][0-9A-Za-z$_]*/\n          }),\n          {\n            begin: /</, end: />/\n          },\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/, endsParent: true,\n            keywords: SWIFT_KEYWORDS,\n            contains: [\n              'self',\n              NUMBERS,\n              QUOTE_STRING_MODE,\n              hljs.C_BLOCK_COMMENT_MODE,\n              {begin: ':'} // relevance booster\n            ],\n            illegal: /[\"']/\n          }\n        ],\n        illegal: /\\[|%/\n      },\n      {\n        className: 'class',\n        beginKeywords: 'struct protocol class extension enum',\n        keywords: SWIFT_KEYWORDS,\n        end: '\\\\{',\n        excludeEnd: true,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/})\n        ]\n      },\n      {\n        className: 'meta', // @attributes\n        begin: '(@warn_unused_result|@exported|@lazy|@noescape|' +\n                  '@NSCopying|@NSManaged|@objc|@convention|@required|' +\n                  '@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|' +\n                  '@infix|@prefix|@postfix|@autoclosure|@testable|@available|' +\n                  '@nonobjc|@NSApplicationMain|@UIApplicationMain)'\n\n      },\n      {\n        beginKeywords: 'import', end: /$/,\n        contains: [hljs.C_LINE_COMMENT_MODE, BLOCK_COMMENT]\n      }\n    ]\n  };\n}\n},{name:\"taggerscript\",create:/*\nLanguage: Tagger Script\nAuthor: Philipp Wolfer <ph.wolfer@gmail.com>\nDescription: Syntax Highlighting for the Tagger Script as used by MusicBrainz Picard.\n */\nfunction(hljs) {\n\n  var COMMENT = {\n    className: 'comment',\n    begin: /\\$noop\\(/,\n    end: /\\)/,\n    contains: [{\n      begin: /\\(/,\n      end: /\\)/,\n      contains: ['self', {\n        begin: /\\\\./\n      }]\n    }],\n    relevance: 10\n  };\n\n  var FUNCTION = {\n    className: 'keyword',\n    begin: /\\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,\n    end: /\\(/,\n    excludeEnd: true\n  };\n\n  var VARIABLE = {\n    className: 'variable',\n    begin: /%[_a-zA-Z0-9:]*/,\n    end: '%'\n  };\n\n  var ESCAPE_SEQUENCE = {\n    className: 'symbol',\n    begin: /\\\\./\n  };\n\n  return {\n    contains: [\n      COMMENT,\n      FUNCTION,\n      VARIABLE,\n      ESCAPE_SEQUENCE\n    ]\n  };\n}\n},{name:\"tap\",create:/*\nLanguage: Test Anything Protocol\nRequires: yaml.js\nAuthor: Sergey Bronnikov <sergeyb@bronevichok.ru>\nWebsite: https://bronevichok.ru/\n*/\n\nfunction(hljs) {\n  return {\n    case_insensitive: true,\n    contains: [\n      hljs.HASH_COMMENT_MODE,\n      // version of format and total amount of testcases\n      {\n        className: 'meta',\n        variants: [\n          { begin: '^TAP version (\\\\d+)$' },\n          { begin: '^1\\\\.\\\\.(\\\\d+)$' }\n        ],\n      },\n      // YAML block\n      {\n        begin: '(\\s+)?---$', end: '\\\\.\\\\.\\\\.$',\n        subLanguage: 'yaml',\n        relevance: 0\n      },\n\t  // testcase number\n      {\n        className: 'number',\n        begin: ' (\\\\d+) '\n      },\n\t  // testcase status and description\n      {\n        className: 'symbol',\n        variants: [\n          { begin: '^ok' },\n          { begin: '^not ok' }\n        ],\n      },\n    ]\n  };\n}\n},{name:\"tcl\",create:/*\nLanguage: Tcl\nAuthor: Radek Liska <radekliska@gmail.com>\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['tk'],\n    keywords: 'after append apply array auto_execok auto_import auto_load auto_mkindex ' +\n      'auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock ' +\n      'close concat continue dde dict encoding eof error eval exec exit expr fblocked ' +\n      'fconfigure fcopy file fileevent filename flush for foreach format gets glob global ' +\n      'history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list ' +\n      'llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 '+\n      'mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex '+\n      'platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename '+\n      'return safe scan seek set socket source split string subst switch tcl_endOfWord '+\n      'tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter '+\n      'tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update '+\n      'uplevel upvar variable vwait while',\n    contains: [\n      hljs.COMMENT(';[ \\\\t]*#', '$'),\n      hljs.COMMENT('^[ \\\\t]*#', '$'),\n      {\n        beginKeywords: 'proc',\n        end: '[\\\\{]',\n        excludeEnd: true,\n        contains: [\n          {\n            className: 'title',\n            begin: '[ \\\\t\\\\n\\\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\n            end: '[ \\\\t\\\\n\\\\r]',\n            endsWithParent: true,\n            excludeEnd: true\n          }\n        ]\n      },\n      {\n        excludeEnd: true,\n        variants: [\n          {\n            begin: '\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\\\(([a-zA-Z0-9_])*\\\\)',\n            end: '[^a-zA-Z0-9_\\\\}\\\\$]'\n          },\n          {\n            begin: '\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\n            end: '(\\\\))?[^a-zA-Z0-9_\\\\}\\\\$]'\n          }\n        ]\n      },\n      {\n        className: 'string',\n        contains: [hljs.BACKSLASH_ESCAPE],\n        variants: [\n          hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n          hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n        ]\n      },\n      {\n        className: 'number',\n        variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]\n      }\n    ]\n  }\n}\n},{name:\"tex\",create:/*\nLanguage: TeX\nAuthor: Vladimir Moskva <vladmos@gmail.com>\nWebsite: http://fulc.ru/\nCategory: markup\n*/\n\nfunction(hljs) {\n  var COMMAND = {\n    className: 'tag',\n    begin: /\\\\/,\n    relevance: 0,\n    contains: [\n      {\n        className: 'name',\n        variants: [\n          {begin: /[a-zA-Zа-яА-я]+[*]?/},\n          {begin: /[^a-zA-Zа-яА-я0-9]/}\n        ],\n        starts: {\n          endsWithParent: true,\n          relevance: 0,\n          contains: [\n            {\n              className: 'string', // because it looks like attributes in HTML tags\n              variants: [\n                {begin: /\\[/, end: /\\]/},\n                {begin: /\\{/, end: /\\}/}\n              ]\n            },\n            {\n              begin: /\\s*=\\s*/, endsWithParent: true,\n              relevance: 0,\n              contains: [\n                {\n                  className: 'number',\n                  begin: /-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/\n                }\n              ]\n            }\n          ]\n        }\n      }\n    ]\n  };\n\n  return {\n    contains: [\n      COMMAND,\n      {\n        className: 'formula',\n        contains: [COMMAND],\n        relevance: 0,\n        variants: [\n          {begin: /\\$\\$/, end: /\\$\\$/},\n          {begin: /\\$/, end: /\\$/}\n        ]\n      },\n      hljs.COMMENT(\n        '%',\n        '$',\n        {\n          relevance: 0\n        }\n      )\n    ]\n  };\n}\n},{name:\"thrift\",create:/*\nLanguage: Thrift\nAuthor: Oleg Efimov <efimovov@gmail.com>\nDescription: Thrift message definition format\nCategory: protocols\n*/\n\nfunction(hljs) {\n  var BUILT_IN_TYPES = 'bool byte i16 i32 i64 double string binary';\n  return {\n    keywords: {\n      keyword:\n        'namespace const typedef struct enum service exception void oneway set list map required optional',\n      built_in:\n        BUILT_IN_TYPES,\n      literal:\n        'true false'\n    },\n    contains: [\n      hljs.QUOTE_STRING_MODE,\n      hljs.NUMBER_MODE,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'class',\n        beginKeywords: 'struct enum service exception', end: /\\{/,\n        illegal: /\\n/,\n        contains: [\n          hljs.inherit(hljs.TITLE_MODE, {\n            starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n          })\n        ]\n      },\n      {\n        begin: '\\\\b(set|list|map)\\\\s*<', end: '>',\n        keywords: BUILT_IN_TYPES,\n        contains: ['self']\n      }\n    ]\n  };\n}\n},{name:\"tp\",create:/*\nLanguage: TP\nAuthor: Jay Strybis <jay.strybis@gmail.com>\nDescription: FANUC TP programming language (TPP).\n*/\n\n\nfunction(hljs) {\n  var TPID = {\n    className: 'number',\n    begin: '[1-9][0-9]*', /* no leading zeros */\n    relevance: 0\n  };\n  var TPLABEL = {\n    className: 'symbol',\n    begin: ':[^\\\\]]+'\n  };\n  var TPDATA = {\n    className: 'built_in',\n    begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|\\\n    TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\\\[', end: '\\\\]',\n    contains: [\n      'self',\n      TPID,\n      TPLABEL\n    ]\n  };\n  var TPIO = {\n    className: 'built_in',\n    begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\\\[', end: '\\\\]',\n    contains: [\n      'self',\n      TPID,\n      hljs.QUOTE_STRING_MODE, /* for pos section at bottom */\n      TPLABEL\n    ]\n  };\n\n  return {\n    keywords: {\n      keyword:\n        'ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB ' +\n        'DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC ' +\n        'IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE ' +\n        'PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET ' +\n        'Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN ' +\n        'SUBSTR FINDSTR VOFFSET PROG ATTR MN POS',\n      literal:\n        'ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET'\n    },\n    contains: [\n      TPDATA,\n      TPIO,\n      {\n        className: 'keyword',\n        begin: '/(PROG|ATTR|MN|POS|END)\\\\b'\n      },\n      {\n        /* this is for cases like ,CALL */\n        className: 'keyword',\n        begin: '(CALL|RUN|POINT_LOGIC|LBL)\\\\b'\n      },\n      {\n        /* this is for cases like CNT100 where the default lexemes do not\n         * separate the keyword and the number */\n        className: 'keyword',\n        begin: '\\\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)'\n      },\n      {\n        /* to catch numbers that do not have a word boundary on the left */\n        className: 'number',\n        begin: '\\\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\\\b',\n        relevance: 0\n      },\n      hljs.COMMENT('//', '[;$]'),\n      hljs.COMMENT('!', '[;$]'),\n      hljs.COMMENT('--eg:', '$'),\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'string',\n        begin: '\\'', end: '\\''\n      },\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'variable',\n        begin: '\\\\$[A-Za-z0-9_]+'\n      }\n    ]\n  };\n}\n},{name:\"twig\",create:/*\nLanguage: Twig\nRequires: xml.js\nAuthor: Luke Holder <lukemh@gmail.com>\nDescription: Twig is a templating language for PHP\nCategory: template\n*/\n\nfunction(hljs) {\n  var PARAMS = {\n    className: 'params',\n    begin: '\\\\(', end: '\\\\)'\n  };\n\n  var FUNCTION_NAMES = 'attribute block constant cycle date dump include ' +\n                  'max min parent random range source template_from_string';\n\n  var FUNCTIONS = {\n    beginKeywords: FUNCTION_NAMES,\n    keywords: {name: FUNCTION_NAMES},\n    relevance: 0,\n    contains: [\n      PARAMS\n    ]\n  };\n\n  var FILTER = {\n    begin: /\\|[A-Za-z_]+:?/,\n    keywords:\n      'abs batch capitalize convert_encoding date date_modify default ' +\n      'escape first format join json_encode keys last length lower ' +\n      'merge nl2br number_format raw replace reverse round slice sort split ' +\n      'striptags title trim upper url_encode',\n    contains: [\n      FUNCTIONS\n    ]\n  };\n\n  var TAGS = 'autoescape block do embed extends filter flush for ' +\n    'if import include macro sandbox set spaceless use verbatim';\n\n  TAGS = TAGS + ' ' + TAGS.split(' ').map(function(t){return 'end' + t}).join(' ');\n\n  return {\n    aliases: ['craftcms'],\n    case_insensitive: true,\n    subLanguage: 'xml',\n    contains: [\n      hljs.COMMENT(/\\{#/, /#}/),\n      {\n        className: 'template-tag',\n        begin: /\\{%/, end: /%}/,\n        contains: [\n          {\n            className: 'name',\n            begin: /\\w+/,\n            keywords: TAGS,\n            starts: {\n              endsWithParent: true,\n              contains: [FILTER, FUNCTIONS],\n              relevance: 0\n            }\n          }\n        ]\n      },\n      {\n        className: 'template-variable',\n        begin: /\\{\\{/, end: /}}/,\n        contains: ['self', FILTER, FUNCTIONS]\n      }\n    ]\n  };\n}\n},{name:\"typescript\",create:/*\nLanguage: TypeScript\nAuthor: Panu Horsmalahti <panu.horsmalahti@iki.fi>\nDescription: TypeScript is a strict superset of JavaScript\nCategory: scripting\n*/\n\nfunction(hljs) {\n  var KEYWORDS = {\n    keyword:\n      'in if for while finally var new function do return void else break catch ' +\n      'instanceof with throw case default try this switch continue typeof delete ' +\n      'let yield const class public private protected get set super ' +\n      'static implements enum export import declare type namespace abstract',\n    literal:\n      'true false null undefined NaN Infinity',\n    built_in:\n      'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n      'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n      'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n      'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n      'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n      'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n      'module console window document any number boolean string void'\n  };\n\n  return {\n    aliases: ['ts'],\n    keywords: KEYWORDS,\n    contains: [\n      {\n        className: 'meta',\n        begin: /^\\s*['\"]use strict['\"]/\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      { // template string\n        className: 'string',\n        begin: '`', end: '`',\n        contains: [\n          hljs.BACKSLASH_ESCAPE,\n          {\n            className: 'subst',\n            begin: '\\\\$\\\\{', end: '\\\\}'\n          }\n        ]\n      },\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'number',\n        variants: [\n          { begin: '\\\\b(0[bB][01]+)' },\n          { begin: '\\\\b(0[oO][0-7]+)' },\n          { begin: hljs.C_NUMBER_RE }\n        ],\n        relevance: 0\n      },\n      { // \"value\" container\n        begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n        keywords: 'return throw case',\n        contains: [\n          hljs.C_LINE_COMMENT_MODE,\n          hljs.C_BLOCK_COMMENT_MODE,\n          hljs.REGEXP_MODE\n        ],\n        relevance: 0\n      },\n      {\n        className: 'function',\n        begin: 'function', end: /[\\{;]/, excludeEnd: true,\n        keywords: KEYWORDS,\n        contains: [\n          'self',\n          hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n          {\n            className: 'params',\n            begin: /\\(/, end: /\\)/,\n            excludeBegin: true,\n            excludeEnd: true,\n            keywords: KEYWORDS,\n            contains: [\n              hljs.C_LINE_COMMENT_MODE,\n              hljs.C_BLOCK_COMMENT_MODE\n            ],\n            illegal: /[\"'\\(]/\n          }\n        ],\n        illegal: /%/,\n        relevance: 0 // () => {} is more typical in TypeScript\n      },\n      {\n        beginKeywords: 'constructor', end: /\\{/, excludeEnd: true\n      },\n      { // prevent references like module.id from being higlighted as module definitions\n        begin: /module\\./,\n        keywords: {built_in: 'module'},\n        relevance: 0\n      },\n      {\n        beginKeywords: 'module', end: /\\{/, excludeEnd: true\n      },\n      {\n        beginKeywords: 'interface', end: /\\{/, excludeEnd: true,\n        keywords: 'interface extends'\n      },\n      {\n        begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n      },\n      {\n        begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n      }\n    ]\n  };\n}\n},{name:\"vala\",create:/*\nLanguage: Vala\nAuthor: Antono Vasiljev <antono.vasiljev@gmail.com>\nDescription: Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C.\n*/\n\nfunction(hljs) {\n  return {\n    keywords: {\n      keyword:\n        // Value types\n        'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 ' +\n        'uint16 uint32 uint64 float double bool struct enum string void ' +\n        // Reference types\n        'weak unowned owned ' +\n        // Modifiers\n        'async signal static abstract interface override virtual delegate ' +\n        // Control Structures\n        'if while do for foreach else switch case break default return try catch ' +\n        // Visibility\n        'public private protected internal ' +\n        // Other\n        'using new this get set const stdout stdin stderr var',\n      built_in:\n        'DBus GLib CCode Gee Object Gtk Posix',\n      literal:\n        'false true null'\n    },\n    contains: [\n      {\n        className: 'class',\n        beginKeywords: 'class interface namespace', end: '{', excludeEnd: true,\n        illegal: '[^,:\\\\n\\\\s\\\\.]',\n        contains: [\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      {\n        className: 'string',\n        begin: '\"\"\"', end: '\"\"\"',\n        relevance: 5\n      },\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'meta',\n        begin: '^#', end: '$',\n        relevance: 2\n      }\n    ]\n  };\n}\n},{name:\"vbnet\",create:/*\nLanguage: VB.NET\nAuthor: Poren Chiang <ren.chiang@gmail.com>\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['vb'],\n    case_insensitive: true,\n    keywords: {\n      keyword:\n        'addhandler addressof alias and andalso aggregate ansi as assembly auto binary by byref byval ' + /* a-b */\n        'call case catch class compare const continue custom declare default delegate dim distinct do ' + /* c-d */\n        'each equals else elseif end enum erase error event exit explicit finally for friend from function ' + /* e-f */\n        'get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue ' + /* g-i */\n        'join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass ' + /* j-m */\n        'namespace narrowing new next not notinheritable notoverridable ' + /* n */\n        'of off on operator option optional or order orelse overloads overridable overrides ' + /* o */\n        'paramarray partial preserve private property protected public ' + /* p */\n        'raiseevent readonly redim rem removehandler resume return ' + /* r */\n        'select set shadows shared skip static step stop structure strict sub synclock ' + /* s */\n        'take text then throw to try unicode until using when where while widening with withevents writeonly xor', /* t-x */\n      built_in:\n        'boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype ' +  /* b-c */\n        'date decimal directcast double gettype getxmlnamespace iif integer long object ' + /* d-o */\n        'sbyte short single string trycast typeof uinteger ulong ushort', /* s-u */\n      literal:\n        'true false nothing'\n    },\n    illegal: '//|{|}|endif|gosub|variant|wend', /* reserved deprecated keywords */\n    contains: [\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\n      hljs.COMMENT(\n        '\\'',\n        '$',\n        {\n          returnBegin: true,\n          contains: [\n            {\n              className: 'doctag',\n              begin: '\\'\\'\\'|<!--|-->',\n              contains: [hljs.PHRASAL_WORDS_MODE]\n            },\n            {\n              className: 'doctag',\n              begin: '</?', end: '>',\n              contains: [hljs.PHRASAL_WORDS_MODE]\n            }\n          ]\n        }\n      ),\n      hljs.C_NUMBER_MODE,\n      {\n        className: 'meta',\n        begin: '#', end: '$',\n        keywords: {'meta-keyword': 'if else elseif end region externalsource'}\n      }\n    ]\n  };\n}\n},{name:\"vbscript-html\",create:/*\nLanguage: VBScript in HTML\nRequires: xml.js, vbscript.js\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nDescription: \"Bridge\" language defining fragments of VBScript in HTML within <% .. %>\nCategory: scripting\n*/\n\nfunction(hljs) {\n  return {\n    subLanguage: 'xml',\n    contains: [\n      {\n        begin: '<%', end: '%>',\n        subLanguage: 'vbscript'\n      }\n    ]\n  };\n}\n},{name:\"vbscript\",create:/*\nLanguage: VBScript\nAuthor: Nikita Ledyaev <lenikita@yandex.ru>\nContributors: Michal Gabrukiewicz <mgabru@gmail.com>\nCategory: scripting\n*/\n\nfunction(hljs) {\n  return {\n    aliases: ['vbs'],\n    case_insensitive: true,\n    keywords: {\n      keyword:\n        'call class const dim do loop erase execute executeglobal exit for each next function ' +\n        'if then else on error option explicit new private property let get public randomize ' +\n        'redim rem select case set stop sub while wend with end to elseif is or xor and not ' +\n        'class_initialize class_terminate default preserve in me byval byref step resume goto',\n      built_in:\n        'lcase month vartype instrrev ubound setlocale getobject rgb getref string ' +\n        'weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency ' +\n        'conversions csng timevalue second year space abs clng timeserial fixs len asc ' +\n        'isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate ' +\n        'instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex ' +\n        'chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim ' +\n        'strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion ' +\n        'scriptengine split scriptengineminorversion cint sin datepart ltrim sqr ' +\n        'scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw ' +\n        'chrw regexp server response request cstr err',\n      literal:\n        'true false null nothing empty'\n    },\n    illegal: '//',\n    contains: [\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\n      hljs.COMMENT(\n        /'/,\n        /$/,\n        {\n          relevance: 0\n        }\n      ),\n      hljs.C_NUMBER_MODE\n    ]\n  };\n}\n},{name:\"verilog\",create:/*\nLanguage: Verilog\nAuthor: Jon Evans <jon@craftyjon.com>\nContributors: Boone Severson <boone.severson@gmail.com>\nDescription: Verilog is a hardware description language used in electronic design automation to describe digital and mixed-signal systems. This highlighter supports Verilog and SystemVerilog through IEEE 1800-2012.\n*/\n\nfunction(hljs) {\n  var SV_KEYWORDS = {\n    keyword:\n      'accept_on alias always always_comb always_ff always_latch and assert assign ' +\n      'assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 ' +\n      'byte case casex casez cell chandle checker class clocking cmos config const ' +\n      'constraint context continue cover covergroup coverpoint cross deassign default ' +\n      'defparam design disable dist do edge else end endcase endchecker endclass ' +\n      'endclocking endconfig endfunction endgenerate endgroup endinterface endmodule ' +\n      'endpackage endprimitive endprogram endproperty endspecify endsequence endtable ' +\n      'endtask enum event eventually expect export extends extern final first_match for ' +\n      'force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 ' +\n      'if iff ifnone ignore_bins illegal_bins implements implies import incdir include ' +\n      'initial inout input inside instance int integer interconnect interface intersect ' +\n      'join join_any join_none large let liblist library local localparam logic longint ' +\n      'macromodule matches medium modport module nand negedge nettype new nexttime nmos ' +\n      'nor noshowcancelled not notif0 notif1 or output package packed parameter pmos ' +\n      'posedge primitive priority program property protected pull0 pull1 pulldown pullup ' +\n      'pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos ' +\n      'real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran ' +\n      'rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared ' +\n      'sequence shortint shortreal showcancelled signed small soft solve specify specparam ' +\n      'static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on ' +\n      'sync_reject_on table tagged task this throughout time timeprecision timeunit tran ' +\n      'tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 ' +\n      'unsigned until until_with untyped use uwire var vectored virtual void wait wait_order ' +\n      'wand weak weak0 weak1 while wildcard wire with within wor xnor xor',\n    literal:\n      'null',\n    built_in:\n      '$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale ' +\n      '$bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat ' +\n      '$realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson ' +\n      '$assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff ' +\n      '$assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk ' +\n      '$fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control ' +\n      '$coverage_get $coverage_save $set_coverage_db_name $rose $stable $past ' +\n      '$rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display ' +\n      '$coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename ' +\n      '$unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow ' +\n      '$floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning ' +\n      '$dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh ' +\n      '$tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random ' +\n      '$dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson ' +\n      '$dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array ' +\n      '$async$nand$array $async$or$array $async$nor$array $sync$and$array ' +\n      '$sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf ' +\n      '$async$and$plane $async$nand$plane $async$or$plane $async$nor$plane ' +\n      '$sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system ' +\n      '$display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo ' +\n      '$write $readmemb $readmemh $writememh $value$plusargs ' +\n      '$dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit ' +\n      '$writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb ' +\n      '$dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall ' +\n      '$dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo ' +\n      '$fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh ' +\n      '$swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb ' +\n      '$fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat ' +\n      '$sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror'\n    };\n  return {\n    aliases: ['v', 'sv', 'svh'],\n    case_insensitive: false,\n    keywords: SV_KEYWORDS, lexemes: /[\\w\\$]+/,\n    contains: [\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'number',\n        contains: [hljs.BACKSLASH_ESCAPE],\n        variants: [\n          {begin: '\\\\b((\\\\d+\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\n          {begin: '\\\\B((\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\n          {begin: '\\\\b([0-9_])+', relevance: 0}\n        ]\n      },\n      /* parameters to instances */\n      {\n        className: 'variable',\n        variants: [\n          {begin: '#\\\\((?!parameter).+\\\\)'},\n          {begin: '\\\\.\\\\w+', relevance: 0},\n        ]\n      },\n      {\n        className: 'meta',\n        begin: '`', end: '$',\n        keywords: {'meta-keyword': 'define __FILE__ ' +\n          '__LINE__ begin_keywords celldefine default_nettype define ' +\n          'else elsif end_keywords endcelldefine endif ifdef ifndef ' +\n          'include line nounconnected_drive pragma resetall timescale ' +\n          'unconnected_drive undef undefineall'},\n        relevance: 0\n      }\n    ]\n  }; // return\n}\n},{name:\"vhdl\",create:/*\nLanguage: VHDL\nAuthor: Igor Kalnitsky <igor@kalnitsky.org>\nContributors: Daniel C.K. Kho <daniel.kho@gmail.com>, Guillaume Savaton <guillaume.savaton@eseo.fr>\nDescription: VHDL is a hardware description language used in electronic design automation to describe digital and mixed-signal systems.\n*/\n\nfunction(hljs) {\n  // Regular expression for VHDL numeric literals.\n\n  // Decimal literal:\n  var INTEGER_RE = '\\\\d(_|\\\\d)*';\n  var EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\n  var DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\n  // Based literal:\n  var BASED_INTEGER_RE = '\\\\w+';\n  var BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\n\n  var NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\n\n  return {\n    case_insensitive: true,\n    keywords: {\n      keyword:\n        'abs access after alias all and architecture array assert attribute begin block ' +\n        'body buffer bus case component configuration constant context cover disconnect ' +\n        'downto default else elsif end entity exit fairness file for force function generate ' +\n        'generic group guarded if impure in inertial inout is label library linkage literal ' +\n        'loop map mod nand new next nor not null of on open or others out package port ' +\n        'postponed procedure process property protected pure range record register reject ' +\n        'release rem report restrict restrict_guarantee return rol ror select sequence ' +\n        'severity shared signal sla sll sra srl strong subtype then to transport type ' +\n        'unaffected units until use variable vmode vprop vunit wait when while with xnor xor',\n      built_in:\n        'boolean bit character severity_level integer time delay_length natural positive ' +\n        'string bit_vector file_open_kind file_open_status std_ulogic std_ulogic_vector ' +\n        'std_logic std_logic_vector unsigned signed boolean_vector integer_vector ' +\n        'real_vector time_vector'\n    },\n    illegal: '{',\n    contains: [\n      hljs.C_BLOCK_COMMENT_MODE,        // VHDL-2008 block commenting.\n      hljs.COMMENT('--', '$'),\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'number',\n        begin: NUMBER_RE,\n        relevance: 0\n      },\n      {\n        className: 'literal',\n        begin: '\\'(U|X|0|1|Z|W|L|H|-)\\'',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n      {\n        className: 'symbol',\n        begin: '\\'[A-Za-z](_?[A-Za-z0-9])*',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      }\n    ]\n  };\n}\n},{name:\"vim\",create:/*\nLanguage: Vim Script\nAuthor: Jun Yang <yangjvn@126.com>\nDescription: full keyword and built-in from http://vimdoc.sourceforge.net/htmldoc/\nCategory: scripting\n*/\n\nfunction(hljs) {\n  return {\n    lexemes: /[!#@\\w]+/,\n    keywords: {\n      keyword:\n        // express version except: ! & * < = > !! # @ @@\n        'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope '+\n        'cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc '+\n        'ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 '+\n        'profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor '+\n        'so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew '+\n        'tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ '+\n        // full version\n        'Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload '+\n        'bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap '+\n        'cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor '+\n        'endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap '+\n        'imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview '+\n        'lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap '+\n        'nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext '+\n        'ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding '+\n        'scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace '+\n        'startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious '+'trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew '+\n        'vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank',\n      built_in: //built in func\n        'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv ' +\n        'complete_check add getwinposx getqflist getwinposy screencol ' +\n        'clearmatches empty extend getcmdpos mzeval garbagecollect setreg ' +\n        'ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable ' +\n        'shiftwidth max sinh isdirectory synID system inputrestore winline ' +\n        'atan visualmode inputlist tabpagewinnr round getregtype mapcheck ' +\n        'hasmapto histdel argidx findfile sha256 exists toupper getcmdline ' +\n        'taglist string getmatches bufnr strftime winwidth bufexists ' +\n        'strtrans tabpagebuflist setcmdpos remote_read printf setloclist ' +\n        'getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval ' +\n        'resolve libcallnr foldclosedend reverse filter has_key bufname ' +\n        'str2float strlen setline getcharmod setbufvar index searchpos ' +\n        'shellescape undofile foldclosed setqflist buflisted strchars str2nr ' +\n        'virtcol floor remove undotree remote_expr winheight gettabwinvar ' +\n        'reltime cursor tabpagenr finddir localtime acos getloclist search ' +\n        'tanh matchend rename gettabvar strdisplaywidth type abs py3eval ' +\n        'setwinvar tolower wildmenumode log10 spellsuggest bufloaded ' +\n        'synconcealed nextnonblank server2client complete settabwinvar ' +\n        'executable input wincol setmatches getftype hlID inputsave ' +\n        'searchpair or screenrow line settabvar histadd deepcopy strpart ' +\n        'remote_peek and eval getftime submatch screenchar winsaveview ' +\n        'matchadd mkdir screenattr getfontname libcall reltimestr getfsize ' +\n        'winnr invert pow getbufline byte2line soundfold repeat fnameescape ' +\n        'tagfiles sin strwidth spellbadword trunc maparg log lispindent ' +\n        'hostname setpos globpath remote_foreground getchar synIDattr ' +\n        'fnamemodify cscope_connection stridx winbufnr indent min ' +\n        'complete_add nr2char searchpairpos inputdialog values matchlist ' +\n        'items hlexists strridx browsedir expand fmod pathshorten line2byte ' +\n        'argc count getwinvar glob foldtextresult getreg foreground cosh ' +\n        'matchdelete has char2nr simplify histget searchdecl iconv ' +\n        'winrestcmd pumvisible writefile foldlevel haslocaldir keys cos ' +\n        'matchstr foldtext histnr tan tempname getcwd byteidx getbufvar ' +\n        'islocked escape eventhandler remote_send serverlist winrestview ' +\n        'synstack pyeval prevnonblank readfile cindent filereadable changenr ' +\n        'exp'\n    },\n    illegal: /;/,\n    contains: [\n      hljs.NUMBER_MODE,\n      hljs.APOS_STRING_MODE,\n\n      /*\n      A double quote can start either a string or a line comment. Strings are\n      ended before the end of a line by another double quote and can contain\n      escaped double-quotes and post-escaped line breaks.\n\n      Also, any double quote at the beginning of a line is a comment but we\n      don't handle that properly at the moment: any double quote inside will\n      turn them into a string. Handling it properly will require a smarter\n      parser.\n      */\n      {\n        className: 'string',\n        begin: /\"(\\\\\"|\\n\\\\|[^\"\\n])*\"/\n      },\n      hljs.COMMENT('\"', '$'),\n\n      {\n        className: 'variable',\n        begin: /[bwtglsav]:[\\w\\d_]*/\n      },\n      {\n        className: 'function',\n        beginKeywords: 'function function!', end: '$',\n        relevance: 0,\n        contains: [\n          hljs.TITLE_MODE,\n          {\n            className: 'params',\n            begin: '\\\\(', end: '\\\\)'\n          }\n        ]\n      },\n      {\n        className: 'symbol',\n        begin: /<[\\w-]+>/\n      }\n    ]\n  };\n}\n},{name:\"x86asm\",create:/*\nLanguage: Intel x86 Assembly\nAuthor: innocenat <innocenat@gmail.com>\nDescription: x86 assembly language using Intel's mnemonic and NASM syntax\nCategory: assembler\n*/\n\nfunction(hljs) {\n  return {\n    case_insensitive: true,\n    lexemes: '[.%]?' + hljs.IDENT_RE,\n    keywords: {\n      keyword:\n        'lock rep repe repz repne repnz xaquire xrelease bnd nobnd ' +\n        'aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63',\n      built_in:\n        // Instruction pointer\n        'ip eip rip ' +\n        // 8-bit registers\n        'al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ' +\n        // 16-bit registers\n        'ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w ' +\n        // 32-bit registers\n        'eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d ' +\n        // 64-bit registers\n        'rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 ' +\n        // Segment registers\n        'cs ds es fs gs ss ' +\n        // Floating point stack registers\n        'st st0 st1 st2 st3 st4 st5 st6 st7 ' +\n        // MMX Registers\n        'mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 ' +\n        // SSE registers\n        'xmm0  xmm1  xmm2  xmm3  xmm4  xmm5  xmm6  xmm7  xmm8  xmm9 xmm10  xmm11 xmm12 xmm13 xmm14 xmm15 ' +\n        'xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ' +\n        // AVX registers\n        'ymm0  ymm1  ymm2  ymm3  ymm4  ymm5  ymm6  ymm7  ymm8  ymm9 ymm10  ymm11 ymm12 ymm13 ymm14 ymm15 ' +\n        'ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 ' +\n        // AVX-512F registers\n        'zmm0  zmm1  zmm2  zmm3  zmm4  zmm5  zmm6  zmm7  zmm8  zmm9 zmm10  zmm11 zmm12 zmm13 zmm14 zmm15 ' +\n        'zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 ' +\n        // AVX-512F mask registers\n        'k0 k1 k2 k3 k4 k5 k6 k7 ' +\n        // Bound (MPX) register\n        'bnd0 bnd1 bnd2 bnd3 ' +\n        // Special register\n        'cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 ' +\n        // NASM altreg package\n        'r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b ' +\n        'r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d ' +\n        'r0h r1h r2h r3h ' +\n        'r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l ' +\n\n        'db dw dd dq dt ddq do dy dz ' +\n        'resb resw resd resq rest resdq reso resy resz ' +\n        'incbin equ times ' +\n        'byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr',\n\n      meta:\n        '%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif ' +\n        '%if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep ' +\n        '%endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment ' +\n        '.nolist ' +\n        '__FILE__ __LINE__ __SECT__  __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ ' +\n        '__UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__  __PASS__ struc endstruc istruc at iend ' +\n        'align alignb sectalign daz nodaz up down zero default option assume public ' +\n\n        'bits use16 use32 use64 default section segment absolute extern global common cpu float ' +\n        '__utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ ' +\n        '__float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ ' +\n        '__Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e ' +\n        'float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__'\n    },\n    contains: [\n      hljs.COMMENT(\n        ';',\n        '$',\n        {\n          relevance: 0\n        }\n      ),\n      {\n        className: 'number',\n        variants: [\n          // Float number and x87 BCD\n          {\n            begin: '\\\\b(?:([0-9][0-9_]*)?\\\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|' +\n                   '(0[Xx])?[0-9][0-9_]*\\\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\\\b',\n            relevance: 0\n          },\n\n          // Hex number in $\n          { begin: '\\\\$[0-9][0-9A-Fa-f]*', relevance: 0 },\n\n          // Number in H,D,T,Q,O,B,Y suffix\n          { begin: '\\\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\\\b' },\n\n          // Number in X,D,T,Q,O,B,Y prefix\n          { begin: '\\\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\\\b'}\n        ]\n      },\n      // Double quote string\n      hljs.QUOTE_STRING_MODE,\n      {\n        className: 'string',\n        variants: [\n          // Single-quoted string\n          { begin: '\\'', end: '[^\\\\\\\\]\\'' },\n          // Backquoted string\n          { begin: '`', end: '[^\\\\\\\\]`' }\n        ],\n        relevance: 0\n      },\n      {\n        className: 'symbol',\n        variants: [\n          // Global label and local label\n          { begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)' },\n          // Macro-local label\n          { begin: '^\\\\s*%%[A-Za-z0-9_$#@~.?]*:' }\n        ],\n        relevance: 0\n      },\n      // Macro parameter\n      {\n        className: 'subst',\n        begin: '%[0-9]+',\n        relevance: 0\n      },\n      // Macro parameter\n      {\n        className: 'subst',\n        begin: '%!\\S+',\n        relevance: 0\n      },\n      {\n        className: 'meta',\n        begin: /^\\s*\\.[\\w_-]+/\n      }\n    ]\n  };\n}\n},{name:\"xl\",create:/*\nLanguage: XL\nAuthor: Christophe de Dinechin <christophe@taodyne.com>\nDescription: An extensible programming language, based on parse tree rewriting (http://xlr.sf.net)\n*/\n\nfunction(hljs) {\n  var BUILTIN_MODULES =\n    'ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo ' +\n    'StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts';\n\n  var XL_KEYWORDS = {\n    keyword:\n      'if then else do while until for loop import with is as where when by data constant ' +\n      'integer real text name boolean symbol infix prefix postfix block tree',\n    literal:\n      'true false nil',\n    built_in:\n      'in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin ' +\n      'acos atan exp expm1 log log2 log10 log1p pi at text_length text_range ' +\n      'text_find text_replace contains page slide basic_slide title_slide ' +\n      'title subtitle fade_in fade_out fade_at clear_color color line_color ' +\n      'line_width texture_wrap texture_transform texture scale_?x scale_?y ' +\n      'scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y ' +\n      'rotate_?z? rectangle circle ellipse sphere path line_to move_to ' +\n      'quad_to curve_to theme background contents locally time mouse_?x ' +\n      'mouse_?y mouse_buttons ' +\n      BUILTIN_MODULES\n  };\n\n  var DOUBLE_QUOTE_TEXT = {\n    className: 'string',\n    begin: '\"', end: '\"', illegal: '\\\\n'\n  };\n  var SINGLE_QUOTE_TEXT = {\n    className: 'string',\n    begin: '\\'', end: '\\'', illegal: '\\\\n'\n  };\n  var LONG_TEXT = {\n    className: 'string',\n    begin: '<<', end: '>>'\n  };\n  var BASED_NUMBER = {\n    className: 'number',\n    begin: '[0-9]+#[0-9A-Z_]+(\\\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?'\n  };\n  var IMPORT = {\n    beginKeywords: 'import', end: '$',\n    keywords: XL_KEYWORDS,\n    contains: [DOUBLE_QUOTE_TEXT]\n  };\n  var FUNCTION_DEFINITION = {\n    className: 'function',\n    begin: /[a-z][^\\n]*->/, returnBegin: true, end: /->/,\n    contains: [\n      hljs.inherit(hljs.TITLE_MODE, {starts: {\n        endsWithParent: true,\n        keywords: XL_KEYWORDS\n      }})\n    ]\n  };\n  return {\n    aliases: ['tao'],\n    lexemes: /[a-zA-Z][a-zA-Z0-9_?]*/,\n    keywords: XL_KEYWORDS,\n    contains: [\n    hljs.C_LINE_COMMENT_MODE,\n    hljs.C_BLOCK_COMMENT_MODE,\n    DOUBLE_QUOTE_TEXT,\n    SINGLE_QUOTE_TEXT,\n    LONG_TEXT,\n    FUNCTION_DEFINITION,\n    IMPORT,\n    BASED_NUMBER,\n    hljs.NUMBER_MODE\n    ]\n  };\n}\n},{name:\"xml\",create:/*\nLanguage: HTML, XML\nCategory: common\n*/\n\nfunction(hljs) {\n  var XML_IDENT_RE = '[A-Za-z0-9\\\\._:-]+';\n  var TAG_INTERNALS = {\n    endsWithParent: true,\n    illegal: /</,\n    relevance: 0,\n    contains: [\n      {\n        className: 'attr',\n        begin: XML_IDENT_RE,\n        relevance: 0\n      },\n      {\n        begin: /=\\s*/,\n        relevance: 0,\n        contains: [\n          {\n            className: 'string',\n            endsParent: true,\n            variants: [\n              {begin: /\"/, end: /\"/},\n              {begin: /'/, end: /'/},\n              {begin: /[^\\s\"'=<>`]+/}\n            ]\n          }\n        ]\n      }\n    ]\n  };\n  return {\n    aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist'],\n    case_insensitive: true,\n    contains: [\n      {\n        className: 'meta',\n        begin: '<!DOCTYPE', end: '>',\n        relevance: 10,\n        contains: [{begin: '\\\\[', end: '\\\\]'}]\n      },\n      hljs.COMMENT(\n        '<!--',\n        '-->',\n        {\n          relevance: 10\n        }\n      ),\n      {\n        begin: '<\\\\!\\\\[CDATA\\\\[', end: '\\\\]\\\\]>',\n        relevance: 10\n      },\n      {\n        begin: /<\\?(php)?/, end: /\\?>/,\n        subLanguage: 'php',\n        contains: [{begin: '/\\\\*', end: '\\\\*/', skip: true}]\n      },\n      {\n        className: 'tag',\n        /*\n        The lookahead pattern (?=...) ensures that 'begin' only matches\n        '<style' as a single word, followed by a whitespace or an\n        ending braket. The '$' is needed for the lexeme to be recognized\n        by hljs.subMode() that tests lexemes outside the stream.\n        */\n        begin: '<style(?=\\\\s|>|$)', end: '>',\n        keywords: {name: 'style'},\n        contains: [TAG_INTERNALS],\n        starts: {\n          end: '</style>', returnEnd: true,\n          subLanguage: ['css', 'xml']\n        }\n      },\n      {\n        className: 'tag',\n        // See the comment in the <style tag about the lookahead pattern\n        begin: '<script(?=\\\\s|>|$)', end: '>',\n        keywords: {name: 'script'},\n        contains: [TAG_INTERNALS],\n        starts: {\n          end: '\\<\\/script\\>', returnEnd: true,\n          subLanguage: ['actionscript', 'javascript', 'handlebars', 'xml']\n        }\n      },\n      {\n        className: 'meta',\n        variants: [\n          {begin: /<\\?xml/, end: /\\?>/, relevance: 10},\n          {begin: /<\\?\\w+/, end: /\\?>/}\n        ]\n      },\n      {\n        className: 'tag',\n        begin: '</?', end: '/?>',\n        contains: [\n          {\n            className: 'name', begin: /[^\\/><\\s]+/, relevance: 0\n          },\n          TAG_INTERNALS\n        ]\n      }\n    ]\n  };\n}\n},{name:\"xquery\",create:/*\nLanguage: XQuery\nAuthor: Dirk Kirsten <dk@basex.org>\nDescription: Supports XQuery 3.1 including XQuery Update 3, so also XPath (as it is a superset)\nCategory: functional\n*/\n\nfunction(hljs) {\n  var KEYWORDS = 'for let if while then else return where group by xquery encoding version' +\n    'module namespace boundary-space preserve strip default collation base-uri ordering' +\n    'copy-namespaces order declare import schema namespace function option in allowing empty' +\n    'at tumbling window sliding window start when only end when previous next stable ascending' +\n    'descending empty greatest least some every satisfies switch case typeswitch try catch and' +\n    'or to union intersect instance of treat as castable cast map array delete insert into' +\n    'replace value rename copy modify update';\n  var LITERAL = 'false true xs:string xs:integer element item xs:date xs:datetime xs:float xs:double xs:decimal QName xs:anyURI xs:long xs:int xs:short xs:byte attribute';\n  var VAR = {\n    begin: /\\$[a-zA-Z0-9\\-]+/\n  };\n\n  var NUMBER = {\n    className: 'number',\n    begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n    relevance: 0\n  };\n\n  var STRING = {\n    className: 'string',\n    variants: [\n      {begin: /\"/, end: /\"/, contains: [{begin: /\"\"/, relevance: 0}]},\n      {begin: /'/, end: /'/, contains: [{begin: /''/, relevance: 0}]}\n    ]\n  };\n\n  var ANNOTATION = {\n    className: 'meta',\n    begin: '%\\\\w+'\n  };\n\n  var COMMENT = {\n    className: 'comment',\n    begin: '\\\\(:', end: ':\\\\)',\n    relevance: 10,\n    contains: [\n      {\n        className: 'doctag', begin: '@\\\\w+'\n      }\n    ]\n  };\n\n  var METHOD = {\n    begin: '{', end: '}'\n  };\n\n  var CONTAINS = [\n    VAR,\n    STRING,\n    NUMBER,\n    COMMENT,\n    ANNOTATION,\n    METHOD\n  ];\n  METHOD.contains = CONTAINS;\n\n\n  return {\n    aliases: ['xpath', 'xq'],\n    case_insensitive: false,\n    lexemes: /[a-zA-Z\\$][a-zA-Z0-9_:\\-]*/,\n    illegal: /(proc)|(abstract)|(extends)|(until)|(#)/,\n    keywords: {\n      keyword: KEYWORDS,\n      literal: LITERAL\n    },\n    contains: CONTAINS\n  };\n}\n},{name:\"yaml\",create:/*\nLanguage: YAML\nAuthor: Stefan Wienert <stwienert@gmail.com>\nRequires: ruby.js\nDescription: YAML (Yet Another Markdown Language)\nCategory: config\n*/\nfunction(hljs) {\n  var LITERALS = {literal: '{ } true false yes no Yes No True False null'};\n\n  var keyPrefix = '^[ \\\\-]*';\n  var keyName =  '[a-zA-Z_][\\\\w\\\\-]*';\n  var KEY = {\n    className: 'attr',\n    variants: [\n      { begin: keyPrefix + keyName + \":\"},\n      { begin: keyPrefix + '\"' + keyName + '\"' + \":\"},\n      { begin: keyPrefix + \"'\" + keyName + \"'\" + \":\"}\n    ]\n  };\n\n  var TEMPLATE_VARIABLES = {\n    className: 'template-variable',\n    variants: [\n      { begin: '\\{\\{', end: '\\}\\}' }, // jinja templates Ansible\n      { begin: '%\\{', end: '\\}' } // Ruby i18n\n    ]\n  };\n  var STRING = {\n    className: 'string',\n    relevance: 0,\n    variants: [\n      {begin: /'/, end: /'/},\n      {begin: /\"/, end: /\"/}\n    ],\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      TEMPLATE_VARIABLES\n    ]\n  };\n\n  return {\n    case_insensitive: true,\n    aliases: ['yml', 'YAML', 'yaml'],\n    contains: [\n      KEY,\n      {\n        className: 'meta',\n        begin: '^---\\s*$',\n        relevance: 10\n      },\n      { // multi line string\n        className: 'string',\n        begin: '[\\\\|>] *$',\n        returnEnd: true,\n        contains: STRING.contains,\n        // very simple termination: next hash key\n        end: KEY.variants[0].begin\n      },\n      { // Ruby/Rails erb\n        begin: '<%[%=-]?', end: '[%-]?%>',\n        subLanguage: 'ruby',\n        excludeBegin: true,\n        excludeEnd: true,\n        relevance: 0\n      },\n      { // data type\n        className: 'type',\n        begin: '!!' + hljs.UNDERSCORE_IDENT_RE,\n      },\n      { // fragment id &ref\n        className: 'meta',\n        begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$',\n      },\n      { // fragment reference *ref\n        className: 'meta',\n        begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n      },\n      { // array listing\n        className: 'bullet',\n        begin: '^ *-',\n        relevance: 0\n      },\n      STRING,\n      hljs.HASH_COMMENT_MODE,\n      hljs.C_NUMBER_MODE\n    ],\n    keywords: LITERALS\n  };\n}\n},{name:\"zephir\",create:/*\n Language: Zephir\n Author: Oleg Efimov <efimovov@gmail.com>\n */\n\nfunction(hljs) {\n  var STRING = {\n    className: 'string',\n    contains: [hljs.BACKSLASH_ESCAPE],\n    variants: [\n      {\n        begin: 'b\"', end: '\"'\n      },\n      {\n        begin: 'b\\'', end: '\\''\n      },\n      hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n    ]\n  };\n  var NUMBER = {variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]};\n  return {\n    aliases: ['zep'],\n    case_insensitive: true,\n    keywords:\n      'and include_once list abstract global private echo interface as static endswitch ' +\n      'array null if endwhile or const for endforeach self var let while isset public ' +\n      'protected exit foreach throw elseif include __FILE__ empty require_once do xor ' +\n      'return parent clone use __CLASS__ __LINE__ else break print eval new ' +\n      'catch __METHOD__ case exception default die require __FUNCTION__ ' +\n      'enddeclare final try switch continue endfor endif declare unset true false ' +\n      'trait goto instanceof insteadof __DIR__ __NAMESPACE__ ' +\n      'yield finally int uint long ulong char uchar double float bool boolean string' +\n      'likely unlikely',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.HASH_COMMENT_MODE,\n      hljs.COMMENT(\n        '/\\\\*',\n        '\\\\*/',\n        {\n          contains: [\n            {\n              className: 'doctag',\n              begin: '@[A-Za-z]+'\n            }\n          ]\n        }\n      ),\n      hljs.COMMENT(\n        '__halt_compiler.+?;',\n        false,\n        {\n          endsWithParent: true,\n          keywords: '__halt_compiler',\n          lexemes: hljs.UNDERSCORE_IDENT_RE\n        }\n      ),\n      {\n        className: 'string',\n        begin: '<<<[\\'\"]?\\\\w+[\\'\"]?$', end: '^\\\\w+;',\n        contains: [hljs.BACKSLASH_ESCAPE]\n      },\n      {\n        // swallow composed identifiers to avoid parsing them as keywords\n        begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n      },\n      {\n        className: 'function',\n        beginKeywords: 'function', end: /[;{]/, excludeEnd: true,\n        illegal: '\\\\$|\\\\[|%',\n        contains: [\n          hljs.UNDERSCORE_TITLE_MODE,\n          {\n            className: 'params',\n            begin: '\\\\(', end: '\\\\)',\n            contains: [\n              'self',\n              hljs.C_BLOCK_COMMENT_MODE,\n              STRING,\n              NUMBER\n            ]\n          }\n        ]\n      },\n      {\n        className: 'class',\n        beginKeywords: 'class interface', end: '{', excludeEnd: true,\n        illegal: /[:\\(\\$\"]/,\n        contains: [\n          {beginKeywords: 'extends implements'},\n          hljs.UNDERSCORE_TITLE_MODE\n        ]\n      },\n      {\n        beginKeywords: 'namespace', end: ';',\n        illegal: /[\\.']/,\n        contains: [hljs.UNDERSCORE_TITLE_MODE]\n      },\n      {\n        beginKeywords: 'use', end: ';',\n        contains: [hljs.UNDERSCORE_TITLE_MODE]\n      },\n      {\n        begin: '=>' // No markup, just a relevance booster\n      },\n      STRING,\n      NUMBER\n    ]\n  };\n}\n}]\n  ;\n\nfor (var i = 0; i < languages.length; ++i) {\n  hljs.registerLanguage(languages[i].name, languages[i].create);\n}\n\nmodule.exports = {\n  styles: {\"agate\":\".hljs-agate{/*! * Agate by Taufik Nurrohman <https://github.com/tovic> * ---------------------------------------------------- * * #ade5fc * #a2fca2 * #c6b4f0 * #d36363 * #fcc28c * #fc9b9b * #ffa * #fff * #333 * #62c8f3 * #888 * */}.hljs-agate .hljs{display:block;overflow-x:auto;padding:.5em;background:#333;color:white}.hljs-agate .hljs-name,.hljs-agate .hljs-strong{font-weight:bold}.hljs-agate .hljs-code,.hljs-agate .hljs-emphasis{font-style:italic}.hljs-agate .hljs-tag{color:#62c8f3}.hljs-agate .hljs-variable,.hljs-agate .hljs-template-variable,.hljs-agate .hljs-selector-id,.hljs-agate .hljs-selector-class{color:#ade5fc}.hljs-agate .hljs-string,.hljs-agate .hljs-bullet{color:#a2fca2}.hljs-agate .hljs-type,.hljs-agate .hljs-title,.hljs-agate .hljs-section,.hljs-agate .hljs-attribute,.hljs-agate .hljs-quote,.hljs-agate .hljs-built_in,.hljs-agate .hljs-builtin-name{color:#ffa}.hljs-agate .hljs-number,.hljs-agate .hljs-symbol,.hljs-agate .hljs-bullet{color:#d36363}.hljs-agate .hljs-keyword,.hljs-agate .hljs-selector-tag,.hljs-agate .hljs-literal{color:#fcc28c}.hljs-agate .hljs-comment,.hljs-agate .hljs-deletion,.hljs-agate .hljs-code{color:#888}.hljs-agate .hljs-regexp,.hljs-agate .hljs-link{color:#c6b4f0}.hljs-agate .hljs-meta{color:#fc9b9b}.hljs-agate .hljs-deletion{background-color:#fc9b9b;color:#333}.hljs-agate .hljs-addition{background-color:#a2fca2;color:#333}.hljs-agate .hljs a{color:inherit}.hljs-agate .hljs a:focus,.hljs-agate .hljs a:hover{color:inherit;text-decoration:underline}\",\"androidstudio\":\".hljs-androidstudio .hljs{color:#a9b7c6;background:#282b2e;display:block;overflow-x:auto;padding:.5em}.hljs-androidstudio .hljs-number,.hljs-androidstudio .hljs-literal,.hljs-androidstudio .hljs-symbol,.hljs-androidstudio .hljs-bullet{color:#6897BB}.hljs-androidstudio .hljs-keyword,.hljs-androidstudio .hljs-selector-tag,.hljs-androidstudio .hljs-deletion{color:#cc7832}.hljs-androidstudio .hljs-variable,.hljs-androidstudio .hljs-template-variable,.hljs-androidstudio .hljs-link{color:#629755}.hljs-androidstudio .hljs-comment,.hljs-androidstudio .hljs-quote{color:#808080}.hljs-androidstudio .hljs-meta{color:#bbb529}.hljs-androidstudio .hljs-string,.hljs-androidstudio .hljs-attribute,.hljs-androidstudio .hljs-addition{color:#6A8759}.hljs-androidstudio .hljs-section,.hljs-androidstudio .hljs-title,.hljs-androidstudio .hljs-type{color:#ffc66d}.hljs-androidstudio .hljs-name,.hljs-androidstudio .hljs-selector-id,.hljs-androidstudio .hljs-selector-class{color:#e8bf6a}.hljs-androidstudio .hljs-emphasis{font-style:italic}.hljs-androidstudio .hljs-strong{font-weight:bold}\",\"arduino-light\":\".hljs-arduino-light .hljs{display:block;overflow-x:auto;padding:.5em;background:#FFFFFF}.hljs-arduino-light .hljs,.hljs-arduino-light .hljs-subst{color:#434f54}.hljs-arduino-light .hljs-keyword,.hljs-arduino-light .hljs-attribute,.hljs-arduino-light .hljs-selector-tag,.hljs-arduino-light .hljs-doctag,.hljs-arduino-light .hljs-name{color:#00979D}.hljs-arduino-light .hljs-built_in,.hljs-arduino-light .hljs-literal,.hljs-arduino-light .hljs-bullet,.hljs-arduino-light .hljs-code,.hljs-arduino-light .hljs-addition{color:#D35400}.hljs-arduino-light .hljs-regexp,.hljs-arduino-light .hljs-symbol,.hljs-arduino-light .hljs-variable,.hljs-arduino-light .hljs-template-variable,.hljs-arduino-light .hljs-link,.hljs-arduino-light .hljs-selector-attr,.hljs-arduino-light .hljs-selector-pseudo{color:#00979D}.hljs-arduino-light .hljs-type,.hljs-arduino-light .hljs-string,.hljs-arduino-light .hljs-selector-id,.hljs-arduino-light .hljs-selector-class,.hljs-arduino-light .hljs-quote,.hljs-arduino-light .hljs-template-tag,.hljs-arduino-light .hljs-deletion{color:#005C5F}.hljs-arduino-light .hljs-title,.hljs-arduino-light .hljs-section{color:#880000;font-weight:bold}.hljs-arduino-light .hljs-comment{color:rgba(149,165,166,0.8)}.hljs-arduino-light .hljs-meta-keyword{color:#728E00}.hljs-arduino-light .hljs-meta{color:#728E00;color:#434f54}.hljs-arduino-light .hljs-emphasis{font-style:italic}.hljs-arduino-light .hljs-strong{font-weight:bold}.hljs-arduino-light .hljs-function{color:#728E00}.hljs-arduino-light .hljs-number{color:#8A7B52}\",\"arta\":\".hljs-arta .hljs{display:block;overflow-x:auto;padding:.5em;background:#222}.hljs-arta .hljs,.hljs-arta .hljs-subst{color:#aaa}.hljs-arta .hljs-section{color:#fff}.hljs-arta .hljs-comment,.hljs-arta .hljs-quote,.hljs-arta .hljs-meta{color:#444}.hljs-arta .hljs-string,.hljs-arta .hljs-symbol,.hljs-arta .hljs-bullet,.hljs-arta .hljs-regexp{color:#ffcc33}.hljs-arta .hljs-number,.hljs-arta .hljs-addition{color:#00cc66}.hljs-arta .hljs-built_in,.hljs-arta .hljs-builtin-name,.hljs-arta .hljs-literal,.hljs-arta .hljs-type,.hljs-arta .hljs-template-variable,.hljs-arta .hljs-attribute,.hljs-arta .hljs-link{color:#32aaee}.hljs-arta .hljs-keyword,.hljs-arta .hljs-selector-tag,.hljs-arta .hljs-name,.hljs-arta .hljs-selector-id,.hljs-arta .hljs-selector-class{color:#6644aa}.hljs-arta .hljs-title,.hljs-arta .hljs-variable,.hljs-arta .hljs-deletion,.hljs-arta .hljs-template-tag{color:#bb1166}.hljs-arta .hljs-section,.hljs-arta .hljs-doctag,.hljs-arta .hljs-strong{font-weight:bold}.hljs-arta .hljs-emphasis{font-style:italic}\",\"ascetic\":\".hljs-ascetic .hljs{display:block;overflow-x:auto;padding:.5em;background:white;color:black}.hljs-ascetic .hljs-string,.hljs-ascetic .hljs-variable,.hljs-ascetic .hljs-template-variable,.hljs-ascetic .hljs-symbol,.hljs-ascetic .hljs-bullet,.hljs-ascetic .hljs-section,.hljs-ascetic .hljs-addition,.hljs-ascetic .hljs-attribute,.hljs-ascetic .hljs-link{color:#888}.hljs-ascetic .hljs-comment,.hljs-ascetic .hljs-quote,.hljs-ascetic .hljs-meta,.hljs-ascetic .hljs-deletion{color:#ccc}.hljs-ascetic .hljs-keyword,.hljs-ascetic .hljs-selector-tag,.hljs-ascetic .hljs-section,.hljs-ascetic .hljs-name,.hljs-ascetic .hljs-type,.hljs-ascetic .hljs-strong{font-weight:bold}.hljs-ascetic .hljs-emphasis{font-style:italic}\",\"atelier-cave-dark\":\".hljs-atelier-cave-dark .hljs-comment,.hljs-atelier-cave-dark .hljs-quote{color:#7e7887}.hljs-atelier-cave-dark .hljs-variable,.hljs-atelier-cave-dark .hljs-template-variable,.hljs-atelier-cave-dark .hljs-attribute,.hljs-atelier-cave-dark .hljs-regexp,.hljs-atelier-cave-dark .hljs-link,.hljs-atelier-cave-dark .hljs-tag,.hljs-atelier-cave-dark .hljs-name,.hljs-atelier-cave-dark .hljs-selector-id,.hljs-atelier-cave-dark .hljs-selector-class{color:#be4678}.hljs-atelier-cave-dark .hljs-number,.hljs-atelier-cave-dark .hljs-meta,.hljs-atelier-cave-dark .hljs-built_in,.hljs-atelier-cave-dark .hljs-builtin-name,.hljs-atelier-cave-dark .hljs-literal,.hljs-atelier-cave-dark .hljs-type,.hljs-atelier-cave-dark .hljs-params{color:#aa573c}.hljs-atelier-cave-dark .hljs-string,.hljs-atelier-cave-dark .hljs-symbol,.hljs-atelier-cave-dark .hljs-bullet{color:#2a9292}.hljs-atelier-cave-dark .hljs-title,.hljs-atelier-cave-dark .hljs-section{color:#576ddb}.hljs-atelier-cave-dark .hljs-keyword,.hljs-atelier-cave-dark .hljs-selector-tag{color:#955ae7}.hljs-atelier-cave-dark .hljs-deletion,.hljs-atelier-cave-dark .hljs-addition{color:#19171c;display:inline-block;width:100%}.hljs-atelier-cave-dark .hljs-deletion{background-color:#be4678}.hljs-atelier-cave-dark .hljs-addition{background-color:#2a9292}.hljs-atelier-cave-dark .hljs{display:block;overflow-x:auto;background:#19171c;color:#8b8792;padding:.5em}.hljs-atelier-cave-dark .hljs-emphasis{font-style:italic}.hljs-atelier-cave-dark .hljs-strong{font-weight:bold}\",\"atelier-cave-light\":\".hljs-atelier-cave-light .hljs-comment,.hljs-atelier-cave-light .hljs-quote{color:#655f6d}.hljs-atelier-cave-light .hljs-variable,.hljs-atelier-cave-light .hljs-template-variable,.hljs-atelier-cave-light .hljs-attribute,.hljs-atelier-cave-light .hljs-tag,.hljs-atelier-cave-light .hljs-name,.hljs-atelier-cave-light .hljs-regexp,.hljs-atelier-cave-light .hljs-link,.hljs-atelier-cave-light .hljs-name,.hljs-atelier-cave-light .hljs-name,.hljs-atelier-cave-light .hljs-selector-id,.hljs-atelier-cave-light .hljs-selector-class{color:#be4678}.hljs-atelier-cave-light .hljs-number,.hljs-atelier-cave-light .hljs-meta,.hljs-atelier-cave-light .hljs-built_in,.hljs-atelier-cave-light .hljs-builtin-name,.hljs-atelier-cave-light .hljs-literal,.hljs-atelier-cave-light .hljs-type,.hljs-atelier-cave-light .hljs-params{color:#aa573c}.hljs-atelier-cave-light .hljs-string,.hljs-atelier-cave-light .hljs-symbol,.hljs-atelier-cave-light .hljs-bullet{color:#2a9292}.hljs-atelier-cave-light .hljs-title,.hljs-atelier-cave-light .hljs-section{color:#576ddb}.hljs-atelier-cave-light .hljs-keyword,.hljs-atelier-cave-light .hljs-selector-tag{color:#955ae7}.hljs-atelier-cave-light .hljs-deletion,.hljs-atelier-cave-light .hljs-addition{color:#19171c;display:inline-block;width:100%}.hljs-atelier-cave-light .hljs-deletion{background-color:#be4678}.hljs-atelier-cave-light .hljs-addition{background-color:#2a9292}.hljs-atelier-cave-light .hljs{display:block;overflow-x:auto;background:#efecf4;color:#585260;padding:.5em}.hljs-atelier-cave-light .hljs-emphasis{font-style:italic}.hljs-atelier-cave-light .hljs-strong{font-weight:bold}\",\"atelier-dune-dark\":\".hljs-atelier-dune-dark .hljs-comment,.hljs-atelier-dune-dark .hljs-quote{color:#999580}.hljs-atelier-dune-dark .hljs-variable,.hljs-atelier-dune-dark .hljs-template-variable,.hljs-atelier-dune-dark .hljs-attribute,.hljs-atelier-dune-dark .hljs-tag,.hljs-atelier-dune-dark .hljs-name,.hljs-atelier-dune-dark .hljs-regexp,.hljs-atelier-dune-dark .hljs-link,.hljs-atelier-dune-dark .hljs-name,.hljs-atelier-dune-dark .hljs-selector-id,.hljs-atelier-dune-dark .hljs-selector-class{color:#d73737}.hljs-atelier-dune-dark .hljs-number,.hljs-atelier-dune-dark .hljs-meta,.hljs-atelier-dune-dark .hljs-built_in,.hljs-atelier-dune-dark .hljs-builtin-name,.hljs-atelier-dune-dark .hljs-literal,.hljs-atelier-dune-dark .hljs-type,.hljs-atelier-dune-dark .hljs-params{color:#b65611}.hljs-atelier-dune-dark .hljs-string,.hljs-atelier-dune-dark .hljs-symbol,.hljs-atelier-dune-dark .hljs-bullet{color:#60ac39}.hljs-atelier-dune-dark .hljs-title,.hljs-atelier-dune-dark .hljs-section{color:#6684e1}.hljs-atelier-dune-dark .hljs-keyword,.hljs-atelier-dune-dark .hljs-selector-tag{color:#b854d4}.hljs-atelier-dune-dark .hljs{display:block;overflow-x:auto;background:#20201d;color:#a6a28c;padding:.5em}.hljs-atelier-dune-dark .hljs-emphasis{font-style:italic}.hljs-atelier-dune-dark .hljs-strong{font-weight:bold}\",\"atelier-dune-light\":\".hljs-atelier-dune-light .hljs-comment,.hljs-atelier-dune-light .hljs-quote{color:#7d7a68}.hljs-atelier-dune-light .hljs-variable,.hljs-atelier-dune-light .hljs-template-variable,.hljs-atelier-dune-light .hljs-attribute,.hljs-atelier-dune-light .hljs-tag,.hljs-atelier-dune-light .hljs-name,.hljs-atelier-dune-light .hljs-regexp,.hljs-atelier-dune-light .hljs-link,.hljs-atelier-dune-light .hljs-name,.hljs-atelier-dune-light .hljs-selector-id,.hljs-atelier-dune-light .hljs-selector-class{color:#d73737}.hljs-atelier-dune-light .hljs-number,.hljs-atelier-dune-light .hljs-meta,.hljs-atelier-dune-light .hljs-built_in,.hljs-atelier-dune-light .hljs-builtin-name,.hljs-atelier-dune-light .hljs-literal,.hljs-atelier-dune-light .hljs-type,.hljs-atelier-dune-light .hljs-params{color:#b65611}.hljs-atelier-dune-light .hljs-string,.hljs-atelier-dune-light .hljs-symbol,.hljs-atelier-dune-light .hljs-bullet{color:#60ac39}.hljs-atelier-dune-light .hljs-title,.hljs-atelier-dune-light .hljs-section{color:#6684e1}.hljs-atelier-dune-light .hljs-keyword,.hljs-atelier-dune-light .hljs-selector-tag{color:#b854d4}.hljs-atelier-dune-light .hljs{display:block;overflow-x:auto;background:#fefbec;color:#6e6b5e;padding:.5em}.hljs-atelier-dune-light .hljs-emphasis{font-style:italic}.hljs-atelier-dune-light .hljs-strong{font-weight:bold}\",\"atelier-estuary-dark\":\".hljs-atelier-estuary-dark .hljs-comment,.hljs-atelier-estuary-dark .hljs-quote{color:#878573}.hljs-atelier-estuary-dark .hljs-variable,.hljs-atelier-estuary-dark .hljs-template-variable,.hljs-atelier-estuary-dark .hljs-attribute,.hljs-atelier-estuary-dark .hljs-tag,.hljs-atelier-estuary-dark .hljs-name,.hljs-atelier-estuary-dark .hljs-regexp,.hljs-atelier-estuary-dark .hljs-link,.hljs-atelier-estuary-dark .hljs-name,.hljs-atelier-estuary-dark .hljs-selector-id,.hljs-atelier-estuary-dark .hljs-selector-class{color:#ba6236}.hljs-atelier-estuary-dark .hljs-number,.hljs-atelier-estuary-dark .hljs-meta,.hljs-atelier-estuary-dark .hljs-built_in,.hljs-atelier-estuary-dark .hljs-builtin-name,.hljs-atelier-estuary-dark .hljs-literal,.hljs-atelier-estuary-dark .hljs-type,.hljs-atelier-estuary-dark .hljs-params{color:#ae7313}.hljs-atelier-estuary-dark .hljs-string,.hljs-atelier-estuary-dark .hljs-symbol,.hljs-atelier-estuary-dark .hljs-bullet{color:#7d9726}.hljs-atelier-estuary-dark .hljs-title,.hljs-atelier-estuary-dark .hljs-section{color:#36a166}.hljs-atelier-estuary-dark .hljs-keyword,.hljs-atelier-estuary-dark .hljs-selector-tag{color:#5f9182}.hljs-atelier-estuary-dark .hljs-deletion,.hljs-atelier-estuary-dark .hljs-addition{color:#22221b;display:inline-block;width:100%}.hljs-atelier-estuary-dark .hljs-deletion{background-color:#ba6236}.hljs-atelier-estuary-dark .hljs-addition{background-color:#7d9726}.hljs-atelier-estuary-dark .hljs{display:block;overflow-x:auto;background:#22221b;color:#929181;padding:.5em}.hljs-atelier-estuary-dark .hljs-emphasis{font-style:italic}.hljs-atelier-estuary-dark .hljs-strong{font-weight:bold}\",\"atelier-estuary-light\":\".hljs-atelier-estuary-light .hljs-comment,.hljs-atelier-estuary-light .hljs-quote{color:#6c6b5a}.hljs-atelier-estuary-light .hljs-variable,.hljs-atelier-estuary-light .hljs-template-variable,.hljs-atelier-estuary-light .hljs-attribute,.hljs-atelier-estuary-light .hljs-tag,.hljs-atelier-estuary-light .hljs-name,.hljs-atelier-estuary-light .hljs-regexp,.hljs-atelier-estuary-light .hljs-link,.hljs-atelier-estuary-light .hljs-name,.hljs-atelier-estuary-light .hljs-selector-id,.hljs-atelier-estuary-light .hljs-selector-class{color:#ba6236}.hljs-atelier-estuary-light .hljs-number,.hljs-atelier-estuary-light .hljs-meta,.hljs-atelier-estuary-light .hljs-built_in,.hljs-atelier-estuary-light .hljs-builtin-name,.hljs-atelier-estuary-light .hljs-literal,.hljs-atelier-estuary-light .hljs-type,.hljs-atelier-estuary-light .hljs-params{color:#ae7313}.hljs-atelier-estuary-light .hljs-string,.hljs-atelier-estuary-light .hljs-symbol,.hljs-atelier-estuary-light .hljs-bullet{color:#7d9726}.hljs-atelier-estuary-light .hljs-title,.hljs-atelier-estuary-light .hljs-section{color:#36a166}.hljs-atelier-estuary-light .hljs-keyword,.hljs-atelier-estuary-light .hljs-selector-tag{color:#5f9182}.hljs-atelier-estuary-light .hljs-deletion,.hljs-atelier-estuary-light .hljs-addition{color:#22221b;display:inline-block;width:100%}.hljs-atelier-estuary-light .hljs-deletion{background-color:#ba6236}.hljs-atelier-estuary-light .hljs-addition{background-color:#7d9726}.hljs-atelier-estuary-light .hljs{display:block;overflow-x:auto;background:#f4f3ec;color:#5f5e4e;padding:.5em}.hljs-atelier-estuary-light .hljs-emphasis{font-style:italic}.hljs-atelier-estuary-light .hljs-strong{font-weight:bold}\",\"atelier-forest-dark\":\".hljs-atelier-forest-dark .hljs-comment,.hljs-atelier-forest-dark .hljs-quote{color:#9c9491}.hljs-atelier-forest-dark .hljs-variable,.hljs-atelier-forest-dark .hljs-template-variable,.hljs-atelier-forest-dark .hljs-attribute,.hljs-atelier-forest-dark .hljs-tag,.hljs-atelier-forest-dark .hljs-name,.hljs-atelier-forest-dark .hljs-regexp,.hljs-atelier-forest-dark .hljs-link,.hljs-atelier-forest-dark .hljs-name,.hljs-atelier-forest-dark .hljs-selector-id,.hljs-atelier-forest-dark .hljs-selector-class{color:#f22c40}.hljs-atelier-forest-dark .hljs-number,.hljs-atelier-forest-dark .hljs-meta,.hljs-atelier-forest-dark .hljs-built_in,.hljs-atelier-forest-dark .hljs-builtin-name,.hljs-atelier-forest-dark .hljs-literal,.hljs-atelier-forest-dark .hljs-type,.hljs-atelier-forest-dark .hljs-params{color:#df5320}.hljs-atelier-forest-dark .hljs-string,.hljs-atelier-forest-dark .hljs-symbol,.hljs-atelier-forest-dark .hljs-bullet{color:#7b9726}.hljs-atelier-forest-dark .hljs-title,.hljs-atelier-forest-dark .hljs-section{color:#407ee7}.hljs-atelier-forest-dark .hljs-keyword,.hljs-atelier-forest-dark .hljs-selector-tag{color:#6666ea}.hljs-atelier-forest-dark .hljs{display:block;overflow-x:auto;background:#1b1918;color:#a8a19f;padding:.5em}.hljs-atelier-forest-dark .hljs-emphasis{font-style:italic}.hljs-atelier-forest-dark .hljs-strong{font-weight:bold}\",\"atelier-forest-light\":\".hljs-atelier-forest-light .hljs-comment,.hljs-atelier-forest-light .hljs-quote{color:#766e6b}.hljs-atelier-forest-light .hljs-variable,.hljs-atelier-forest-light .hljs-template-variable,.hljs-atelier-forest-light .hljs-attribute,.hljs-atelier-forest-light .hljs-tag,.hljs-atelier-forest-light .hljs-name,.hljs-atelier-forest-light .hljs-regexp,.hljs-atelier-forest-light .hljs-link,.hljs-atelier-forest-light .hljs-name,.hljs-atelier-forest-light .hljs-selector-id,.hljs-atelier-forest-light .hljs-selector-class{color:#f22c40}.hljs-atelier-forest-light .hljs-number,.hljs-atelier-forest-light .hljs-meta,.hljs-atelier-forest-light .hljs-built_in,.hljs-atelier-forest-light .hljs-builtin-name,.hljs-atelier-forest-light .hljs-literal,.hljs-atelier-forest-light .hljs-type,.hljs-atelier-forest-light .hljs-params{color:#df5320}.hljs-atelier-forest-light .hljs-string,.hljs-atelier-forest-light .hljs-symbol,.hljs-atelier-forest-light .hljs-bullet{color:#7b9726}.hljs-atelier-forest-light .hljs-title,.hljs-atelier-forest-light .hljs-section{color:#407ee7}.hljs-atelier-forest-light .hljs-keyword,.hljs-atelier-forest-light .hljs-selector-tag{color:#6666ea}.hljs-atelier-forest-light .hljs{display:block;overflow-x:auto;background:#f1efee;color:#68615e;padding:.5em}.hljs-atelier-forest-light .hljs-emphasis{font-style:italic}.hljs-atelier-forest-light .hljs-strong{font-weight:bold}\",\"atelier-heath-dark\":\".hljs-atelier-heath-dark .hljs-comment,.hljs-atelier-heath-dark .hljs-quote{color:#9e8f9e}.hljs-atelier-heath-dark .hljs-variable,.hljs-atelier-heath-dark .hljs-template-variable,.hljs-atelier-heath-dark .hljs-attribute,.hljs-atelier-heath-dark .hljs-tag,.hljs-atelier-heath-dark .hljs-name,.hljs-atelier-heath-dark .hljs-regexp,.hljs-atelier-heath-dark .hljs-link,.hljs-atelier-heath-dark .hljs-name,.hljs-atelier-heath-dark .hljs-selector-id,.hljs-atelier-heath-dark .hljs-selector-class{color:#ca402b}.hljs-atelier-heath-dark .hljs-number,.hljs-atelier-heath-dark .hljs-meta,.hljs-atelier-heath-dark .hljs-built_in,.hljs-atelier-heath-dark .hljs-builtin-name,.hljs-atelier-heath-dark .hljs-literal,.hljs-atelier-heath-dark .hljs-type,.hljs-atelier-heath-dark .hljs-params{color:#a65926}.hljs-atelier-heath-dark .hljs-string,.hljs-atelier-heath-dark .hljs-symbol,.hljs-atelier-heath-dark .hljs-bullet{color:#918b3b}.hljs-atelier-heath-dark .hljs-title,.hljs-atelier-heath-dark .hljs-section{color:#516aec}.hljs-atelier-heath-dark .hljs-keyword,.hljs-atelier-heath-dark .hljs-selector-tag{color:#7b59c0}.hljs-atelier-heath-dark .hljs{display:block;overflow-x:auto;background:#1b181b;color:#ab9bab;padding:.5em}.hljs-atelier-heath-dark .hljs-emphasis{font-style:italic}.hljs-atelier-heath-dark .hljs-strong{font-weight:bold}\",\"atelier-heath-light\":\".hljs-atelier-heath-light .hljs-comment,.hljs-atelier-heath-light .hljs-quote{color:#776977}.hljs-atelier-heath-light .hljs-variable,.hljs-atelier-heath-light .hljs-template-variable,.hljs-atelier-heath-light .hljs-attribute,.hljs-atelier-heath-light .hljs-tag,.hljs-atelier-heath-light .hljs-name,.hljs-atelier-heath-light .hljs-regexp,.hljs-atelier-heath-light .hljs-link,.hljs-atelier-heath-light .hljs-name,.hljs-atelier-heath-light .hljs-selector-id,.hljs-atelier-heath-light .hljs-selector-class{color:#ca402b}.hljs-atelier-heath-light .hljs-number,.hljs-atelier-heath-light .hljs-meta,.hljs-atelier-heath-light .hljs-built_in,.hljs-atelier-heath-light .hljs-builtin-name,.hljs-atelier-heath-light .hljs-literal,.hljs-atelier-heath-light .hljs-type,.hljs-atelier-heath-light .hljs-params{color:#a65926}.hljs-atelier-heath-light .hljs-string,.hljs-atelier-heath-light .hljs-symbol,.hljs-atelier-heath-light .hljs-bullet{color:#918b3b}.hljs-atelier-heath-light .hljs-title,.hljs-atelier-heath-light .hljs-section{color:#516aec}.hljs-atelier-heath-light .hljs-keyword,.hljs-atelier-heath-light .hljs-selector-tag{color:#7b59c0}.hljs-atelier-heath-light .hljs{display:block;overflow-x:auto;background:#f7f3f7;color:#695d69;padding:.5em}.hljs-atelier-heath-light .hljs-emphasis{font-style:italic}.hljs-atelier-heath-light .hljs-strong{font-weight:bold}\",\"atelier-lakeside-dark\":\".hljs-atelier-lakeside-dark .hljs-comment,.hljs-atelier-lakeside-dark .hljs-quote{color:#7195a8}.hljs-atelier-lakeside-dark .hljs-variable,.hljs-atelier-lakeside-dark .hljs-template-variable,.hljs-atelier-lakeside-dark .hljs-attribute,.hljs-atelier-lakeside-dark .hljs-tag,.hljs-atelier-lakeside-dark .hljs-name,.hljs-atelier-lakeside-dark .hljs-regexp,.hljs-atelier-lakeside-dark .hljs-link,.hljs-atelier-lakeside-dark .hljs-name,.hljs-atelier-lakeside-dark .hljs-selector-id,.hljs-atelier-lakeside-dark .hljs-selector-class{color:#d22d72}.hljs-atelier-lakeside-dark .hljs-number,.hljs-atelier-lakeside-dark .hljs-meta,.hljs-atelier-lakeside-dark .hljs-built_in,.hljs-atelier-lakeside-dark .hljs-builtin-name,.hljs-atelier-lakeside-dark .hljs-literal,.hljs-atelier-lakeside-dark .hljs-type,.hljs-atelier-lakeside-dark .hljs-params{color:#935c25}.hljs-atelier-lakeside-dark .hljs-string,.hljs-atelier-lakeside-dark .hljs-symbol,.hljs-atelier-lakeside-dark .hljs-bullet{color:#568c3b}.hljs-atelier-lakeside-dark .hljs-title,.hljs-atelier-lakeside-dark .hljs-section{color:#257fad}.hljs-atelier-lakeside-dark .hljs-keyword,.hljs-atelier-lakeside-dark .hljs-selector-tag{color:#6b6bb8}.hljs-atelier-lakeside-dark .hljs{display:block;overflow-x:auto;background:#161b1d;color:#7ea2b4;padding:.5em}.hljs-atelier-lakeside-dark .hljs-emphasis{font-style:italic}.hljs-atelier-lakeside-dark .hljs-strong{font-weight:bold}\",\"atelier-lakeside-light\":\".hljs-atelier-lakeside-light .hljs-comment,.hljs-atelier-lakeside-light .hljs-quote{color:#5a7b8c}.hljs-atelier-lakeside-light .hljs-variable,.hljs-atelier-lakeside-light .hljs-template-variable,.hljs-atelier-lakeside-light .hljs-attribute,.hljs-atelier-lakeside-light .hljs-tag,.hljs-atelier-lakeside-light .hljs-name,.hljs-atelier-lakeside-light .hljs-regexp,.hljs-atelier-lakeside-light .hljs-link,.hljs-atelier-lakeside-light .hljs-name,.hljs-atelier-lakeside-light .hljs-selector-id,.hljs-atelier-lakeside-light .hljs-selector-class{color:#d22d72}.hljs-atelier-lakeside-light .hljs-number,.hljs-atelier-lakeside-light .hljs-meta,.hljs-atelier-lakeside-light .hljs-built_in,.hljs-atelier-lakeside-light .hljs-builtin-name,.hljs-atelier-lakeside-light .hljs-literal,.hljs-atelier-lakeside-light .hljs-type,.hljs-atelier-lakeside-light .hljs-params{color:#935c25}.hljs-atelier-lakeside-light .hljs-string,.hljs-atelier-lakeside-light .hljs-symbol,.hljs-atelier-lakeside-light .hljs-bullet{color:#568c3b}.hljs-atelier-lakeside-light .hljs-title,.hljs-atelier-lakeside-light .hljs-section{color:#257fad}.hljs-atelier-lakeside-light .hljs-keyword,.hljs-atelier-lakeside-light .hljs-selector-tag{color:#6b6bb8}.hljs-atelier-lakeside-light .hljs{display:block;overflow-x:auto;background:#ebf8ff;color:#516d7b;padding:.5em}.hljs-atelier-lakeside-light .hljs-emphasis{font-style:italic}.hljs-atelier-lakeside-light .hljs-strong{font-weight:bold}\",\"atelier-plateau-dark\":\".hljs-atelier-plateau-dark .hljs-comment,.hljs-atelier-plateau-dark .hljs-quote{color:#7e7777}.hljs-atelier-plateau-dark .hljs-variable,.hljs-atelier-plateau-dark .hljs-template-variable,.hljs-atelier-plateau-dark .hljs-attribute,.hljs-atelier-plateau-dark .hljs-tag,.hljs-atelier-plateau-dark .hljs-name,.hljs-atelier-plateau-dark .hljs-regexp,.hljs-atelier-plateau-dark .hljs-link,.hljs-atelier-plateau-dark .hljs-name,.hljs-atelier-plateau-dark .hljs-selector-id,.hljs-atelier-plateau-dark .hljs-selector-class{color:#ca4949}.hljs-atelier-plateau-dark .hljs-number,.hljs-atelier-plateau-dark .hljs-meta,.hljs-atelier-plateau-dark .hljs-built_in,.hljs-atelier-plateau-dark .hljs-builtin-name,.hljs-atelier-plateau-dark .hljs-literal,.hljs-atelier-plateau-dark .hljs-type,.hljs-atelier-plateau-dark .hljs-params{color:#b45a3c}.hljs-atelier-plateau-dark .hljs-string,.hljs-atelier-plateau-dark .hljs-symbol,.hljs-atelier-plateau-dark .hljs-bullet{color:#4b8b8b}.hljs-atelier-plateau-dark .hljs-title,.hljs-atelier-plateau-dark .hljs-section{color:#7272ca}.hljs-atelier-plateau-dark .hljs-keyword,.hljs-atelier-plateau-dark .hljs-selector-tag{color:#8464c4}.hljs-atelier-plateau-dark .hljs-deletion,.hljs-atelier-plateau-dark .hljs-addition{color:#1b1818;display:inline-block;width:100%}.hljs-atelier-plateau-dark .hljs-deletion{background-color:#ca4949}.hljs-atelier-plateau-dark .hljs-addition{background-color:#4b8b8b}.hljs-atelier-plateau-dark .hljs{display:block;overflow-x:auto;background:#1b1818;color:#8a8585;padding:.5em}.hljs-atelier-plateau-dark .hljs-emphasis{font-style:italic}.hljs-atelier-plateau-dark .hljs-strong{font-weight:bold}\",\"atelier-plateau-light\":\".hljs-atelier-plateau-light .hljs-comment,.hljs-atelier-plateau-light .hljs-quote{color:#655d5d}.hljs-atelier-plateau-light .hljs-variable,.hljs-atelier-plateau-light .hljs-template-variable,.hljs-atelier-plateau-light .hljs-attribute,.hljs-atelier-plateau-light .hljs-tag,.hljs-atelier-plateau-light .hljs-name,.hljs-atelier-plateau-light .hljs-regexp,.hljs-atelier-plateau-light .hljs-link,.hljs-atelier-plateau-light .hljs-name,.hljs-atelier-plateau-light .hljs-selector-id,.hljs-atelier-plateau-light .hljs-selector-class{color:#ca4949}.hljs-atelier-plateau-light .hljs-number,.hljs-atelier-plateau-light .hljs-meta,.hljs-atelier-plateau-light .hljs-built_in,.hljs-atelier-plateau-light .hljs-builtin-name,.hljs-atelier-plateau-light .hljs-literal,.hljs-atelier-plateau-light .hljs-type,.hljs-atelier-plateau-light .hljs-params{color:#b45a3c}.hljs-atelier-plateau-light .hljs-string,.hljs-atelier-plateau-light .hljs-symbol,.hljs-atelier-plateau-light .hljs-bullet{color:#4b8b8b}.hljs-atelier-plateau-light .hljs-title,.hljs-atelier-plateau-light .hljs-section{color:#7272ca}.hljs-atelier-plateau-light .hljs-keyword,.hljs-atelier-plateau-light .hljs-selector-tag{color:#8464c4}.hljs-atelier-plateau-light .hljs-deletion,.hljs-atelier-plateau-light .hljs-addition{color:#1b1818;display:inline-block;width:100%}.hljs-atelier-plateau-light .hljs-deletion{background-color:#ca4949}.hljs-atelier-plateau-light .hljs-addition{background-color:#4b8b8b}.hljs-atelier-plateau-light .hljs{display:block;overflow-x:auto;background:#f4ecec;color:#585050;padding:.5em}.hljs-atelier-plateau-light .hljs-emphasis{font-style:italic}.hljs-atelier-plateau-light .hljs-strong{font-weight:bold}\",\"atelier-savanna-dark\":\".hljs-atelier-savanna-dark .hljs-comment,.hljs-atelier-savanna-dark .hljs-quote{color:#78877d}.hljs-atelier-savanna-dark .hljs-variable,.hljs-atelier-savanna-dark .hljs-template-variable,.hljs-atelier-savanna-dark .hljs-attribute,.hljs-atelier-savanna-dark .hljs-tag,.hljs-atelier-savanna-dark .hljs-name,.hljs-atelier-savanna-dark .hljs-regexp,.hljs-atelier-savanna-dark .hljs-link,.hljs-atelier-savanna-dark .hljs-name,.hljs-atelier-savanna-dark .hljs-selector-id,.hljs-atelier-savanna-dark .hljs-selector-class{color:#b16139}.hljs-atelier-savanna-dark .hljs-number,.hljs-atelier-savanna-dark .hljs-meta,.hljs-atelier-savanna-dark .hljs-built_in,.hljs-atelier-savanna-dark .hljs-builtin-name,.hljs-atelier-savanna-dark .hljs-literal,.hljs-atelier-savanna-dark .hljs-type,.hljs-atelier-savanna-dark .hljs-params{color:#9f713c}.hljs-atelier-savanna-dark .hljs-string,.hljs-atelier-savanna-dark .hljs-symbol,.hljs-atelier-savanna-dark .hljs-bullet{color:#489963}.hljs-atelier-savanna-dark .hljs-title,.hljs-atelier-savanna-dark .hljs-section{color:#478c90}.hljs-atelier-savanna-dark .hljs-keyword,.hljs-atelier-savanna-dark .hljs-selector-tag{color:#55859b}.hljs-atelier-savanna-dark .hljs-deletion,.hljs-atelier-savanna-dark .hljs-addition{color:#171c19;display:inline-block;width:100%}.hljs-atelier-savanna-dark .hljs-deletion{background-color:#b16139}.hljs-atelier-savanna-dark .hljs-addition{background-color:#489963}.hljs-atelier-savanna-dark .hljs{display:block;overflow-x:auto;background:#171c19;color:#87928a;padding:.5em}.hljs-atelier-savanna-dark .hljs-emphasis{font-style:italic}.hljs-atelier-savanna-dark .hljs-strong{font-weight:bold}\",\"atelier-savanna-light\":\".hljs-atelier-savanna-light .hljs-comment,.hljs-atelier-savanna-light .hljs-quote{color:#5f6d64}.hljs-atelier-savanna-light .hljs-variable,.hljs-atelier-savanna-light .hljs-template-variable,.hljs-atelier-savanna-light .hljs-attribute,.hljs-atelier-savanna-light .hljs-tag,.hljs-atelier-savanna-light .hljs-name,.hljs-atelier-savanna-light .hljs-regexp,.hljs-atelier-savanna-light .hljs-link,.hljs-atelier-savanna-light .hljs-name,.hljs-atelier-savanna-light .hljs-selector-id,.hljs-atelier-savanna-light .hljs-selector-class{color:#b16139}.hljs-atelier-savanna-light .hljs-number,.hljs-atelier-savanna-light .hljs-meta,.hljs-atelier-savanna-light .hljs-built_in,.hljs-atelier-savanna-light .hljs-builtin-name,.hljs-atelier-savanna-light .hljs-literal,.hljs-atelier-savanna-light .hljs-type,.hljs-atelier-savanna-light .hljs-params{color:#9f713c}.hljs-atelier-savanna-light .hljs-string,.hljs-atelier-savanna-light .hljs-symbol,.hljs-atelier-savanna-light .hljs-bullet{color:#489963}.hljs-atelier-savanna-light .hljs-title,.hljs-atelier-savanna-light .hljs-section{color:#478c90}.hljs-atelier-savanna-light .hljs-keyword,.hljs-atelier-savanna-light .hljs-selector-tag{color:#55859b}.hljs-atelier-savanna-light .hljs-deletion,.hljs-atelier-savanna-light .hljs-addition{color:#171c19;display:inline-block;width:100%}.hljs-atelier-savanna-light .hljs-deletion{background-color:#b16139}.hljs-atelier-savanna-light .hljs-addition{background-color:#489963}.hljs-atelier-savanna-light .hljs{display:block;overflow-x:auto;background:#ecf4ee;color:#526057;padding:.5em}.hljs-atelier-savanna-light .hljs-emphasis{font-style:italic}.hljs-atelier-savanna-light .hljs-strong{font-weight:bold}\",\"atelier-seaside-dark\":\".hljs-atelier-seaside-dark .hljs-comment,.hljs-atelier-seaside-dark .hljs-quote{color:#809980}.hljs-atelier-seaside-dark .hljs-variable,.hljs-atelier-seaside-dark .hljs-template-variable,.hljs-atelier-seaside-dark .hljs-attribute,.hljs-atelier-seaside-dark .hljs-tag,.hljs-atelier-seaside-dark .hljs-name,.hljs-atelier-seaside-dark .hljs-regexp,.hljs-atelier-seaside-dark .hljs-link,.hljs-atelier-seaside-dark .hljs-name,.hljs-atelier-seaside-dark .hljs-selector-id,.hljs-atelier-seaside-dark .hljs-selector-class{color:#e6193c}.hljs-atelier-seaside-dark .hljs-number,.hljs-atelier-seaside-dark .hljs-meta,.hljs-atelier-seaside-dark .hljs-built_in,.hljs-atelier-seaside-dark .hljs-builtin-name,.hljs-atelier-seaside-dark .hljs-literal,.hljs-atelier-seaside-dark .hljs-type,.hljs-atelier-seaside-dark .hljs-params{color:#87711d}.hljs-atelier-seaside-dark .hljs-string,.hljs-atelier-seaside-dark .hljs-symbol,.hljs-atelier-seaside-dark .hljs-bullet{color:#29a329}.hljs-atelier-seaside-dark .hljs-title,.hljs-atelier-seaside-dark .hljs-section{color:#3d62f5}.hljs-atelier-seaside-dark .hljs-keyword,.hljs-atelier-seaside-dark .hljs-selector-tag{color:#ad2bee}.hljs-atelier-seaside-dark .hljs{display:block;overflow-x:auto;background:#131513;color:#8ca68c;padding:.5em}.hljs-atelier-seaside-dark .hljs-emphasis{font-style:italic}.hljs-atelier-seaside-dark .hljs-strong{font-weight:bold}\",\"atelier-seaside-light\":\".hljs-atelier-seaside-light .hljs-comment,.hljs-atelier-seaside-light .hljs-quote{color:#687d68}.hljs-atelier-seaside-light .hljs-variable,.hljs-atelier-seaside-light .hljs-template-variable,.hljs-atelier-seaside-light .hljs-attribute,.hljs-atelier-seaside-light .hljs-tag,.hljs-atelier-seaside-light .hljs-name,.hljs-atelier-seaside-light .hljs-regexp,.hljs-atelier-seaside-light .hljs-link,.hljs-atelier-seaside-light .hljs-name,.hljs-atelier-seaside-light .hljs-selector-id,.hljs-atelier-seaside-light .hljs-selector-class{color:#e6193c}.hljs-atelier-seaside-light .hljs-number,.hljs-atelier-seaside-light .hljs-meta,.hljs-atelier-seaside-light .hljs-built_in,.hljs-atelier-seaside-light .hljs-builtin-name,.hljs-atelier-seaside-light .hljs-literal,.hljs-atelier-seaside-light .hljs-type,.hljs-atelier-seaside-light .hljs-params{color:#87711d}.hljs-atelier-seaside-light .hljs-string,.hljs-atelier-seaside-light .hljs-symbol,.hljs-atelier-seaside-light .hljs-bullet{color:#29a329}.hljs-atelier-seaside-light .hljs-title,.hljs-atelier-seaside-light .hljs-section{color:#3d62f5}.hljs-atelier-seaside-light .hljs-keyword,.hljs-atelier-seaside-light .hljs-selector-tag{color:#ad2bee}.hljs-atelier-seaside-light .hljs{display:block;overflow-x:auto;background:#f4fbf4;color:#5e6e5e;padding:.5em}.hljs-atelier-seaside-light .hljs-emphasis{font-style:italic}.hljs-atelier-seaside-light .hljs-strong{font-weight:bold}\",\"atelier-sulphurpool-dark\":\".hljs-atelier-sulphurpool-dark .hljs-comment,.hljs-atelier-sulphurpool-dark .hljs-quote{color:#898ea4}.hljs-atelier-sulphurpool-dark .hljs-variable,.hljs-atelier-sulphurpool-dark .hljs-template-variable,.hljs-atelier-sulphurpool-dark .hljs-attribute,.hljs-atelier-sulphurpool-dark .hljs-tag,.hljs-atelier-sulphurpool-dark .hljs-name,.hljs-atelier-sulphurpool-dark .hljs-regexp,.hljs-atelier-sulphurpool-dark .hljs-link,.hljs-atelier-sulphurpool-dark .hljs-name,.hljs-atelier-sulphurpool-dark .hljs-selector-id,.hljs-atelier-sulphurpool-dark .hljs-selector-class{color:#c94922}.hljs-atelier-sulphurpool-dark .hljs-number,.hljs-atelier-sulphurpool-dark .hljs-meta,.hljs-atelier-sulphurpool-dark .hljs-built_in,.hljs-atelier-sulphurpool-dark .hljs-builtin-name,.hljs-atelier-sulphurpool-dark .hljs-literal,.hljs-atelier-sulphurpool-dark .hljs-type,.hljs-atelier-sulphurpool-dark .hljs-params{color:#c76b29}.hljs-atelier-sulphurpool-dark .hljs-string,.hljs-atelier-sulphurpool-dark .hljs-symbol,.hljs-atelier-sulphurpool-dark .hljs-bullet{color:#ac9739}.hljs-atelier-sulphurpool-dark .hljs-title,.hljs-atelier-sulphurpool-dark .hljs-section{color:#3d8fd1}.hljs-atelier-sulphurpool-dark .hljs-keyword,.hljs-atelier-sulphurpool-dark .hljs-selector-tag{color:#6679cc}.hljs-atelier-sulphurpool-dark .hljs{display:block;overflow-x:auto;background:#202746;color:#979db4;padding:.5em}.hljs-atelier-sulphurpool-dark .hljs-emphasis{font-style:italic}.hljs-atelier-sulphurpool-dark .hljs-strong{font-weight:bold}\",\"atelier-sulphurpool-light\":\".hljs-atelier-sulphurpool-light .hljs-comment,.hljs-atelier-sulphurpool-light .hljs-quote{color:#6b7394}.hljs-atelier-sulphurpool-light .hljs-variable,.hljs-atelier-sulphurpool-light .hljs-template-variable,.hljs-atelier-sulphurpool-light .hljs-attribute,.hljs-atelier-sulphurpool-light .hljs-tag,.hljs-atelier-sulphurpool-light .hljs-name,.hljs-atelier-sulphurpool-light .hljs-regexp,.hljs-atelier-sulphurpool-light .hljs-link,.hljs-atelier-sulphurpool-light .hljs-name,.hljs-atelier-sulphurpool-light .hljs-selector-id,.hljs-atelier-sulphurpool-light .hljs-selector-class{color:#c94922}.hljs-atelier-sulphurpool-light .hljs-number,.hljs-atelier-sulphurpool-light .hljs-meta,.hljs-atelier-sulphurpool-light .hljs-built_in,.hljs-atelier-sulphurpool-light .hljs-builtin-name,.hljs-atelier-sulphurpool-light .hljs-literal,.hljs-atelier-sulphurpool-light .hljs-type,.hljs-atelier-sulphurpool-light .hljs-params{color:#c76b29}.hljs-atelier-sulphurpool-light .hljs-string,.hljs-atelier-sulphurpool-light .hljs-symbol,.hljs-atelier-sulphurpool-light .hljs-bullet{color:#ac9739}.hljs-atelier-sulphurpool-light .hljs-title,.hljs-atelier-sulphurpool-light .hljs-section{color:#3d8fd1}.hljs-atelier-sulphurpool-light .hljs-keyword,.hljs-atelier-sulphurpool-light .hljs-selector-tag{color:#6679cc}.hljs-atelier-sulphurpool-light .hljs{display:block;overflow-x:auto;background:#f5f7ff;color:#5e6687;padding:.5em}.hljs-atelier-sulphurpool-light .hljs-emphasis{font-style:italic}.hljs-atelier-sulphurpool-light .hljs-strong{font-weight:bold}\",\"atom-one-dark\":\".hljs-atom-one-dark .hljs{display:block;overflow-x:auto;padding:.5em;color:#abb2bf;background:#282c34}.hljs-atom-one-dark .hljs-comment,.hljs-atom-one-dark .hljs-quote{color:#5c6370;font-style:italic}.hljs-atom-one-dark .hljs-doctag,.hljs-atom-one-dark .hljs-keyword,.hljs-atom-one-dark .hljs-formula{color:#c678dd}.hljs-atom-one-dark .hljs-section,.hljs-atom-one-dark .hljs-name,.hljs-atom-one-dark .hljs-selector-tag,.hljs-atom-one-dark .hljs-deletion,.hljs-atom-one-dark .hljs-subst{color:#e06c75}.hljs-atom-one-dark .hljs-literal{color:#56b6c2}.hljs-atom-one-dark .hljs-string,.hljs-atom-one-dark .hljs-regexp,.hljs-atom-one-dark .hljs-addition,.hljs-atom-one-dark .hljs-attribute,.hljs-atom-one-dark .hljs-meta-string{color:#98c379}.hljs-atom-one-dark .hljs-built_in,.hljs-atom-one-dark .hljs-class .hljs-title{color:#e6c07b}.hljs-atom-one-dark .hljs-variable,.hljs-atom-one-dark .hljs-template-variable,.hljs-atom-one-dark .hljs-type,.hljs-atom-one-dark .hljs-selector-class,.hljs-atom-one-dark .hljs-selector-attr,.hljs-atom-one-dark .hljs-selector-pseudo,.hljs-atom-one-dark .hljs-number{color:#d19a66}.hljs-atom-one-dark .hljs-symbol,.hljs-atom-one-dark .hljs-bullet,.hljs-atom-one-dark .hljs-link,.hljs-atom-one-dark .hljs-meta,.hljs-atom-one-dark .hljs-selector-id,.hljs-atom-one-dark .hljs-title{color:#61aeee}.hljs-atom-one-dark .hljs-emphasis{font-style:italic}.hljs-atom-one-dark .hljs-strong{font-weight:bold}.hljs-atom-one-dark .hljs-link{text-decoration:underline}\",\"atom-one-light\":\".hljs-atom-one-light .hljs{display:block;overflow-x:auto;padding:.5em;color:#383a42;background:#fafafa}.hljs-atom-one-light .hljs-comment,.hljs-atom-one-light .hljs-quote{color:#a0a1a7;font-style:italic}.hljs-atom-one-light .hljs-doctag,.hljs-atom-one-light .hljs-keyword,.hljs-atom-one-light .hljs-formula{color:#a626a4}.hljs-atom-one-light .hljs-section,.hljs-atom-one-light .hljs-name,.hljs-atom-one-light .hljs-selector-tag,.hljs-atom-one-light .hljs-deletion,.hljs-atom-one-light .hljs-subst{color:#e45649}.hljs-atom-one-light .hljs-literal{color:#0184bb}.hljs-atom-one-light .hljs-string,.hljs-atom-one-light .hljs-regexp,.hljs-atom-one-light .hljs-addition,.hljs-atom-one-light .hljs-attribute,.hljs-atom-one-light .hljs-meta-string{color:#50a14f}.hljs-atom-one-light .hljs-built_in,.hljs-atom-one-light .hljs-class .hljs-title{color:#c18401}.hljs-atom-one-light .hljs-variable,.hljs-atom-one-light .hljs-template-variable,.hljs-atom-one-light .hljs-type,.hljs-atom-one-light .hljs-selector-class,.hljs-atom-one-light .hljs-selector-attr,.hljs-atom-one-light .hljs-selector-pseudo,.hljs-atom-one-light .hljs-number{color:#986801}.hljs-atom-one-light .hljs-symbol,.hljs-atom-one-light .hljs-bullet,.hljs-atom-one-light .hljs-link,.hljs-atom-one-light .hljs-meta,.hljs-atom-one-light .hljs-selector-id,.hljs-atom-one-light .hljs-title{color:#4078f2}.hljs-atom-one-light .hljs-emphasis{font-style:italic}.hljs-atom-one-light .hljs-strong{font-weight:bold}.hljs-atom-one-light .hljs-link{text-decoration:underline}\",\"brown-paper\":\".hljs-brown-paper .hljs{display:block;overflow-x:auto;padding:.5em;background:#b7a68e url(brown-papersq.png)}.hljs-brown-paper .hljs-keyword,.hljs-brown-paper .hljs-selector-tag,.hljs-brown-paper .hljs-literal{color:#005599;font-weight:bold}.hljs-brown-paper .hljs,.hljs-brown-paper .hljs-subst{color:#363c69}.hljs-brown-paper .hljs-string,.hljs-brown-paper .hljs-title,.hljs-brown-paper .hljs-section,.hljs-brown-paper .hljs-type,.hljs-brown-paper .hljs-attribute,.hljs-brown-paper .hljs-symbol,.hljs-brown-paper .hljs-bullet,.hljs-brown-paper .hljs-built_in,.hljs-brown-paper .hljs-addition,.hljs-brown-paper .hljs-variable,.hljs-brown-paper .hljs-template-tag,.hljs-brown-paper .hljs-template-variable,.hljs-brown-paper .hljs-link,.hljs-brown-paper .hljs-name{color:#2c009f}.hljs-brown-paper .hljs-comment,.hljs-brown-paper .hljs-quote,.hljs-brown-paper .hljs-meta,.hljs-brown-paper .hljs-deletion{color:#802022}.hljs-brown-paper .hljs-keyword,.hljs-brown-paper .hljs-selector-tag,.hljs-brown-paper .hljs-literal,.hljs-brown-paper .hljs-doctag,.hljs-brown-paper .hljs-title,.hljs-brown-paper .hljs-section,.hljs-brown-paper .hljs-type,.hljs-brown-paper .hljs-name,.hljs-brown-paper .hljs-strong{font-weight:bold}.hljs-brown-paper .hljs-emphasis{font-style:italic}\",\"codepen-embed\":\".hljs-codepen-embed .hljs{display:block;overflow-x:auto;padding:.5em;background:#222;color:#fff}.hljs-codepen-embed .hljs-comment,.hljs-codepen-embed .hljs-quote{color:#777}.hljs-codepen-embed .hljs-variable,.hljs-codepen-embed .hljs-template-variable,.hljs-codepen-embed .hljs-tag,.hljs-codepen-embed .hljs-regexp,.hljs-codepen-embed .hljs-meta,.hljs-codepen-embed .hljs-number,.hljs-codepen-embed .hljs-built_in,.hljs-codepen-embed .hljs-builtin-name,.hljs-codepen-embed .hljs-literal,.hljs-codepen-embed .hljs-params,.hljs-codepen-embed .hljs-symbol,.hljs-codepen-embed .hljs-bullet,.hljs-codepen-embed .hljs-link,.hljs-codepen-embed .hljs-deletion{color:#ab875d}.hljs-codepen-embed .hljs-section,.hljs-codepen-embed .hljs-title,.hljs-codepen-embed .hljs-name,.hljs-codepen-embed .hljs-selector-id,.hljs-codepen-embed .hljs-selector-class,.hljs-codepen-embed .hljs-type,.hljs-codepen-embed .hljs-attribute{color:#9b869b}.hljs-codepen-embed .hljs-string,.hljs-codepen-embed .hljs-keyword,.hljs-codepen-embed .hljs-selector-tag,.hljs-codepen-embed .hljs-addition{color:#8f9c6c}.hljs-codepen-embed .hljs-emphasis{font-style:italic}.hljs-codepen-embed .hljs-strong{font-weight:bold}\",\"color-brewer\":\".hljs-color-brewer .hljs{display:block;overflow-x:auto;padding:.5em;background:#fff}.hljs-color-brewer .hljs,.hljs-color-brewer .hljs-subst{color:#000}.hljs-color-brewer .hljs-string,.hljs-color-brewer .hljs-meta,.hljs-color-brewer .hljs-symbol,.hljs-color-brewer .hljs-template-tag,.hljs-color-brewer .hljs-template-variable,.hljs-color-brewer .hljs-addition{color:#756bb1}.hljs-color-brewer .hljs-comment,.hljs-color-brewer .hljs-quote{color:#636363}.hljs-color-brewer .hljs-number,.hljs-color-brewer .hljs-regexp,.hljs-color-brewer .hljs-literal,.hljs-color-brewer .hljs-bullet,.hljs-color-brewer .hljs-link{color:#31a354}.hljs-color-brewer .hljs-deletion,.hljs-color-brewer .hljs-variable{color:#88f}.hljs-color-brewer .hljs-keyword,.hljs-color-brewer .hljs-selector-tag,.hljs-color-brewer .hljs-title,.hljs-color-brewer .hljs-section,.hljs-color-brewer .hljs-built_in,.hljs-color-brewer .hljs-doctag,.hljs-color-brewer .hljs-type,.hljs-color-brewer .hljs-tag,.hljs-color-brewer .hljs-name,.hljs-color-brewer .hljs-selector-id,.hljs-color-brewer .hljs-selector-class,.hljs-color-brewer .hljs-strong{color:#3182bd}.hljs-color-brewer .hljs-emphasis{font-style:italic}.hljs-color-brewer .hljs-attribute{color:#e6550d}\",\"darcula\":\".hljs-darcula .hljs{display:block;overflow-x:auto;padding:.5em;background:#2b2b2b}.hljs-darcula .hljs{color:#bababa}.hljs-darcula .hljs-strong,.hljs-darcula .hljs-emphasis{color:#a8a8a2}.hljs-darcula .hljs-bullet,.hljs-darcula .hljs-quote,.hljs-darcula .hljs-link,.hljs-darcula .hljs-number,.hljs-darcula .hljs-regexp,.hljs-darcula .hljs-literal{color:#6896ba}.hljs-darcula .hljs-code,.hljs-darcula .hljs-selector-class{color:#a6e22e}.hljs-darcula .hljs-emphasis{font-style:italic}.hljs-darcula .hljs-keyword,.hljs-darcula .hljs-selector-tag,.hljs-darcula .hljs-section,.hljs-darcula .hljs-attribute,.hljs-darcula .hljs-name,.hljs-darcula .hljs-variable{color:#cb7832}.hljs-darcula .hljs-params{color:#b9b9b9}.hljs-darcula .hljs-string{color:#6a8759}.hljs-darcula .hljs-subst,.hljs-darcula .hljs-type,.hljs-darcula .hljs-built_in,.hljs-darcula .hljs-builtin-name,.hljs-darcula .hljs-symbol,.hljs-darcula .hljs-selector-id,.hljs-darcula .hljs-selector-attr,.hljs-darcula .hljs-selector-pseudo,.hljs-darcula .hljs-template-tag,.hljs-darcula .hljs-template-variable,.hljs-darcula .hljs-addition{color:#e0c46c}.hljs-darcula .hljs-comment,.hljs-darcula .hljs-deletion,.hljs-darcula .hljs-meta{color:#7f7f7f}\",\"dark\":\".hljs-dark .hljs{display:block;overflow-x:auto;padding:.5em;background:#444}.hljs-dark .hljs-keyword,.hljs-dark .hljs-selector-tag,.hljs-dark .hljs-literal,.hljs-dark .hljs-section,.hljs-dark .hljs-link{color:white}.hljs-dark .hljs,.hljs-dark .hljs-subst{color:#ddd}.hljs-dark .hljs-string,.hljs-dark .hljs-title,.hljs-dark .hljs-name,.hljs-dark .hljs-type,.hljs-dark .hljs-attribute,.hljs-dark .hljs-symbol,.hljs-dark .hljs-bullet,.hljs-dark .hljs-built_in,.hljs-dark .hljs-addition,.hljs-dark .hljs-variable,.hljs-dark .hljs-template-tag,.hljs-dark .hljs-template-variable{color:#d88}.hljs-dark .hljs-comment,.hljs-dark .hljs-quote,.hljs-dark .hljs-deletion,.hljs-dark .hljs-meta{color:#777}.hljs-dark .hljs-keyword,.hljs-dark .hljs-selector-tag,.hljs-dark .hljs-literal,.hljs-dark .hljs-title,.hljs-dark .hljs-section,.hljs-dark .hljs-doctag,.hljs-dark .hljs-type,.hljs-dark .hljs-name,.hljs-dark .hljs-strong{font-weight:bold}.hljs-dark .hljs-emphasis{font-style:italic}\",\"darkula\":\".hljs-darkula{@import url('darcula.css');}\",\"default\":\".hljs-default .hljs{display:block;overflow-x:auto;padding:.5em;background:#F0F0F0}.hljs-default .hljs,.hljs-default .hljs-subst{color:#444}.hljs-default .hljs-comment{color:#888888}.hljs-default .hljs-keyword,.hljs-default .hljs-attribute,.hljs-default .hljs-selector-tag,.hljs-default .hljs-meta-keyword,.hljs-default .hljs-doctag,.hljs-default .hljs-name{font-weight:bold}.hljs-default .hljs-type,.hljs-default .hljs-string,.hljs-default .hljs-number,.hljs-default .hljs-selector-id,.hljs-default .hljs-selector-class,.hljs-default .hljs-quote,.hljs-default .hljs-template-tag,.hljs-default .hljs-deletion{color:#880000}.hljs-default .hljs-title,.hljs-default .hljs-section{color:#880000;font-weight:bold}.hljs-default .hljs-regexp,.hljs-default .hljs-symbol,.hljs-default .hljs-variable,.hljs-default .hljs-template-variable,.hljs-default .hljs-link,.hljs-default .hljs-selector-attr,.hljs-default .hljs-selector-pseudo{color:#BC6060}.hljs-default .hljs-literal{color:#78A960}.hljs-default .hljs-built_in,.hljs-default .hljs-bullet,.hljs-default .hljs-code,.hljs-default .hljs-addition{color:#397300}.hljs-default .hljs-meta{color:#1f7199}.hljs-default .hljs-meta-string{color:#4d99bf}.hljs-default .hljs-emphasis{font-style:italic}.hljs-default .hljs-strong{font-weight:bold}\",\"docco\":\".hljs-docco .hljs{display:block;overflow-x:auto;padding:.5em;color:#000;background:#f8f8ff}.hljs-docco .hljs-comment,.hljs-docco .hljs-quote{color:#408080;font-style:italic}.hljs-docco .hljs-keyword,.hljs-docco .hljs-selector-tag,.hljs-docco .hljs-literal,.hljs-docco .hljs-subst{color:#954121}.hljs-docco .hljs-number{color:#40a070}.hljs-docco .hljs-string,.hljs-docco .hljs-doctag{color:#219161}.hljs-docco .hljs-selector-id,.hljs-docco .hljs-selector-class,.hljs-docco .hljs-section,.hljs-docco .hljs-type{color:#19469d}.hljs-docco .hljs-params{color:#00f}.hljs-docco .hljs-title{color:#458;font-weight:bold}.hljs-docco .hljs-tag,.hljs-docco .hljs-name,.hljs-docco .hljs-attribute{color:#000080;font-weight:normal}.hljs-docco .hljs-variable,.hljs-docco .hljs-template-variable{color:#008080}.hljs-docco .hljs-regexp,.hljs-docco .hljs-link{color:#b68}.hljs-docco .hljs-symbol,.hljs-docco .hljs-bullet{color:#990073}.hljs-docco .hljs-built_in,.hljs-docco .hljs-builtin-name{color:#0086b3}.hljs-docco .hljs-meta{color:#999;font-weight:bold}.hljs-docco .hljs-deletion{background:#fdd}.hljs-docco .hljs-addition{background:#dfd}.hljs-docco .hljs-emphasis{font-style:italic}.hljs-docco .hljs-strong{font-weight:bold}\",\"dracula\":\".hljs-dracula .hljs{display:block;overflow-x:auto;padding:.5em;background:#282a36}.hljs-dracula .hljs-keyword,.hljs-dracula .hljs-selector-tag,.hljs-dracula .hljs-literal,.hljs-dracula .hljs-section,.hljs-dracula .hljs-link{color:#8be9fd}.hljs-dracula .hljs-function .hljs-keyword{color:#ff79c6}.hljs-dracula .hljs,.hljs-dracula .hljs-subst{color:#f8f8f2}.hljs-dracula .hljs-string,.hljs-dracula .hljs-title,.hljs-dracula .hljs-name,.hljs-dracula .hljs-type,.hljs-dracula .hljs-attribute,.hljs-dracula .hljs-symbol,.hljs-dracula .hljs-bullet,.hljs-dracula .hljs-addition,.hljs-dracula .hljs-variable,.hljs-dracula .hljs-template-tag,.hljs-dracula .hljs-template-variable{color:#f1fa8c}.hljs-dracula .hljs-comment,.hljs-dracula .hljs-quote,.hljs-dracula .hljs-deletion,.hljs-dracula .hljs-meta{color:#6272a4}.hljs-dracula .hljs-keyword,.hljs-dracula .hljs-selector-tag,.hljs-dracula .hljs-literal,.hljs-dracula .hljs-title,.hljs-dracula .hljs-section,.hljs-dracula .hljs-doctag,.hljs-dracula .hljs-type,.hljs-dracula .hljs-name,.hljs-dracula .hljs-strong{font-weight:bold}.hljs-dracula .hljs-emphasis{font-style:italic}\",\"far\":\".hljs-far .hljs{display:block;overflow-x:auto;padding:.5em;background:#000080}.hljs-far .hljs,.hljs-far .hljs-subst{color:#0ff}.hljs-far .hljs-string,.hljs-far .hljs-attribute,.hljs-far .hljs-symbol,.hljs-far .hljs-bullet,.hljs-far .hljs-built_in,.hljs-far .hljs-builtin-name,.hljs-far .hljs-template-tag,.hljs-far .hljs-template-variable,.hljs-far .hljs-addition{color:#ff0}.hljs-far .hljs-keyword,.hljs-far .hljs-selector-tag,.hljs-far .hljs-section,.hljs-far .hljs-type,.hljs-far .hljs-name,.hljs-far .hljs-selector-id,.hljs-far .hljs-selector-class,.hljs-far .hljs-variable{color:#fff}.hljs-far .hljs-comment,.hljs-far .hljs-quote,.hljs-far .hljs-doctag,.hljs-far .hljs-deletion{color:#888}.hljs-far .hljs-number,.hljs-far .hljs-regexp,.hljs-far .hljs-literal,.hljs-far .hljs-link{color:#0f0}.hljs-far .hljs-meta{color:#008080}.hljs-far .hljs-keyword,.hljs-far .hljs-selector-tag,.hljs-far .hljs-title,.hljs-far .hljs-section,.hljs-far .hljs-name,.hljs-far .hljs-strong{font-weight:bold}.hljs-far .hljs-emphasis{font-style:italic}\",\"foundation\":\".hljs-foundation .hljs{display:block;overflow-x:auto;padding:.5em;background:#eee;color:black}.hljs-foundation .hljs-link,.hljs-foundation .hljs-emphasis,.hljs-foundation .hljs-attribute,.hljs-foundation .hljs-addition{color:#070}.hljs-foundation .hljs-emphasis{font-style:italic}.hljs-foundation .hljs-strong,.hljs-foundation .hljs-string,.hljs-foundation .hljs-deletion{color:#d14}.hljs-foundation .hljs-strong{font-weight:bold}.hljs-foundation .hljs-quote,.hljs-foundation .hljs-comment{color:#998;font-style:italic}.hljs-foundation .hljs-section,.hljs-foundation .hljs-title{color:#900}.hljs-foundation .hljs-class .hljs-title,.hljs-foundation .hljs-type{color:#458}.hljs-foundation .hljs-variable,.hljs-foundation .hljs-template-variable{color:#336699}.hljs-foundation .hljs-bullet{color:#997700}.hljs-foundation .hljs-meta{color:#3344bb}.hljs-foundation .hljs-code,.hljs-foundation .hljs-number,.hljs-foundation .hljs-literal,.hljs-foundation .hljs-keyword,.hljs-foundation .hljs-selector-tag{color:#099}.hljs-foundation .hljs-regexp{background-color:#fff0ff;color:#880088}.hljs-foundation .hljs-symbol{color:#990073}.hljs-foundation .hljs-tag,.hljs-foundation .hljs-name,.hljs-foundation .hljs-selector-id,.hljs-foundation .hljs-selector-class{color:#007700}\",\"github-gist\":\".hljs-github-gist .hljs{display:block;background:white;padding:.5em;color:#333333;overflow-x:auto}.hljs-github-gist .hljs-comment,.hljs-github-gist .hljs-meta{color:#969896}.hljs-github-gist .hljs-string,.hljs-github-gist .hljs-variable,.hljs-github-gist .hljs-template-variable,.hljs-github-gist .hljs-strong,.hljs-github-gist .hljs-emphasis,.hljs-github-gist .hljs-quote{color:#df5000}.hljs-github-gist .hljs-keyword,.hljs-github-gist .hljs-selector-tag,.hljs-github-gist .hljs-type{color:#a71d5d}.hljs-github-gist .hljs-literal,.hljs-github-gist .hljs-symbol,.hljs-github-gist .hljs-bullet,.hljs-github-gist .hljs-attribute{color:#0086b3}.hljs-github-gist .hljs-section,.hljs-github-gist .hljs-name{color:#63a35c}.hljs-github-gist .hljs-tag{color:#333333}.hljs-github-gist .hljs-title,.hljs-github-gist .hljs-attr,.hljs-github-gist .hljs-selector-id,.hljs-github-gist .hljs-selector-class,.hljs-github-gist .hljs-selector-attr,.hljs-github-gist .hljs-selector-pseudo{color:#795da3}.hljs-github-gist .hljs-addition{color:#55a532;background-color:#eaffea}.hljs-github-gist .hljs-deletion{color:#bd2c00;background-color:#ffecec}.hljs-github-gist .hljs-link{text-decoration:underline}\",\"github\":\".hljs-github .hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-github .hljs-comment,.hljs-github .hljs-quote{color:#998;font-style:italic}.hljs-github .hljs-keyword,.hljs-github .hljs-selector-tag,.hljs-github .hljs-subst{color:#333;font-weight:bold}.hljs-github .hljs-number,.hljs-github .hljs-literal,.hljs-github .hljs-variable,.hljs-github .hljs-template-variable,.hljs-github .hljs-tag .hljs-attr{color:#008080}.hljs-github .hljs-string,.hljs-github .hljs-doctag{color:#d14}.hljs-github .hljs-title,.hljs-github .hljs-section,.hljs-github .hljs-selector-id{color:#900;font-weight:bold}.hljs-github .hljs-subst{font-weight:normal}.hljs-github .hljs-type,.hljs-github .hljs-class .hljs-title{color:#458;font-weight:bold}.hljs-github .hljs-tag,.hljs-github .hljs-name,.hljs-github .hljs-attribute{color:#000080;font-weight:normal}.hljs-github .hljs-regexp,.hljs-github .hljs-link{color:#009926}.hljs-github .hljs-symbol,.hljs-github .hljs-bullet{color:#990073}.hljs-github .hljs-built_in,.hljs-github .hljs-builtin-name{color:#0086b3}.hljs-github .hljs-meta{color:#999;font-weight:bold}.hljs-github .hljs-deletion{background:#fdd}.hljs-github .hljs-addition{background:#dfd}.hljs-github .hljs-emphasis{font-style:italic}.hljs-github .hljs-strong{font-weight:bold}\",\"googlecode\":\".hljs-googlecode .hljs{display:block;overflow-x:auto;padding:.5em;background:white;color:black}.hljs-googlecode .hljs-comment,.hljs-googlecode .hljs-quote{color:#800}.hljs-googlecode .hljs-keyword,.hljs-googlecode .hljs-selector-tag,.hljs-googlecode .hljs-section,.hljs-googlecode .hljs-title,.hljs-googlecode .hljs-name{color:#008}.hljs-googlecode .hljs-variable,.hljs-googlecode .hljs-template-variable{color:#660}.hljs-googlecode .hljs-string,.hljs-googlecode .hljs-selector-attr,.hljs-googlecode .hljs-selector-pseudo,.hljs-googlecode .hljs-regexp{color:#080}.hljs-googlecode .hljs-literal,.hljs-googlecode .hljs-symbol,.hljs-googlecode .hljs-bullet,.hljs-googlecode .hljs-meta,.hljs-googlecode .hljs-number,.hljs-googlecode .hljs-link{color:#066}.hljs-googlecode .hljs-title,.hljs-googlecode .hljs-doctag,.hljs-googlecode .hljs-type,.hljs-googlecode .hljs-attr,.hljs-googlecode .hljs-built_in,.hljs-googlecode .hljs-builtin-name,.hljs-googlecode .hljs-params{color:#606}.hljs-googlecode .hljs-attribute,.hljs-googlecode .hljs-subst{color:#000}.hljs-googlecode .hljs-formula{background-color:#eee;font-style:italic}.hljs-googlecode .hljs-selector-id,.hljs-googlecode .hljs-selector-class{color:#9B703F}.hljs-googlecode .hljs-addition{background-color:#baeeba}.hljs-googlecode .hljs-deletion{background-color:#ffc8bd}.hljs-googlecode .hljs-doctag,.hljs-googlecode .hljs-strong{font-weight:bold}.hljs-googlecode .hljs-emphasis{font-style:italic}\",\"grayscale\":\".hljs-grayscale .hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#fff}.hljs-grayscale .hljs-comment,.hljs-grayscale .hljs-quote{color:#777;font-style:italic}.hljs-grayscale .hljs-keyword,.hljs-grayscale .hljs-selector-tag,.hljs-grayscale .hljs-subst{color:#333;font-weight:bold}.hljs-grayscale .hljs-number,.hljs-grayscale .hljs-literal{color:#777}.hljs-grayscale .hljs-string,.hljs-grayscale .hljs-doctag,.hljs-grayscale .hljs-formula{color:#333;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat}.hljs-grayscale .hljs-title,.hljs-grayscale .hljs-section,.hljs-grayscale .hljs-selector-id{color:#000;font-weight:bold}.hljs-grayscale .hljs-subst{font-weight:normal}.hljs-grayscale .hljs-class .hljs-title,.hljs-grayscale .hljs-type,.hljs-grayscale .hljs-name{color:#333;font-weight:bold}.hljs-grayscale .hljs-tag{color:#333}.hljs-grayscale .hljs-regexp{color:#333;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat}.hljs-grayscale .hljs-symbol,.hljs-grayscale .hljs-bullet,.hljs-grayscale .hljs-link{color:#000;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat}.hljs-grayscale .hljs-built_in,.hljs-grayscale .hljs-builtin-name{color:#000;text-decoration:underline}.hljs-grayscale .hljs-meta{color:#999;font-weight:bold}.hljs-grayscale .hljs-deletion{color:#fff;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat}.hljs-grayscale .hljs-addition{color:#000;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat}.hljs-grayscale .hljs-emphasis{font-style:italic}.hljs-grayscale .hljs-strong{font-weight:bold}\",\"gruvbox-dark\":\".hljs-gruvbox-dark .hljs{display:block;overflow-x:auto;padding:.5em;background:#282828}.hljs-gruvbox-dark .hljs,.hljs-gruvbox-dark .hljs-subst{color:#ebdbb2}.hljs-gruvbox-dark .hljs-deletion,.hljs-gruvbox-dark .hljs-formula,.hljs-gruvbox-dark .hljs-keyword,.hljs-gruvbox-dark .hljs-link,.hljs-gruvbox-dark .hljs-selector-tag{color:#fb4934}.hljs-gruvbox-dark .hljs-built_in,.hljs-gruvbox-dark .hljs-emphasis,.hljs-gruvbox-dark .hljs-name,.hljs-gruvbox-dark .hljs-quote,.hljs-gruvbox-dark .hljs-strong,.hljs-gruvbox-dark .hljs-title,.hljs-gruvbox-dark .hljs-variable{color:#83a598}.hljs-gruvbox-dark .hljs-attr,.hljs-gruvbox-dark .hljs-params,.hljs-gruvbox-dark .hljs-template-tag,.hljs-gruvbox-dark .hljs-type{color:#fabd2f}.hljs-gruvbox-dark .hljs-builtin-name,.hljs-gruvbox-dark .hljs-doctag,.hljs-gruvbox-dark .hljs-literal,.hljs-gruvbox-dark .hljs-number{color:#8f3f71}.hljs-gruvbox-dark .hljs-code,.hljs-gruvbox-dark .hljs-meta,.hljs-gruvbox-dark .hljs-regexp,.hljs-gruvbox-dark .hljs-selector-id,.hljs-gruvbox-dark .hljs-template-variable{color:#fe8019}.hljs-gruvbox-dark .hljs-addition,.hljs-gruvbox-dark .hljs-meta-string,.hljs-gruvbox-dark .hljs-section,.hljs-gruvbox-dark .hljs-selector-attr,.hljs-gruvbox-dark .hljs-selector-class,.hljs-gruvbox-dark .hljs-string,.hljs-gruvbox-dark .hljs-symbol{color:#b8bb26}.hljs-gruvbox-dark .hljs-attribute,.hljs-gruvbox-dark .hljs-bullet,.hljs-gruvbox-dark .hljs-class,.hljs-gruvbox-dark .hljs-function,.hljs-gruvbox-dark .hljs-function .hljs-keyword,.hljs-gruvbox-dark .hljs-meta-keyword,.hljs-gruvbox-dark .hljs-selector-pseudo,.hljs-gruvbox-dark .hljs-tag{color:#8ec07c}.hljs-gruvbox-dark .hljs-comment{color:#928374}.hljs-gruvbox-dark .hljs-link_label,.hljs-gruvbox-dark .hljs-literal,.hljs-gruvbox-dark .hljs-number{color:#d3869b}.hljs-gruvbox-dark .hljs-comment,.hljs-gruvbox-dark .hljs-emphasis{font-style:italic}.hljs-gruvbox-dark .hljs-section,.hljs-gruvbox-dark .hljs-strong,.hljs-gruvbox-dark .hljs-tag{font-weight:bold}\",\"gruvbox-light\":\".hljs-gruvbox-light .hljs{display:block;overflow-x:auto;padding:.5em;background:#fbf1c7}.hljs-gruvbox-light .hljs,.hljs-gruvbox-light .hljs-subst{color:#3c3836}.hljs-gruvbox-light .hljs-deletion,.hljs-gruvbox-light .hljs-formula,.hljs-gruvbox-light .hljs-keyword,.hljs-gruvbox-light .hljs-link,.hljs-gruvbox-light .hljs-selector-tag{color:#9d0006}.hljs-gruvbox-light .hljs-built_in,.hljs-gruvbox-light .hljs-emphasis,.hljs-gruvbox-light .hljs-name,.hljs-gruvbox-light .hljs-quote,.hljs-gruvbox-light .hljs-strong,.hljs-gruvbox-light .hljs-title,.hljs-gruvbox-light .hljs-variable{color:#076678}.hljs-gruvbox-light .hljs-attr,.hljs-gruvbox-light .hljs-params,.hljs-gruvbox-light .hljs-template-tag,.hljs-gruvbox-light .hljs-type{color:#b57614}.hljs-gruvbox-light .hljs-builtin-name,.hljs-gruvbox-light .hljs-doctag,.hljs-gruvbox-light .hljs-literal,.hljs-gruvbox-light .hljs-number{color:#8f3f71}.hljs-gruvbox-light .hljs-code,.hljs-gruvbox-light .hljs-meta,.hljs-gruvbox-light .hljs-regexp,.hljs-gruvbox-light .hljs-selector-id,.hljs-gruvbox-light .hljs-template-variable{color:#af3a03}.hljs-gruvbox-light .hljs-addition,.hljs-gruvbox-light .hljs-meta-string,.hljs-gruvbox-light .hljs-section,.hljs-gruvbox-light .hljs-selector-attr,.hljs-gruvbox-light .hljs-selector-class,.hljs-gruvbox-light .hljs-string,.hljs-gruvbox-light .hljs-symbol{color:#79740e}.hljs-gruvbox-light .hljs-attribute,.hljs-gruvbox-light .hljs-bullet,.hljs-gruvbox-light .hljs-class,.hljs-gruvbox-light .hljs-function,.hljs-gruvbox-light .hljs-function .hljs-keyword,.hljs-gruvbox-light .hljs-meta-keyword,.hljs-gruvbox-light .hljs-selector-pseudo,.hljs-gruvbox-light .hljs-tag{color:#427b58}.hljs-gruvbox-light .hljs-comment{color:#928374}.hljs-gruvbox-light .hljs-link_label,.hljs-gruvbox-light .hljs-literal,.hljs-gruvbox-light .hljs-number{color:#8f3f71}.hljs-gruvbox-light .hljs-comment,.hljs-gruvbox-light .hljs-emphasis{font-style:italic}.hljs-gruvbox-light .hljs-section,.hljs-gruvbox-light .hljs-strong,.hljs-gruvbox-light .hljs-tag{font-weight:bold}\",\"hopscotch\":\".hljs-hopscotch .hljs-comment,.hljs-hopscotch .hljs-quote{color:#989498}.hljs-hopscotch .hljs-variable,.hljs-hopscotch .hljs-template-variable,.hljs-hopscotch .hljs-attribute,.hljs-hopscotch .hljs-tag,.hljs-hopscotch .hljs-name,.hljs-hopscotch .hljs-selector-id,.hljs-hopscotch .hljs-selector-class,.hljs-hopscotch .hljs-regexp,.hljs-hopscotch .hljs-link,.hljs-hopscotch .hljs-deletion{color:#dd464c}.hljs-hopscotch .hljs-number,.hljs-hopscotch .hljs-built_in,.hljs-hopscotch .hljs-builtin-name,.hljs-hopscotch .hljs-literal,.hljs-hopscotch .hljs-type,.hljs-hopscotch .hljs-params{color:#fd8b19}.hljs-hopscotch .hljs-class .hljs-title{color:#fdcc59}.hljs-hopscotch .hljs-string,.hljs-hopscotch .hljs-symbol,.hljs-hopscotch .hljs-bullet,.hljs-hopscotch .hljs-addition{color:#8fc13e}.hljs-hopscotch .hljs-meta{color:#149b93}.hljs-hopscotch .hljs-function,.hljs-hopscotch .hljs-section,.hljs-hopscotch .hljs-title{color:#1290bf}.hljs-hopscotch .hljs-keyword,.hljs-hopscotch .hljs-selector-tag{color:#c85e7c}.hljs-hopscotch .hljs{display:block;background:#322931;color:#b9b5b8;padding:.5em}.hljs-hopscotch .hljs-emphasis{font-style:italic}.hljs-hopscotch .hljs-strong{font-weight:bold}\",\"hybrid\":\".hljs-hybrid .hljs{display:block;overflow-x:auto;padding:.5em;background:#1d1f21}.hljs-hybrid .hljs::selection,.hljs-hybrid .hljs span::selection{background:#373b41}.hljs-hybrid .hljs::-moz-selection,.hljs-hybrid .hljs span::-moz-selection{background:#373b41}.hljs-hybrid .hljs{color:#c5c8c6}.hljs-hybrid .hljs-title,.hljs-hybrid .hljs-name{color:#f0c674}.hljs-hybrid .hljs-comment,.hljs-hybrid .hljs-meta,.hljs-hybrid .hljs-meta .hljs-keyword{color:#707880}.hljs-hybrid .hljs-number,.hljs-hybrid .hljs-symbol,.hljs-hybrid .hljs-literal,.hljs-hybrid .hljs-deletion,.hljs-hybrid .hljs-link{color:#cc6666}.hljs-hybrid .hljs-string,.hljs-hybrid .hljs-doctag,.hljs-hybrid .hljs-addition,.hljs-hybrid .hljs-regexp,.hljs-hybrid .hljs-selector-attr,.hljs-hybrid .hljs-selector-pseudo{color:#b5bd68}.hljs-hybrid .hljs-attribute,.hljs-hybrid .hljs-code,.hljs-hybrid .hljs-selector-id{color:#b294bb}.hljs-hybrid .hljs-keyword,.hljs-hybrid .hljs-selector-tag,.hljs-hybrid .hljs-bullet,.hljs-hybrid .hljs-tag{color:#81a2be}.hljs-hybrid .hljs-subst,.hljs-hybrid .hljs-variable,.hljs-hybrid .hljs-template-tag,.hljs-hybrid .hljs-template-variable{color:#8abeb7}.hljs-hybrid .hljs-type,.hljs-hybrid .hljs-built_in,.hljs-hybrid .hljs-builtin-name,.hljs-hybrid .hljs-quote,.hljs-hybrid .hljs-section,.hljs-hybrid .hljs-selector-class{color:#de935f}.hljs-hybrid .hljs-emphasis{font-style:italic}.hljs-hybrid .hljs-strong{font-weight:bold}\",\"idea\":\".hljs-idea .hljs{display:block;overflow-x:auto;padding:.5em;color:#000;background:#fff}.hljs-idea .hljs-subst,.hljs-idea .hljs-title{font-weight:normal;color:#000}.hljs-idea .hljs-comment,.hljs-idea .hljs-quote{color:#808080;font-style:italic}.hljs-idea .hljs-meta{color:#808000}.hljs-idea .hljs-tag{background:#efefef}.hljs-idea .hljs-section,.hljs-idea .hljs-name,.hljs-idea .hljs-literal,.hljs-idea .hljs-keyword,.hljs-idea .hljs-selector-tag,.hljs-idea .hljs-type,.hljs-idea .hljs-selector-id,.hljs-idea .hljs-selector-class{font-weight:bold;color:#000080}.hljs-idea .hljs-attribute,.hljs-idea .hljs-number,.hljs-idea .hljs-regexp,.hljs-idea .hljs-link{font-weight:bold;color:#0000ff}.hljs-idea .hljs-number,.hljs-idea .hljs-regexp,.hljs-idea .hljs-link{font-weight:normal}.hljs-idea .hljs-string{color:#008000;font-weight:bold}.hljs-idea .hljs-symbol,.hljs-idea .hljs-bullet,.hljs-idea .hljs-formula{color:#000;background:#d0eded;font-style:italic}.hljs-idea .hljs-doctag{text-decoration:underline}.hljs-idea .hljs-variable,.hljs-idea .hljs-template-variable{color:#660e7a}.hljs-idea .hljs-addition{background:#baeeba}.hljs-idea .hljs-deletion{background:#ffc8bd}.hljs-idea .hljs-emphasis{font-style:italic}.hljs-idea .hljs-strong{font-weight:bold}\",\"ir-black\":\".hljs-ir-black .hljs{display:block;overflow-x:auto;padding:.5em;background:#000;color:#f8f8f8}.hljs-ir-black .hljs-comment,.hljs-ir-black .hljs-quote,.hljs-ir-black .hljs-meta{color:#7c7c7c}.hljs-ir-black .hljs-keyword,.hljs-ir-black .hljs-selector-tag,.hljs-ir-black .hljs-tag,.hljs-ir-black .hljs-name{color:#96cbfe}.hljs-ir-black .hljs-attribute,.hljs-ir-black .hljs-selector-id{color:#ffffb6}.hljs-ir-black .hljs-string,.hljs-ir-black .hljs-selector-attr,.hljs-ir-black .hljs-selector-pseudo,.hljs-ir-black .hljs-addition{color:#a8ff60}.hljs-ir-black .hljs-subst{color:#daefa3}.hljs-ir-black .hljs-regexp,.hljs-ir-black .hljs-link{color:#e9c062}.hljs-ir-black .hljs-title,.hljs-ir-black .hljs-section,.hljs-ir-black .hljs-type,.hljs-ir-black .hljs-doctag{color:#ffffb6}.hljs-ir-black .hljs-symbol,.hljs-ir-black .hljs-bullet,.hljs-ir-black .hljs-variable,.hljs-ir-black .hljs-template-variable,.hljs-ir-black .hljs-literal{color:#c6c5fe}.hljs-ir-black .hljs-number,.hljs-ir-black .hljs-deletion{color:#ff73fd}.hljs-ir-black .hljs-emphasis{font-style:italic}.hljs-ir-black .hljs-strong{font-weight:bold}\",\"kimbie.dark\":\".hljs-kimbie.dark .hljs-comment,.hljs-kimbie.dark .hljs-quote{color:#d6baad}.hljs-kimbie.dark .hljs-variable,.hljs-kimbie.dark .hljs-template-variable,.hljs-kimbie.dark .hljs-tag,.hljs-kimbie.dark .hljs-name,.hljs-kimbie.dark .hljs-selector-id,.hljs-kimbie.dark .hljs-selector-class,.hljs-kimbie.dark .hljs-regexp,.hljs-kimbie.dark .hljs-meta{color:#dc3958}.hljs-kimbie.dark .hljs-number,.hljs-kimbie.dark .hljs-built_in,.hljs-kimbie.dark .hljs-builtin-name,.hljs-kimbie.dark .hljs-literal,.hljs-kimbie.dark .hljs-type,.hljs-kimbie.dark .hljs-params,.hljs-kimbie.dark .hljs-deletion,.hljs-kimbie.dark .hljs-link{color:#f79a32}.hljs-kimbie.dark .hljs-title,.hljs-kimbie.dark .hljs-section,.hljs-kimbie.dark .hljs-attribute{color:#f06431}.hljs-kimbie.dark .hljs-string,.hljs-kimbie.dark .hljs-symbol,.hljs-kimbie.dark .hljs-bullet,.hljs-kimbie.dark .hljs-addition{color:#889b4a}.hljs-kimbie.dark .hljs-keyword,.hljs-kimbie.dark .hljs-selector-tag,.hljs-kimbie.dark .hljs-function{color:#98676a}.hljs-kimbie.dark .hljs{display:block;overflow-x:auto;background:#221a0f;color:#d3af86;padding:.5em}.hljs-kimbie.dark .hljs-emphasis{font-style:italic}.hljs-kimbie.dark .hljs-strong{font-weight:bold}\",\"kimbie.light\":\".hljs-kimbie.light .hljs-comment,.hljs-kimbie.light .hljs-quote{color:#a57a4c}.hljs-kimbie.light .hljs-variable,.hljs-kimbie.light .hljs-template-variable,.hljs-kimbie.light .hljs-tag,.hljs-kimbie.light .hljs-name,.hljs-kimbie.light .hljs-selector-id,.hljs-kimbie.light .hljs-selector-class,.hljs-kimbie.light .hljs-regexp,.hljs-kimbie.light .hljs-meta{color:#dc3958}.hljs-kimbie.light .hljs-number,.hljs-kimbie.light .hljs-built_in,.hljs-kimbie.light .hljs-builtin-name,.hljs-kimbie.light .hljs-literal,.hljs-kimbie.light .hljs-type,.hljs-kimbie.light .hljs-params,.hljs-kimbie.light .hljs-deletion,.hljs-kimbie.light .hljs-link{color:#f79a32}.hljs-kimbie.light .hljs-title,.hljs-kimbie.light .hljs-section,.hljs-kimbie.light .hljs-attribute{color:#f06431}.hljs-kimbie.light .hljs-string,.hljs-kimbie.light .hljs-symbol,.hljs-kimbie.light .hljs-bullet,.hljs-kimbie.light .hljs-addition{color:#889b4a}.hljs-kimbie.light .hljs-keyword,.hljs-kimbie.light .hljs-selector-tag,.hljs-kimbie.light .hljs-function{color:#98676a}.hljs-kimbie.light .hljs{display:block;overflow-x:auto;background:#fbebd4;color:#84613d;padding:.5em}.hljs-kimbie.light .hljs-emphasis{font-style:italic}.hljs-kimbie.light .hljs-strong{font-weight:bold}\",\"magula\":\".hljs-magula .hljs{display:block;overflow-x:auto;padding:.5em;background-color:#f4f4f4}.hljs-magula .hljs,.hljs-magula .hljs-subst{color:black}.hljs-magula .hljs-string,.hljs-magula .hljs-title,.hljs-magula .hljs-symbol,.hljs-magula .hljs-bullet,.hljs-magula .hljs-attribute,.hljs-magula .hljs-addition,.hljs-magula .hljs-variable,.hljs-magula .hljs-template-tag,.hljs-magula .hljs-template-variable{color:#050}.hljs-magula .hljs-comment,.hljs-magula .hljs-quote{color:#777}.hljs-magula .hljs-number,.hljs-magula .hljs-regexp,.hljs-magula .hljs-literal,.hljs-magula .hljs-type,.hljs-magula .hljs-link{color:#800}.hljs-magula .hljs-deletion,.hljs-magula .hljs-meta{color:#00e}.hljs-magula .hljs-keyword,.hljs-magula .hljs-selector-tag,.hljs-magula .hljs-doctag,.hljs-magula .hljs-title,.hljs-magula .hljs-section,.hljs-magula .hljs-built_in,.hljs-magula .hljs-tag,.hljs-magula .hljs-name{font-weight:bold;color:navy}.hljs-magula .hljs-emphasis{font-style:italic}.hljs-magula .hljs-strong{font-weight:bold}\",\"mono-blue\":\".hljs-mono-blue .hljs{display:block;overflow-x:auto;padding:.5em;background:#eaeef3}.hljs-mono-blue .hljs{color:#00193a}.hljs-mono-blue .hljs-keyword,.hljs-mono-blue .hljs-selector-tag,.hljs-mono-blue .hljs-title,.hljs-mono-blue .hljs-section,.hljs-mono-blue .hljs-doctag,.hljs-mono-blue .hljs-name,.hljs-mono-blue .hljs-strong{font-weight:bold}.hljs-mono-blue .hljs-comment{color:#738191}.hljs-mono-blue .hljs-string,.hljs-mono-blue .hljs-title,.hljs-mono-blue .hljs-section,.hljs-mono-blue .hljs-built_in,.hljs-mono-blue .hljs-literal,.hljs-mono-blue .hljs-type,.hljs-mono-blue .hljs-addition,.hljs-mono-blue .hljs-tag,.hljs-mono-blue .hljs-quote,.hljs-mono-blue .hljs-name,.hljs-mono-blue .hljs-selector-id,.hljs-mono-blue .hljs-selector-class{color:#0048ab}.hljs-mono-blue .hljs-meta,.hljs-mono-blue .hljs-subst,.hljs-mono-blue .hljs-symbol,.hljs-mono-blue .hljs-regexp,.hljs-mono-blue .hljs-attribute,.hljs-mono-blue .hljs-deletion,.hljs-mono-blue .hljs-variable,.hljs-mono-blue .hljs-template-variable,.hljs-mono-blue .hljs-link,.hljs-mono-blue .hljs-bullet{color:#4c81c9}.hljs-mono-blue .hljs-emphasis{font-style:italic}\",\"monokai-sublime\":\".hljs-monokai-sublime .hljs{display:block;overflow-x:auto;padding:.5em;background:#23241f}.hljs-monokai-sublime .hljs,.hljs-monokai-sublime .hljs-tag,.hljs-monokai-sublime .hljs-subst{color:#f8f8f2}.hljs-monokai-sublime .hljs-strong,.hljs-monokai-sublime .hljs-emphasis{color:#a8a8a2}.hljs-monokai-sublime .hljs-bullet,.hljs-monokai-sublime .hljs-quote,.hljs-monokai-sublime .hljs-number,.hljs-monokai-sublime .hljs-regexp,.hljs-monokai-sublime .hljs-literal,.hljs-monokai-sublime .hljs-link{color:#ae81ff}.hljs-monokai-sublime .hljs-code,.hljs-monokai-sublime .hljs-title,.hljs-monokai-sublime .hljs-section,.hljs-monokai-sublime .hljs-selector-class{color:#a6e22e}.hljs-monokai-sublime .hljs-strong{font-weight:bold}.hljs-monokai-sublime .hljs-emphasis{font-style:italic}.hljs-monokai-sublime .hljs-keyword,.hljs-monokai-sublime .hljs-selector-tag,.hljs-monokai-sublime .hljs-name,.hljs-monokai-sublime .hljs-attr{color:#f92672}.hljs-monokai-sublime .hljs-symbol,.hljs-monokai-sublime .hljs-attribute{color:#66d9ef}.hljs-monokai-sublime .hljs-params,.hljs-monokai-sublime .hljs-class .hljs-title{color:#f8f8f2}.hljs-monokai-sublime .hljs-string,.hljs-monokai-sublime .hljs-type,.hljs-monokai-sublime .hljs-built_in,.hljs-monokai-sublime .hljs-builtin-name,.hljs-monokai-sublime .hljs-selector-id,.hljs-monokai-sublime .hljs-selector-attr,.hljs-monokai-sublime .hljs-selector-pseudo,.hljs-monokai-sublime .hljs-addition,.hljs-monokai-sublime .hljs-variable,.hljs-monokai-sublime .hljs-template-variable{color:#e6db74}.hljs-monokai-sublime .hljs-comment,.hljs-monokai-sublime .hljs-deletion,.hljs-monokai-sublime .hljs-meta{color:#75715e}\",\"monokai\":\".hljs-monokai .hljs{display:block;overflow-x:auto;padding:.5em;background:#272822;color:#ddd}.hljs-monokai .hljs-tag,.hljs-monokai .hljs-keyword,.hljs-monokai .hljs-selector-tag,.hljs-monokai .hljs-literal,.hljs-monokai .hljs-strong,.hljs-monokai .hljs-name{color:#f92672}.hljs-monokai .hljs-code{color:#66d9ef}.hljs-monokai .hljs-class .hljs-title{color:white}.hljs-monokai .hljs-attribute,.hljs-monokai .hljs-symbol,.hljs-monokai .hljs-regexp,.hljs-monokai .hljs-link{color:#bf79db}.hljs-monokai .hljs-string,.hljs-monokai .hljs-bullet,.hljs-monokai .hljs-subst,.hljs-monokai .hljs-title,.hljs-monokai .hljs-section,.hljs-monokai .hljs-emphasis,.hljs-monokai .hljs-type,.hljs-monokai .hljs-built_in,.hljs-monokai .hljs-builtin-name,.hljs-monokai .hljs-selector-attr,.hljs-monokai .hljs-selector-pseudo,.hljs-monokai .hljs-addition,.hljs-monokai .hljs-variable,.hljs-monokai .hljs-template-tag,.hljs-monokai .hljs-template-variable{color:#a6e22e}.hljs-monokai .hljs-comment,.hljs-monokai .hljs-quote,.hljs-monokai .hljs-deletion,.hljs-monokai .hljs-meta{color:#75715e}.hljs-monokai .hljs-keyword,.hljs-monokai .hljs-selector-tag,.hljs-monokai .hljs-literal,.hljs-monokai .hljs-doctag,.hljs-monokai .hljs-title,.hljs-monokai .hljs-section,.hljs-monokai .hljs-type,.hljs-monokai .hljs-selector-id{font-weight:bold}\",\"obsidian\":\".hljs-obsidian .hljs{display:block;overflow-x:auto;padding:.5em;background:#282b2e}.hljs-obsidian .hljs-keyword,.hljs-obsidian .hljs-selector-tag,.hljs-obsidian .hljs-literal,.hljs-obsidian .hljs-selector-id{color:#93c763}.hljs-obsidian .hljs-number{color:#ffcd22}.hljs-obsidian .hljs{color:#e0e2e4}.hljs-obsidian .hljs-attribute{color:#668bb0}.hljs-obsidian .hljs-code,.hljs-obsidian .hljs-class .hljs-title,.hljs-obsidian .hljs-section{color:white}.hljs-obsidian .hljs-regexp,.hljs-obsidian .hljs-link{color:#d39745}.hljs-obsidian .hljs-meta{color:#557182}.hljs-obsidian .hljs-tag,.hljs-obsidian .hljs-name,.hljs-obsidian .hljs-bullet,.hljs-obsidian .hljs-subst,.hljs-obsidian .hljs-emphasis,.hljs-obsidian .hljs-type,.hljs-obsidian .hljs-built_in,.hljs-obsidian .hljs-selector-attr,.hljs-obsidian .hljs-selector-pseudo,.hljs-obsidian .hljs-addition,.hljs-obsidian .hljs-variable,.hljs-obsidian .hljs-template-tag,.hljs-obsidian .hljs-template-variable{color:#8cbbad}.hljs-obsidian .hljs-string,.hljs-obsidian .hljs-symbol{color:#ec7600}.hljs-obsidian .hljs-comment,.hljs-obsidian .hljs-quote,.hljs-obsidian .hljs-deletion{color:#818e96}.hljs-obsidian .hljs-selector-class{color:#A082BD}.hljs-obsidian .hljs-keyword,.hljs-obsidian .hljs-selector-tag,.hljs-obsidian .hljs-literal,.hljs-obsidian .hljs-doctag,.hljs-obsidian .hljs-title,.hljs-obsidian .hljs-section,.hljs-obsidian .hljs-type,.hljs-obsidian .hljs-name,.hljs-obsidian .hljs-strong{font-weight:bold}\",\"ocean\":\".hljs-ocean .hljs-comment,.hljs-ocean .hljs-quote{color:#65737e}.hljs-ocean .hljs-variable,.hljs-ocean .hljs-template-variable,.hljs-ocean .hljs-tag,.hljs-ocean .hljs-name,.hljs-ocean .hljs-selector-id,.hljs-ocean .hljs-selector-class,.hljs-ocean .hljs-regexp,.hljs-ocean .hljs-deletion{color:#bf616a}.hljs-ocean .hljs-number,.hljs-ocean .hljs-built_in,.hljs-ocean .hljs-builtin-name,.hljs-ocean .hljs-literal,.hljs-ocean .hljs-type,.hljs-ocean .hljs-params,.hljs-ocean .hljs-meta,.hljs-ocean .hljs-link{color:#d08770}.hljs-ocean .hljs-attribute{color:#ebcb8b}.hljs-ocean .hljs-string,.hljs-ocean .hljs-symbol,.hljs-ocean .hljs-bullet,.hljs-ocean .hljs-addition{color:#a3be8c}.hljs-ocean .hljs-title,.hljs-ocean .hljs-section{color:#8fa1b3}.hljs-ocean .hljs-keyword,.hljs-ocean .hljs-selector-tag{color:#b48ead}.hljs-ocean .hljs{display:block;overflow-x:auto;background:#2b303b;color:#c0c5ce;padding:.5em}.hljs-ocean .hljs-emphasis{font-style:italic}.hljs-ocean .hljs-strong{font-weight:bold}\",\"paraiso-dark\":\".hljs-paraiso-dark .hljs-comment,.hljs-paraiso-dark .hljs-quote{color:#8d8687}.hljs-paraiso-dark .hljs-variable,.hljs-paraiso-dark .hljs-template-variable,.hljs-paraiso-dark .hljs-tag,.hljs-paraiso-dark .hljs-name,.hljs-paraiso-dark .hljs-selector-id,.hljs-paraiso-dark .hljs-selector-class,.hljs-paraiso-dark .hljs-regexp,.hljs-paraiso-dark .hljs-link,.hljs-paraiso-dark .hljs-meta{color:#ef6155}.hljs-paraiso-dark .hljs-number,.hljs-paraiso-dark .hljs-built_in,.hljs-paraiso-dark .hljs-builtin-name,.hljs-paraiso-dark .hljs-literal,.hljs-paraiso-dark .hljs-type,.hljs-paraiso-dark .hljs-params,.hljs-paraiso-dark .hljs-deletion{color:#f99b15}.hljs-paraiso-dark .hljs-title,.hljs-paraiso-dark .hljs-section,.hljs-paraiso-dark .hljs-attribute{color:#fec418}.hljs-paraiso-dark .hljs-string,.hljs-paraiso-dark .hljs-symbol,.hljs-paraiso-dark .hljs-bullet,.hljs-paraiso-dark .hljs-addition{color:#48b685}.hljs-paraiso-dark .hljs-keyword,.hljs-paraiso-dark .hljs-selector-tag{color:#815ba4}.hljs-paraiso-dark .hljs{display:block;overflow-x:auto;background:#2f1e2e;color:#a39e9b;padding:.5em}.hljs-paraiso-dark .hljs-emphasis{font-style:italic}.hljs-paraiso-dark .hljs-strong{font-weight:bold}\",\"paraiso-light\":\".hljs-paraiso-light .hljs-comment,.hljs-paraiso-light .hljs-quote{color:#776e71}.hljs-paraiso-light .hljs-variable,.hljs-paraiso-light .hljs-template-variable,.hljs-paraiso-light .hljs-tag,.hljs-paraiso-light .hljs-name,.hljs-paraiso-light .hljs-selector-id,.hljs-paraiso-light .hljs-selector-class,.hljs-paraiso-light .hljs-regexp,.hljs-paraiso-light .hljs-link,.hljs-paraiso-light .hljs-meta{color:#ef6155}.hljs-paraiso-light .hljs-number,.hljs-paraiso-light .hljs-built_in,.hljs-paraiso-light .hljs-builtin-name,.hljs-paraiso-light .hljs-literal,.hljs-paraiso-light .hljs-type,.hljs-paraiso-light .hljs-params,.hljs-paraiso-light .hljs-deletion{color:#f99b15}.hljs-paraiso-light .hljs-title,.hljs-paraiso-light .hljs-section,.hljs-paraiso-light .hljs-attribute{color:#fec418}.hljs-paraiso-light .hljs-string,.hljs-paraiso-light .hljs-symbol,.hljs-paraiso-light .hljs-bullet,.hljs-paraiso-light .hljs-addition{color:#48b685}.hljs-paraiso-light .hljs-keyword,.hljs-paraiso-light .hljs-selector-tag{color:#815ba4}.hljs-paraiso-light .hljs{display:block;overflow-x:auto;background:#e7e9db;color:#4f424c;padding:.5em}.hljs-paraiso-light .hljs-emphasis{font-style:italic}.hljs-paraiso-light .hljs-strong{font-weight:bold}\",\"purebasic\":\".hljs-purebasic .hljs{display:block;overflow-x:auto;padding:.5em;background:#FFFFDF}.hljs-purebasic .hljs,.hljs-purebasic .hljs-type,.hljs-purebasic .hljs-function,.hljs-purebasic .hljs-name,.hljs-purebasic .hljs-number,.hljs-purebasic .hljs-attr,.hljs-purebasic .hljs-params,.hljs-purebasic .hljs-subst{color:#000000}.hljs-purebasic .hljs-comment,.hljs-purebasic .hljs-regexp,.hljs-purebasic .hljs-section,.hljs-purebasic .hljs-selector-pseudo,.hljs-purebasic .hljs-addition{color:#00AAAA}.hljs-purebasic .hljs-title,.hljs-purebasic .hljs-tag,.hljs-purebasic .hljs-variable,.hljs-purebasic .hljs-code{color:#006666}.hljs-purebasic .hljs-keyword,.hljs-purebasic .hljs-class,.hljs-purebasic .hljs-meta-keyword,.hljs-purebasic .hljs-selector-class,.hljs-purebasic .hljs-built_in,.hljs-purebasic .hljs-builtin-name{color:#006666;font-weight:bold}.hljs-purebasic .hljs-string,.hljs-purebasic .hljs-selector-attr{color:#0080FF}.hljs-purebasic .hljs-symbol,.hljs-purebasic .hljs-link,.hljs-purebasic .hljs-deletion,.hljs-purebasic .hljs-attribute{color:#924B72}.hljs-purebasic .hljs-meta,.hljs-purebasic .hljs-literal,.hljs-purebasic .hljs-selector-id{color:#924B72;font-weight:bold}.hljs-purebasic .hljs-strong,.hljs-purebasic .hljs-name{font-weight:bold}.hljs-purebasic .hljs-emphasis{font-style:italic}\",\"qtcreator_dark\":\".hljs-qtcreator_dark .hljs{display:block;overflow-x:auto;padding:.5em;background:#000000}.hljs-qtcreator_dark .hljs,.hljs-qtcreator_dark .hljs-subst,.hljs-qtcreator_dark .hljs-tag,.hljs-qtcreator_dark .hljs-title{color:#aaaaaa}.hljs-qtcreator_dark .hljs-strong,.hljs-qtcreator_dark .hljs-emphasis{color:#a8a8a2}.hljs-qtcreator_dark .hljs-bullet,.hljs-qtcreator_dark .hljs-quote,.hljs-qtcreator_dark .hljs-number,.hljs-qtcreator_dark .hljs-regexp,.hljs-qtcreator_dark .hljs-literal{color:#ff55ff}.hljs-qtcreator_dark .hljs-code .hljs-selector-class{color:#aaaaff}.hljs-qtcreator_dark .hljs-emphasis,.hljs-qtcreator_dark .hljs-stronge,.hljs-qtcreator_dark .hljs-type{font-style:italic}.hljs-qtcreator_dark .hljs-keyword,.hljs-qtcreator_dark .hljs-selector-tag,.hljs-qtcreator_dark .hljs-function,.hljs-qtcreator_dark .hljs-section,.hljs-qtcreator_dark .hljs-symbol,.hljs-qtcreator_dark .hljs-name{color:#ffff55}.hljs-qtcreator_dark .hljs-attribute{color:#ff5555}.hljs-qtcreator_dark .hljs-variable,.hljs-qtcreator_dark .hljs-params,.hljs-qtcreator_dark .hljs-class .hljs-title{color:#8888ff}.hljs-qtcreator_dark .hljs-string,.hljs-qtcreator_dark .hljs-selector-id,.hljs-qtcreator_dark .hljs-selector-attr,.hljs-qtcreator_dark .hljs-selector-pseudo,.hljs-qtcreator_dark .hljs-type,.hljs-qtcreator_dark .hljs-built_in,.hljs-qtcreator_dark .hljs-builtin-name,.hljs-qtcreator_dark .hljs-template-tag,.hljs-qtcreator_dark .hljs-template-variable,.hljs-qtcreator_dark .hljs-addition,.hljs-qtcreator_dark .hljs-link{color:#ff55ff}.hljs-qtcreator_dark .hljs-comment,.hljs-qtcreator_dark .hljs-meta,.hljs-qtcreator_dark .hljs-deletion{color:#55ffff}\",\"qtcreator_light\":\".hljs-qtcreator_light .hljs{display:block;overflow-x:auto;padding:.5em;background:#ffffff}.hljs-qtcreator_light .hljs,.hljs-qtcreator_light .hljs-subst,.hljs-qtcreator_light .hljs-tag,.hljs-qtcreator_light .hljs-title{color:#000000}.hljs-qtcreator_light .hljs-strong,.hljs-qtcreator_light .hljs-emphasis{color:#000000}.hljs-qtcreator_light .hljs-bullet,.hljs-qtcreator_light .hljs-quote,.hljs-qtcreator_light .hljs-number,.hljs-qtcreator_light .hljs-regexp,.hljs-qtcreator_light .hljs-literal{color:#000080}.hljs-qtcreator_light .hljs-code .hljs-selector-class{color:#800080}.hljs-qtcreator_light .hljs-emphasis,.hljs-qtcreator_light .hljs-stronge,.hljs-qtcreator_light .hljs-type{font-style:italic}.hljs-qtcreator_light .hljs-keyword,.hljs-qtcreator_light .hljs-selector-tag,.hljs-qtcreator_light .hljs-function,.hljs-qtcreator_light .hljs-section,.hljs-qtcreator_light .hljs-symbol,.hljs-qtcreator_light .hljs-name{color:#808000}.hljs-qtcreator_light .hljs-attribute{color:#800000}.hljs-qtcreator_light .hljs-variable,.hljs-qtcreator_light .hljs-params,.hljs-qtcreator_light .hljs-class .hljs-title{color:#0055AF}.hljs-qtcreator_light .hljs-string,.hljs-qtcreator_light .hljs-selector-id,.hljs-qtcreator_light .hljs-selector-attr,.hljs-qtcreator_light .hljs-selector-pseudo,.hljs-qtcreator_light .hljs-type,.hljs-qtcreator_light .hljs-built_in,.hljs-qtcreator_light .hljs-builtin-name,.hljs-qtcreator_light .hljs-template-tag,.hljs-qtcreator_light .hljs-template-variable,.hljs-qtcreator_light .hljs-addition,.hljs-qtcreator_light .hljs-link{color:#008000}.hljs-qtcreator_light .hljs-comment,.hljs-qtcreator_light .hljs-meta,.hljs-qtcreator_light .hljs-deletion{color:#008000}\",\"railscasts\":\".hljs-railscasts .hljs{display:block;overflow-x:auto;padding:.5em;background:#232323;color:#e6e1dc}.hljs-railscasts .hljs-comment,.hljs-railscasts .hljs-quote{color:#bc9458;font-style:italic}.hljs-railscasts .hljs-keyword,.hljs-railscasts .hljs-selector-tag{color:#c26230}.hljs-railscasts .hljs-string,.hljs-railscasts .hljs-number,.hljs-railscasts .hljs-regexp,.hljs-railscasts .hljs-variable,.hljs-railscasts .hljs-template-variable{color:#a5c261}.hljs-railscasts .hljs-subst{color:#519f50}.hljs-railscasts .hljs-tag,.hljs-railscasts .hljs-name{color:#e8bf6a}.hljs-railscasts .hljs-type{color:#da4939}.hljs-railscasts .hljs-symbol,.hljs-railscasts .hljs-bullet,.hljs-railscasts .hljs-built_in,.hljs-railscasts .hljs-builtin-name,.hljs-railscasts .hljs-attr,.hljs-railscasts .hljs-link{color:#6d9cbe}.hljs-railscasts .hljs-params{color:#d0d0ff}.hljs-railscasts .hljs-attribute{color:#cda869}.hljs-railscasts .hljs-meta{color:#9b859d}.hljs-railscasts .hljs-title,.hljs-railscasts .hljs-section{color:#ffc66d}.hljs-railscasts .hljs-addition{background-color:#144212;color:#e6e1dc;display:inline-block;width:100%}.hljs-railscasts .hljs-deletion{background-color:#600;color:#e6e1dc;display:inline-block;width:100%}.hljs-railscasts .hljs-selector-class{color:#9b703f}.hljs-railscasts .hljs-selector-id{color:#8b98ab}.hljs-railscasts .hljs-emphasis{font-style:italic}.hljs-railscasts .hljs-strong{font-weight:bold}.hljs-railscasts .hljs-link{text-decoration:underline}\",\"rainbow\":\".hljs-rainbow .hljs{display:block;overflow-x:auto;padding:.5em;background:#474949;color:#d1d9e1}.hljs-rainbow .hljs-comment,.hljs-rainbow .hljs-quote{color:#969896;font-style:italic}.hljs-rainbow .hljs-keyword,.hljs-rainbow .hljs-selector-tag,.hljs-rainbow .hljs-literal,.hljs-rainbow .hljs-type,.hljs-rainbow .hljs-addition{color:#cc99cc}.hljs-rainbow .hljs-number,.hljs-rainbow .hljs-selector-attr,.hljs-rainbow .hljs-selector-pseudo{color:#f99157}.hljs-rainbow .hljs-string,.hljs-rainbow .hljs-doctag,.hljs-rainbow .hljs-regexp{color:#8abeb7}.hljs-rainbow .hljs-title,.hljs-rainbow .hljs-name,.hljs-rainbow .hljs-section,.hljs-rainbow .hljs-built_in{color:#b5bd68}.hljs-rainbow .hljs-variable,.hljs-rainbow .hljs-template-variable,.hljs-rainbow .hljs-selector-id,.hljs-rainbow .hljs-class .hljs-title{color:#ffcc66}.hljs-rainbow .hljs-section,.hljs-rainbow .hljs-name,.hljs-rainbow .hljs-strong{font-weight:bold}.hljs-rainbow .hljs-symbol,.hljs-rainbow .hljs-bullet,.hljs-rainbow .hljs-subst,.hljs-rainbow .hljs-meta,.hljs-rainbow .hljs-link{color:#f99157}.hljs-rainbow .hljs-deletion{color:#dc322f}.hljs-rainbow .hljs-formula{background:#eee8d5}.hljs-rainbow .hljs-attr,.hljs-rainbow .hljs-attribute{color:#81a2be}.hljs-rainbow .hljs-emphasis{font-style:italic}\",\"school-book\":\".hljs-school-book .hljs{display:block;overflow-x:auto;padding:15px .5em .5em 30px;font-size:11px;line-height:16px}.hljs-school-book pre{background:#f6f6ae url(school-book.png);border-top:solid 2px #d2e8b9;border-bottom:solid 1px #d2e8b9}.hljs-school-book .hljs-keyword,.hljs-school-book .hljs-selector-tag,.hljs-school-book .hljs-literal{color:#005599;font-weight:bold}.hljs-school-book .hljs,.hljs-school-book .hljs-subst{color:#3e5915}.hljs-school-book .hljs-string,.hljs-school-book .hljs-title,.hljs-school-book .hljs-section,.hljs-school-book .hljs-type,.hljs-school-book .hljs-symbol,.hljs-school-book .hljs-bullet,.hljs-school-book .hljs-attribute,.hljs-school-book .hljs-built_in,.hljs-school-book .hljs-builtin-name,.hljs-school-book .hljs-addition,.hljs-school-book .hljs-variable,.hljs-school-book .hljs-template-tag,.hljs-school-book .hljs-template-variable,.hljs-school-book .hljs-link{color:#2c009f}.hljs-school-book .hljs-comment,.hljs-school-book .hljs-quote,.hljs-school-book .hljs-deletion,.hljs-school-book .hljs-meta{color:#e60415}.hljs-school-book .hljs-keyword,.hljs-school-book .hljs-selector-tag,.hljs-school-book .hljs-literal,.hljs-school-book .hljs-doctag,.hljs-school-book .hljs-title,.hljs-school-book .hljs-section,.hljs-school-book .hljs-type,.hljs-school-book .hljs-name,.hljs-school-book .hljs-selector-id,.hljs-school-book .hljs-strong{font-weight:bold}.hljs-school-book .hljs-emphasis{font-style:italic}\",\"solarized-dark\":\".hljs-solarized-dark .hljs{display:block;overflow-x:auto;padding:.5em;background:#002b36;color:#839496}.hljs-solarized-dark .hljs-comment,.hljs-solarized-dark .hljs-quote{color:#586e75}.hljs-solarized-dark .hljs-keyword,.hljs-solarized-dark .hljs-selector-tag,.hljs-solarized-dark .hljs-addition{color:#859900}.hljs-solarized-dark .hljs-number,.hljs-solarized-dark .hljs-string,.hljs-solarized-dark .hljs-meta .hljs-meta-string,.hljs-solarized-dark .hljs-literal,.hljs-solarized-dark .hljs-doctag,.hljs-solarized-dark .hljs-regexp{color:#2aa198}.hljs-solarized-dark .hljs-title,.hljs-solarized-dark .hljs-section,.hljs-solarized-dark .hljs-name,.hljs-solarized-dark .hljs-selector-id,.hljs-solarized-dark .hljs-selector-class{color:#268bd2}.hljs-solarized-dark .hljs-attribute,.hljs-solarized-dark .hljs-attr,.hljs-solarized-dark .hljs-variable,.hljs-solarized-dark .hljs-template-variable,.hljs-solarized-dark .hljs-class .hljs-title,.hljs-solarized-dark .hljs-type{color:#b58900}.hljs-solarized-dark .hljs-symbol,.hljs-solarized-dark .hljs-bullet,.hljs-solarized-dark .hljs-subst,.hljs-solarized-dark .hljs-meta,.hljs-solarized-dark .hljs-meta .hljs-keyword,.hljs-solarized-dark .hljs-selector-attr,.hljs-solarized-dark .hljs-selector-pseudo,.hljs-solarized-dark .hljs-link{color:#cb4b16}.hljs-solarized-dark .hljs-built_in,.hljs-solarized-dark .hljs-deletion{color:#dc322f}.hljs-solarized-dark .hljs-formula{background:#073642}.hljs-solarized-dark .hljs-emphasis{font-style:italic}.hljs-solarized-dark .hljs-strong{font-weight:bold}\",\"solarized-light\":\".hljs-solarized-light .hljs{display:block;overflow-x:auto;padding:.5em;background:#fdf6e3;color:#657b83}.hljs-solarized-light .hljs-comment,.hljs-solarized-light .hljs-quote{color:#93a1a1}.hljs-solarized-light .hljs-keyword,.hljs-solarized-light .hljs-selector-tag,.hljs-solarized-light .hljs-addition{color:#859900}.hljs-solarized-light .hljs-number,.hljs-solarized-light .hljs-string,.hljs-solarized-light .hljs-meta .hljs-meta-string,.hljs-solarized-light .hljs-literal,.hljs-solarized-light .hljs-doctag,.hljs-solarized-light .hljs-regexp{color:#2aa198}.hljs-solarized-light .hljs-title,.hljs-solarized-light .hljs-section,.hljs-solarized-light .hljs-name,.hljs-solarized-light .hljs-selector-id,.hljs-solarized-light .hljs-selector-class{color:#268bd2}.hljs-solarized-light .hljs-attribute,.hljs-solarized-light .hljs-attr,.hljs-solarized-light .hljs-variable,.hljs-solarized-light .hljs-template-variable,.hljs-solarized-light .hljs-class .hljs-title,.hljs-solarized-light .hljs-type{color:#b58900}.hljs-solarized-light .hljs-symbol,.hljs-solarized-light .hljs-bullet,.hljs-solarized-light .hljs-subst,.hljs-solarized-light .hljs-meta,.hljs-solarized-light .hljs-meta .hljs-keyword,.hljs-solarized-light .hljs-selector-attr,.hljs-solarized-light .hljs-selector-pseudo,.hljs-solarized-light .hljs-link{color:#cb4b16}.hljs-solarized-light .hljs-built_in,.hljs-solarized-light .hljs-deletion{color:#dc322f}.hljs-solarized-light .hljs-formula{background:#eee8d5}.hljs-solarized-light .hljs-emphasis{font-style:italic}.hljs-solarized-light .hljs-strong{font-weight:bold}\",\"sunburst\":\".hljs-sunburst .hljs{display:block;overflow-x:auto;padding:.5em;background:#000;color:#f8f8f8}.hljs-sunburst .hljs-comment,.hljs-sunburst .hljs-quote{color:#aeaeae;font-style:italic}.hljs-sunburst .hljs-keyword,.hljs-sunburst .hljs-selector-tag,.hljs-sunburst .hljs-type{color:#e28964}.hljs-sunburst .hljs-string{color:#65b042}.hljs-sunburst .hljs-subst{color:#daefa3}.hljs-sunburst .hljs-regexp,.hljs-sunburst .hljs-link{color:#e9c062}.hljs-sunburst .hljs-title,.hljs-sunburst .hljs-section,.hljs-sunburst .hljs-tag,.hljs-sunburst .hljs-name{color:#89bdff}.hljs-sunburst .hljs-class .hljs-title,.hljs-sunburst .hljs-doctag{text-decoration:underline}.hljs-sunburst .hljs-symbol,.hljs-sunburst .hljs-bullet,.hljs-sunburst .hljs-number{color:#3387cc}.hljs-sunburst .hljs-params,.hljs-sunburst .hljs-variable,.hljs-sunburst .hljs-template-variable{color:#3e87e3}.hljs-sunburst .hljs-attribute{color:#cda869}.hljs-sunburst .hljs-meta{color:#8996a8}.hljs-sunburst .hljs-formula{background-color:#0e2231;color:#f8f8f8;font-style:italic}.hljs-sunburst .hljs-addition{background-color:#253b22;color:#f8f8f8}.hljs-sunburst .hljs-deletion{background-color:#420e09;color:#f8f8f8}.hljs-sunburst .hljs-selector-class{color:#9b703f}.hljs-sunburst .hljs-selector-id{color:#8b98ab}.hljs-sunburst .hljs-emphasis{font-style:italic}.hljs-sunburst .hljs-strong{font-weight:bold}\",\"tomorrow-night-blue\":\".hljs-tomorrow-night-blue .hljs-comment,.hljs-tomorrow-night-blue .hljs-quote{color:#7285b7}.hljs-tomorrow-night-blue .hljs-variable,.hljs-tomorrow-night-blue .hljs-template-variable,.hljs-tomorrow-night-blue .hljs-tag,.hljs-tomorrow-night-blue .hljs-name,.hljs-tomorrow-night-blue .hljs-selector-id,.hljs-tomorrow-night-blue .hljs-selector-class,.hljs-tomorrow-night-blue .hljs-regexp,.hljs-tomorrow-night-blue .hljs-deletion{color:#ff9da4}.hljs-tomorrow-night-blue .hljs-number,.hljs-tomorrow-night-blue .hljs-built_in,.hljs-tomorrow-night-blue .hljs-builtin-name,.hljs-tomorrow-night-blue .hljs-literal,.hljs-tomorrow-night-blue .hljs-type,.hljs-tomorrow-night-blue .hljs-params,.hljs-tomorrow-night-blue .hljs-meta,.hljs-tomorrow-night-blue .hljs-link{color:#ffc58f}.hljs-tomorrow-night-blue .hljs-attribute{color:#ffeead}.hljs-tomorrow-night-blue .hljs-string,.hljs-tomorrow-night-blue .hljs-symbol,.hljs-tomorrow-night-blue .hljs-bullet,.hljs-tomorrow-night-blue .hljs-addition{color:#d1f1a9}.hljs-tomorrow-night-blue .hljs-title,.hljs-tomorrow-night-blue .hljs-section{color:#bbdaff}.hljs-tomorrow-night-blue .hljs-keyword,.hljs-tomorrow-night-blue .hljs-selector-tag{color:#ebbbff}.hljs-tomorrow-night-blue .hljs{display:block;overflow-x:auto;background:#002451;color:white;padding:.5em}.hljs-tomorrow-night-blue .hljs-emphasis{font-style:italic}.hljs-tomorrow-night-blue .hljs-strong{font-weight:bold}\",\"tomorrow-night-bright\":\".hljs-tomorrow-night-bright .hljs-comment,.hljs-tomorrow-night-bright .hljs-quote{color:#969896}.hljs-tomorrow-night-bright .hljs-variable,.hljs-tomorrow-night-bright .hljs-template-variable,.hljs-tomorrow-night-bright .hljs-tag,.hljs-tomorrow-night-bright .hljs-name,.hljs-tomorrow-night-bright .hljs-selector-id,.hljs-tomorrow-night-bright .hljs-selector-class,.hljs-tomorrow-night-bright .hljs-regexp,.hljs-tomorrow-night-bright .hljs-deletion{color:#d54e53}.hljs-tomorrow-night-bright .hljs-number,.hljs-tomorrow-night-bright .hljs-built_in,.hljs-tomorrow-night-bright .hljs-builtin-name,.hljs-tomorrow-night-bright .hljs-literal,.hljs-tomorrow-night-bright .hljs-type,.hljs-tomorrow-night-bright .hljs-params,.hljs-tomorrow-night-bright .hljs-meta,.hljs-tomorrow-night-bright .hljs-link{color:#e78c45}.hljs-tomorrow-night-bright .hljs-attribute{color:#e7c547}.hljs-tomorrow-night-bright .hljs-string,.hljs-tomorrow-night-bright .hljs-symbol,.hljs-tomorrow-night-bright .hljs-bullet,.hljs-tomorrow-night-bright .hljs-addition{color:#b9ca4a}.hljs-tomorrow-night-bright .hljs-title,.hljs-tomorrow-night-bright .hljs-section{color:#7aa6da}.hljs-tomorrow-night-bright .hljs-keyword,.hljs-tomorrow-night-bright .hljs-selector-tag{color:#c397d8}.hljs-tomorrow-night-bright .hljs{display:block;overflow-x:auto;background:black;color:#eaeaea;padding:.5em}.hljs-tomorrow-night-bright .hljs-emphasis{font-style:italic}.hljs-tomorrow-night-bright .hljs-strong{font-weight:bold}\",\"tomorrow-night-eighties\":\".hljs-tomorrow-night-eighties .hljs-comment,.hljs-tomorrow-night-eighties .hljs-quote{color:#999999}.hljs-tomorrow-night-eighties .hljs-variable,.hljs-tomorrow-night-eighties .hljs-template-variable,.hljs-tomorrow-night-eighties .hljs-tag,.hljs-tomorrow-night-eighties .hljs-name,.hljs-tomorrow-night-eighties .hljs-selector-id,.hljs-tomorrow-night-eighties .hljs-selector-class,.hljs-tomorrow-night-eighties .hljs-regexp,.hljs-tomorrow-night-eighties .hljs-deletion{color:#f2777a}.hljs-tomorrow-night-eighties .hljs-number,.hljs-tomorrow-night-eighties .hljs-built_in,.hljs-tomorrow-night-eighties .hljs-builtin-name,.hljs-tomorrow-night-eighties .hljs-literal,.hljs-tomorrow-night-eighties .hljs-type,.hljs-tomorrow-night-eighties .hljs-params,.hljs-tomorrow-night-eighties .hljs-meta,.hljs-tomorrow-night-eighties .hljs-link{color:#f99157}.hljs-tomorrow-night-eighties .hljs-attribute{color:#ffcc66}.hljs-tomorrow-night-eighties .hljs-string,.hljs-tomorrow-night-eighties .hljs-symbol,.hljs-tomorrow-night-eighties .hljs-bullet,.hljs-tomorrow-night-eighties .hljs-addition{color:#99cc99}.hljs-tomorrow-night-eighties .hljs-title,.hljs-tomorrow-night-eighties .hljs-section{color:#6699cc}.hljs-tomorrow-night-eighties .hljs-keyword,.hljs-tomorrow-night-eighties .hljs-selector-tag{color:#cc99cc}.hljs-tomorrow-night-eighties .hljs{display:block;overflow-x:auto;background:#2d2d2d;color:#cccccc;padding:.5em}.hljs-tomorrow-night-eighties .hljs-emphasis{font-style:italic}.hljs-tomorrow-night-eighties .hljs-strong{font-weight:bold}\",\"tomorrow-night\":\".hljs-tomorrow-night .hljs-comment,.hljs-tomorrow-night .hljs-quote{color:#969896}.hljs-tomorrow-night .hljs-variable,.hljs-tomorrow-night .hljs-template-variable,.hljs-tomorrow-night .hljs-tag,.hljs-tomorrow-night .hljs-name,.hljs-tomorrow-night .hljs-selector-id,.hljs-tomorrow-night .hljs-selector-class,.hljs-tomorrow-night .hljs-regexp,.hljs-tomorrow-night .hljs-deletion{color:#cc6666}.hljs-tomorrow-night .hljs-number,.hljs-tomorrow-night .hljs-built_in,.hljs-tomorrow-night .hljs-builtin-name,.hljs-tomorrow-night .hljs-literal,.hljs-tomorrow-night .hljs-type,.hljs-tomorrow-night .hljs-params,.hljs-tomorrow-night .hljs-meta,.hljs-tomorrow-night .hljs-link{color:#de935f}.hljs-tomorrow-night .hljs-attribute{color:#f0c674}.hljs-tomorrow-night .hljs-string,.hljs-tomorrow-night .hljs-symbol,.hljs-tomorrow-night .hljs-bullet,.hljs-tomorrow-night .hljs-addition{color:#b5bd68}.hljs-tomorrow-night .hljs-title,.hljs-tomorrow-night .hljs-section{color:#81a2be}.hljs-tomorrow-night .hljs-keyword,.hljs-tomorrow-night .hljs-selector-tag{color:#b294bb}.hljs-tomorrow-night .hljs{display:block;overflow-x:auto;background:#1d1f21;color:#c5c8c6;padding:.5em}.hljs-tomorrow-night .hljs-emphasis{font-style:italic}.hljs-tomorrow-night .hljs-strong{font-weight:bold}\",\"tomorrow\":\".hljs-tomorrow .hljs-comment,.hljs-tomorrow .hljs-quote{color:#8e908c}.hljs-tomorrow .hljs-variable,.hljs-tomorrow .hljs-template-variable,.hljs-tomorrow .hljs-tag,.hljs-tomorrow .hljs-name,.hljs-tomorrow .hljs-selector-id,.hljs-tomorrow .hljs-selector-class,.hljs-tomorrow .hljs-regexp,.hljs-tomorrow .hljs-deletion{color:#c82829}.hljs-tomorrow .hljs-number,.hljs-tomorrow .hljs-built_in,.hljs-tomorrow .hljs-builtin-name,.hljs-tomorrow .hljs-literal,.hljs-tomorrow .hljs-type,.hljs-tomorrow .hljs-params,.hljs-tomorrow .hljs-meta,.hljs-tomorrow .hljs-link{color:#f5871f}.hljs-tomorrow .hljs-attribute{color:#eab700}.hljs-tomorrow .hljs-string,.hljs-tomorrow .hljs-symbol,.hljs-tomorrow .hljs-bullet,.hljs-tomorrow .hljs-addition{color:#718c00}.hljs-tomorrow .hljs-title,.hljs-tomorrow .hljs-section{color:#4271ae}.hljs-tomorrow .hljs-keyword,.hljs-tomorrow .hljs-selector-tag{color:#8959a8}.hljs-tomorrow .hljs{display:block;overflow-x:auto;background:white;color:#4d4d4c;padding:.5em}.hljs-tomorrow .hljs-emphasis{font-style:italic}.hljs-tomorrow .hljs-strong{font-weight:bold}\",\"vs\":\".hljs-vs .hljs{display:block;overflow-x:auto;padding:.5em;background:white;color:black}.hljs-vs .hljs-comment,.hljs-vs .hljs-quote,.hljs-vs .hljs-variable{color:#008000}.hljs-vs .hljs-keyword,.hljs-vs .hljs-selector-tag,.hljs-vs .hljs-built_in,.hljs-vs .hljs-name,.hljs-vs .hljs-tag{color:#00f}.hljs-vs .hljs-string,.hljs-vs .hljs-title,.hljs-vs .hljs-section,.hljs-vs .hljs-attribute,.hljs-vs .hljs-literal,.hljs-vs .hljs-template-tag,.hljs-vs .hljs-template-variable,.hljs-vs .hljs-type,.hljs-vs .hljs-addition{color:#a31515}.hljs-vs .hljs-deletion,.hljs-vs .hljs-selector-attr,.hljs-vs .hljs-selector-pseudo,.hljs-vs .hljs-meta{color:#2b91af}.hljs-vs .hljs-doctag{color:#808080}.hljs-vs .hljs-attr{color:#f00}.hljs-vs .hljs-symbol,.hljs-vs .hljs-bullet,.hljs-vs .hljs-link{color:#00b0e8}.hljs-vs .hljs-emphasis{font-style:italic}.hljs-vs .hljs-strong{font-weight:bold}\",\"xcode\":\".hljs-xcode .hljs{display:block;overflow-x:auto;padding:.5em;background:#fff;color:black}.hljs-xcode .hljs-comment,.hljs-xcode .hljs-quote{color:#006a00}.hljs-xcode .hljs-keyword,.hljs-xcode .hljs-selector-tag,.hljs-xcode .hljs-literal{color:#aa0d91}.hljs-xcode .hljs-name{color:#008}.hljs-xcode .hljs-variable,.hljs-xcode .hljs-template-variable{color:#660}.hljs-xcode .hljs-string{color:#c41a16}.hljs-xcode .hljs-regexp,.hljs-xcode .hljs-link{color:#080}.hljs-xcode .hljs-title,.hljs-xcode .hljs-tag,.hljs-xcode .hljs-symbol,.hljs-xcode .hljs-bullet,.hljs-xcode .hljs-number,.hljs-xcode .hljs-meta{color:#1c00cf}.hljs-xcode .hljs-section,.hljs-xcode .hljs-class .hljs-title,.hljs-xcode .hljs-type,.hljs-xcode .hljs-attr,.hljs-xcode .hljs-built_in,.hljs-xcode .hljs-builtin-name,.hljs-xcode .hljs-params{color:#5c2699}.hljs-xcode .hljs-attribute,.hljs-xcode .hljs-subst{color:#000}.hljs-xcode .hljs-formula{background-color:#eee;font-style:italic}.hljs-xcode .hljs-addition{background-color:#baeeba}.hljs-xcode .hljs-deletion{background-color:#ffc8bd}.hljs-xcode .hljs-selector-id,.hljs-xcode .hljs-selector-class{color:#9b703f}.hljs-xcode .hljs-doctag,.hljs-xcode .hljs-strong{font-weight:bold}.hljs-xcode .hljs-emphasis{font-style:italic}\",\"xt256\":\".hljs-xt256 .hljs{display:block;overflow-x:auto;color:#eaeaea;background:#000;padding:.5}.hljs-xt256 .hljs-subst{color:#eaeaea}.hljs-xt256 .hljs-emphasis{font-style:italic}.hljs-xt256 .hljs-strong{font-weight:bold}.hljs-xt256 .hljs-builtin-name,.hljs-xt256 .hljs-type{color:#eaeaea}.hljs-xt256 .hljs-params{color:#da0000}.hljs-xt256 .hljs-literal,.hljs-xt256 .hljs-number,.hljs-xt256 .hljs-name{color:#ff0000;font-weight:bolder}.hljs-xt256 .hljs-comment{color:#969896}.hljs-xt256 .hljs-selector-id,.hljs-xt256 .hljs-quote{color:#00ffff}.hljs-xt256 .hljs-template-variable,.hljs-xt256 .hljs-variable,.hljs-xt256 .hljs-title{color:#00ffff;font-weight:bold}.hljs-xt256 .hljs-selector-class,.hljs-xt256 .hljs-keyword,.hljs-xt256 .hljs-symbol{color:#fff000}.hljs-xt256 .hljs-string,.hljs-xt256 .hljs-bullet{color:#00ff00}.hljs-xt256 .hljs-tag,.hljs-xt256 .hljs-section{color:#000fff}.hljs-xt256 .hljs-selector-tag{color:#000fff;font-weight:bold}.hljs-xt256 .hljs-attribute,.hljs-xt256 .hljs-built_in,.hljs-xt256 .hljs-regexp,.hljs-xt256 .hljs-link{color:#ff00ff}.hljs-xt256 .hljs-meta{color:#fff;font-weight:bolder}\",\"zenburn\":\".hljs-zenburn .hljs{display:block;overflow-x:auto;padding:.5em;background:#3f3f3f;color:#dcdcdc}.hljs-zenburn .hljs-keyword,.hljs-zenburn .hljs-selector-tag,.hljs-zenburn .hljs-tag{color:#e3ceab}.hljs-zenburn .hljs-template-tag{color:#dcdcdc}.hljs-zenburn .hljs-number{color:#8cd0d3}.hljs-zenburn .hljs-variable,.hljs-zenburn .hljs-template-variable,.hljs-zenburn .hljs-attribute{color:#efdcbc}.hljs-zenburn .hljs-literal{color:#efefaf}.hljs-zenburn .hljs-subst{color:#8f8f8f}.hljs-zenburn .hljs-title,.hljs-zenburn .hljs-name,.hljs-zenburn .hljs-selector-id,.hljs-zenburn .hljs-selector-class,.hljs-zenburn .hljs-section,.hljs-zenburn .hljs-type{color:#efef8f}.hljs-zenburn .hljs-symbol,.hljs-zenburn .hljs-bullet,.hljs-zenburn .hljs-link{color:#dca3a3}.hljs-zenburn .hljs-deletion,.hljs-zenburn .hljs-string,.hljs-zenburn .hljs-built_in,.hljs-zenburn .hljs-builtin-name{color:#cc9393}.hljs-zenburn .hljs-addition,.hljs-zenburn .hljs-comment,.hljs-zenburn .hljs-quote,.hljs-zenburn .hljs-meta{color:#7f9f7f}.hljs-zenburn .hljs-emphasis{font-style:italic}.hljs-zenburn .hljs-strong{font-weight:bold}\"},\n  engine: hljs\n};\n\n},{}],15:[function(require,module,exports){\nmodule.exports = Lexer;\n\nvar CODE = 1,\n    INLINE_CODE = 2,\n    CONTENT = 3,\n    FENCES = 4,\n    DEF = 5,\n    DEF_HREF = 6,\n    DEF_TITLE = 7,\n    MACRO = 8,\n    MACRO_ARGS = 9,\n    MACRO_OBJ = 10,\n    SEPARATOR = 11,\n    NOTES_SEPARATOR = 12;\n\nvar regexByName = {\n    CODE: /(?:^|\\n)( {4}[^\\n]+\\n*)+/,\n    INLINE_CODE: /`([^`]+?)`/,\n    CONTENT: /(?:\\\\)?((?:\\.[a-zA-Z_\\-][a-zA-Z\\-_0-9]*)+)\\[/,\n    FENCES: /(?:^|\\n) *(`{3,}|~{3,}) *(?:\\S+)? *\\n(?:[\\s\\S]+?)\\s*\\4 *(?:\\n+|$)/,\n    DEF: /(?:^|\\n) *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n    MACRO: /!\\[:([^\\] ]+)([^\\]]*)\\](?:\\(([^\\)]*)\\))?/,\n    SEPARATOR: /(?:^|\\n)(---?)(?:\\n|$)/,\n    NOTES_SEPARATOR: /(?:^|\\n)(\\?{3})(?:\\n|$)/\n  };\n\nvar block = replace(/CODE|INLINE_CODE|CONTENT|FENCES|DEF|MACRO|SEPARATOR|NOTES_SEPARATOR/, regexByName),\n    inline = replace(/CODE|INLINE_CODE|CONTENT|FENCES|DEF|MACRO/, regexByName);\n\nfunction Lexer () { }\n\nLexer.prototype.lex = function (src) {\n  var tokens = lex(src, block),\n      i;\n\n  for (i = tokens.length - 2; i >= 0; i--) {\n    if (tokens[i].type === 'text' && tokens[i+1].type === 'text') {\n      tokens[i].text += tokens[i+1].text;\n      tokens.splice(i+1, 1);\n    }\n  }\n\n  return tokens;\n};\n\nfunction lex (src, regex, tokens) {\n  var cap, text;\n\n  tokens = tokens || [];\n\n  while ((cap = regex.exec(src)) !== null) {\n    if (cap.index > 0) {\n      tokens.push({\n        type: 'text',\n        text: src.substring(0, cap.index)\n      });\n    }\n\n    if (cap[CODE]) {\n      tokens.push({\n        type: 'code',\n        text: cap[0]\n      });\n    }\n    else if (cap[INLINE_CODE]) {\n      tokens.push({\n        type: 'text',\n        text: cap[0]\n      });\n    }\n    else if (cap[FENCES]) {\n      tokens.push({\n        type: 'fences',\n        text: cap[0]\n      });\n    }\n    else if (cap[DEF]) {\n      tokens.push({\n        type: 'def',\n        id: cap[DEF],\n        href: cap[DEF_HREF],\n        title: cap[DEF_TITLE]\n      });\n    }\n    else if (cap[MACRO]) {\n      tokens.push({\n        type: 'macro',\n        name: cap[MACRO],\n        args: (cap[MACRO_ARGS] || '').split(',').map(trim),\n        obj: cap[MACRO_OBJ]\n      });\n    }\n    else if (cap[SEPARATOR]) {\n      tokens.push({\n        type: 'separator',\n        text: cap[SEPARATOR]\n      });\n    }\n    else if (cap[NOTES_SEPARATOR]) {\n      tokens.push({\n        type: 'notes_separator',\n        text: cap[NOTES_SEPARATOR]\n      });\n    }\n    else if (cap[CONTENT]) {\n      text = getTextInBrackets(src, cap.index + cap[0].length);\n      if (text !== undefined) {\n        src = src.substring(text.length + 1);\n\n        if (cap[0][0] !== '\\\\') {\n          tokens.push({\n            type: 'content_start',\n            classes: cap[CONTENT].substring(1).split('.'),\n            block: text.indexOf('\\n') !== -1\n          });\n          lex(text, inline, tokens);\n          tokens.push({\n            type: 'content_end',\n            block: text.indexOf('\\n') !== -1\n          });\n        }\n        else {\n          tokens.push({\n            type: 'text',\n            text: cap[0].substring(1) + text + ']'\n          });\n        }\n      }\n      else {\n        tokens.push({\n          type: 'text',\n          text: cap[0]\n        });\n      }\n    }\n\n    src = src.substring(cap.index + cap[0].length);\n  }\n\n  if (src || (!src && tokens.length === 0)) {\n    tokens.push({\n      type: 'text',\n      text: src\n    });\n  }\n\n  return tokens;\n}\n\nfunction replace (regex, replacements) {\n  return new RegExp(regex.source.replace(/\\w{2,}/g, function (key) {\n    return replacements[key].source;\n  }));\n}\n\nfunction trim (text) {\n  if (typeof text === 'string') {\n    return text.trim();\n  }\n\n  return text;\n}\n\nfunction getTextInBrackets (src, offset) {\n  var depth = 1,\n      pos = offset,\n      chr;\n\n  while (depth > 0 && pos < src.length) {\n    chr = src[pos++];\n    depth += (chr === '[' && 1) || (chr === ']' && -1) || 0;\n  }\n\n  if (depth === 0) {\n    src = src.substr(offset, pos - offset - 1);\n    return src;\n  }\n}\n\n},{}],16:[function(require,module,exports){\nvar macros = module.exports = {};\r\n\r\nmacros.hello = function () {\r\n  return 'hello!';\r\n};\r\n\n},{}],17:[function(require,module,exports){\nvar converter = require('../converter');\n\nmodule.exports = Slide;\n\nfunction Slide (slideIndex, slide, template) {\n  var self = this;\n\n  self.properties = slide.properties || {};\n  self.links = slide.links || {};\n  self.content = slide.content || [];\n  self.notes = slide.notes || '';\n\n  self.getSlideIndex = function () { return slideIndex; };\n\n  if (template) {\n    inherit(self, template);\n  }\n}\n\nfunction inherit (slide, template) {\n  inheritProperties(slide, template);\n  inheritContent(slide, template);\n  inheritNotes(slide, template);\n}\n\nfunction inheritProperties (slide, template) {\n  var property\n    , value\n    ;\n\n  for (property in template.properties) {\n    if (!template.properties.hasOwnProperty(property) ||\n        ignoreProperty(property)) {\n      continue;\n    }\n\n    value = [template.properties[property]];\n\n    if (property === 'class' && slide.properties[property]) {\n      value.push(slide.properties[property]);\n    }\n\n    if (property === 'class' || slide.properties[property] === undefined) {\n      slide.properties[property] = value.join(', ');\n    }\n  }\n}\n\nfunction ignoreProperty (property) {\n  return property === 'name' ||\n    property === 'layout' ||\n    property === 'count';\n}\n\nfunction inheritContent (slide, template) {\n  var expandedVariables;\n\n  slide.properties.content = slide.content.slice();\n  slide.content = template.content.slice();\n\n  expandedVariables = slide.expandVariables(/* contentOnly: */ true);\n\n  if (expandedVariables.content === undefined) {\n    slide.content = slide.content.concat(slide.properties.content);\n  }\n\n  delete slide.properties.content;\n}\n\nfunction inheritNotes (slide, template) {\n  if (template.notes) {\n    slide.notes = template.notes + '\\n\\n' + slide.notes;\n  }\n}\n\nSlide.prototype.expandVariables = function (contentOnly, content, expandResult) {\n  var properties = this.properties\n    , i\n    ;\n\n  content = content !== undefined ? content : this.content;\n  expandResult = expandResult || {};\n\n  for (i = 0; i < content.length; ++i) {\n    if (typeof content[i] === 'string') {\n      content[i] = content[i].replace(/(\\\\)?(\\{\\{([^\\}\\n]+)\\}\\})/g, expand);\n    }\n    else {\n      this.expandVariables(contentOnly, content[i].content, expandResult);\n    }\n  }\n\n  function expand (match, escaped, unescapedMatch, property) {\n    var propertyName = property.trim()\n      , propertyValue\n      ;\n\n    if (escaped) {\n      return contentOnly ? match[0] : unescapedMatch;\n    }\n\n    if (contentOnly && propertyName !== 'content') {\n      return match;\n    }\n\n    propertyValue = properties[propertyName];\n\n    if (propertyValue !== undefined) {\n      expandResult[propertyName] = propertyValue;\n      return propertyValue;\n    }\n\n    return propertyName === 'content' ? '' : unescapedMatch;\n  }\n\n  return expandResult;\n};\n\n},{\"../converter\":12}],18:[function(require,module,exports){\nvar Navigation = require('./slideshow/navigation')\n  , Events = require('./slideshow/events')\n  , utils = require('../utils')\n  , Slide = require('./slide')\n  , Parser = require('../parser')\n  , macros = require('../macros')\n  ;\n\nmodule.exports = Slideshow;\n\nfunction Slideshow (events, dom, options, callback) {\n  var self = this\n    , slides = []\n    , links = {}\n    ;\n\n  slides.byName = {};\n  options = options || {};\n\n  // Extend slideshow functionality\n  Events.call(self, events);\n  Navigation.call(self, events);\n\n  self.loadFromString = loadFromString;\n  self.loadFromUrl = loadFromUrl;\n  self.update = update;\n  self.getLinks = getLinks;\n  self.getSlides = getSlides;\n  self.getSlideCount = getSlideCount;\n  self.getSlideByName = getSlideByName;\n\n  self.togglePresenterMode = togglePresenterMode;\n  self.toggleHelp = toggleHelp;\n  self.toggleBlackout = toggleBlackout;\n  self.toggleMirrored = toggleMirrored;\n  self.toggleFullscreen = toggleFullscreen;\n  self.createClone = createClone;\n\n  self.resetTimer = resetTimer;\n\n  self.getRatio = getOrDefault('ratio', '4:3');\n  self.getHighlightStyle = getOrDefault('highlightStyle', 'default');\n  self.getHighlightLines = getOrDefault('highlightLines', false);\n  self.getHighlightSpans = getOrDefault('highlightSpans', false);\n  self.getHighlightInlineCode = getOrDefault('highlightInlineCode', false);\n  self.getHighlightLanguage = getOrDefault('highlightLanguage', '');\n  self.getSlideNumberFormat = getOrDefault('slideNumberFormat', '%current% / %total%');\n  self.getCloneTarget = getOrDefault('cloneTarget', '_blank');\n\n  events.on('toggleBlackout', function () {\n    if (self.clone && !self.clone.closed) {\n      self.clone.postMessage('toggleBlackout', '*');\n    }\n  });\n\n  if (options.sourceUrl) {\n    loadFromUrl(options.sourceUrl, callback);\n  }\n  else {\n    loadFromString(options.source);\n    if (typeof callback === 'function') {\n      callback(self);\n    }\n  }\n\n  function loadFromString (source) {\n    source = source || '';\n\n    slides = createSlides(source, options);\n    expandVariables(slides);\n\n    links = {};\n    slides.forEach(function (slide) {\n      for (var id in slide.links) {\n        if (slide.links.hasOwnProperty(id)) {\n          links[id] = slide.links[id];\n        }\n      }\n    });\n\n    events.emit('slidesChanged');\n  }\n  \n  function loadFromUrl (url, callback) {\n    var xhr = new dom.XMLHttpRequest();\n    xhr.open('GET', options.sourceUrl, true);\n    xhr.onload = function (e) {\n      if (xhr.readyState === 4) {\n        if (xhr.status === 200) {\n          options.source = xhr.responseText.replace(/\\r\\n/g, '\\n');\n          loadFromString(options.source);\n          if (typeof callback === 'function') {\n            callback(self);\n          }\n        } else {\n          throw Error(xhr.statusText);\n        }\n      }\n    };\n    xhr.onerror = function (e) {\n      throw Error(xhr.statusText);\n    };\n    xhr.send(null);\n    return xhr;\n  }\n\n  function update () {\n    events.emit('resize');\n  }\n\n  function getLinks () {\n    return links;\n  }\n\n  function getSlides () {\n    return slides.map(function (slide) { return slide; });\n  }\n\n  function getSlideCount () {\n    return slides.length;\n  }\n\n  function getSlideByName (name) {\n    return slides.byName[name];\n  }\n\n  function togglePresenterMode () {\n    events.emit('togglePresenterMode');\n  }\n\n  function toggleHelp () {\n    events.emit('toggleHelp');\n  }\n\n  function toggleBlackout () {\n    events.emit('toggleBlackout');\n  }\n\n  function toggleMirrored() {\n    events.emit('toggleMirrored');\n  }\n\n  function toggleFullscreen () {\n    events.emit('toggleFullscreen');\n  }\n\n  function createClone () {\n    events.emit('createClone');\n  }\n\n  function resetTimer () {\n    events.emit('resetTimer');\n  }\n\n  function getOrDefault (key, defaultValue) {\n    return function () {\n      if (options[key] === undefined) {\n        return defaultValue;\n      }\n\n      return options[key];\n    };\n  }\n}\n\nfunction createSlides (slideshowSource, options) {\n  var parser = new Parser()\n   ,  parsedSlides = parser.parse(slideshowSource, macros)\n    , slides = []\n    , byName = {}\n    , layoutSlide\n    ;\n\n  slides.byName = {};\n\n  parsedSlides.forEach(function (slide, i) {\n    var template, slideViewModel;\n\n    if (slide.properties.continued === 'true' && i > 0) {\n      template = slides[slides.length - 1];\n    }\n    else if (byName[slide.properties.template]) {\n      template = byName[slide.properties.template];\n    }\n    else if (slide.properties.layout === 'false') {\n      layoutSlide = undefined;\n    }\n    else if (layoutSlide && slide.properties.layout !== 'true') {\n      template = layoutSlide;\n    }\n\n    if (slide.properties.continued === 'true' &&\n        options.countIncrementalSlides === false &&\n        slide.properties.count === undefined) {\n      slide.properties.count = 'false';\n    }\n\n    slideViewModel = new Slide(slides.length, slide, template);\n\n    if (slide.properties.layout === 'true') {\n      layoutSlide = slideViewModel;\n    }\n\n    if (slide.properties.name) {\n      byName[slide.properties.name] = slideViewModel;\n    }\n\n    if (slide.properties.layout !== 'true') {\n      slides.push(slideViewModel);\n      if (slide.properties.name) {\n        slides.byName[slide.properties.name] = slideViewModel;\n      }\n    }\n  });\n\n  return slides;\n}\n\nfunction expandVariables (slides) {\n  slides.forEach(function (slide) {\n    slide.expandVariables();\n  });\n}\n\n},{\"../macros\":16,\"../parser\":21,\"../utils\":24,\"./slide\":17,\"./slideshow/events\":19,\"./slideshow/navigation\":20}],19:[function(require,module,exports){\nvar EventEmitter = require('events').EventEmitter;\n\nmodule.exports = Events;\n\nfunction Events (events) {\n  var self = this\n    , externalEvents = new EventEmitter()\n    ;\n\n  externalEvents.setMaxListeners(0);\n\n  self.on = function () {\n    externalEvents.on.apply(externalEvents, arguments);\n    return self;\n  };\n\n  ['showSlide', 'hideSlide', 'beforeShowSlide', 'afterShowSlide', 'beforeHideSlide', 'afterHideSlide', 'toggledPresenter'].map(function (eventName) {\n    events.on(eventName, function (slideIndex) {\n      var slide = self.getSlides()[slideIndex];\n      externalEvents.emit(eventName, slide);\n    });\n  });\n}\n\n},{\"events\":1}],20:[function(require,module,exports){\nmodule.exports = Navigation;\n\nfunction Navigation (events) {\n  var self = this\n    , currentSlideIndex = -1\n    , started = null\n    ;\n\n  self.getCurrentSlideIndex = getCurrentSlideIndex;\n  self.gotoSlide = gotoSlide;\n  self.gotoPreviousSlide = gotoPreviousSlide;\n  self.gotoNextSlide = gotoNextSlide;\n  self.gotoFirstSlide = gotoFirstSlide;\n  self.gotoLastSlide = gotoLastSlide;\n  self.pause = pause;\n  self.resume = resume;\n\n  events.on('gotoSlide', gotoSlide);\n  events.on('gotoPreviousSlide', gotoPreviousSlide);\n  events.on('gotoNextSlide', gotoNextSlide);\n  events.on('gotoFirstSlide', gotoFirstSlide);\n  events.on('gotoLastSlide', gotoLastSlide);\n\n  events.on('slidesChanged', function () {\n    if (currentSlideIndex > self.getSlideCount()) {\n      currentSlideIndex = self.getSlideCount();\n    }\n  });\n\n  events.on('createClone', function () {\n    if (!self.clone || self.clone.closed) {\n      self.clone = window.open(location.href, self.getCloneTarget(), 'location=no');\n    }\n    else {\n      self.clone.focus();\n    }\n  });\n\n  events.on('resetTimer', function() {\n    started = false;\n  });\n\n  function pause () {\n    events.emit('pause');\n  }\n\n  function resume () {\n    events.emit('resume');\n  }\n\n  function getCurrentSlideIndex () {\n    return currentSlideIndex;\n  }\n\n  function gotoSlideByIndex(slideIndex, noMessage) {\n    var alreadyOnSlide = slideIndex === currentSlideIndex\n      , slideOutOfRange = slideIndex < 0 || slideIndex > self.getSlideCount()-1\n      ;\n\n    if (noMessage === undefined) noMessage = false;\n\n    if (alreadyOnSlide || slideOutOfRange) {\n      return;\n    }\n\n    if (currentSlideIndex !== -1) {\n      events.emit('hideSlide', currentSlideIndex, false);\n    }\n\n    // Use some tri-state logic here.\n    // null = We haven't shown the first slide yet.\n    // false = We've shown the initial slide, but we haven't progressed beyond that.\n    // true = We've issued the first slide change command.\n    if (started === null) {\n      started = false;\n    } else if (started === false) {\n      // We've shown the initial slide previously - that means this is a\n      // genuine move to a new slide.\n      events.emit('start');\n      started = true;\n    }\n\n    events.emit('showSlide', slideIndex);\n\n    currentSlideIndex = slideIndex;\n\n    events.emit('slideChanged', slideIndex + 1);\n\n    if (!noMessage) {\n      if (self.clone && !self.clone.closed) {\n        self.clone.postMessage('gotoSlide:' + (currentSlideIndex + 1), '*');\n      }\n\n      if (window.opener) {\n        window.opener.postMessage('gotoSlide:' + (currentSlideIndex + 1), '*');\n      }\n    }\n  }\n\n  function gotoSlide (slideNoOrName, noMessage) {\n    var slideIndex = getSlideIndex(slideNoOrName);\n\n    gotoSlideByIndex(slideIndex, noMessage);\n  }\n\n  function gotoPreviousSlide() {\n    gotoSlideByIndex(currentSlideIndex - 1);\n  }\n\n  function gotoNextSlide() {\n    gotoSlideByIndex(currentSlideIndex + 1);\n  }\n\n  function gotoFirstSlide () {\n    gotoSlideByIndex(0);\n  }\n\n  function gotoLastSlide () {\n    gotoSlideByIndex(self.getSlideCount() - 1);\n  }\n\n  function getSlideIndex (slideNoOrName) {\n    var slideNo\n      , slide\n      ;\n\n    if (typeof slideNoOrName === 'number') {\n      return slideNoOrName - 1;\n    }\n\n    slideNo = parseInt(slideNoOrName, 10);\n    if (slideNo.toString() === slideNoOrName) {\n      return slideNo - 1;\n    }\n\n    if(slideNoOrName.match(/^p\\d+$/)){\n      events.emit('forcePresenterMode');\n      return parseInt(slideNoOrName.substr(1), 10)-1;\n    }\n\n    slide = self.getSlideByName(slideNoOrName);\n    if (slide) {\n      return slide.getSlideIndex();\n    }\n\n    return 0;\n  }\n}\n\n},{}],21:[function(require,module,exports){\nvar Lexer = require('./lexer');\n\nmodule.exports = Parser;\n\nfunction Parser () { }\n\n/*\n *  Parses source string into list of slides.\n *\n *  Output format:\n *\n *  [\n *    // Per slide\n *    {\n *      // Properties\n *      properties: {\n *        name: 'value'\n *      },\n *      // Notes (optional, same format as content list)\n *      notes: [...],\n *      // Link definitions\n *      links: {\n *        id: { href: 'url', title: 'optional title' },\n *        ...\n *      ],\n *      content: [\n *        // Any content but content classes are represented as strings\n *        'plain text ',\n *        // Content classes are represented as objects\n *        { block: false, class: 'the-class', content: [...] },\n *        { block: true, class: 'the-class', content: [...] },\n *        ...\n *      ]\n *    },\n *    ...\n *  ]\n */\nParser.prototype.parse = function (src, macros) {\n  var self = this,\n      lexer = new Lexer(),\n      tokens = lexer.lex(cleanInput(src)),\n      slides = [],\n\n      // The last item on the stack contains the current slide or\n      // content class we're currently appending content to.\n      stack = [createSlide()];\n\n  macros = macros || {};\n\n  tokens.forEach(function (token) {\n    switch (token.type) {\n      case 'text':\n      case 'code':\n      case 'fences':\n        // Text, code and fenced code tokens are appended to their\n        // respective parents as string literals, and are only included\n        // in the parse process in order to reason about structure\n        // (like ignoring a slide separator inside fenced code).\n        appendTo(stack[stack.length - 1], token.text);\n        break;\n      case 'def':\n        // Link definition\n        stack[0].links[token.id] = {\n          href: token.href,\n          title: token.title\n        };\n        break;\n      case 'macro':\n        // Macro\n        var macro = macros[token.name];\n        if (typeof macro !== 'function') {\n          throw new Error('Macro \"' + token.name + '\" not found. ' +\n              'You need to define macro using remark.macros[\\'' +\n              token.name + '\\'] = function () { ... };');\n        }\n        var value = macro.apply(token.obj, token.args);\n        if (typeof value === 'string') {\n          value = self.parse(value, macros);\n          appendTo(stack[stack.length - 1], value[0].content[0]);\n        }\n        else {\n          appendTo(stack[stack.length - 1], value === undefined ?\n              '' : value.toString());\n        }\n        break;\n      case 'content_start':\n        // Entering content class, so create stack entry for appending\n        // upcoming content to.\n        //\n        // Lexer handles open/close bracket balance, so there's no need\n        // to worry about there being a matching closing bracket.\n        stack.push(createContentClass(token));\n        break;\n      case 'content_end':\n        // Exiting content class, so remove entry from stack and\n        // append to previous item (outer content class or slide).\n        appendTo(stack[stack.length - 2], stack[stack.length - 1]);\n        stack.pop();\n        break;\n      case 'separator':\n        // Slide separator (--- or --), so add current slide to list of\n        // slides and re-initialize stack with new, blank slide.\n        slides.push(stack[0]);\n        stack = [createSlide()];\n        // Tag the new slide as a continued slide if the separator\n        // used was -- instead of --- (2 vs. 3 dashes).\n        stack[0].properties.continued = (token.text === '--').toString();\n        break;\n      case 'notes_separator':\n        // Notes separator (???), so create empty content list on slide\n        // in which all remaining slide content will be put.\n        stack[0].notes = [];\n        break;\n    }\n  });\n\n  // Push current slide to list of slides.\n  slides.push(stack[0]);\n\n  slides.forEach(function (slide) {\n    slide.content[0] = extractProperties(slide.content[0] || '', slide.properties);\n  });\n\n  return slides.filter(function (slide) {\n    var exclude = (slide.properties.exclude || '').toLowerCase();\n\n    if (exclude === 'true') {\n      return false;\n    }\n\n    return true;\n  });\n};\n\nfunction createSlide () {\n  return {\n    content: [],\n    properties: {\n      continued: 'false'\n    },\n    links: {}\n  };\n}\n\nfunction createContentClass (token) {\n  return {\n    class: token.classes.join(' '),\n    block: token.block,\n    content: []\n  };\n}\n\nfunction appendTo (element, content) {\n  var target = element.content;\n\n  if (element.notes !== undefined) {\n    target = element.notes;\n  }\n\n  // If two string are added after one another, we can just as well\n  // go ahead and concatenate them into a single string.\n  var lastIdx = target.length - 1;\n  if (typeof target[lastIdx] === 'string' && typeof content === 'string') {\n    target[lastIdx] += content;\n  }\n  else {\n    target.push(content);\n  }\n}\n\nfunction extractProperties (source, properties) {\n  var propertyFinder = /^\\n*([-\\w]+):([^$\\n]*)|\\n*(?:<!--\\s*)([-\\w]+):([^$\\n]*?)(?:\\s*-->)/i\n    , match\n    ;\n\n  while ((match = propertyFinder.exec(source)) !== null) {\n    source = source.substr(0, match.index) +\n      source.substr(match.index + match[0].length);\n\n    if (match[1] !== undefined) {\n      properties[match[1].trim()] = match[2].trim();\n    }\n    else {\n      properties[match[3].trim()] = match[4].trim();\n    }\n\n    propertyFinder.lastIndex = match.index;\n  }\n\n  return source;\n}\n\nfunction cleanInput(source) {\n  // If all lines are indented, we should trim them all to the same point so that code doesn't\n  // need to start at column 0 in the source (see GitHub Issue #105)\n\n  // Helper to extract captures from the regex\n  var getMatchCaptures = function (source, pattern) {\n    var results = [], match;\n    while ((match = pattern.exec(source)) !== null)\n      results.push(match[1]);\n    return results;\n  };\n\n  // Calculate the minimum leading whitespace\n  // Ensure there's at least one char that's not newline nor whitespace to ignore empty and blank lines\n  var leadingWhitespacePattern = /^([ \\t]*)[^ \\t\\n]/gm;\n  var whitespace = getMatchCaptures(source, leadingWhitespacePattern).map(function (s) { return s.length; });\n  var minWhitespace = Math.min.apply(Math, whitespace);\n\n  // Trim off the exact amount of whitespace, or less for blank lines (non-empty)\n  var trimWhitespacePattern = new RegExp('^[ \\\\t]{0,' + minWhitespace + '}', 'gm');\n  return source.replace(trimWhitespacePattern, '');\n}\n\n},{\"./lexer\":15}],22:[function(require,module,exports){\n/* Automatically generated */\n\nmodule.exports = {\n  version: \"0.14.0\",\n  documentStyles: \"html.remark-container,body.remark-container{height:100%;width:100%;-webkit-print-color-adjust:exact}.remark-container{background:#d7d8d2;margin:0;overflow:hidden}.remark-container:focus{outline-style:solid;outline-width:1px}.remark-container:-webkit-full-screen{width:100%;height:100%}body:-webkit-full-screen{background:#000000}body:-moz-full-screen{background:#000000}body:fullscreen{background:#000000}.remark-slides-area{position:relative;height:100%;width:100%}.remark-slide-container{display:none;position:absolute;height:100%;width:100%;page-break-after:always}.remark-slide-scaler{background-color:transparent;overflow:hidden;position:absolute;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top-left;-moz-box-shadow:0 0 30px #888;-webkit-box-shadow:0 0 30px #888;box-shadow:0 0 30px #888}.remark-slide{height:100%;width:100%;display:table;table-layout:fixed}.remark-slide>.left{text-align:left}.remark-slide>.center{text-align:center}.remark-slide>.right{text-align:right}.remark-slide>.top{vertical-align:top}.remark-slide>.middle{vertical-align:middle}.remark-slide>.bottom{vertical-align:bottom}.remark-slide-content{background-color:#fff;background-position:center;background-repeat:no-repeat;display:table-cell;font-size:20px;padding:1em 4em 1em 4em}.remark-slide-content h1{font-size:55px}.remark-slide-content h2{font-size:45px}.remark-slide-content h3{font-size:35px}.remark-slide-content .left{display:block;text-align:left}.remark-slide-content .center{display:block;text-align:center}.remark-slide-content .right{display:block;text-align:right}.remark-slide-number{bottom:12px;opacity:.5;position:absolute;right:20px}.remark-slide-notes{border-top:3px solid black;position:absolute;display:none}.remark-code{font-size:18px}.remark-code-line{min-height:1em}.remark-code-line-highlighted{background-color:rgba(255,255,0,0.5)}.remark-code-span-highlighted{background-color:rgba(255,255,0,0.5);padding:1px 2px 2px 2px}.remark-visible{display:block;z-index:2}.remark-fading{display:block;z-index:1}.remark-fading .remark-slide-scaler{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.remark-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;display:none;background:#000;z-index:2}.remark-pause{bottom:0;top:0;right:0;left:0;display:none;position:absolute;z-index:1000}.remark-pause .remark-pause-lozenge{margin-top:30%;text-align:center}.remark-pause .remark-pause-lozenge span{color:white;background:black;border:2px solid black;border-radius:20px;padding:20px 30px;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:42pt;font-weight:bold}.remark-container.remark-presenter-mode.remark-pause-mode .remark-pause{display:block}.remark-container.remark-presenter-mode.remark-pause-mode .remark-backdrop{display:block;opacity:.5}.remark-help{bottom:0;top:0;right:0;left:0;display:none;position:absolute;z-index:1000;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top-left}.remark-help .remark-help-content{color:white;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:12pt;position:absolute;top:5%;bottom:10%;height:10%;left:5%;width:90%}.remark-help .remark-help-content h1{font-size:36px}.remark-help .remark-help-content td{color:white;font-size:12pt;padding:10px}.remark-help .remark-help-content td:first-child{padding-left:0}.remark-help .remark-help-content .key{background:white;color:black;min-width:1em;display:inline-block;padding:3px 6px;text-align:center;border-radius:4px;font-size:14px}.remark-help .dismiss{top:85%}.remark-container.remark-help-mode .remark-help{display:block}.remark-container.remark-help-mode .remark-backdrop{display:block;opacity:.95}.remark-preview-area{bottom:2%;left:2%;display:none;opacity:.5;position:absolute;height:47.25%;width:48%}.remark-preview-area .remark-slide-container{display:block}.remark-notes-area{background:#fff;bottom:0;color:black;display:none;left:52%;overflow:hidden;position:absolute;right:0;top:0}.remark-notes-area .remark-top-area{height:50px;left:20px;position:absolute;right:10px;top:10px}.remark-notes-area .remark-bottom-area{position:absolute;top:75px;bottom:10px;left:20px;right:10px}.remark-notes-area .remark-bottom-area .remark-toggle{display:block;text-decoration:none;font-family:Helvetica,arial,freesans,clean,sans-serif;height:21px;font-size:.75em;text-transform:uppercase;color:#ccc}.remark-notes-area .remark-bottom-area .remark-notes-current-area{height:70%;position:relative}.remark-notes-area .remark-bottom-area .remark-notes-current-area .remark-notes{clear:both;border-top:1px solid #f5f5f5;position:absolute;top:22px;bottom:0;left:0;right:0;overflow-y:auto;margin-bottom:20px;padding-top:10px}.remark-notes-area .remark-bottom-area .remark-notes-preview-area{height:30%;position:relative}.remark-notes-area .remark-bottom-area .remark-notes-preview-area .remark-notes-preview{border-top:1px solid #f5f5f5;position:absolute;top:22px;bottom:0;left:0;right:0;overflow-y:auto}.remark-notes-area .remark-bottom-area .remark-notes>*:first-child,.remark-notes-area .remark-bottom-area .remark-notes-preview>*:first-child{margin-top:5px}.remark-notes-area .remark-bottom-area .remark-notes>*:last-child,.remark-notes-area .remark-bottom-area .remark-notes-preview>*:last-child{margin-bottom:0}.remark-toolbar{color:#979892;vertical-align:middle}.remark-toolbar .remark-toolbar-link{border:2px solid #d7d8d2;color:#979892;display:inline-block;padding:2px 2px;text-decoration:none;text-align:center;min-width:20px}.remark-toolbar .remark-toolbar-link:hover{border-color:#979892;color:#676862}.remark-toolbar .remark-toolbar-timer{border:2px solid black;border-radius:10px;background:black;color:white;display:inline-block;float:right;padding:5px 10px;font-family:sans-serif;font-weight:bold;font-size:175%;text-decoration:none;text-align:center}.remark-container.remark-presenter-mode .remark-slides-area{top:2%;left:2%;height:47.25%;width:48%}.remark-container.remark-presenter-mode .remark-preview-area{display:block}.remark-container.remark-presenter-mode .remark-notes-area{display:block}.remark-container.remark-blackout-mode:not(.remark-presenter-mode) .remark-backdrop{display:block;opacity:.99}.remark-container.remark-mirrored-mode:not(.remark-presenter-mode) .remark-slides-area{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1)}@media print{.remark-container{overflow:visible;background-color:#fff}.remark-container.remark-presenter-mode .remark-slides-area{top:0;left:0;height:100%;width:681px}.remark-container.remark-presenter-mode .remark-preview-area,.remark-container.remark-presenter-mode .remark-notes-area{display:none}.remark-container.remark-presenter-mode .remark-slide-notes{display:block;margin-left:30px;width:621px}.remark-slide-container{display:block;position:relative}.remark-slide-scaler{-moz-box-shadow:none;-webkit-box-shadow:none;-webkit-transform-origin:initial;box-shadow:none}}@page{margin:0}\",\n  containerLayout: \"<div class=\\\"remark-notes-area\\\">\\n  <div class=\\\"remark-top-area\\\">\\n    <div class=\\\"remark-toolbar\\\">\\n      <a class=\\\"remark-toolbar-link\\\" href=\\\"#increase\\\">+</a>\\n      <a class=\\\"remark-toolbar-link\\\" href=\\\"#decrease\\\">-</a>\\n      <span class=\\\"remark-toolbar-timer\\\"></span>\\n    </div>\\n  </div>\\n  <div class=\\\"remark-bottom-area\\\">\\n    <div class=\\\"remark-notes-current-area\\\">\\n      <div class=\\\"remark-toggle\\\">Notes for current slide</div>\\n      <div class=\\\"remark-notes\\\"></div>\\n    </div>\\n    <div class=\\\"remark-notes-preview-area\\\">\\n      <div class=\\\"remark-toggle\\\">Notes for next slide</div>\\n      <div class=\\\"remark-notes-preview\\\"></div>\\n    </div>\\n  </div>\\n</div>\\n<div class=\\\"remark-slides-area\\\"></div>\\n<div class=\\\"remark-preview-area\\\"></div>\\n<div class=\\\"remark-backdrop\\\"></div>\\n<div class=\\\"remark-pause\\\">\\n  <div class=\\\"remark-pause-lozenge\\\">\\n    <span>Paused</span>\\n  </div>\\n</div>\\n<div class=\\\"remark-help\\\">\\n  <div class=\\\"remark-help-content\\\">\\n    <h1>Help</h1>\\n    <p><b>Keyboard shortcuts</b></p>\\n    <table class=\\\"light-keys\\\">\\n      <tr>\\n        <td>\\n          <span class=\\\"key\\\"><b>&uarr;</b></span>,\\n          <span class=\\\"key\\\"><b>&larr;</b></span>,\\n          <span class=\\\"key\\\">Pg Up</span>,\\n          <span class=\\\"key\\\">k</span>\\n        </td>\\n        <td>Go to previous slide</td>\\n      </tr>\\n      <tr>\\n        <td>\\n          <span class=\\\"key\\\"><b>&darr;</b></span>,\\n          <span class=\\\"key\\\"><b>&rarr;</b></span>,\\n          <span class=\\\"key\\\">Pg Dn</span>,\\n          <span class=\\\"key\\\">Space</span>,\\n          <span class=\\\"key\\\">j</span>\\n        </td>\\n        <td>Go to next slide</td>\\n      </tr>\\n      <tr>\\n        <td>\\n          <span class=\\\"key\\\">Home</span>\\n        </td>\\n        <td>Go to first slide</td>\\n      </tr>\\n      <tr>\\n        <td>\\n          <span class=\\\"key\\\">End</span>\\n        </td>\\n        <td>Go to last slide</td>\\n      </tr>\\n      <tr>\\n        <td>\\n          Number + <span class=\\\"key\\\">Return</span>\\n        </td>\\n        <td>Go to specific slide</td>\\n      </tr>\\n      <tr>\\n        <td>\\n          <span class=\\\"key\\\">b</span>&nbsp;/\\n          <span class=\\\"key\\\">m</span>&nbsp;/\\n          <span class=\\\"key\\\">f</span>\\n        </td>\\n        <td>Toggle blackout / mirrored / fullscreen mode</td>\\n      </tr>\\n      <tr>\\n        <td>\\n          <span class=\\\"key\\\">c</span>\\n        </td>\\n        <td>Clone slideshow</td>\\n      </tr>\\n      <tr>\\n        <td>\\n          <span class=\\\"key\\\">p</span>\\n        </td>\\n        <td>Toggle presenter mode</td>\\n      </tr>\\n      <tr>\\n        <td>\\n          <span class=\\\"key\\\">t</span>\\n        </td>\\n        <td>Restart the presentation timer</td>\\n      </tr>\\n      <tr>\\n        <td>\\n          <span class=\\\"key\\\">?</span>,\\n          <span class=\\\"key\\\">h</span>\\n        </td>\\n        <td>Toggle this help</td>\\n      </tr>\\n    </table>\\n  </div>\\n  <div class=\\\"content dismiss\\\">\\n    <table class=\\\"light-keys\\\">\\n      <tr>\\n        <td>\\n          <span class=\\\"key\\\">Esc</span>\\n        </td>\\n        <td>Back to slideshow</td>\\n      </tr>\\n    </table>\\n  </div>\\n</div>\\n\"\n};\n\n},{}],23:[function(require,module,exports){\nvar referenceWidth = 908\n  , referenceHeight = 681\n  , referenceRatio = referenceWidth / referenceHeight\n  ;\n\nmodule.exports = Scaler;\n\nfunction Scaler (events, slideshow) {\n  var self = this;\n\n  self.events = events;\n  self.slideshow = slideshow;\n  self.ratio = getRatio(slideshow);\n  self.dimensions = getDimensions(self.ratio);\n\n  self.events.on('propertiesChanged', function (changes) {\n    if (changes.hasOwnProperty('ratio')) {\n      self.ratio = getRatio(slideshow);\n      self.dimensions = getDimensions(self.ratio);\n    }\n  });\n}\n\nScaler.prototype.scaleToFit = function (element, container) {\n  var self = this\n    , containerHeight = container.clientHeight\n    , containerWidth = container.clientWidth\n    , scale\n    , scaledWidth\n    , scaledHeight\n    , ratio = self.ratio\n    , dimensions = self.dimensions\n    , direction\n    , left\n    , top\n    ;\n\n  if (containerWidth / ratio.width > containerHeight / ratio.height) {\n    scale = containerHeight / dimensions.height;\n  }\n  else {\n    scale = containerWidth / dimensions.width;\n  }\n\n  scaledWidth = dimensions.width * scale;\n  scaledHeight = dimensions.height * scale;\n\n  left = (containerWidth - scaledWidth) / 2;\n  top = (containerHeight - scaledHeight) / 2;\n\n  element.style['-webkit-transform'] = 'scale(' + scale + ')';\n  element.style.MozTransform = 'scale(' + scale + ')';\n  element.style.left = Math.max(left, 0) + 'px';\n  element.style.top = Math.max(top, 0) + 'px';\n};\n\nfunction getRatio (slideshow) {\n  var ratioComponents = slideshow.getRatio().split(':')\n    , ratio\n    ;\n\n  ratio = {\n    width: parseInt(ratioComponents[0], 10)\n  , height: parseInt(ratioComponents[1], 10)\n  };\n\n  ratio.ratio = ratio.width / ratio.height;\n\n  return ratio;\n}\n\nfunction getDimensions (ratio) {\n  return {\n    width: Math.floor(referenceWidth / referenceRatio * ratio.ratio)\n  , height: referenceHeight\n  };\n}\n\n},{}],24:[function(require,module,exports){\nexports.addClass = function (element, className) {\n  element.className = exports.getClasses(element)\n    .concat([className])\n    .join(' ');\n};\n\nexports.removeClass = function (element, className) {\n  element.className = exports.getClasses(element)\n    .filter(function (klass) { return klass !== className; })\n    .join(' ');\n};\n\nexports.toggleClass = function (element, className) {\n  var classes = exports.getClasses(element),\n      index = classes.indexOf(className);\n\n  if (index !== -1) {\n    classes.splice(index, 1);\n  }\n  else {\n    classes.push(className);\n  }\n\n  element.className = classes.join(' ');\n};\n\nexports.getClasses = function (element) {\n  return element.className\n    .split(' ')\n    .filter(function (s) { return s !== ''; });\n};\n\nexports.hasClass = function (element, className) {\n  return exports.getClasses(element).indexOf(className) !== -1;\n};\n\nexports.getPrefixedProperty = function (element, propertyName) {\n  var capitalizedPropertName = propertyName[0].toUpperCase() +\n    propertyName.slice(1);\n\n  return element[propertyName] || element['moz' + capitalizedPropertName] ||\n    element['webkit' + capitalizedPropertName];\n};\n\n},{}],25:[function(require,module,exports){\nvar converter = require('../converter');\r\n\r\nmodule.exports = NotesView;\r\n\r\nfunction NotesView (events, element, slideViewsAccessor) {\r\n  var self = this;\r\n\r\n  self.events = events;\r\n  self.element = element;\r\n  self.slideViewsAccessor = slideViewsAccessor;\r\n\r\n  self.configureElements();\r\n\r\n  events.on('showSlide', function (slideIndex) {\r\n    self.showSlide(slideIndex);\r\n  });\r\n}\r\n\r\nNotesView.prototype.showSlide = function (slideIndex) {\r\n  var self = this\r\n    , slideViews = self.slideViewsAccessor()\r\n    , slideView = slideViews[slideIndex]\r\n    , nextSlideView = slideViews[slideIndex + 1]\r\n    ;\r\n\r\n  self.notesElement.innerHTML = slideView.notesElement.innerHTML;\r\n\r\n  if (nextSlideView) {\r\n    self.notesPreviewElement.innerHTML = nextSlideView.notesElement.innerHTML;\r\n  }\r\n  else {\r\n    self.notesPreviewElement.innerHTML = '';\r\n  }\r\n};\r\n\r\nNotesView.prototype.configureElements = function () {\r\n  var self = this;\r\n\r\n  self.notesElement = self.element.getElementsByClassName('remark-notes')[0];\r\n  self.notesPreviewElement = self.element.getElementsByClassName('remark-notes-preview')[0];\r\n\r\n  self.notesElement.addEventListener('mousewheel', function (event) {\r\n    event.stopPropagation();\r\n  });\r\n\r\n  self.notesPreviewElement.addEventListener('mousewheel', function (event) {\r\n    event.stopPropagation();\r\n  });\r\n\r\n  self.toolbarElement = self.element.getElementsByClassName('remark-toolbar')[0];\r\n\r\n  var commands = {\r\n    increase: function () {\r\n      self.notesElement.style.fontSize = (parseFloat(self.notesElement.style.fontSize) || 1) + 0.1 + 'em';\r\n      self.notesPreviewElement.style.fontsize = self.notesElement.style.fontSize;\r\n    },\r\n    decrease: function () {\r\n      self.notesElement.style.fontSize = (parseFloat(self.notesElement.style.fontSize) || 1) - 0.1 + 'em';\r\n      self.notesPreviewElement.style.fontsize = self.notesElement.style.fontSize;\r\n    }\r\n  };\r\n\r\n  self.toolbarElement.getElementsByTagName('a').forEach(function (link) {\r\n    link.addEventListener('click', function (e) {\r\n      var command = e.target.hash.substr(1);\r\n      commands[command]();\r\n      e.preventDefault();\r\n    });\r\n  });\r\n};\r\n\n},{\"../converter\":12}],26:[function(require,module,exports){\nvar SlideNumber = require('../components/slide-number/slide-number')\n  , converter = require('../converter')\n  , highlighter = require('../highlighter')\n  , utils = require('../utils')\n  ;\n\nmodule.exports = SlideView;\n\nfunction SlideView (events, slideshow, scaler, slide) {\n  var self = this;\n\n  self.events = events;\n  self.slideshow = slideshow;\n  self.scaler = scaler;\n  self.slide = slide;\n\n  self.slideNumber = new SlideNumber(slide, slideshow);\n\n  self.configureElements();\n  self.updateDimensions();\n\n  self.events.on('propertiesChanged', function (changes) {\n    if (changes.hasOwnProperty('ratio')) {\n      self.updateDimensions();\n    }\n  });\n}\n\nSlideView.prototype.updateDimensions = function () {\n  var self = this\n    , dimensions = self.scaler.dimensions\n    ;\n\n  self.scalingElement.style.width = dimensions.width + 'px';\n  self.scalingElement.style.height = dimensions.height + 'px';\n};\n\nSlideView.prototype.scale = function (containerElement) {\n  var self = this;\n\n  self.scaler.scaleToFit(self.scalingElement, containerElement);\n};\n\nSlideView.prototype.show = function () {\n  utils.addClass(this.containerElement, 'remark-visible');\n  utils.removeClass(this.containerElement, 'remark-fading');\n};\n\nSlideView.prototype.hide = function () {\n  var self = this;\n  utils.removeClass(this.containerElement, 'remark-visible');\n  // Don't just disappear the slide. Mark it as fading, which\n  // keeps it on the screen, but at a reduced z-index.\n  // Then set a timer to remove the fading state in 1s.\n  utils.addClass(this.containerElement, 'remark-fading');\n  setTimeout(function(){\n      utils.removeClass(self.containerElement, 'remark-fading');\n  }, 1000);\n};\n\nSlideView.prototype.configureElements = function () {\n  var self = this;\n\n  self.containerElement = document.createElement('div');\n  self.containerElement.className = 'remark-slide-container';\n\n  self.scalingElement = document.createElement('div');\n  self.scalingElement.className = 'remark-slide-scaler';\n\n  self.element = document.createElement('div');\n  self.element.className = 'remark-slide';\n\n  self.contentElement = createContentElement(self.events, self.slideshow, self.slide);\n  self.notesElement = createNotesElement(self.slideshow, self.slide.notes);\n\n  self.contentElement.appendChild(self.slideNumber.element);\n  self.element.appendChild(self.contentElement);\n  self.scalingElement.appendChild(self.element);\n  self.containerElement.appendChild(self.scalingElement);\n  self.containerElement.appendChild(self.notesElement);\n};\n\nSlideView.prototype.scaleBackgroundImage = function (dimensions) {\n  var self = this\n    , styles = window.getComputedStyle(this.contentElement)\n    , backgroundImage = styles.backgroundImage\n    , backgroundSize = styles.backgroundSize\n    , backgroundPosition = styles.backgroundPosition\n    , match\n    , image\n    , scale\n    ;\n\n  // If the user explicitly sets the backgroundSize or backgroundPosition, let\n  // that win and early return here.\n  if ((backgroundSize || backgroundPosition) && !self.backgroundSizeSet) {\n    return;\n  }\n\n  if ((match = /^url\\((\"?)([^\\)]+?)\\1\\)/.exec(backgroundImage)) !== null) {\n    image = new Image();\n    image.onload = function () {\n      if (image.width > dimensions.width ||\n          image.height > dimensions.height) {\n        // Background image is larger than slide\n        if (!self.originalBackgroundSize) {\n          // No custom background size has been set\n          self.originalBackgroundSize = self.contentElement.style.backgroundSize;\n          self.originalBackgroundPosition = self.contentElement.style.backgroundPosition;\n          self.backgroundSizeSet = true;\n\n          if (dimensions.width / image.width < dimensions.height / image.height) {\n            scale = dimensions.width / image.width;\n          }\n          else {\n            scale = dimensions.height / image.height;\n          }\n\n          self.contentElement.style.backgroundSize = image.width * scale +\n            'px ' + image.height * scale + 'px';\n          self.contentElement.style.backgroundPosition = '50% ' +\n            ((dimensions.height - (image.height * scale)) / 2) + 'px';\n        }\n      }\n      else {\n        // Revert to previous background size setting\n        if (self.backgroundSizeSet) {\n          self.contentElement.style.backgroundSize = self.originalBackgroundSize;\n          self.contentElement.style.backgroundPosition = self.originalBackgroundPosition;\n          self.backgroundSizeSet = false;\n        }\n      }\n    };\n    image.src = match[2];\n  }\n};\n\nfunction createContentElement (events, slideshow, slide) {\n  var element = document.createElement('div');\n\n  if (slide.properties.name) {\n    element.id = 'slide-' + slide.properties.name;\n  }\n\n  styleContentElement(slideshow, element, slide.properties);\n\n  element.innerHTML = converter.convertMarkdown(slide.content, slideshow.getLinks());\n\n  highlightCodeBlocks(element, slideshow);\n\n  return element;\n}\n\nfunction styleContentElement (slideshow, element, properties) {\n  element.className = '';\n\n  setClassFromProperties(element, properties);\n  setHighlightStyleFromProperties(element, properties, slideshow);\n  setBackgroundFromProperties(element, properties);\n}\n\nfunction createNotesElement (slideshow, notes) {\n  var element = document.createElement('div');\n\n  element.className = 'remark-slide-notes';\n\n  element.innerHTML = converter.convertMarkdown(notes);\n\n  highlightCodeBlocks(element, slideshow);\n\n  return element;\n}\n\nfunction setBackgroundFromProperties (element, properties) {\n  var backgroundImage = properties['background-image'];\n  var backgroundColor = properties['background-color'];\n  var backgroundSize = properties['background-size'];\n  var backgroundPosition = properties['background-position'];\n\n  if (backgroundImage) {\n    element.style.backgroundImage = backgroundImage;\n  }\n  if (backgroundColor) {\n    element.style.backgroundColor = backgroundColor;\n  }\n  if (backgroundSize) {\n    element.style.backgroundSize = backgroundSize;\n  }\n  if (backgroundPosition) {\n    element.style.backgroundPosition = backgroundPosition;\n  }\n}\n\nfunction setHighlightStyleFromProperties (element, properties, slideshow) {\n  var highlightStyle = properties['highlight-style'] ||\n      slideshow.getHighlightStyle();\n\n  if (highlightStyle) {\n    utils.addClass(element, 'hljs-' + highlightStyle);\n  }\n}\n\nfunction setClassFromProperties (element, properties) {\n  utils.addClass(element, 'remark-slide-content');\n\n  (properties['class'] || '').split(/,| /)\n    .filter(function (s) { return s !== ''; })\n    .forEach(function (c) { utils.addClass(element, c); });\n}\n\nfunction highlightCodeBlocks (content, slideshow) {\n  var codeBlocks = content.getElementsByTagName('code'),\n      highlightLines = slideshow.getHighlightLines(),\n      highlightSpans = slideshow.getHighlightSpans(),\n      highlightInline = slideshow.getHighlightInlineCode(),\n      meta;\n\n  codeBlocks.forEach(function (block) {\n    if (block.className === '') {\n      block.className = slideshow.getHighlightLanguage();\n    }\n\n    if (block.parentElement.tagName !== 'PRE') {\n      utils.addClass(block, 'remark-inline-code');\n      if (highlightInline) {\n        highlighter.engine.highlightBlock(block, '');\n      }\n      return;\n    }\n\n    if (highlightLines) {\n      meta = extractMetadata(block);\n    }\n\n    if (block.className !== '') {\n      highlighter.engine.highlightBlock(block, '  ');\n    }\n\n    wrapLines(block);\n\n    if (highlightLines) {\n      highlightBlockLines(block, meta.highlightedLines);\n    }\n\n    if (highlightSpans) {\n      highlightBlockSpans(block);\n    }\n\n    utils.addClass(block, 'remark-code');\n  });\n}\n\nfunction extractMetadata (block) {\n  var highlightedLines = [];\n\n  block.innerHTML = block.innerHTML.split(/\\r?\\n/).map(function (line, i) {\n    if (line.indexOf('*') === 0) {\n      highlightedLines.push(i);\n      return line.replace(/^\\*( )?/, '$1$1');\n    }\n\n    return line;\n  }).join('\\n');\n\n  return {\n    highlightedLines: highlightedLines\n  };\n}\n\nfunction wrapLines (block) {\n  var lines = block.innerHTML.split(/\\r?\\n/).map(function (line) {\n    return '<div class=\"remark-code-line\">' + line + '</div>';\n  });\n\n  // Remove empty last line (due to last \\n)\n  if (lines.length && lines[lines.length - 1].indexOf('><') !== -1) {\n    lines.pop();\n  }\n\n  block.innerHTML = lines.join('');\n}\n\nfunction highlightBlockLines (block, lines) {\n  lines.forEach(function (i) {\n    utils.addClass(block.childNodes[i], 'remark-code-line-highlighted');\n  });\n}\n\nfunction highlightBlockSpans (block) {\n  var pattern = /([^`])`([^`]+?)`/g ;\n\n  block.childNodes.forEach(function (element) {\n    element.innerHTML = element.innerHTML.replace(pattern,\n      function (m,e,c) {\n        if (e === '\\\\') {\n          return m.substr(1);\n        }\n        return e + '<span class=\"remark-code-span-highlighted\">' +\n          c + '</span>';\n      });\n  });\n}\n\n},{\"../components/slide-number/slide-number\":\"components/slide-number\",\"../converter\":12,\"../highlighter\":14,\"../utils\":24}],27:[function(require,module,exports){\nvar SlideView = require('./slideView')\n  , Timer = require('../components/timer/timer')\n  , NotesView = require('./notesView')\n  , Scaler = require('../scaler')\n  , resources = require('../resources')\n  , utils = require('../utils')\n  , printing = require('../components/printing/printing')\n  ;\n\nmodule.exports = SlideshowView;\n\nfunction SlideshowView (events, dom, containerElement, slideshow) {\n  var self = this;\n\n  self.events = events;\n  self.dom = dom;\n  self.slideshow = slideshow;\n  self.scaler = new Scaler(events, slideshow);\n  self.slideViews = [];\n\n  self.configureContainerElement(containerElement);\n  self.configureChildElements();\n\n  self.updateDimensions();\n  self.scaleElements();\n  self.updateSlideViews();\n\n  self.timer = new Timer(events, self.timerElement);\n\n  events.on('slidesChanged', function () {\n    self.updateSlideViews();\n  });\n\n  events.on('hideSlide', function (slideIndex) {\n    // To make sure that there is only one element fading at a time,\n    // remove the fading class from all slides before hiding\n    // the new slide.\n    self.elementArea.getElementsByClassName('remark-fading').forEach(function (slide) {\n      utils.removeClass(slide, 'remark-fading');\n    });\n    self.hideSlide(slideIndex);\n  });\n\n  events.on('showSlide', function (slideIndex) {\n    self.showSlide(slideIndex);\n  });\n\n  events.on('forcePresenterMode', function () {\n\n    if (!utils.hasClass(self.containerElement, 'remark-presenter-mode')) {\n      utils.toggleClass(self.containerElement, 'remark-presenter-mode');\n      self.scaleElements();\n      printing.setPageOrientation('landscape');\n    }\n  });\n\n  events.on('togglePresenterMode', function () {\n    utils.toggleClass(self.containerElement, 'remark-presenter-mode');\n    self.scaleElements();\n    events.emit('toggledPresenter', self.slideshow.getCurrentSlideIndex() + 1);\n\n    if (utils.hasClass(self.containerElement, 'remark-presenter-mode')) {\n      printing.setPageOrientation('portrait');\n    }\n    else {\n      printing.setPageOrientation('landscape');\n    }\n  });\n\n  events.on('toggleHelp', function () {\n    utils.toggleClass(self.containerElement, 'remark-help-mode');\n  });\n\n  events.on('toggleBlackout', function () {\n    utils.toggleClass(self.containerElement, 'remark-blackout-mode');\n  });\n\n  events.on('toggleMirrored', function () {\n    utils.toggleClass(self.containerElement, 'remark-mirrored-mode');\n  });\n\n  events.on('hideOverlay', function () {\n    utils.removeClass(self.containerElement, 'remark-blackout-mode');\n    utils.removeClass(self.containerElement, 'remark-help-mode');\n  });\n\n  events.on('pause', function () {\n    utils.toggleClass(self.containerElement, 'remark-pause-mode');\n  });\n\n  events.on('resume', function () {\n    utils.toggleClass(self.containerElement, 'remark-pause-mode');\n  });\n\n  handleFullscreen(self);\n}\n\nfunction handleFullscreen(self) {\n  var requestFullscreen = utils.getPrefixedProperty(self.containerElement, 'requestFullScreen')\n    , cancelFullscreen = utils.getPrefixedProperty(document, 'cancelFullScreen')\n    ;\n\n  self.events.on('toggleFullscreen', function () {\n    var fullscreenElement = utils.getPrefixedProperty(document, 'fullscreenElement') ||\n      utils.getPrefixedProperty(document, 'fullScreenElement');\n\n    if (!fullscreenElement && requestFullscreen) {\n      requestFullscreen.call(self.containerElement, Element.ALLOW_KEYBOARD_INPUT);\n    }\n    else if (cancelFullscreen) {\n      cancelFullscreen.call(document);\n    }\n    self.scaleElements();\n  });\n}\n\nSlideshowView.prototype.isEmbedded = function () {\n  return this.containerElement !== this.dom.getBodyElement();\n};\n\nSlideshowView.prototype.configureContainerElement = function (element) {\n  var self = this;\n\n  self.containerElement = element;\n\n  utils.addClass(element, 'remark-container');\n\n  if (element === self.dom.getBodyElement()) {\n    utils.addClass(self.dom.getHTMLElement(), 'remark-container');\n\n    forwardEvents(self.events, window, [\n      'hashchange', 'resize', 'keydown', 'keypress', 'mousewheel',\n      'message', 'DOMMouseScroll'\n    ]);\n    forwardEvents(self.events, self.containerElement, [\n      'touchstart', 'touchmove', 'touchend', 'click', 'contextmenu'\n    ]);\n  }\n  else {\n    element.style.position = 'absolute';\n    element.tabIndex = -1;\n\n    forwardEvents(self.events, window, ['resize']);\n    forwardEvents(self.events, element, [\n      'keydown', 'keypress', 'mousewheel',\n      'touchstart', 'touchmove', 'touchend'\n    ]);\n  }\n\n  // Tap event is handled in slideshow view\n  // rather than controller as knowledge of\n  // container width is needed to determine\n  // whether to move backwards or forwards\n  self.events.on('tap', function (endX) {\n    if (endX < self.containerElement.clientWidth / 2) {\n      self.slideshow.gotoPreviousSlide();\n    }\n    else {\n      self.slideshow.gotoNextSlide();\n    }\n  });\n};\n\nfunction forwardEvents (target, source, events) {\n  events.forEach(function (eventName) {\n    source.addEventListener(eventName, function () {\n      var args = Array.prototype.slice.call(arguments);\n      target.emit.apply(target, [eventName].concat(args));\n    });\n  });\n}\n\nSlideshowView.prototype.configureChildElements = function () {\n  var self = this;\n\n  self.containerElement.innerHTML += resources.containerLayout;\n\n  self.elementArea = self.containerElement.getElementsByClassName('remark-slides-area')[0];\n  self.previewArea = self.containerElement.getElementsByClassName('remark-preview-area')[0];\n  self.notesArea = self.containerElement.getElementsByClassName('remark-notes-area')[0];\n\n  self.notesView = new NotesView (self.events, self.notesArea, function () {\n    return self.slideViews;\n  });\n\n  self.backdropElement = self.containerElement.getElementsByClassName('remark-backdrop')[0];\n  self.helpElement = self.containerElement.getElementsByClassName('remark-help')[0];\n\n  self.timerElement = self.notesArea.getElementsByClassName('remark-toolbar-timer')[0];\n  self.pauseElement = self.containerElement.getElementsByClassName('remark-pause')[0];\n\n  self.events.on('propertiesChanged', function (changes) {\n    if (changes.hasOwnProperty('ratio')) {\n      self.updateDimensions();\n    }\n  });\n\n  self.events.on('resize', onResize);\n\n  printing.init();\n  printing.on('print', onPrint);\n\n  function onResize () {\n    self.scaleElements();\n  }\n\n  function onPrint (e) {\n    var slideHeight;\n\n    if (e.isPortrait) {\n      slideHeight = e.pageHeight * 0.4;\n    }\n    else {\n      slideHeight = e.pageHeight;\n    }\n\n    self.slideViews.forEach(function (slideView) {\n      slideView.scale({\n        clientWidth: e.pageWidth,\n        clientHeight: slideHeight\n      });\n\n      if (e.isPortrait) {\n        slideView.scalingElement.style.top = '20px';\n        slideView.notesElement.style.top = slideHeight + 40 + 'px';\n      }\n    });\n  }\n};\n\nSlideshowView.prototype.updateSlideViews = function () {\n  var self = this;\n\n  self.slideViews.forEach(function (slideView) {\n    self.elementArea.removeChild(slideView.containerElement);\n  });\n\n  self.slideViews = self.slideshow.getSlides().map(function (slide) {\n    return new SlideView(self.events, self.slideshow, self.scaler, slide);\n  });\n\n  self.slideViews.forEach(function (slideView) {\n    self.elementArea.appendChild(slideView.containerElement);\n  });\n\n  self.updateDimensions();\n\n  if (self.slideshow.getCurrentSlideIndex() > -1) {\n    self.showSlide(self.slideshow.getCurrentSlideIndex());\n  }\n};\n\nSlideshowView.prototype.scaleSlideBackgroundImages = function (dimensions) {\n  var self = this;\n\n  self.slideViews.forEach(function (slideView) {\n    slideView.scaleBackgroundImage(dimensions);\n  });\n};\n\nSlideshowView.prototype.showSlide =  function (slideIndex) {\n  var self = this\n    , slideView = self.slideViews[slideIndex]\n    , nextSlideView = self.slideViews[slideIndex + 1]\n    ;\n\n  self.events.emit(\"beforeShowSlide\", slideIndex);\n\n  slideView.show();\n\n  if (nextSlideView) {\n    self.previewArea.innerHTML = nextSlideView.containerElement.outerHTML;\n  }\n  else {\n    self.previewArea.innerHTML = '';\n  }\n\n  self.events.emit(\"afterShowSlide\", slideIndex);\n};\n\nSlideshowView.prototype.hideSlide = function (slideIndex) {\n  var self = this\n    , slideView = self.slideViews[slideIndex]\n    ;\n\n  self.events.emit(\"beforeHideSlide\", slideIndex);\n  slideView.hide();\n  self.events.emit(\"afterHideSlide\", slideIndex);\n\n};\n\nSlideshowView.prototype.updateDimensions = function () {\n  var self = this\n    , dimensions = self.scaler.dimensions\n    ;\n\n  self.helpElement.style.width = dimensions.width + 'px';\n  self.helpElement.style.height = dimensions.height + 'px';\n\n  self.scaleSlideBackgroundImages(dimensions);\n  self.scaleElements();\n};\n\nSlideshowView.prototype.scaleElements = function () {\n  var self = this;\n\n  self.slideViews.forEach(function (slideView) {\n    slideView.scale(self.elementArea);\n  });\n\n  if (self.previewArea.children.length) {\n    self.scaler.scaleToFit(self.previewArea.children[0].children[0], self.previewArea);\n  }\n  self.scaler.scaleToFit(self.helpElement, self.containerElement);\n  self.scaler.scaleToFit(self.pauseElement, self.containerElement);\n};\n\n},{\"../components/printing/printing\":\"components/printing\",\"../components/timer/timer\":\"components/timer\",\"../resources\":22,\"../scaler\":23,\"../utils\":24,\"./notesView\":25,\"./slideView\":26}],\"components/printing\":[function(require,module,exports){\nvar EventEmitter = require('events').EventEmitter\n  , styler = require('../styler/styler')\n  ;\n\nvar LANDSCAPE = 'landscape'\n  , PORTRAIT = 'portrait'\n  , PAGE_HEIGHT = 681\n  , PAGE_WIDTH = 908\n  ;\n\nfunction PrintComponent () {}\n\n// Add eventing\nPrintComponent.prototype = new EventEmitter();\n\n// Sets up listener for printing\nPrintComponent.prototype.init = function () {\n  var self = this;\n\n  this.setPageOrientation(LANDSCAPE);\n\n  if (!window.matchMedia) {\n    return false;\n  }\n\n  window.matchMedia('print').addListener(function (e) {\n    self.onPrint(e);\n  });\n};\n\n// Handles printing event\nPrintComponent.prototype.onPrint = function (e) {\n  var slideHeight;\n\n  if (!e.matches) {\n    return;\n  }\n\n  this.emit('print', {\n    isPortrait: this._orientation === 'portrait'\n  , pageHeight: this._pageHeight\n  , pageWidth: this._pageWidth\n  });\n};\n\nPrintComponent.prototype.setPageOrientation = function (orientation) {\n  if (orientation === PORTRAIT) {\n    // Flip dimensions for portrait orientation\n    this._pageHeight = PAGE_WIDTH;\n    this._pageWidth = PAGE_HEIGHT;\n  }\n  else if (orientation === LANDSCAPE) {\n    this._pageHeight = PAGE_HEIGHT;\n    this._pageWidth = PAGE_WIDTH;\n  }\n  else {\n    throw new Error('Unknown print orientation: ' + orientation);\n  }\n\n  this._orientation = orientation;\n\n  styler.setPageSize(this._pageWidth + 'px ' + this._pageHeight + 'px');\n};\n\n// Export singleton instance\nmodule.exports = new PrintComponent();\n\n},{\"../styler/styler\":\"components/styler\",\"events\":1}],\"components/slide-number\":[function(require,module,exports){\nmodule.exports = SlideNumberViewModel;\n\nfunction SlideNumberViewModel (slide, slideshow) {\n  var self = this;\n\n  self.slide = slide;\n  self.slideshow = slideshow;\n\n  self.element = document.createElement('div');\n  self.element.className = 'remark-slide-number';\n  self.element.innerHTML = formatSlideNumber(self.slide, self.slideshow);\n}\n\nfunction formatSlideNumber (slide, slideshow) {\n  var format = slideshow.getSlideNumberFormat()\n    , slides = slideshow.getSlides()\n    , current = getSlideNo(slide, slideshow)\n    , total = getSlideNo(slides[slides.length - 1], slideshow)\n    ;\n\n  if (typeof format === 'function') {\n    return format.call(slideshow, current, total);\n  }\n\n  return format\n      .replace('%current%', current)\n      .replace('%total%', total);\n}\n\nfunction getSlideNo (slide, slideshow) {\n  var slides = slideshow.getSlides(), i, slideNo = 0;\n\n  for (i = 0; i <= slide.getSlideIndex() && i < slides.length; ++i) {\n    if (slides[i].properties.count !== 'false') {\n      slideNo += 1;\n    }\n  }\n\n  return Math.max(1, slideNo);\n}\n\n},{}],\"components/styler\":[function(require,module,exports){\nvar resources = require('../../resources')\n  , highlighter = require('../../highlighter')\n  ;\n\nmodule.exports = {\n  styleDocument: styleDocument\n, setPageSize: setPageSize\n};\n\n// Applies bundled styles to document\nfunction styleDocument () {\n  var headElement, styleElement, style;\n\n  // Bail out if document has already been styled\n  if (getRemarkStylesheet()) {\n    return;\n  }\n\n  headElement = document.getElementsByTagName('head')[0];\n  styleElement = document.createElement('style');\n  styleElement.type = 'text/css';\n\n  // Set title in order to enable lookup\n  styleElement.title = 'remark';\n\n  // Set document styles\n  styleElement.innerHTML = resources.documentStyles;\n\n  // Append highlighting styles\n  for (style in highlighter.styles) {\n    if (highlighter.styles.hasOwnProperty(style)) {\n      styleElement.innerHTML = styleElement.innerHTML +\n        highlighter.styles[style];\n    }\n  }\n\n  // Put element first to prevent overriding user styles\n  headElement.insertBefore(styleElement, headElement.firstChild);\n}\n\nfunction setPageSize (size) {\n  var stylesheet = getRemarkStylesheet()\n    , pageRule = getPageRule(stylesheet)\n    ;\n\n  pageRule.style.size = size;\n}\n\n// Locates the embedded remark stylesheet\nfunction getRemarkStylesheet () {\n  var i, l = document.styleSheets.length;\n\n  for (i = 0; i < l; ++i) {\n    if (document.styleSheets[i].title === 'remark') {\n      return document.styleSheets[i];\n    }\n  }\n}\n\n// Locates the CSS @page rule\nfunction getPageRule (stylesheet) {\n  var i, l = stylesheet.cssRules.length;\n\n  for (i = 0; i < l; ++i) {\n    if (stylesheet.cssRules[i] instanceof window.CSSPageRule) {\n      return stylesheet.cssRules[i];\n    }\n  }\n}\n\n},{\"../../highlighter\":14,\"../../resources\":22}],\"components/timer\":[function(require,module,exports){\nvar utils = require('../../utils');\r\n\r\nmodule.exports = TimerViewModel;\r\n\r\nfunction TimerViewModel (events, element) {\r\n  var self = this;\r\n\r\n  self.events = events;\r\n  self.element = element;\r\n\r\n  self.startTime = null;\r\n  self.pauseStart = null;\r\n  self.pauseLength = 0;\r\n\r\n  element.innerHTML = '0:00:00';\r\n\r\n  setInterval(function() {\r\n      self.updateTimer();\r\n    }, 100);\r\n\r\n  events.on('start', function () {\r\n    // When we do the first slide change, start the clock.\r\n    self.startTime = new Date();\r\n  });\r\n\r\n  events.on('resetTimer', function () {\r\n    // If we reset the timer, clear everything.\r\n    self.startTime = null;\r\n    self.pauseStart = null;\r\n    self.pauseLength = 0;\r\n    self.element.innerHTML = '0:00:00';\r\n  });\r\n\r\n  events.on('pause', function () {\r\n    self.pauseStart = new Date();\r\n  });\r\n\r\n  events.on('resume', function () {\r\n    self.pauseLength += new Date() - self.pauseStart;\r\n    self.pauseStart = null;\r\n  });\r\n}\r\n\r\nTimerViewModel.prototype.updateTimer = function () {\r\n  var self = this;\r\n\r\n  if (self.startTime) {\r\n    var millis;\r\n    // If we're currently paused, measure elapsed time from the pauseStart.\r\n    // Otherwise, use \"now\".\r\n    if (self.pauseStart) {\r\n      millis = self.pauseStart - self.startTime - self.pauseLength;\r\n    } else {\r\n      millis = new Date() - self.startTime - self.pauseLength;\r\n    }\r\n\r\n    var seconds = Math.floor(millis / 1000) % 60;\r\n    var minutes = Math.floor(millis / 60000) % 60;\r\n    var hours = Math.floor(millis / 3600000);\r\n\r\n    self.element.innerHTML = hours + (minutes > 9 ? ':' : ':0') + minutes + (seconds > 9 ? ':' : ':0') + seconds;\r\n  }\r\n};\r\n\n},{\"../../utils\":24}]},{},[4]);\n"
  },
  {
    "path": "static/js/story.js",
    "content": "// Render KaTeX math typesetting, but only if the <body> has the class\n// feature-math\n$( function() {\n   if ( $( \"body.feature-math:not(.feature-nomath)\" ).length ) {\n      renderMathInElement(document.body);\n   }\n});\n\n// Render abcjs sheet music, but only if the <body> has the class\n// feature-music. Do this by removing the <pre><code class=\"language-abc\">\n// and replacing it with a <p id=\"music-X\"> which will be used to hold the\n// generated sheet music. Remark's code syntax highlighting transforms the\n// <code> block into a bunch of\n//\t\t<div class=\"remark-code-line\">K: Emin</div>\n// one per line, so we have to reassemble those to get back linebreaks.\n$( function() {\n   if ( $( \"body.feature-music:not(.feature-nomusic)\" ).length ) {\n      $( \"code.language-abc, code.abc\" ).each(function(i, e){\n         var $this = $(this);\n         var abc = $this.text();\n\t\t\tif ( $this.hasClass(\"remark-code\") ) {\n\t\t\t\tabc = \"\";\n\t\t\t\t$this.children().each(function(i, e) {\n\t\t\t\t\tabc += \"\\n\" + $(this).text();\n\t\t\t\t});\n\t\t\t\tabc = abc.trim();\n\t\t\t}\n         var p = $this.parent().before('<p id=\"music-' + (i+1) + '\">');\n         $this.parent().hide();\n         ABCJS.renderAbc(\"music-\" + (i+1), abc, {\n            paddingtop: 0,\n            paddingbottom: 0,\n            paddingright: 0,\n            paddingleft: 0,\n            responsive: \"resize\"\n         });\n      });\n   }\n});\n\n// Render tweet-styled blockquotes, if <body> has the class feature-tweetquote and the blockquote ends\n// with a twitter permalink URL.\n$( function() {\n   if ( $( \"body.feature-tweetquote:not(.feature-notweetquote)\" ).length ) {\n      $(\"blockquote p:first-child a[href*='twitter.com']\").each(function(i, e){\n         $(this.parentElement.parentElement).addClass(\"tweet sans-serif mw6\");\n         $(this).addClass(\"no-underline b\");\n         $(this).prepend('<i class=\"fl mr2 fab fa-twitter fa-2x pa2 ba br3\">');\n         var m = $(this).attr('href').match(/twitter.com\\/([^\\/]*)\\//);\n         if (m.length > 1) {\n            $(this).append('<br><span class=\"normal gray\">@' + m[1] + '</span>');\n         }\n      });\n   }\n});\n\n// Render perspective book images, if <body> has the class\n// feature-3dbook-covers\n$( function() {\n   $( \"body.feature-3dbook-covers article a\" ).has( \"img[src~='3dbook']\" ).each(function(i, e) {\n      $( this ).addClass(\"book\");\n      $( this ).parent().addClass(\"books\");\n   });\n});\n\n// Highlight code listings, if <body> has the class\n// feature-highlight\n$( function() {\n   if ( $( \"body.feature-highlight:not(.feature-nohighlight)\" ).length ) {\n\t\thljs.initHighlightingOnLoad();\n   }\n});\n\n/* Turn images into figures with captions. Several scenarios are handled, in\n * order:\n * If the img is followed by an <em>, then transform the <em> into a caption.\n * If the img has a title, use that as the caption.\n * If the img has an alt, use that.\n * The following features have to be enabled:\n * - feature-figcaption has to be enabled or the whole thing is disabled\n * - feature-figcaption-hidden makes the captions invisible till you hover\n * - feature-fignum adds figure numbering\n * - feature-figlink adds automatic links of text like \"Figure 4\"\n */\n$( function() {\n   $(\"body.feature-figcaption:not(.feature-nofigcaption) article img\").each(function(i, e) {\n      var $this = $(this);\n      // Don't put captions on images that have URL fragment pseudo-classes.\n      if ( $this.attr('src').match(/#/) ) return;\n      var $txt = false;\n      if ( $this.next().is(\"em\") ) {\n         $txt = $this.next().html();\n         $this.next().remove();\n      } else {\n         $txt = $this.attr('title')   ? $this.attr('title')\n              : $this.attr('alt')     ? $this.attr('alt')\n              :                         false;\n      }\n      if ( $txt ) {\n         var $fig = $this.wrap('<figure id=\"fig-' + (i+1) + '\">')\n            .after('<figcaption class=\"f5 lh-copy i ph3\">' + $txt + '</figcaption>')\n            .parent();\n      }\n   });\n   if ( $(\"body.feature-figlink\").length ) {\n      $(\"article p, article li\").each(function(i, e) {\n         var $old = $(this).html();\n         var $new = $old.replace(/Figure\\s+(\\d+)/g, '<a href=\"#fig-$1\">Figure $1</a>');\n         if ( $old !== $new ) {\n            $(this).html($new);\n         }\n      });\n   }\n});\n\n/* Add captions to tables.\n * If the table is followed by a <p><em>, then transform the <em> into a caption.\n * The following features have to be enabled:\n * - feature-tablecaption has to be enabled or the whole thing is disabled\n * - feature-fignum adds table numbering\n * - feature-figlink adds automatic links of text like \"Table 4\"\n */\n$( function() {\n   $(\"body.feature-tablecaption article table\").each(function(i, e) {\n      var $this = $(this);\n      var $txt = false;\n      if ( $this.next().is(\"p\") ) {\n\t\t\tif ( $this.next().children().first().is(\"em:only-child\") ) {\n\t\t\t\t$txt = $this.next().children().first().html();\n\t\t\t\t$this.next().remove();\n\t\t\t}\n      }\n      if ( $txt ) {\n         $this.prepend('<caption id=\"tbl-' + (i+1) + '\">' + $txt + '</caption>');\n      }\n   });\n   if ( $(\"body.feature-figlink\").length ) {\n      $(\"article p, article li\").each(function(i, e) {\n         var $old = $(this).html();\n         var $new = $old.replace(/Table\\s+(\\d+)/g, '<a href=\"#tbl-$1\">Table $1</a>');\n         if ( $old !== $new ) {\n            $(this).html($new);\n         }\n      });\n   }\n});\n"
  },
  {
    "path": "theme.toml",
    "content": "# theme.toml template for a Hugo theme\n# See https://github.com/gohugoio/hugoThemes#themetoml for an example\n\nname = \"Story\"\nlicense = \"MIT\"\nlicenselink = \"https://github.com/xaprb/story/blob/master/LICENSE.md\"\ndescription = \"A beautiful, responsive blog and homepage theme with support for features like search, math typesetting, and RemarkJS presentations.\"\nhomepage = \"https://story.xaprb.com/\"\ntags = [\"Blog\", \"Presentation\", \"Slide\", \"Newsletter\"]\nfeatures = [\"blog\", \"slides\", \"LaTeX\", \"search\", \"newsletter\", \"math\", \"music\"]\nmin_version = \"0.47\"\n\n[author]\n  name = \"Baron Schwartz\"\n  homepage = \"https://www.xaprb.com/\"\n"
  }
]