diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..2b740bf --- /dev/null +++ b/.editorconfig @@ -0,0 +1,19 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +# Unix-style newlines with a newline ending every file +end_of_line = lf +insert_final_newline = true + +[*.{js,css,scss}] +quote_type = single + +[*.{yml,yaml}] +quote_type = double + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..262d6bd --- /dev/null +++ b/.gitattributes @@ -0,0 +1,16 @@ +# Set default behavior to automatically normalize line endings. +* text=auto + +# Force bash scripts to always use LF line endings so that if a repo is accessed +# in Unix via a file share from Windows, the scripts will work. +*.sh text eol=lf + +# Force batch scripts to always use CRLF line endings so that if a repo is accessed +# in Windows via a file share from Linux, the scripts will work. +*.{cmd,[cC][mM][dD]} text eol=crlf +*.{bat,[bB][aA][tT]} text eol=crlf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary +*.ico binary diff --git a/.github/workflows/pages-deploy.yml b/.github/workflows/pages-deploy.yml new file mode 100644 index 0000000..1c4bd9d --- /dev/null +++ b/.github/workflows/pages-deploy.yml @@ -0,0 +1,71 @@ +name: "Build and Deploy" +on: + push: + branches: + - main + - master + paths-ignore: + - .gitignore + - README.md + - LICENSE + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + # submodules: true + # If using the 'assets' git submodule from Chirpy Starter, uncomment above + # (See: https://github.com/cotes2020/chirpy-starter/tree/main/assets) + + - name: Setup Pages + id: pages + uses: actions/configure-pages@v3 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3 # reads from a '.ruby-version' or '.tools-version' file if 'ruby-version' is omitted + bundler-cache: true + + - name: Build site + run: bundle exec jekyll b -d "_site${{ steps.pages.outputs.base_path }}" + env: + JEKYLL_ENV: "production" + + - name: Test site + run: | + bundle exec htmlproofer _site --disable-external --check-html --allow_hash_href + + - name: Upload site artifact + uses: actions/upload-pages-artifact@v1 + with: + path: "_site${{ steps.pages.outputs.base_path }}" + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.gitignore b/.gitignore index ab57a58..af3dbd7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,27 @@ *.ipynb *.ignore -1011_potential.html \ No newline at end of file +1011_potential.html + +# jekyll +# Bundler cache +.bundle +vendor +Gemfile.lock + +# Jekyll cache +.jekyll-cache +_site + +# RubyGems +*.gem + +# NPM dependencies +node_modules +package-lock.json + +# IDE configurations +.idea +.vscode + +# Misc +assets/js/dist diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..58062c5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "assets/lib"] + path = assets/lib + url = https://github.com/cotes2020/chirpy-static-assets.git diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..1d5342c --- /dev/null +++ b/Gemfile @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "jekyll-theme-chirpy", "~> 6.1" + +group :test do + gem "html-proofer", "~> 3.18" +end + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", ">= 1", "< 3" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] + +# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem +# do not have a Java counterpart. +gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby] + +# Lock jekyll-sass-converter to 2.x on Linux-musl +if RUBY_PLATFORM =~ /linux-musl/ + gem "jekyll-sass-converter", "~> 2.0" +end diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a6f6c9f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Cotes Chung + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..32ac4cc --- /dev/null +++ b/_config.yml @@ -0,0 +1,194 @@ +# The Site Configuration + +# Import the theme +theme: jekyll-theme-chirpy + +# Change the following value to '/PROJECT_NAME' ONLY IF your site type is GitHub Pages Project sites +# and doesn't have a custom domain. +baseurl: "" + +# The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm +# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed, +# otherwise, the layout language will use the default value of 'en'. +lang: en + +# Change to your timezone › http://www.timezoneconverter.com/cgi-bin/findzone/findzone +timezone: + +# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md +# ↓ -------------------------- + +title: Peter Tanner # the main title + +tagline: Ramblings about electronics, programming and mechanical design # it will display as the sub-title + +description: >- # used by seo meta and the atom feed + Ramblings about electronics, programming and mechanical design. + +# fill in the protocol & hostname for your site, e.g., 'https://username.github.io' +url: "https://peter-tanner.github.io" + +github: + username: peter-tanner # change to your github username + +instagram: + username: __peterus + +social: + # Change to your full name. + # It will be displayed as the default author of the posts and the copyright owner in the Footer + name: Peter Tanner + email: example@domain.com # change to your email address + links: + # The first element serves as the copyright owner's link + - https://github.com/peter-tanner # change to your github homepage + - https://instagram.com/__peterus # change to your twitter homepage + # Uncomment below to add more social links + # - https://www.facebook.com/username + # - https://www.linkedin.com/in/username + +# google_site_verification: # fill in to your verification string +# ↑ -------------------------- +# The end of `jekyll-seo-tag` settings + +# google_analytics: +# id: # fill in your Google Analytics ID + +# Prefer color scheme setting. +# +# Note: Keep empty will follow the system prefer color by default, +# and there will be a toggle to switch the theme between dark and light +# on the bottom left of the sidebar. +# +# Available options: +# +# light - Use the light color scheme +# dark - Use the dark color scheme +# +theme_mode: dark # [light|dark] + +# The CDN endpoint for images. +# Notice that once it is assigned, the CDN url +# will be added to all image (site avatar & posts' images) paths starting with '/' +# +# e.g. 'https://cdn.com' +img_cdn: + +# the avatar on sidebar, support local or CORS resources +avatar: + +# boolean type, the global switch for TOC in posts. +toc: true + +comments: + active: # The global switch for posts comments, e.g., 'disqus'. Keep it empty means disable + # The active options are as follows: + disqus: + shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname + # utterances settings › https://utteranc.es/ + utterances: + repo: # / + issue_term: # < url | pathname | title | ...> + # Giscus options › https://giscus.app + giscus: + repo: # / + repo_id: + category: + category_id: + mapping: # optional, default to 'pathname' + input_position: # optional, default to 'bottom' + lang: # optional, default to the value of `site.lang` + reactions_enabled: # optional, default to the value of `1` + +# Self-hosted static assets, optional › https://github.com/cotes2020/chirpy-static-assets +assets: + self_host: + enabled: # boolean, keep empty means false + # specify the Jekyll environment, empty means both + # only works if `assets.self_host.enabled` is 'true' + env: # [development|production] + +pwa: + enabled: true # the option for PWA feature + +paginate: 10 + +# ------------ The following options are not recommended to be modified ------------------ + +kramdown: + syntax_highlighter: rouge + syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options + css_class: highlight + # default_lang: console + span: + line_numbers: false + block: + line_numbers: true + start_line: 1 + +collections: + tabs: + output: true + sort_by: order + +defaults: + - scope: + path: "" # An empty string here means all files in the project + type: posts + values: + layout: post + comments: true # Enable comments in posts. + toc: true # Display TOC column in posts. + # DO NOT modify the following parameter unless you are confident enough + # to update the code of all other post links in this project. + permalink: /posts/:title/ + - scope: + path: _drafts + values: + comments: false + - scope: + path: "" + type: tabs # see `site.collections` + values: + layout: page + permalink: /:title/ + - scope: + path: assets/img/favicons + values: + swcache: true + - scope: + path: assets/js/dist + values: + swcache: true + +sass: + style: compressed + +compress_html: + clippings: all + comments: all + endings: all + profile: false + blanklines: false + ignore: + envs: [development] + +exclude: + - "*.gem" + - "*.gemspec" + - tools + - README.md + - CHANGELOG.md + - LICENSE + - rollup.config.js + - node_modules + - package*.json + +jekyll-archives: + enabled: [categories, tags] + layouts: + category: category + tag: tag + permalinks: + tag: /tags/:name/ + category: /categories/:name/ diff --git a/_data/contact.yml b/_data/contact.yml new file mode 100644 index 0000000..76b667a --- /dev/null +++ b/_data/contact.yml @@ -0,0 +1,28 @@ +# The contact options. + +- type: github + icon: "fab fa-github" + +- type: twitter + icon: "fab fa-twitter" + +- type: email + icon: "fas fa-envelope" + noblank: true # open link in current tab + +- type: rss + icon: "fas fa-rss" + noblank: true +# Uncomment and complete the url below to enable more contact options +# +# - type: mastodon +# icon: 'fab fa-mastodon' # icons powered by +# url: '' # Fill with your Mastodon account page, rel="me" will be applied for verification +# +# - type: linkedin +# icon: 'fab fa-linkedin' # icons powered by +# url: '' # Fill with your Linkedin homepage +# +# - type: stack-overflow +# icon: 'fab fa-stack-overflow' +# url: '' # Fill with your stackoverflow homepage diff --git a/_data/share.yml b/_data/share.yml new file mode 100644 index 0000000..c1d4d63 --- /dev/null +++ b/_data/share.yml @@ -0,0 +1,25 @@ +# Sharing options at the bottom of the post. +# Icons from + +platforms: + - type: Twitter + icon: "fab fa-twitter" + link: "https://twitter.com/intent/tweet?text=TITLE&url=URL" + + - type: Facebook + icon: "fab fa-facebook-square" + link: "https://www.facebook.com/sharer/sharer.php?title=TITLE&u=URL" + + - type: Telegram + icon: "fab fa-telegram" + link: "https://t.me/share/url?url=URL&text=TITLE" + + # Uncomment below if you need to. + # + # - type: Linkedin + # icon: "fab fa-linkedin" + # link: "https://www.linkedin.com/sharing/share-offsite/?url=URL" + # + # - type: Weibo + # icon: "fab fa-weibo" + # link: "http://service.weibo.com/share/share.php?title=TITLE&url=URL" diff --git a/_plugins/posts-lastmod-hook.rb b/_plugins/posts-lastmod-hook.rb new file mode 100644 index 0000000..1fd6ecf --- /dev/null +++ b/_plugins/posts-lastmod-hook.rb @@ -0,0 +1,14 @@ +#!/usr/bin/env ruby +# +# Check for changed posts + +Jekyll::Hooks.register :posts, :post_init do |post| + + commit_num = `git rev-list --count HEAD "#{ post.path }"` + + if commit_num.to_i > 1 + lastmod_date = `git log -1 --pretty="%ad" --date=iso "#{ post.path }"` + post.data['last_modified_at'] = lastmod_date + end + +end diff --git a/_posts/.placeholder b/_posts/.placeholder new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/_posts/.placeholder @@ -0,0 +1 @@ + diff --git a/_posts/2023-08-05_hello_world.md b/_posts/2023-08-05_hello_world.md new file mode 100644 index 0000000..fa275c2 --- /dev/null +++ b/_posts/2023-08-05_hello_world.md @@ -0,0 +1,15 @@ +--- +layout: post +title: "Hello world" +description: Finally cleaned up my website. +--- + +Welcome to my blog, about time I got one of these since there's a lot of random thoughts and technical experiences I have that might be useful + +The site is using the [chirpy](https://chirpy.cotes.page/) theme, which I chose due to it's good use of screen space. + +```c +int main(void) { + printf("hello world!"); +} +``` diff --git a/_tabs/about.md b/_tabs/about.md new file mode 100644 index 0000000..ddb2bc4 --- /dev/null +++ b/_tabs/about.md @@ -0,0 +1,8 @@ +--- +# the default layout is 'page' +icon: fas fa-info-circle +order: 4 +--- + +> Add Markdown syntax content to file `_tabs/about.md`{: .filepath } and it will show up on this page. +{: .prompt-tip } diff --git a/_tabs/archives.md b/_tabs/archives.md new file mode 100644 index 0000000..c3abc59 --- /dev/null +++ b/_tabs/archives.md @@ -0,0 +1,5 @@ +--- +layout: archives +icon: fas fa-archive +order: 3 +--- diff --git a/_tabs/categories.md b/_tabs/categories.md new file mode 100644 index 0000000..2d241be --- /dev/null +++ b/_tabs/categories.md @@ -0,0 +1,5 @@ +--- +layout: categories +icon: fas fa-stream +order: 1 +--- diff --git a/_tabs/tags.md b/_tabs/tags.md new file mode 100644 index 0000000..ded3adc --- /dev/null +++ b/_tabs/tags.md @@ -0,0 +1,5 @@ +--- +layout: tags +icon: fas fa-tags +order: 2 +--- diff --git a/index.html b/index.html new file mode 100644 index 0000000..1357b08 --- /dev/null +++ b/index.html @@ -0,0 +1,4 @@ +--- +layout: home +# Index page +--- diff --git a/js/tikzjax/tikzjax.js b/js/tikzjax/tikzjax.js deleted file mode 100644 index 1b4db48..0000000 --- a/js/tikzjax/tikzjax.js +++ /dev/null @@ -1,22316 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/"; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../dvi2html/lib/html.js": -/*!*******************************!*\ - !*** ../dvi2html/lib/html.js ***! - \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var __extends = this && this.__extends || function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - }; - - return extendStatics(d, b); - }; - - return function (d, b) { - extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -}(); - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var machine_1 = __webpack_require__(/*! ./machine */ "../dvi2html/lib/machine.js"); - -var HTMLMachine = -/** @class */ -function (_super) { - __extends(HTMLMachine, _super); - - function HTMLMachine(o) { - var _this = _super.call(this) || this; - - _this.output = o; - _this.color = 'black'; - _this.colorStack = []; - _this.svgDepth = 0; - return _this; - } - - HTMLMachine.prototype.pushColor = function (c) { - this.colorStack.push(this.color); - this.color = c; - }; - - HTMLMachine.prototype.popColor = function () { - this.color = this.colorStack.pop(); - }; - - HTMLMachine.prototype.setPapersize = function (width, height) { - this.paperwidth = width; - this.paperheight = height; - }; - - HTMLMachine.prototype.putSVG = function (svg) { - var left = this.position.h * this.pointsPerDviUnit; - var top = this.position.v * this.pointsPerDviUnit; - this.svgDepth += (svg.match(//g) || []).length; - this.svgDepth -= (svg.match(/<\/svg>/g) || []).length; - svg = svg.replace("", ""); - svg = svg.replace(/{\?x}/g, left.toString()); - svg = svg.replace(/{\?y}/g, top.toString()); - this.output.write(svg); - }; - - HTMLMachine.prototype.preamble = function (numerator, denominator, magnification, comment) { - var dviUnit = magnification * numerator / 1000.0 / denominator; - var resolution = 300.0; // ppi - - var tfm_conv = 25400000.0 / numerator * (denominator / 473628672) / 16.0; - var conv = numerator / 254000.0 * (resolution / denominator); - conv = conv * (magnification / 1000.0); - this.pointsPerDviUnit = dviUnit * 72.27 / 100000.0 / 2.54; - }; - - HTMLMachine.prototype.putRule = function (rule) { - var a = rule.a * this.pointsPerDviUnit; - var b = rule.b * this.pointsPerDviUnit; - var left = this.position.h * this.pointsPerDviUnit; - var bottom = this.position.v * this.pointsPerDviUnit; - var top = bottom - a; - this.output.write("\n"); - }; - - HTMLMachine.prototype.putText = function (text) { - var textWidth = 0; - var textHeight = 0; - var textDepth = 0; - var htmlText = ""; - - for (var i = 0; i < text.length; i++) { - var c = text[i]; - var metrics = this.font.metrics.characters[c]; - if (metrics === undefined) throw Error("Could not find font metric for " + c); - textWidth += metrics.width; - textHeight = Math.max(textHeight, metrics.height); - textDepth = Math.max(textDepth, metrics.depth); - - if (c < 32) { - htmlText += "&#" + (127 + c + 32 + 4) + ";"; - } else { - htmlText += String.fromCharCode(c); - } - } // tfm is based on 1/2^16 pt units, rather than dviunit which is 10^−7 meters - - - var dviUnitsPerFontUnit = this.font.metrics.designSize / 1048576.0 * 65536 / 1048576; - var top = (this.position.v - textHeight * dviUnitsPerFontUnit) * this.pointsPerDviUnit; - var left = this.position.h * this.pointsPerDviUnit; - var width = textWidth * this.pointsPerDviUnit * dviUnitsPerFontUnit; - var height = textHeight * this.pointsPerDviUnit * dviUnitsPerFontUnit; - var depth = textDepth * this.pointsPerDviUnit * dviUnitsPerFontUnit; - var top = this.position.v * this.pointsPerDviUnit; - var fontsize = this.font.metrics.designSize / 1048576.0 * this.font.scaleFactor / this.font.designSize; - - if (this.svgDepth == 0) { - this.output.write("" + htmlText + "\n"); - } else { - var bottom = this.position.v * this.pointsPerDviUnit; // No 'pt' on fontsize since those units are potentially scaled - - this.output.write("" + htmlText + "\n"); - } - - return textWidth * dviUnitsPerFontUnit * this.font.scaleFactor / this.font.designSize; - }; - - return HTMLMachine; -}(machine_1.Machine); - -exports.default = HTMLMachine; - -/***/ }), - -/***/ "../dvi2html/lib/index.js": -/*!********************************!*\ - !*** ../dvi2html/lib/index.js ***! - \********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - - function step(result) { - result.done ? resolve(result.value) : new P(function (resolve) { - resolve(result.value); - }).then(fulfilled, rejected); - } - - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; - -var __generator = this && this.__generator || function (thisArg, body) { - var _ = { - label: 0, - sent: function () { - if (t[0] & 1) throw t[1]; - return t[1]; - }, - trys: [], - ops: [] - }, - f, - y, - t, - g; - return g = { - next: verb(0), - "throw": verb(1), - "return": verb(2) - }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { - return this; - }), g; - - function verb(n) { - return function (v) { - return step([n, v]); - }; - } - - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - - switch (op[0]) { - case 0: - case 1: - t = op; - break; - - case 4: - _.label++; - return { - value: op[1], - done: false - }; - - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - - case 7: - op = _.ops.pop(); - - _.trys.pop(); - - continue; - - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - - if (t && _.label < t[2]) { - _.label = t[2]; - - _.ops.push(op); - - break; - } - - if (t[2]) _.ops.pop(); - - _.trys.pop(); - - continue; - } - - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - - if (op[0] & 5) throw op[1]; - return { - value: op[0] ? op[1] : void 0, - done: true - }; - } -}; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var color_1 = __webpack_require__(/*! ./specials/color */ "../dvi2html/lib/specials/color.js"); - -var svg_1 = __webpack_require__(/*! ./specials/svg */ "../dvi2html/lib/specials/svg.js"); - -var papersize_1 = __webpack_require__(/*! ./specials/papersize */ "../dvi2html/lib/specials/papersize.js"); - -var html_1 = __webpack_require__(/*! ./html */ "../dvi2html/lib/html.js"); - -var text_1 = __webpack_require__(/*! ./text */ "../dvi2html/lib/text.js"); - -exports.Machines = { - HTML: html_1.default, - text: text_1.default -}; - -var parser_1 = __webpack_require__(/*! ./parser */ "../dvi2html/lib/parser.js"); - -exports.dviParser = parser_1.dviParser; -exports.execute = parser_1.execute; -exports.mergeText = parser_1.mergeText; -exports.specials = { - color: color_1.default, - svg: svg_1.default, - papersize: papersize_1.default -}; - -function dvi2html(dviStream, htmlStream) { - return __awaiter(this, void 0, void 0, function () { - var parser, machine; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - parser = papersize_1.default(svg_1.default(color_1.default(parser_1.mergeText(parser_1.dviParser(dviStream))))); - machine = new html_1.default(htmlStream); - return [4 - /*yield*/ - , parser_1.execute(parser, machine)]; - - case 1: - _a.sent(); - - return [2 - /*return*/ - , machine]; - } - }); - }); -} - -exports.dvi2html = dvi2html; - -var index_1 = __webpack_require__(/*! ./tfm/index */ "../dvi2html/lib/tfm/index.js"); - -exports.tfmData = index_1.tfmData; - -/***/ }), - -/***/ "../dvi2html/lib/machine.js": -/*!**********************************!*\ - !*** ../dvi2html/lib/machine.js ***! - \**********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // var path = execSync('kpsewhich ' + name + '.tfm').toString().split("\n")[0]; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var index_1 = __webpack_require__(/*! ./tfm/index */ "../dvi2html/lib/tfm/index.js"); - -var Position = -/** @class */ -function () { - function Position(properties) { - if (properties) { - this.h = properties.h; - this.v = properties.v; - this.w = properties.w; - this.x = properties.x; - this.y = properties.y; - this.z = properties.z; - } else { - this.h = this.v = this.w = this.x = this.y = this.z = 0; - } - } - - return Position; -}(); - -var DviFont = -/** @class */ -function () { - function DviFont(properties) { - this.name = properties.name; - this.checksum = properties.checksum; - this.scaleFactor = properties.scaleFactor; - this.designSize = properties.designSize; - } - - return DviFont; -}(); - -exports.DviFont = DviFont; - -var Machine = -/** @class */ -function () { - function Machine() { - this.fonts = []; - } - - Machine.prototype.preamble = function (numerator, denominator, magnification, comment) {}; - - Machine.prototype.pushColor = function (c) {}; - - Machine.prototype.popColor = function () {}; - - Machine.prototype.setPapersize = function (width, height) {}; - - Machine.prototype.push = function () { - this.stack.push(new Position(this.position)); - }; - - Machine.prototype.pop = function () { - this.position = this.stack.pop(); - }; - - Machine.prototype.beginPage = function (page) { - this.stack = []; - this.position = new Position(); - }; - - Machine.prototype.endPage = function () {}; - - Machine.prototype.post = function (p) {}; - - Machine.prototype.postPost = function (p) {}; - - Machine.prototype.putRule = function (rule) {}; - - Machine.prototype.moveRight = function (distance) { - this.position.h += distance; - }; - - Machine.prototype.moveDown = function (distance) { - this.position.v += distance; - }; - - Machine.prototype.setFont = function (font) { - this.font = font; - }; - - Machine.prototype.putSVG = function (svg) {}; // Returns the width of the text - - - Machine.prototype.putText = function (text) { - return 0; - }; - - Machine.prototype.loadFont = function (properties) { - var f = new DviFont(properties); - f.metrics = index_1.loadFont(properties.name); - return f; - }; - - return Machine; -}(); - -exports.Machine = Machine; - -/***/ }), - -/***/ "../dvi2html/lib/parser.js": -/*!*********************************!*\ - !*** ../dvi2html/lib/parser.js ***! - \*********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(Buffer) { - -var __extends = this && this.__extends || function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - }; - - return extendStatics(d, b); - }; - - return function (d, b) { - extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -}(); - -var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - - function step(result) { - result.done ? resolve(result.value) : new P(function (resolve) { - resolve(result.value); - }).then(fulfilled, rejected); - } - - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; - -var __generator = this && this.__generator || function (thisArg, body) { - var _ = { - label: 0, - sent: function () { - if (t[0] & 1) throw t[1]; - return t[1]; - }, - trys: [], - ops: [] - }, - f, - y, - t, - g; - return g = { - next: verb(0), - "throw": verb(1), - "return": verb(2) - }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { - return this; - }), g; - - function verb(n) { - return function (v) { - return step([n, v]); - }; - } - - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - - switch (op[0]) { - case 0: - case 1: - t = op; - break; - - case 4: - _.label++; - return { - value: op[1], - done: false - }; - - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - - case 7: - op = _.ops.pop(); - - _.trys.pop(); - - continue; - - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - - if (t && _.label < t[2]) { - _.label = t[2]; - - _.ops.push(op); - - break; - } - - if (t[2]) _.ops.pop(); - - _.trys.pop(); - - continue; - } - - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - - if (op[0] & 5) throw op[1]; - return { - value: op[0] ? op[1] : void 0, - done: true - }; - } -}; - -var __asyncValues = this && this.__asyncValues || function (o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], - i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i); - - function verb(n) { - i[n] = o[n] && function (v) { - return new Promise(function (resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function (v) { - resolve({ - value: v, - done: d - }); - }, reject); - } -}; - -var __await = this && this.__await || function (v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -}; - -var __asyncGenerator = this && this.__asyncGenerator || function (thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), - i, - q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i; - - function verb(n) { - if (g[n]) i[n] = function (v) { - return new Promise(function (a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - - function fulfill(value) { - resume("next", value); - } - - function reject(value) { - resume("throw", value); - } - - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -}; - -var __asyncDelegator = this && this.__asyncDelegator || function (o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function () { - return this; - }, i; - - function verb(n, f) { - i[n] = o[n] ? function (v) { - return (p = !p) ? { - value: __await(o[n](v)), - done: n === "return" - } : f ? f(v) : v; - } : f; - } -}; - -var __values = this && this.__values || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], - i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { - value: o && o[i++], - done: !o - }; - } - }; -}; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var Opcode; - -(function (Opcode) { - Opcode[Opcode["set_char"] = 0] = "set_char"; - Opcode[Opcode["set1"] = 128] = "set1"; - Opcode[Opcode["set2"] = 129] = "set2"; - Opcode[Opcode["set3"] = 130] = "set3"; - Opcode[Opcode["set4"] = 131] = "set4"; - Opcode[Opcode["set_rule"] = 132] = "set_rule"; - Opcode[Opcode["put_char"] = 133] = "put_char"; - Opcode[Opcode["put2"] = 134] = "put2"; - Opcode[Opcode["put3"] = 135] = "put3"; - Opcode[Opcode["put4"] = 136] = "put4"; - Opcode[Opcode["put_rule"] = 137] = "put_rule"; - Opcode[Opcode["nop"] = 138] = "nop"; - Opcode[Opcode["bop"] = 139] = "bop"; - Opcode[Opcode["eop"] = 140] = "eop"; - Opcode[Opcode["push"] = 141] = "push"; - Opcode[Opcode["pop"] = 142] = "pop"; - Opcode[Opcode["right"] = 143] = "right"; - Opcode[Opcode["right2"] = 144] = "right2"; - Opcode[Opcode["right3"] = 145] = "right3"; - Opcode[Opcode["right4"] = 146] = "right4"; - Opcode[Opcode["w"] = 147] = "w"; - Opcode[Opcode["w1"] = 148] = "w1"; - Opcode[Opcode["w2"] = 149] = "w2"; - Opcode[Opcode["w3"] = 150] = "w3"; - Opcode[Opcode["w4"] = 151] = "w4"; - Opcode[Opcode["x"] = 152] = "x"; - Opcode[Opcode["x1"] = 153] = "x1"; - Opcode[Opcode["x2"] = 154] = "x2"; - Opcode[Opcode["x3"] = 155] = "x3"; - Opcode[Opcode["x4"] = 156] = "x4"; - Opcode[Opcode["down"] = 157] = "down"; - Opcode[Opcode["down2"] = 158] = "down2"; - Opcode[Opcode["down3"] = 159] = "down3"; - Opcode[Opcode["down4"] = 160] = "down4"; - Opcode[Opcode["y"] = 161] = "y"; - Opcode[Opcode["y1"] = 162] = "y1"; - Opcode[Opcode["y2"] = 163] = "y2"; - Opcode[Opcode["y3"] = 164] = "y3"; - Opcode[Opcode["y4"] = 165] = "y4"; - Opcode[Opcode["z"] = 166] = "z"; - Opcode[Opcode["z1"] = 167] = "z1"; - Opcode[Opcode["z2"] = 168] = "z2"; - Opcode[Opcode["z3"] = 169] = "z3"; - Opcode[Opcode["z4"] = 170] = "z4"; - Opcode[Opcode["fnt"] = 171] = "fnt"; - Opcode[Opcode["fnt1"] = 235] = "fnt1"; - Opcode[Opcode["fnt2"] = 236] = "fnt2"; - Opcode[Opcode["fnt3"] = 237] = "fnt3"; - Opcode[Opcode["fnt4"] = 238] = "fnt4"; - Opcode[Opcode["xxx"] = 239] = "xxx"; - Opcode[Opcode["xxx2"] = 240] = "xxx2"; - Opcode[Opcode["xxx3"] = 241] = "xxx3"; - Opcode[Opcode["xxx4"] = 242] = "xxx4"; - Opcode[Opcode["fnt_def"] = 243] = "fnt_def"; - Opcode[Opcode["fnt_def2"] = 244] = "fnt_def2"; - Opcode[Opcode["fnt_def3"] = 245] = "fnt_def3"; - Opcode[Opcode["fnt_def4"] = 246] = "fnt_def4"; - Opcode[Opcode["pre"] = 247] = "pre"; - Opcode[Opcode["post"] = 248] = "post"; - Opcode[Opcode["post_post"] = 249] = "post_post"; -})(Opcode || (Opcode = {})); - -var DviCommand = -/** @class */ -function () { - function DviCommand(properties) { - this.special = false; - Object.assign(this, properties); - } - - DviCommand.prototype.execute = function (machine) {}; - - DviCommand.prototype.toString = function () { - return "DviCommand { }"; - }; - - return DviCommand; -}(); - -exports.DviCommand = DviCommand; // 133 put1 c[1] typeset a character -// 134 put2 c[2] -// 135 put3 c[3] -// 136 put4 c[4] - -var PutChar = -/** @class */ -function (_super) { - __extends(PutChar, _super); - - function PutChar(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.put_char; - return _this; - } - - PutChar.prototype.execute = function (machine) { - machine.putText(Buffer.from([this.c])); - }; - - PutChar.prototype.toString = function () { - return "PutChar { c: '" + String.fromCharCode(this.c) + "' }"; - }; - - return PutChar; -}(DviCommand); // 0...127 set_char_i typeset a character and move right -// 128 set1 c[1] typeset a character and move right -// 129 set2 c[2] -// 130 set3 c[3] -// 131 set4 c[4] - - -var SetChar = -/** @class */ -function (_super) { - __extends(SetChar, _super); - - function SetChar(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.set_char; - return _this; - } - - SetChar.prototype.execute = function (machine) { - var text = Buffer.from([this.c]); - var width = machine.putText(text); - machine.moveRight(width); - }; - - SetChar.prototype.toString = function () { - return "SetChar { c: '" + String.fromCharCode(this.c) + "' }"; - }; - - return SetChar; -}(DviCommand); - -var SetText = -/** @class */ -function (_super) { - __extends(SetText, _super); - - function SetText(properties) { - return _super.call(this, properties) || this; - } - - SetText.prototype.execute = function (machine) { - var width = machine.putText(this.t); - machine.moveRight(width); - }; - - SetText.prototype.toString = function () { - return "SetText { t: \"" + this.t.toString() + "\" }"; - }; - - return SetText; -}(DviCommand); // 137 put_rule a[4], b[4] typeset a rule - - -var PutRule = -/** @class */ -function (_super) { - __extends(PutRule, _super); - - function PutRule(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.put_rule; - return _this; - } - - PutRule.prototype.execute = function (machine) { - machine.putRule(this); - }; - - PutRule.prototype.toString = function () { - return "PutRule { a: " + this.a + ", b: " + this.b + " }"; - }; - - return PutRule; -}(DviCommand); // 132 set_rule a[4], b[4] typeset a rule and move right - - -var SetRule = -/** @class */ -function (_super) { - __extends(SetRule, _super); - - function SetRule(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.set_rule; - return _this; - } - - SetRule.prototype.execute = function (machine) { - machine.putRule(this); - machine.moveRight(this.b); - }; - - SetRule.prototype.toString = function () { - return "SetRule { a: " + this.a + ", b: " + this.b + " }"; - }; - - return SetRule; -}(DviCommand); // 138 nop no operation - - -var Nop = -/** @class */ -function (_super) { - __extends(Nop, _super); - - function Nop(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.nop; - return _this; - } - - Nop.prototype.toString = function () { - return "Nop { }"; - }; - - return Nop; -}(DviCommand); // 139 bop c_0[4]..c_9[4], p[4] beginning of page - - -var Bop = -/** @class */ -function (_super) { - __extends(Bop, _super); - - function Bop(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.bop; - return _this; - } - - Bop.prototype.execute = function (machine) { - machine.beginPage(this); - }; - - Bop.prototype.toString = function () { - return "Bop { ... }"; - }; - - return Bop; -}(DviCommand); // 140 eop ending of page - - -var Eop = -/** @class */ -function (_super) { - __extends(Eop, _super); - - function Eop(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.eop; - return _this; - } - - Eop.prototype.execute = function (machine) { - if (machine.stack.length) throw Error('Stack should be empty at the end of a page.'); - machine.endPage(); - }; - - Eop.prototype.toString = function () { - return "Eop { }"; - }; - - return Eop; -}(DviCommand); // 141 push save the current positions - - -var Push = -/** @class */ -function (_super) { - __extends(Push, _super); - - function Push(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.push; - return _this; - } - - Push.prototype.execute = function (machine) { - machine.push(); - }; - - Push.prototype.toString = function () { - return "Push { }"; - }; - - return Push; -}(DviCommand); // 142 pop restore previous positions - - -var Pop = -/** @class */ -function (_super) { - __extends(Pop, _super); - - function Pop(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.pop; - return _this; - } - - Pop.prototype.execute = function (machine) { - machine.pop(); - }; - - Pop.prototype.toString = function () { - return "Pop { }"; - }; - - return Pop; -}(DviCommand); // 143 right1 b[1] move right -// 144 right2 b[2] -// 145 right3 b[3] -// 146 right4 b[4] - - -var MoveRight = -/** @class */ -function (_super) { - __extends(MoveRight, _super); - - function MoveRight(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.right; - return _this; - } - - MoveRight.prototype.execute = function (machine) { - machine.moveRight(this.b); - }; - - MoveRight.prototype.toString = function () { - return "MoveRight { b: " + this.b + " }"; - }; - - return MoveRight; -}(DviCommand); // 147 w0 move right by w -// 148 w1 b[1] move right and set w -// 149 w2 b[2] -// 150 w3 b[3] -// 151 w4 b[4] - - -var MoveW = -/** @class */ -function (_super) { - __extends(MoveW, _super); - - function MoveW(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.w; - return _this; - } - - MoveW.prototype.execute = function (machine) { - if (this.length > 1) machine.position.w = this.b; - machine.moveRight(machine.position.w); - }; - - MoveW.prototype.toString = function () { - if (this.length > 1) return "MoveW { b: " + this.b + " }";else return "MoveW0 { }"; - }; - - return MoveW; -}(DviCommand); // 152 x0 move right by x -// 153 x1 b[1] move right and set x -// 154 x2 b[2] -// 155 x3 b[3] -// 156 x4 b[4] - - -var MoveX = -/** @class */ -function (_super) { - __extends(MoveX, _super); - - function MoveX(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.x; - return _this; - } - - MoveX.prototype.execute = function (machine) { - if (this.length > 1) machine.position.x = this.b; - machine.moveRight(machine.position.x); - }; - - MoveX.prototype.toString = function () { - if (this.length > 1) return "MoveX { b: " + this.b + " }";else return "MoveX0 { }"; - }; - - return MoveX; -}(DviCommand); // 157 down1 a[1] move down -// 158 down2 a[2] -// 159 down3 a[3] -// 160 down4 a[4] - - -var MoveDown = -/** @class */ -function (_super) { - __extends(MoveDown, _super); - - function MoveDown(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.down; - return _this; - } - - MoveDown.prototype.execute = function (machine) { - machine.moveDown(this.a); - }; - - MoveDown.prototype.toString = function () { - return "MoveDown { a: " + this.a + " }"; - }; - - return MoveDown; -}(DviCommand); // 161 y0 move down by y -// 162 y1 a[1] move down and set y -// 163 y2 a[2] -// 164 y3 a[3] -// 165 y4 a[4] - - -var MoveY = -/** @class */ -function (_super) { - __extends(MoveY, _super); - - function MoveY(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.y; - return _this; - } - - MoveY.prototype.execute = function (machine) { - if (this.length > 1) machine.position.y = this.a; - machine.moveDown(machine.position.y); - }; - - MoveY.prototype.toString = function () { - if (this.length > 1) return "MoveY { a: " + this.a + " }";else return "MoveY0 { }"; - }; - - return MoveY; -}(DviCommand); // 166 z0 move down by z -// 167 z1 a[1] move down and set z -// 168 z2 a[2] -// 169 z3 a[3] -// 170 z4 a[4] - - -var MoveZ = -/** @class */ -function (_super) { - __extends(MoveZ, _super); - - function MoveZ(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.z; - return _this; - } - - MoveZ.prototype.execute = function (machine) { - if (this.length > 1) machine.position.z = this.a; - machine.moveDown(machine.position.z); - }; - - MoveZ.prototype.toString = function () { - if (this.length > 1) return "MoveZ { a: " + this.a + " }";else return "MoveZ0 { }"; - }; - - return MoveZ; -}(DviCommand); // 171...234 fnt_num_i set current font to i -// 235 fnt1 k[1] set current font -// 236 fnt2 k[2] -// 237 fnt3 k[3] -// 238 fnt4 k[4] - - -var SetFont = -/** @class */ -function (_super) { - __extends(SetFont, _super); - - function SetFont(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.fnt; - return _this; - } - - SetFont.prototype.execute = function (machine) { - if (machine.fonts[this.k]) { - machine.setFont(machine.fonts[this.k]); - } else throw "Could not find font " + this.k + "."; - }; - - SetFont.prototype.toString = function () { - return "SetFont { k: " + this.k + " }"; - }; - - return SetFont; -}(DviCommand); // 239 xxx1 k[1], x[k] extension to DVI primitives -// 240 xxx2 k[2], x[k] -// 241 xxx3 k[3], x[k] -// 242 xxx4 k[4], x[k] - - -var Special = -/** @class */ -function (_super) { - __extends(Special, _super); - - function Special(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.xxx; - _this.special = true; - return _this; - } - - Special.prototype.toString = function () { - return "Special { x: '" + this.x + "' }"; - }; - - return Special; -}(DviCommand); // 243 fnt_def1 k[1], c[4], s[4], d[4], -// a[1], l[1], n[a+l] define the meaning of a font number -// 244 fnt_def2 k[2], c[4], s[4], d[4], -// a[1], l[1], n[a+l] -// 245 fnt_def3 k[3], c[4], s[4], d[4], -// a[1], l[1], n[a+l] -// 246 fnt_def4 k[4], c[4], s[4], d[4], -// a[1], l[1], n[a+l] - - -var FontDefinition = -/** @class */ -function (_super) { - __extends(FontDefinition, _super); - - function FontDefinition(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.fnt_def; - return _this; - } - - FontDefinition.prototype.execute = function (machine) { - machine.fonts[this.k] = machine.loadFont({ - name: this.n, - checksum: this.c, - scaleFactor: this.s, - designSize: this.d - }); - }; - - FontDefinition.prototype.toString = function () { - return "FontDefinition { k: " + this.k + ", n: '" + this.n + "', ... }"; - }; - - return FontDefinition; -}(DviCommand); // 247 pre i[1], num[4], den[4], mag[4], k[1], x[k] preamble - - -var Preamble = -/** @class */ -function (_super) { - __extends(Preamble, _super); - - function Preamble(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.pre; - return _this; - } - - Preamble.prototype.execute = function (machine) { - if (this.num <= 0) throw Error('Invalid numerator (must be > 0)'); - if (this.den <= 0) throw Error('Invalid denominator (must be > 0)'); - - if (this.i != 2) { - throw Error('DVI format must be 2.'); - } - - machine.preamble(this.num, this.den, this.mag, this.x); - }; - - Preamble.prototype.toString = function () { - return "Preamble { i: " + this.i + ", num: " + this.num + ", den: " + this.den + ", mag: " + this.mag + ", x: '" + this.x + "' }"; - }; - - return Preamble; -}(DviCommand); // 248 post p[4], num[4], den[4], mag[4], l[4], u[4], s[2], t[2] -// < font definitions > postamble beginning - - -var Post = -/** @class */ -function (_super) { - __extends(Post, _super); - - function Post(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.post; - return _this; - } - - Post.prototype.execute = function (machine) { - machine.post(this); - }; - - Post.prototype.toString = function () { - return "Post { p: " + this.p + ", num: " + this.num + ", den: " + this.den + ", mag: " + this.mag + ", ... }"; - }; - - return Post; -}(DviCommand); // 249 post_post q[4], i[1]; 223's postamble ending - - -var PostPost = -/** @class */ -function (_super) { - __extends(PostPost, _super); - - function PostPost(properties) { - var _this = _super.call(this, properties) || this; - - _this.opcode = Opcode.post_post; - return _this; - } - - PostPost.prototype.execute = function (machine) { - machine.postPost(this); - }; - - PostPost.prototype.toString = function () { - return "PostPost { q: " + this.q + ", i: " + this.i + " }"; - }; - - return PostPost; -}(DviCommand); - -function parseCommand(opcode, buffer) { - if (opcode >= Opcode.set_char && opcode < Opcode.set1) { - return new SetChar({ - c: opcode, - length: 1 - }); - } - - if (opcode >= Opcode.fnt && opcode < Opcode.fnt1) return new SetFont({ - k: opcode - 171, - length: 1 - }); // Technically these are undefined opcodes, but we'll pretend they are NOPs - - if (opcode >= 250 && opcode <= 255) { - throw Error("Undefined opcode " + opcode); - return new Nop({ - length: 1 - }); - } - - switch (opcode) { - case Opcode.set1: - case Opcode.set2: - case Opcode.set3: - case Opcode.set4: - if (buffer.length < opcode - Opcode.set1 + 1) return undefined; - return new SetChar({ - c: buffer.readUIntBE(0, opcode - Opcode.set1 + 1), - length: opcode - Opcode.set1 + 1 + 1 - }); - - case Opcode.set_rule: - if (buffer.length < 8) return undefined; - return new SetRule({ - a: buffer.readInt32BE(0), - b: buffer.readInt32BE(4), - length: 9 - }); - - case Opcode.put_char: - case Opcode.put2: - case Opcode.put3: - case Opcode.put4: - if (buffer.length < opcode - Opcode.put_char + 1) return undefined; - return new PutChar({ - c: buffer.readIntBE(0, opcode - Opcode.put_char + 1), - length: opcode - Opcode.put_char + 1 + 1 - }); - - case Opcode.put_rule: - if (buffer.length < 8) return undefined; - return new PutRule({ - a: buffer.readInt32BE(0), - b: buffer.readInt32BE(4), - length: 9 - }); - - case Opcode.nop: - return new Nop({ - length: 1 - }); - - case Opcode.bop: - if (buffer.length < 44) return undefined; - return new Bop({ - c_0: buffer.readUInt32BE(0), - c_1: buffer.readUInt32BE(4), - c_2: buffer.readUInt32BE(8), - c_3: buffer.readUInt32BE(12), - c_4: buffer.readUInt32BE(16), - c_5: buffer.readUInt32BE(20), - c_6: buffer.readUInt32BE(24), - c_7: buffer.readUInt32BE(28), - c_8: buffer.readUInt32BE(32), - c_9: buffer.readUInt32BE(36), - p: buffer.readUInt32BE(40), - length: 45 - }); - - case Opcode.eop: - return new Eop({ - length: 1 - }); - - case Opcode.push: - return new Push({ - length: 1 - }); - - case Opcode.pop: - return new Pop({ - length: 1 - }); - - case Opcode.right: - case Opcode.right2: - case Opcode.right3: - case Opcode.right4: - if (buffer.length < opcode - Opcode.right + 1) return undefined; - return new MoveRight({ - b: buffer.readIntBE(0, opcode - Opcode.right + 1), - length: opcode - Opcode.right + 1 + 1 - }); - - case Opcode.w: - return new MoveW({ - b: 0, - length: 1 - }); - - case Opcode.w1: - case Opcode.w2: - case Opcode.w3: - case Opcode.w4: - if (buffer.length < opcode - Opcode.w) return undefined; - return new MoveW({ - b: buffer.readIntBE(0, opcode - Opcode.w), - length: opcode - Opcode.w + 1 - }); - - case Opcode.x: - return new MoveX({ - b: 0, - length: 1 - }); - - case Opcode.x1: - case Opcode.x2: - case Opcode.x3: - case Opcode.x4: - if (buffer.length < opcode - Opcode.x) return undefined; - return new MoveX({ - b: buffer.readIntBE(0, opcode - Opcode.x), - length: opcode - Opcode.x + 1 - }); - - case Opcode.down: - case Opcode.down2: - case Opcode.down3: - case Opcode.down4: - if (buffer.length < opcode - Opcode.down + 1) return undefined; - return new MoveDown({ - a: buffer.readIntBE(0, opcode - Opcode.down + 1), - length: opcode - Opcode.down + 1 + 1 - }); - - case Opcode.y: - return new MoveY({ - a: 0, - length: 1 - }); - - case Opcode.y1: - case Opcode.y2: - case Opcode.y3: - case Opcode.y4: - if (buffer.length < opcode - Opcode.y) return undefined; - return new MoveY({ - a: buffer.readIntBE(0, opcode - Opcode.y), - length: opcode - Opcode.y + 1 - }); - - case Opcode.z: - return new MoveZ({ - a: 0, - length: 1 - }); - - case Opcode.z1: - case Opcode.z2: - case Opcode.z3: - case Opcode.z4: - if (buffer.length < opcode - Opcode.z) return undefined; - return new MoveZ({ - a: buffer.readIntBE(0, opcode - Opcode.z), - length: opcode - Opcode.z + 1 - }); - - case Opcode.fnt1: - case Opcode.fnt2: - case Opcode.fnt3: - case Opcode.fnt4: - if (buffer.length < opcode - Opcode.fnt1 + 1) return undefined; - return new SetFont({ - k: buffer.readIntBE(0, opcode - Opcode.fnt1 + 1), - length: opcode - Opcode.fnt1 + 1 + 1 - }); - - case Opcode.xxx: - case Opcode.xxx2: - case Opcode.xxx3: - case Opcode.xxx4: - { - var i = opcode - Opcode.xxx + 1; - if (buffer.length < i) return undefined; - var k = buffer.readUIntBE(0, i); - if (buffer.length < i + k) return undefined; - return new Special({ - x: buffer.slice(i, i + k).toString(), - length: i + k + 1 - }); - } - - case Opcode.fnt_def: - case Opcode.fnt_def2: - case Opcode.fnt_def3: - case Opcode.fnt_def4: - { - var i = opcode - Opcode.fnt_def + 1; - if (buffer.length < i) return undefined; - var k = buffer.readIntBE(0, i); - if (buffer.length < i + 14) return undefined; - var c = buffer.readUInt32BE(i + 0); - var s = buffer.readUInt32BE(i + 4); - var d = buffer.readUInt32BE(i + 8); - var a = buffer.readUInt8(i + 12); - var l = buffer.readUInt8(i + 13); - if (buffer.length < i + 14 + a + l) return undefined; - var n = buffer.slice(i + 14, i + 14 + a + l).toString(); - return new FontDefinition({ - k: k, - c: c, - s: s, - d: d, - a: a, - l: l, - n: n, - length: i + 14 + a + l + 1 - }); - } - - case Opcode.pre: - { - if (buffer.length < 14) return undefined; - var i = buffer.readUInt8(0); - var num = buffer.readUInt32BE(1); - var den = buffer.readUInt32BE(5); - var mag = buffer.readUInt32BE(9); - var k = buffer.readUInt8(13); - if (buffer.length < 14 + k) return undefined; - return new Preamble({ - i: i, - num: num, - den: den, - mag: mag, - x: buffer.slice(14, 14 + k).toString(), - length: 14 + k + 1 - }); - } - - case Opcode.post: - if (buffer.length < 4 + 4 + 4 + 4 + 4 + 4 + 2 + 2) return undefined; - return new Post({ - p: buffer.readUInt32BE(0), - num: buffer.readUInt32BE(4), - den: buffer.readUInt32BE(8), - mag: buffer.readUInt32BE(12), - l: buffer.readUInt32BE(16), - u: buffer.readUInt32BE(20), - s: buffer.readUInt16BE(24), - t: buffer.readUInt16BE(26), - length: 29 - }); - - case Opcode.post_post: - if (buffer.length < 5) return undefined; - return new PostPost({ - q: buffer.readUInt32BE(0), - i: buffer.readUInt8(4), - length: 6 - }); - } - - return undefined; -} - -function dviParser(stream) { - return __asyncGenerator(this, arguments, function dviParser_1() { - var e_1, _a, buffer, isAfterPostamble, stream_1, stream_1_1, chunk, offset, opcode, command, e_1_1; - - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - buffer = Buffer.alloc(0); - isAfterPostamble = false; - _b.label = 1; - - case 1: - _b.trys.push([1, 12, 13, 18]); - - stream_1 = __asyncValues(stream); - _b.label = 2; - - case 2: - return [4 - /*yield*/ - , __await(stream_1.next())]; - - case 3: - if (!(stream_1_1 = _b.sent(), !stream_1_1.done)) return [3 - /*break*/ - , 11]; - chunk = stream_1_1.value; - buffer = Buffer.concat([buffer, chunk]); - offset = 0; - _b.label = 4; - - case 4: - if (!(offset < buffer.length)) return [3 - /*break*/ - , 9]; - opcode = buffer.readUInt8(offset); - - if (isAfterPostamble) { - if (opcode == 223) { - offset++; - return [3 - /*break*/ - , 4]; - } else { - throw Error('Only 223 bytes are permitted after the post-postamble.'); - } - } - - command = parseCommand(opcode, buffer.slice(offset + 1)); - if (!command) return [3 - /*break*/ - , 7]; - return [4 - /*yield*/ - , __await(command)]; - - case 5: - return [4 - /*yield*/ - , _b.sent()]; - - case 6: - _b.sent(); - - offset += command.length; - if (command.opcode == Opcode.post_post) isAfterPostamble = true; - return [3 - /*break*/ - , 8]; - - case 7: - return [3 - /*break*/ - , 9]; - - case 8: - return [3 - /*break*/ - , 4]; - - case 9: - buffer = buffer.slice(offset); - _b.label = 10; - - case 10: - return [3 - /*break*/ - , 2]; - - case 11: - return [3 - /*break*/ - , 18]; - - case 12: - e_1_1 = _b.sent(); - e_1 = { - error: e_1_1 - }; - return [3 - /*break*/ - , 18]; - - case 13: - _b.trys.push([13,, 16, 17]); - - if (!(stream_1_1 && !stream_1_1.done && (_a = stream_1.return))) return [3 - /*break*/ - , 15]; - return [4 - /*yield*/ - , __await(_a.call(stream_1))]; - - case 14: - _b.sent(); - - _b.label = 15; - - case 15: - return [3 - /*break*/ - , 17]; - - case 16: - if (e_1) throw e_1.error; - return [7 - /*endfinally*/ - ]; - - case 17: - return [7 - /*endfinally*/ - ]; - - case 18: - return [2 - /*return*/ - ]; - } - }); - }); -} - -exports.dviParser = dviParser; - -function execute(commands, machine) { - var commands_1, commands_1_1; - return __awaiter(this, void 0, void 0, function () { - var e_2, _a, command, e_2_1; - - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 5, 6, 11]); - - commands_1 = __asyncValues(commands); - _b.label = 1; - - case 1: - return [4 - /*yield*/ - , commands_1.next()]; - - case 2: - if (!(commands_1_1 = _b.sent(), !commands_1_1.done)) return [3 - /*break*/ - , 4]; - command = commands_1_1.value; // console.log(command.toString()); - - command.execute(machine); - _b.label = 3; - - case 3: - return [3 - /*break*/ - , 1]; - - case 4: - return [3 - /*break*/ - , 11]; - - case 5: - e_2_1 = _b.sent(); - e_2 = { - error: e_2_1 - }; - return [3 - /*break*/ - , 11]; - - case 6: - _b.trys.push([6,, 9, 10]); - - if (!(commands_1_1 && !commands_1_1.done && (_a = commands_1.return))) return [3 - /*break*/ - , 8]; - return [4 - /*yield*/ - , _a.call(commands_1)]; - - case 7: - _b.sent(); - - _b.label = 8; - - case 8: - return [3 - /*break*/ - , 10]; - - case 9: - if (e_2) throw e_2.error; - return [7 - /*endfinally*/ - ]; - - case 10: - return [7 - /*endfinally*/ - ]; - - case 11: - return [2 - /*return*/ - ]; - } - }); - }); -} - -exports.execute = execute; - -function merge(commands, filter, merge) { - return __asyncGenerator(this, arguments, function merge_1() { - var e_3, _a, queue, commands_2, commands_2_1, command, e_3_1; - - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - queue = []; - _b.label = 1; - - case 1: - _b.trys.push([1, 12, 13, 18]); - - commands_2 = __asyncValues(commands); - _b.label = 2; - - case 2: - return [4 - /*yield*/ - , __await(commands_2.next())]; - - case 3: - if (!(commands_2_1 = _b.sent(), !commands_2_1.done)) return [3 - /*break*/ - , 11]; - command = commands_2_1.value; - if (!filter(command)) return [3 - /*break*/ - , 4]; - queue.push(command); - return [3 - /*break*/ - , 10]; - - case 4: - if (!(queue.length > 0)) return [3 - /*break*/ - , 7]; - return [5 - /*yield**/ - , __values(__asyncDelegator(__asyncValues(merge(queue))))]; - - case 5: - return [4 - /*yield*/ - , __await.apply(void 0, [_b.sent()])]; - - case 6: - _b.sent(); - - queue = []; - _b.label = 7; - - case 7: - return [4 - /*yield*/ - , __await(command)]; - - case 8: - return [4 - /*yield*/ - , _b.sent()]; - - case 9: - _b.sent(); - - _b.label = 10; - - case 10: - return [3 - /*break*/ - , 2]; - - case 11: - return [3 - /*break*/ - , 18]; - - case 12: - e_3_1 = _b.sent(); - e_3 = { - error: e_3_1 - }; - return [3 - /*break*/ - , 18]; - - case 13: - _b.trys.push([13,, 16, 17]); - - if (!(commands_2_1 && !commands_2_1.done && (_a = commands_2.return))) return [3 - /*break*/ - , 15]; - return [4 - /*yield*/ - , __await(_a.call(commands_2))]; - - case 14: - _b.sent(); - - _b.label = 15; - - case 15: - return [3 - /*break*/ - , 17]; - - case 16: - if (e_3) throw e_3.error; - return [7 - /*endfinally*/ - ]; - - case 17: - return [7 - /*endfinally*/ - ]; - - case 18: - if (!(queue.length > 0)) return [3 - /*break*/ - , 21]; - return [5 - /*yield**/ - , __values(__asyncDelegator(__asyncValues(merge(queue))))]; - - case 19: - return [4 - /*yield*/ - , __await.apply(void 0, [_b.sent()])]; - - case 20: - _b.sent(); - - _b.label = 21; - - case 21: - return [2 - /*return*/ - ]; - } - }); - }); -} - -exports.merge = merge; - -function mergeText(commands) { - return merge(commands, function (command) { - return command instanceof SetChar; - }, function (queue) { - var text; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - text = Buffer.from(queue.map(function (command) { - return command.c; - })); - return [4 - /*yield*/ - , new SetText({ - t: text - })]; - - case 1: - _a.sent(); - - return [2 - /*return*/ - ]; - } - }); - }); -} - -exports.mergeText = mergeText; -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../tikzjax/node_modules/buffer/index.js */ "./node_modules/buffer/index.js").Buffer)) - -/***/ }), - -/***/ "../dvi2html/lib/specials/color.js": -/*!*****************************************!*\ - !*** ../dvi2html/lib/specials/color.js ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var __extends = this && this.__extends || function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - }; - - return extendStatics(d, b); - }; - - return function (d, b) { - extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -}(); - -var __generator = this && this.__generator || function (thisArg, body) { - var _ = { - label: 0, - sent: function () { - if (t[0] & 1) throw t[1]; - return t[1]; - }, - trys: [], - ops: [] - }, - f, - y, - t, - g; - return g = { - next: verb(0), - "throw": verb(1), - "return": verb(2) - }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { - return this; - }), g; - - function verb(n) { - return function (v) { - return step([n, v]); - }; - } - - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - - switch (op[0]) { - case 0: - case 1: - t = op; - break; - - case 4: - _.label++; - return { - value: op[1], - done: false - }; - - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - - case 7: - op = _.ops.pop(); - - _.trys.pop(); - - continue; - - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - - if (t && _.label < t[2]) { - _.label = t[2]; - - _.ops.push(op); - - break; - } - - if (t[2]) _.ops.pop(); - - _.trys.pop(); - - continue; - } - - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - - if (op[0] & 5) throw op[1]; - return { - value: op[0] ? op[1] : void 0, - done: true - }; - } -}; - -var __asyncValues = this && this.__asyncValues || function (o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], - i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i); - - function verb(n) { - i[n] = o[n] && function (v) { - return new Promise(function (resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function (v) { - resolve({ - value: v, - done: d - }); - }, reject); - } -}; - -var __await = this && this.__await || function (v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -}; - -var __asyncGenerator = this && this.__asyncGenerator || function (thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), - i, - q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i; - - function verb(n) { - if (g[n]) i[n] = function (v) { - return new Promise(function (a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - - function fulfill(value) { - resume("next", value); - } - - function reject(value) { - resume("throw", value); - } - - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -}; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var parser_1 = __webpack_require__(/*! ../parser */ "../dvi2html/lib/parser.js"); - -var PushColor = -/** @class */ -function (_super) { - __extends(PushColor, _super); - - function PushColor(color) { - var _this = _super.call(this, {}) || this; - - _this.color = color; - return _this; - } - - PushColor.prototype.execute = function (machine) { - machine.pushColor(this.color); - }; - - PushColor.prototype.toString = function () { - return "PushColor { color: '" + this.color + "' }"; - }; - - return PushColor; -}(parser_1.DviCommand); - -var PopColor = -/** @class */ -function (_super) { - __extends(PopColor, _super); - - function PopColor() { - return _super.call(this, {}) || this; - } - - PopColor.prototype.execute = function (machine) { - machine.popColor(); - }; - - PopColor.prototype.toString = function () { - return "PopColor { }"; - }; - - return PopColor; -}(parser_1.DviCommand); - -function intToHex(n) { - return ("00" + Math.round(n).toString(16)).substr(-2); -} - -function texColor(name) { - if (name == 'gray 0') return 'black'; - if (name == 'gray 1') return 'white'; - - if (name.startsWith('rgb ')) { - return '#' + name.split(' ').slice(1).map(function (x) { - return intToHex(parseFloat(x) * 255); - }).join(''); - } - - if (name.startsWith('gray ')) { - var x = name.split(' ')[1]; - return texColor('rgb ' + x + ' ' + x + ' ' + x); - } - - return 'black'; -} - -function default_1(commands) { - return __asyncGenerator(this, arguments, function () { - var e_1, _a, queue, commands_1, commands_1_1, command, color, e_1_1; - - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - queue = []; - _b.label = 1; - - case 1: - _b.trys.push([1, 17, 18, 23]); - - commands_1 = __asyncValues(commands); - _b.label = 2; - - case 2: - return [4 - /*yield*/ - , __await(commands_1.next())]; - - case 3: - if (!(commands_1_1 = _b.sent(), !commands_1_1.done)) return [3 - /*break*/ - , 16]; - command = commands_1_1.value; - if (!!command.special) return [3 - /*break*/ - , 6]; - return [4 - /*yield*/ - , __await(command)]; - - case 4: - return [4 - /*yield*/ - , _b.sent()]; - - case 5: - _b.sent(); - - return [3 - /*break*/ - , 15]; - - case 6: - if (!!command.x.startsWith('color ')) return [3 - /*break*/ - , 9]; - return [4 - /*yield*/ - , __await(command)]; - - case 7: - return [4 - /*yield*/ - , _b.sent()]; - - case 8: - _b.sent(); - - return [3 - /*break*/ - , 15]; - - case 9: - if (!command.x.startsWith('color push ')) return [3 - /*break*/ - , 12]; - color = texColor(command.x.replace(/^color push /, '')); - return [4 - /*yield*/ - , __await(new PushColor(color))]; - - case 10: - return [4 - /*yield*/ - , _b.sent()]; - - case 11: - _b.sent(); - - _b.label = 12; - - case 12: - if (!command.x.startsWith('color pop')) return [3 - /*break*/ - , 15]; - return [4 - /*yield*/ - , __await(new PopColor())]; - - case 13: - return [4 - /*yield*/ - , _b.sent()]; - - case 14: - _b.sent(); - - _b.label = 15; - - case 15: - return [3 - /*break*/ - , 2]; - - case 16: - return [3 - /*break*/ - , 23]; - - case 17: - e_1_1 = _b.sent(); - e_1 = { - error: e_1_1 - }; - return [3 - /*break*/ - , 23]; - - case 18: - _b.trys.push([18,, 21, 22]); - - if (!(commands_1_1 && !commands_1_1.done && (_a = commands_1.return))) return [3 - /*break*/ - , 20]; - return [4 - /*yield*/ - , __await(_a.call(commands_1))]; - - case 19: - _b.sent(); - - _b.label = 20; - - case 20: - return [3 - /*break*/ - , 22]; - - case 21: - if (e_1) throw e_1.error; - return [7 - /*endfinally*/ - ]; - - case 22: - return [7 - /*endfinally*/ - ]; - - case 23: - return [2 - /*return*/ - ]; - } - }); - }); -} - -exports.default = default_1; - -/***/ }), - -/***/ "../dvi2html/lib/specials/papersize.js": -/*!*********************************************!*\ - !*** ../dvi2html/lib/specials/papersize.js ***! - \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var __extends = this && this.__extends || function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - }; - - return extendStatics(d, b); - }; - - return function (d, b) { - extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -}(); - -var __generator = this && this.__generator || function (thisArg, body) { - var _ = { - label: 0, - sent: function () { - if (t[0] & 1) throw t[1]; - return t[1]; - }, - trys: [], - ops: [] - }, - f, - y, - t, - g; - return g = { - next: verb(0), - "throw": verb(1), - "return": verb(2) - }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { - return this; - }), g; - - function verb(n) { - return function (v) { - return step([n, v]); - }; - } - - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - - switch (op[0]) { - case 0: - case 1: - t = op; - break; - - case 4: - _.label++; - return { - value: op[1], - done: false - }; - - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - - case 7: - op = _.ops.pop(); - - _.trys.pop(); - - continue; - - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - - if (t && _.label < t[2]) { - _.label = t[2]; - - _.ops.push(op); - - break; - } - - if (t[2]) _.ops.pop(); - - _.trys.pop(); - - continue; - } - - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - - if (op[0] & 5) throw op[1]; - return { - value: op[0] ? op[1] : void 0, - done: true - }; - } -}; - -var __asyncValues = this && this.__asyncValues || function (o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], - i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i); - - function verb(n) { - i[n] = o[n] && function (v) { - return new Promise(function (resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function (v) { - resolve({ - value: v, - done: d - }); - }, reject); - } -}; - -var __await = this && this.__await || function (v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -}; - -var __asyncGenerator = this && this.__asyncGenerator || function (thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), - i, - q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i; - - function verb(n) { - if (g[n]) i[n] = function (v) { - return new Promise(function (a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - - function fulfill(value) { - resume("next", value); - } - - function reject(value) { - resume("throw", value); - } - - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -}; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var parser_1 = __webpack_require__(/*! ../parser */ "../dvi2html/lib/parser.js"); - -var Papersize = -/** @class */ -function (_super) { - __extends(Papersize, _super); - - function Papersize(width, height) { - var _this = _super.call(this, {}) || this; - - _this.width = width; - _this.height = height; - return _this; - } - - Papersize.prototype.execute = function (machine) { - machine.setPapersize(this.width, this.height); - }; - - Papersize.prototype.toString = function () { - return "Papersize { width: " + this.width + ", height: " + this.height + " }"; - }; - - return Papersize; -}(parser_1.DviCommand); - -function default_1(commands) { - return __asyncGenerator(this, arguments, function () { - var e_1, _a, commands_1, commands_1_1, command, sizes, width, height, e_1_1; - - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 13, 14, 19]); - - commands_1 = __asyncValues(commands); - _b.label = 1; - - case 1: - return [4 - /*yield*/ - , __await(commands_1.next())]; - - case 2: - if (!(commands_1_1 = _b.sent(), !commands_1_1.done)) return [3 - /*break*/ - , 12]; - command = commands_1_1.value; - if (!!command.special) return [3 - /*break*/ - , 5]; - return [4 - /*yield*/ - , __await(command)]; - - case 3: - return [4 - /*yield*/ - , _b.sent()]; - - case 4: - _b.sent(); - - return [3 - /*break*/ - , 11]; - - case 5: - if (!!command.x.startsWith('papersize=')) return [3 - /*break*/ - , 8]; - return [4 - /*yield*/ - , __await(command)]; - - case 6: - return [4 - /*yield*/ - , _b.sent()]; - - case 7: - _b.sent(); - - return [3 - /*break*/ - , 11]; - - case 8: - sizes = command.x.replace(/^papersize=/, '').split(','); - if (sizes.length != 2) throw Error('Papersize special requires two arguments.'); - if (!sizes[0].endsWith('pt')) throw Error('Papersize special width must be in points.'); - if (!sizes[1].endsWith('pt')) throw Error('Papersize special height must be in points.'); - width = parseFloat(sizes[0].replace(/pt$/, '')); - height = parseFloat(sizes[1].replace(/pt$/, '')); - return [4 - /*yield*/ - , __await(new Papersize(width, height))]; - - case 9: - return [4 - /*yield*/ - , _b.sent()]; - - case 10: - _b.sent(); - - _b.label = 11; - - case 11: - return [3 - /*break*/ - , 1]; - - case 12: - return [3 - /*break*/ - , 19]; - - case 13: - e_1_1 = _b.sent(); - e_1 = { - error: e_1_1 - }; - return [3 - /*break*/ - , 19]; - - case 14: - _b.trys.push([14,, 17, 18]); - - if (!(commands_1_1 && !commands_1_1.done && (_a = commands_1.return))) return [3 - /*break*/ - , 16]; - return [4 - /*yield*/ - , __await(_a.call(commands_1))]; - - case 15: - _b.sent(); - - _b.label = 16; - - case 16: - return [3 - /*break*/ - , 18]; - - case 17: - if (e_1) throw e_1.error; - return [7 - /*endfinally*/ - ]; - - case 18: - return [7 - /*endfinally*/ - ]; - - case 19: - return [2 - /*return*/ - ]; - } - }); - }); -} - -exports.default = default_1; - -/***/ }), - -/***/ "../dvi2html/lib/specials/svg.js": -/*!***************************************!*\ - !*** ../dvi2html/lib/specials/svg.js ***! - \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var __extends = this && this.__extends || function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - }; - - return extendStatics(d, b); - }; - - return function (d, b) { - extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -}(); - -var __generator = this && this.__generator || function (thisArg, body) { - var _ = { - label: 0, - sent: function () { - if (t[0] & 1) throw t[1]; - return t[1]; - }, - trys: [], - ops: [] - }, - f, - y, - t, - g; - return g = { - next: verb(0), - "throw": verb(1), - "return": verb(2) - }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { - return this; - }), g; - - function verb(n) { - return function (v) { - return step([n, v]); - }; - } - - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - - switch (op[0]) { - case 0: - case 1: - t = op; - break; - - case 4: - _.label++; - return { - value: op[1], - done: false - }; - - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - - case 7: - op = _.ops.pop(); - - _.trys.pop(); - - continue; - - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - - if (t && _.label < t[2]) { - _.label = t[2]; - - _.ops.push(op); - - break; - } - - if (t[2]) _.ops.pop(); - - _.trys.pop(); - - continue; - } - - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - - if (op[0] & 5) throw op[1]; - return { - value: op[0] ? op[1] : void 0, - done: true - }; - } -}; - -var __asyncValues = this && this.__asyncValues || function (o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], - i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i); - - function verb(n) { - i[n] = o[n] && function (v) { - return new Promise(function (resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function (v) { - resolve({ - value: v, - done: d - }); - }, reject); - } -}; - -var __await = this && this.__await || function (v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -}; - -var __asyncGenerator = this && this.__asyncGenerator || function (thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), - i, - q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i; - - function verb(n) { - if (g[n]) i[n] = function (v) { - return new Promise(function (a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - - function fulfill(value) { - resume("next", value); - } - - function reject(value) { - resume("throw", value); - } - - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -}; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var parser_1 = __webpack_require__(/*! ../parser */ "../dvi2html/lib/parser.js"); - -var SVG = -/** @class */ -function (_super) { - __extends(SVG, _super); - - function SVG(svg) { - var _this = _super.call(this, {}) || this; - - _this.svg = svg; - return _this; - } - - SVG.prototype.execute = function (machine) { - machine.putSVG(this.svg); - }; - - return SVG; -}(parser_1.DviCommand); - -function specialsToSVG(commands) { - return __asyncGenerator(this, arguments, function specialsToSVG_1() { - var e_1, _a, commands_1, commands_1_1, command, svg, e_1_1; - - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 13, 14, 19]); - - commands_1 = __asyncValues(commands); - _b.label = 1; - - case 1: - return [4 - /*yield*/ - , __await(commands_1.next())]; - - case 2: - if (!(commands_1_1 = _b.sent(), !commands_1_1.done)) return [3 - /*break*/ - , 12]; - command = commands_1_1.value; - if (!!command.special) return [3 - /*break*/ - , 5]; - return [4 - /*yield*/ - , __await(command)]; - - case 3: - return [4 - /*yield*/ - , _b.sent()]; - - case 4: - _b.sent(); - - return [3 - /*break*/ - , 11]; - - case 5: - if (!!command.x.startsWith('dvisvgm:raw ')) return [3 - /*break*/ - , 8]; - return [4 - /*yield*/ - , __await(command)]; - - case 6: - return [4 - /*yield*/ - , _b.sent()]; - - case 7: - _b.sent(); - - return [3 - /*break*/ - , 11]; - - case 8: - svg = command.x.replace(/^dvisvgm:raw /, ''); - return [4 - /*yield*/ - , __await(new SVG(svg))]; - - case 9: - return [4 - /*yield*/ - , _b.sent()]; - - case 10: - _b.sent(); - - _b.label = 11; - - case 11: - return [3 - /*break*/ - , 1]; - - case 12: - return [3 - /*break*/ - , 19]; - - case 13: - e_1_1 = _b.sent(); - e_1 = { - error: e_1_1 - }; - return [3 - /*break*/ - , 19]; - - case 14: - _b.trys.push([14,, 17, 18]); - - if (!(commands_1_1 && !commands_1_1.done && (_a = commands_1.return))) return [3 - /*break*/ - , 16]; - return [4 - /*yield*/ - , __await(_a.call(commands_1))]; - - case 15: - _b.sent(); - - _b.label = 16; - - case 16: - return [3 - /*break*/ - , 18]; - - case 17: - if (e_1) throw e_1.error; - return [7 - /*endfinally*/ - ]; - - case 18: - return [7 - /*endfinally*/ - ]; - - case 19: - return [2 - /*return*/ - ]; - } - }); - }); -} - -function default_1(commands) { - return parser_1.merge(specialsToSVG(commands), function (command) { - return command.svg; - }, function (commands) { - var svg; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - svg = commands.map(function (command) { - return command.svg; - }).join('').replace(/{\?nl}/g, "\n"); - return [4 - /*yield*/ - , new SVG(svg)]; - - case 1: - _a.sent(); - - return [2 - /*return*/ - ]; - } - }); - }); -} - -exports.default = default_1; - -/***/ }), - -/***/ "../dvi2html/lib/text.js": -/*!*******************************!*\ - !*** ../dvi2html/lib/text.js ***! - \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var __extends = this && this.__extends || function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - }; - - return extendStatics(d, b); - }; - - return function (d, b) { - extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -}(); - -var __values = this && this.__values || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], - i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { - value: o && o[i++], - done: !o - }; - } - }; -}; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var machine_1 = __webpack_require__(/*! ./machine */ "../dvi2html/lib/machine.js"); - -var epsilon = 0.00001; - -var TextMachine = -/** @class */ -function (_super) { - __extends(TextMachine, _super); - - function TextMachine(o) { - var _this = _super.call(this) || this; - - _this.output = o; - _this.snippets = []; - return _this; - } - - TextMachine.prototype.putRule = function (rule) {}; - - TextMachine.prototype.beginPage = function (page) { - _super.prototype.beginPage.call(this, page); - - this.snippets = []; - }; - - TextMachine.prototype.endPage = function () { - var e_1, _a; - - this.snippets = this.snippets.sort(function (a, b) { - if (a[1] < b[1]) return -1; - if (a[1] > b[1]) return 1; - if (a[0] < b[0]) return -1; - if (a[0] > b[0]) return 1; - return 0; - }); - if (this.snippets.length == 0) return; - var previousH = this.snippets[0][0]; - var previousV = this.snippets[0][1]; - - try { - for (var _b = __values(this.snippets), _c = _b.next(); !_c.done; _c = _b.next()) { - var snippet = _c.value; - var h = snippet[0]; - var v = snippet[1]; - var text = snippet[2]; - if (v > previousV) this.output.write("\n"); - if (h > previousH + epsilon) this.output.write(" "); - this.output.write(text.toString()); - previousV = v; - previousH = h; - } - } catch (e_1_1) { - e_1 = { - error: e_1_1 - }; - } finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } finally { - if (e_1) throw e_1.error; - } - } - }; - - TextMachine.prototype.putText = function (text) { - this.snippets.push([this.position.h, this.position.v, text]); - return epsilon; - }; - - TextMachine.prototype.postPost = function (p) { - this.output.end(); - }; - - return TextMachine; -}(machine_1.Machine); - -exports.default = TextMachine; - -/***/ }), - -/***/ "../dvi2html/lib/tfm/fonts.json": -/*!**************************************!*\ - !*** ../dvi2html/lib/tfm/fonts.json ***! - \**************************************/ -/*! exports provided: cmb10, cmbsy10, cmbsy6, cmbsy7, cmbsy8, cmbsy9, cmbx10, cmbx12, cmbx5, cmbx6, cmbx7, cmbx8, cmbx9, cmbxsl10, cmbxti10, cmcsc10, cmcsc8, cmcsc9, cmdunh10, cmex10, cmex7, cmex8, cmex9, cmff10, cmfi10, cmfib8, cminch, cmitt10, cmmi10, cmmi12, cmmi5, cmmi6, cmmi7, cmmi8, cmmi9, cmmib10, cmmib6, cmmib7, cmmib8, cmmib9, cmr10, cmr12, cmr17, cmr5, cmr6, cmr7, cmr8, cmr9, cmsl10, cmsl12, cmsl8, cmsl9, cmsltt10, cmss10, cmss12, cmss17, cmss8, cmss9, cmssbx10, cmssdc10, cmssi10, cmssi12, cmssi17, cmssi8, cmssi9, cmssq8, cmssqi8, cmsy10, cmsy5, cmsy6, cmsy7, cmsy8, cmsy9, cmtcsc10, cmtex10, cmtex8, cmtex9, cmti10, cmti12, cmti7, cmti8, cmti9, cmtt10, cmtt12, cmtt8, cmtt9, cmu10, cmvtt10, euex10, euex7, euex8, euex9, eufb10, eufb5, eufb6, eufb7, eufb8, eufb9, eufm10, eufm5, eufm6, eufm7, eufm8, eufm9, eurb10, eurb5, eurb6, eurb7, eurb8, eurb9, eurm10, eurm5, eurm6, eurm7, eurm8, eurm9, eusb10, eusb5, eusb6, eusb7, eusb8, eusb9, eusm10, eusm5, eusm6, eusm7, eusm8, eusm9, msam10, msam5, msam6, msam7, msam8, msam9, msbm10, msbm5, msbm6, msbm7, msbm8, msbm9, default */ -/***/ (function(module) { - -module.exports = {"cmb10":"AU4AEgAAAH8AMAAPAAoABQBYAAkAAAAH0gueJgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNQgAAAAAAAAAAAAAAAAAAAAAAAADqF7AAACqwAAAmsAAAHrAAABuwAAAnsAAAILAAACawAAAgsAAAJrAAACCwAAAWwBEKFMAAABTAAAAqwAAAKsAAAAEwAAAEOAAAD8AAAA/AAAAPgAAAD8AAAA9wAAAiwAAACwYAABXAAAAgMAAAJjAAAA9VAAArsAAALrAAACbSAAABMAEAA8ABFxPAAAAqxwAAD+MAACrjAAAmwAAAAcABEgbpAAAG6QAAD+AAACZkAAABGAAABTABFQEQAAAP6QAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAAEwAAABOAAAA0gAACYhAAANSAAADcABGCbAAAAisAFMH7AAACCwAAAksAE1GrAAABmwASQpsAAAJ7AAAAmwAVcQsAAAKLABKhewAVIssAAAJ7AAACGwATUcsAEeIbgAACOwAUwUsAAAHbABLiWwAAAisAUkL7AFJCKwASoisAkvGLAAAALpAAATwAAAAukAAA/AAAABwAAAAcABEQ4wAUgUwAFCCzABQBTAAAAMMAAABMARAg84BVYUwAE6AcAAAATIAAASwAEZAcAAACowAToUMAE6DzABQhQ4AUIROAAACjAAAAgwAAAHkAFKFDABSxIwBRkgMAUaEjAAABI4BR8LMAAADzANFi0wDAAPwAAAD8AAAA/AAAAAAAAAAARxyAAEeuMABOOOAATjkAAFVVYABjjlAAY+lQAGT6YABlsIAAbYMAAHHHMAB3d4AAeOOwAHxx4ACAACAAhERgAIccgACHHKAAi2DQAI45AACPSgAAlVWAAJmZ0ACcceAAoLZQAKfSsACqqtAAru8gALHHUACzM2AAtgugALjjsADAADAAwWxQAMJ9UADERIAAxPqAAMccoADIiLAAyIjQAMk+0ADVVYAA59KwAPMzYAEAADABBESAAQiI0AAAAAAAJ9KAAGQf4ABxxyAAgAAAAIqqsACVVWAAmJqgAKHHIACiijAApPpQAK+lAACxxyAAvBbQAMAAAAAAAA//5B/gAAxx0AAOOOAAFVVgABjjoAArjjAAMccAADHHIABAAAAAAAAAAAOOMAAGZmAABxyAABxx0AbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AAoAhgAKALQB7gC0AfIBgADyAYAA+AGGAAwBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AFAGWABQB1gAUAcoAFAGGABQBBgAYAT4AEAEOABABHgASAUYAEAHmABABlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAHSABAB1gAQAYoAEAHmABAB2gASAd4AEAGiABIBrgAQAZYAHAG+ABwB4gAQAZIAHAGOABwBxgAcAdoAEAGqACAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAGgFeABoBqgAeASYAH//uOOP/6mZYAAccd//8ccv//jjj//qqq//444wAAccgAAOOOAAAAAAAFVVYAAqqrAAHHHQAHHHIAEAADAAHHHQ==","cmbsy10":"ARcAEgAAAH8ALAAPABAAEAAHAAcAAAAW4MmMDACgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNQlNZAAAAAAAAAAAAAAAAAAAAAADqH6oAAAJTAAAfqgAACEIAAB+qAAAIUwAAH6oAAB+qAAAfqgAAH6oAAB+qAAAfqgAAH6oAACnMAAAIUwAACFMAAB9kAAAfZAAAH90AAB/dAAAf3QAAH90AAB/dAAAf3QAAHyEAAB91AAAflwAAH5cAACmXAAAplwAAH5cAAB+XAAApIQAAKSEAAAjLAAAIywAAKSEAACnLAAApywAAH2QAACkhAAApIQAAEMsAABDLAAApIQAAKcsAACnLAAAfMAAAA4AAACkwAAAVlwAAFZcAACjMAAAozAAAAcsAAAEhAAALwAAAC8AAABUwAAAI5gAAHMAAABzAAAAfwAAAH8AAABDAAAAisAEGE7AFBAqwDQQesAkCCbAhAxmwKQMOuBEDJrABAwywHQAWuDkFHbABARewAQQrsAEEI7A1AiGwCQMYsCUCJLgBAyewAQIPsBUEDbA9ABGwKQISsCUAKrAlAhqwMQQUuCUCG7AZBBWAAAAVgAAAFYAAABWAAAAVgAAAEMAAABDAAAAF7gAABe4AAAXuAAAF7gAACO4AAAjuAAAE7gAABO4AAALuAAAI7gAACO4AABDuAAAI7gAAAssAACUfAAAgsAAAJbAAAAfMLAAVgAAAFYAAAB/dAAAf3QAABswAAAXMAAAFzAAAEMwAAB/JAAAfyQAAH8kAAB/JAAAAAAAAAAAAAAAFHHAABYLWAAcn0AAILYAACGwVAAkZmgAJMzAACbYIAAnOxgAKOOAACkc7AApOaAAK59AACyRlAAs+kAALb3gAC8w4AAv3KwAMI0MADERAAAx4lgAMnG0ADPUtAA0GggANEUsADRh1AA1J8AAN8KMADkX1AA5PoAAOZmIADn0jAA67TQAO/0UADwbOAA9VUAAPzFgAD9VOABBbAAASZmAAErKbABYLkwAAAAAAAPXDAAZB/gAHHHIAB446AAeT6AAICRsACGQgAAjjkAAJXnAACiIgAAr6UAALHHIACyWNAAwAAAAAAAD//kH+//+OOv//k+gAAAkbAABkIAAA444AAV5wAAGOOgACEvYAAiIgAAMccAADHHIAAyWNAAQAAAAPCj0AAAAAAABcMwAAgtgAAMEbAADkSwABJAAAAU1dAAFNegABU54AAVpzAAGgtgACC2AAAlo2AAJupgADAAIABEcdgDCAAIAwgAGAMIACgDCAA4AwgASAMIAFgDCABgAAgtgAAQWwAAGIiAACC2AAAo44AAMREAADk+gABAAAAAAAAAAAAAAAAAAAAAcccgASZmAAAAAAAAvyiAAGyG4AB5U7AAwZNgAGAC0ABps1AAXOaAAEn0oAAmZmAATykAAGLYAAAMzNACY9cAAQKPYABAAA","cmbsy6":"ARkAEgAAAH8ALQAPABAAEQAHAAcAAAAWIa9YWABgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNQlNZIFYyLjIAAAAAAAAAAAAAAADyH8wAAAJTAAAfzAAACEIAAB/MAAAIUwAAH8wAAB/MAAAfzAAAH8wAAB/MAAAfzAAAH8wAACq7AAAIUwAACFMAAB9kAAAfZAAAH+4AAB/uAAAf7gAAH+4AAB/uAAAf7gAAHyEAAB+GAAAfmQAAH5kAACqZAAAqmQAAH5kAAB+ZAAAqIQAAKiEAAAi6QAAIugAAKiEAACq6AAAqugAAH2QAACohAAAqIQAAELoAABC6AAAqIQAAKroAACq6AAAfMAAAA3AAACowAAAVmQAAFZkAACm7AAApuwAAAboAAAEhAAALsAAAC7AAABUwAAAI1QAAHLAAABywAAAfsAAAH7AAABCwAAAioAEGEqAFBAqgCQQhoA0CCaAdAxigKQMOpxEDJ6ABAwygFQAWpzkFHaABARegAQQsoAEEI6A1AiCgDQMboCUCJKcBAyigAQIPoBkEDaA9ABGgKQIToCUAK6AlAhqgLQQUpyUCGaAhBBVwAAAVcAAAFXAAABVwAAAVcAAAELAAABCwAAAF3QAABd0AAAXdAAAF3QAACN0AAAjdAAAE3QAABN0AAALdAAAI3QAACN0AABDdAAAI3QAAAroAACUfAAAeoAAAJqAAAAe7MAAVcAAAFXAAAB/uAAAf7gAABrsAAAW7AAAFuwAAELsAAB+4AAAfuAAAH7gAAB+4AAAAAAAAAAAAAAAGl7MABtv1AAj+GAAKMUsACmSAAArv4AALZH0AC/4bAAw/ywAMl7AADPf7AA0IPQANWNUADawtAA3K4wAN3LAADn71AA6kZQAOpnsADv4VAA87iAAPTSsAD6ULAA+t4wAP3VUAD/6oABAxSAAQ3IsAEVVQABFkewARaQgAEXGTABHvGwASFCMAEjuIABJL0wASl60AE3LYABN3QAATyuAAFjFFABa9+wAaR6UAAAAAAAFA2wAGsF0ABxxzAAeOOwAIMzMACMBLAAjjkAAJKeMACjoIAAr6UAALHHMACzMwAAwAAAAMSfgAAAAA//6wXf//jjsAADMzAADASwAA440AASnjAAGOOwACEvgAAjoIAAMccAADHHMAAzMwAAQAAAAESfgADr8lAAAAAAAALyMAAIDwAACZmwAAzuUAAQmDAAENdQABLPAAAVZ4AAFl1QABrBgAAlo4AAJmZQAChWgAAwtjAASLYwAMIiOAMIAAgDCAAYAwgAKAMIADgDCABIAwgAWAMIAGAACZmwABMzUAAczQAAJmawADAAUAA5mgAAQzOwAEAAAAAAAAAAAAAAAAAAAABxxzABbI+wAAAAAADQDQAAZG/QAHwkAADdFlAAberQAIDCgABrbTAASXtQACqqsABVVVAAaXsAABVVUAH7u7ABWZmwAEAAA=","cmbsy7":"ARgAEgAAAH8ALQAPAA8AEQAHAAcAAAAW0ZKjnwBwAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNQlNZIFYyLjIAAAAAAAAAAAAAAADwH6oAAAJTAAAfqgAACEIAAB+qAAAIUwAAH6oAAB+qAAAfqgAAH6oAAB+qAAAfqgAAH6oAACrLAAAIUwAACFMAAB9kAAAfZAAAH9wAAB/cAAAf3AAAH9wAAB/cAAAf3AAAHyEAAB+GAAAfmAAAH5gAACqYAAAqmAAAH5gAAB+YAAAqIQAAKiEAAAjLQAAIywAAKiEAACrLAAAqywAAH2QAACohAAAqIQAAEMsAABDLAAAqIQAAKssAACrLAAAfMAAAA3AAACowAAAVmAAAFZgAACnLAAApywAAAcsAAAEhAAALwAAAC8AAABUwAAAI5QAAHMAAABzAAAAfwAAAH8AAABDAAAAisAEGErAFBAqwDQQgsAkCCbAdAxiwKQMOtxEDJ7ABAwywGQAWtzkFHbABARewAQQssAEEI7A1AiGwCQMbsCUCJLcBAyiwAQIPsBUEDbA9ABGwKQITsCUAK7AlAhqwMQQUtyUCGbAhBBVwAAAVcAAAFXAAABVwAAAVcAAAEMAAABDAAAAF7QAABe0AAAXtAAAF7QAACO0AAAjtAAAE7QAABO0AAALtAAAI7QAACO0AABDtAAAI7QAAAssAACUeAAAesAAAJrAAAAfLLAAVcAAAFXAAAB/cAAAf3AAABssAAAXLAAAFywAAEMsAAB/JAAAfyQAAH8kAAB/JAAAAAAAAAAAAAAAF78AABjQCAAg1pQAJWJcACZwLAAo7vgAKe4kACw0CAAtAFQALnnsAC+GCAAvuiQAMWSAADKRVAAzBbgAM4ZcADXcbAA2D6QANoEcADeRgAA4ekAAONrUADpUSAA6hKwAOvR4ADsiAAA8HUgAPsPUAECilABAqRQAQLzsAED1yABCp1wAQ2ekAEPXuABEstQARTTcAEgSeABIKqQAScCkAFLYOABUvywAYrisAAAAAAAEqawAGkvAABxxyAAeOOQAH+lAACJCrAAjjkAAI9p4ACgFOAArRrgAK+lAACxxyAAv/CQAMAAAAAAAA//6S8P//jjn///pQAACQqwAA444AAPaeAAGOOQACAU4AAhL3AALRrgADHHIAA/8JAAQAAAAO1ZUAAAAAAAA/OwAAkXkAAJfZAADWiQABFYUAASXXAAE6vgABUzcAAWHFAAGoBwACReUAAlo3AAJ9RwADB1IABHMAAAtvV4AwgACAMIABgDCAAoAwgAOAMIAEgDCABYAwgAYAAJF5AAEi8gABtGsAAkXlAALXXgADaNcAA/pQAAQAAAAAAAAAAAAAAAAAAAAHHHIAFPcSAAAAAAALt44ABiR3AAeKDgAMCM4ABYHnAAgKawAG5dkABJJJAAJJJQAEkkkABaaXAAEkkgAbMzIAEoOpAAQAAA==","cmbsy8":"ARgAEgAAAH8ALAAPABAAEQAHAAcAAAAWecSZzACAAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNQlNZIFYyLjIAAAAAAAAAAAAAAADuH6oAAAJTAAAfqgAACEIAAB+qAAAIUwAAH6oAAB+qAAAfqgAAH6oAAB+qAAAfqgAAH6oAACnMAAAIUwAACFMAAB9kAAAfZAAAH90AAB/dAAAf3QAAH90AAB/dAAAf3QAAHyEAAB91AAAfmAAAH5gAACmYAAApmAAAH5gAAB+YAAApIQAAKSEAAAjLQAAIywAAKSEAACnLAAApywAAH2QAACkhAAApIQAAEMsAABDLAAApIQAAKcsAACnLAAAfMAAAA4AAACkwAAAVmAAAFZgAACjMAAAozAAAAcsAAAEhAAALwAAAC8AAABUwAAAI5gAAHMAAABzAAAAfwAAAH8AAABDAAAAisAEGE7AFBAqwDQQesAkCCbAdAxiwKQMOtxEDJrABAwywGQAWtzkFHbABARewAQQrsAEEI7A1AiGwCQMasCUCJLcBAyewAQIPsBUEDbA9ABGwKQISsCUAKrAlAhuwMQQUtyUCGbAhBBWAAAAVgAAAFYAAABWAAAAVgAAAEMAAABDAAAAF7gAABe4AAAXuAAAF7gAACO4AAAjuAAAE7gAABO4AAALuAAAI7gAACO4AABDuAAAI7gAAAssAACUfAAAgsAAAJbAAAAfMLAAVgAAAFYAAAB/dAAAf3QAABswAAAXMAAAFzAAAEMwAAB/JAAAfyQAAH8kAAB/JAAAAAAAAAAAAAAAFccoABdKAAAefTgAIthAACPd8AAmmaAAJzNIAClg2AAqAUAAK45QACxCsAAsbQAALmVgAC954AAv6VgAMJUgADKuOAAyxPgAM26AADREYAA1I2gANZd4ADckeAA3XpAAN3+YADeT4AA4n2gAO0EQADz18AA8+nAAPRyIAD1zEAA+15AAP7kIAEAHAABBVXgAQ8fYAEPk4ABFsIAATmaQAFAUsABd7EAAAAAAAARR6AAZ1xAAHHHIAB446AAfPqAAIYUoACMOWAAjjkAAJyNIACoiMAAr6UAALHHIAC7RYAAwAAAAAAAD//nXE//+OOv//z6gAAGFKAADDlgAA444AAY46AAHI0gACEvYAAoiMAAMccAADHHIAA7RYAAQAAAAO64YAAAAAAABLTgAAi2IAAKkIAADcRAABG44AATsWAAFFGgABUMgAAV64AAGk+gACLYQAAlo2AAJ3MAADBEQABGC4AArpPoAwgACAMIABgDCAAoAwgAOAMIAEgDCABYAwgAYAAItiAAEWxAABoiYAAi2IAAK46gADREwAA8+uAAQAAAAAAAAAAAAAAAAAAAAHHHIAE5mkAAAAAAALJCwABoqUAAdRsAAL/FoABkZQAAaljAAFpYwABI44AAIAAAAEAAAABlVWAAEAAAAXzMwAEjM0AAQAAA==","cmbsy9":"ARYAEgAAAH8ALAAPAA8AEAAHAAcAAAAWZyQtUgCQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkNNQlNZIFYyLjIAAAAAAAAAAAAAAADsH6oAAAJTAAAfqgAACEIAAB+qAAAIUwAAH6oAAB+qAAAfqgAAH6oAAB+qAAAfqgAAH6oAACnLAAAIUwAACFMAAB9kAAAfZAAAH9wAAB/cAAAf3AAAH9wAAB/cAAAf3AAAHyEAAB91AAAfmAAAH5gAACmYAAApmAAAH5gAAB+YAAApIQAAKSEAAAjLAAAIywAAKSEAACnLAAApywAAH2QAACkhAAApIQAAEMsAABDLAAApIQAAKcsAACnLAAAfMAAAA4AAACkwAAAVmAAAFZgAACjLAAAoywAAAcsAAAEhAAALwAAAC8AAABUwAAAI5gAAHMAAABzAAAAfwAAAH8AAABDAAAAisAEGE7AFBAqwDQQesAkCCbAdAxiwKQMOtxEDJrABAwywGQAWtzkFHbABARewAQQrsAEEI7A1AiGwCQMZsCUCJLcBAyewAQIPsBUEDbA9ABGwKQISsCUAKrAlAhuwMQQUtyUCGrAhBBWAAAAVgAAAFYAAABWAAAAVgAAAEMAAABDAAAAF7QAABe0AAAXtAAAF7QAACO0AAAjtAAAE7QAABO0AAALtAAAI7QAACO0AABDtAAAI7QAAAssAACUeAAAgsAAAJbAAAAfLLAAVgAAAFYAAAB/cAAAf3AAABssAAAXLAAAFywAAEMsAAB/JAAAfyQAAH8kAAB/JAAAAAAAAAAAAAAAFQlsABbk1AAdc5QAIaisACKoEAAlk0AAJd3AACf4VAAodpQAKhLUACqC5AAqpaQALNrAAC3cOAAuR+wALwDwADDXEAAxJ1QAMdSkADJ9AAAzVGwAM9esADVz3AA1ddAANbWQADW9VAA2shQAOU/wADrPrAA65ywAOyjwADuB7AA8qoAAPaXIAD3ZJAA/HEAAQTskAEFb8ABDUVQAS7uAAE09XABa+pQAAAAAAAQNrAAZbBwAHHHIAB445AAeudAAINFcACJMCAAjjkAAJkscACk+gAAr6UAALHHIAC2wXAAwAAAAAAAD//lsH//+OOf//rnQAADRXAACTAgAA444AAY45AAGSxwACEvcAAk+gAAMccgADbBcABAAAAA78lQAAAAAAAFSwAACGpAAAtmcAAOC5AAEgPgABS6AAAU0rAAFO4gABXFkAAaKbAAIaiwACWjUAAnJwAAMB5QAEUnyAMIAAgDCAAYAwgAKAMIADgDCABIAwgAWAMIAGAACGpAABDUcAAZPrAAIajgACoTIAAyfVAAOueQAEAAAAAAAAAAAAAAAAAAAABxxyABLu4AAAAAAAClkLAAaOJAAHMnwACtoAAAVt6wAHr5UABswHAASXtAABxxwAAtCeAAWhNAAA444AKn0nABAthAAEAAA=","cmbx10":"AUwAEgAAAH8ALQAPAAoABQBYAAoAAAAHGvIiVgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADqFLAAACewAAAjsAAAG7AAABiwAAAksAAAHbAAACOwAAAdsAAAI7AAAB2wAAATwBEKEsAAABLAAAAnwAAAJ8AAAAEwAAADOAAADcAAAA3AAAANcAAADcAAAA1gAAAgwAAACQYAAA/AAAAdMAAAIzAAAA1UAAAosAAAK7AAACPSAAABMAEAAsABFxDAAAAnxwAADeMAACfjAAAjwAAAAcABEgbpAAAG6QAADeAAACOFAAABGAAABDABFQEQAAAN6QAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAAEwAAABOAAAAkgAACMhAAALSAAAC8ABGCPAAAAgsAFMHLAAAB2wAAAhsAE1F7AAABawASQmsAAAJLAAAAWwAVcOsAAAJbABKhSwAVIpsAAAJLAAAB+wATUZsAEeH7gAAB6wAUwSsAAAGrABLiKwAAAgsAUkLLAFJCCwASogsAkvFbAAAAHpAAAQwAAAAekAAA3AAAABwAAAAcABEQwwAUgSwAFCCTABQBLAAAAKMAAAA8ARAg04BVYSwAE6AcAAAAPIAAARwAEZAcAAACcwAToSMAE6DTABQhI4AUIROAAACDAAAAcwAAAGkAFKEjABSxEwBRkdMAUaETAAABE4BR8JMAAADTANFiowDAANwAAADcAAAA3AAAAAAAAAAAUccAAFmZgABZ9IAAYiIAAG+k4AByfQAAdB+wAHk+gACC2AAAhu7QAIsFgACPHDAAkzMAAJgtUACY42AAmk+AAJtggACjjgAAq7uAALEQ0ACz6QAAuT5QAMFr0ADERAAAyT5QAMzMgADOOKAA0WvQANSfAADczIAA3SeAAN6ToADhxtAA4nzgAOT6AADmZiAA5sEgAOd3MAD1VQABCqpQARd3IAEmZgABK2BQATBaoAAAAAAAJ9KAAGQf4ABxxyAAgAAAAIqqsACYmqAAoccgAKIiAACiijAApPpQAK+lAACxxyAAvBbQAMAAAAAAAA//5B/gAAxx0AAOOOAAGOOgACIiAAArjjAAMccAADHHIABAAAAAAAAAAAQW0AAHXCAACC2AABvpMAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//rjkP/59KAAAb6TAAILYP/++lD//30o//53eP/99KAAAILYAAEFsAAAAAAABiIgAAMREAACC2AABxxyABJmYAACC2A=","cmbx12":"AUsAEgAAAH8ALAAPAAoABQBYAAoAAAAHwtZOoADAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADmE7AAACawAAAisAAAGrAAABewAAAjsAAAHLAAACKwAAAcsAAAIrAAABywAAASwBEKEcAAABHAAAAmwAAAJsAAAAEwAAADOAAADcAAAA3AAAANgAAADcAAAA1gAAAfwAAACQYAAA7AAAAcMAAAIjAAAA1UAAAnsAAAKrAAACLSAAABMAEAAsABFw/AAAAmxwAADeMAACbjAAAiwAAAAcABEgbpAAAG6QAADeAAACJ1AAABGAAABDABFQEQAAAN6QAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAAEwAAABOAAAAkgAACIhAAALSAAAC8ABGCLAAAAfsAFMG7AAABywAAAgsAE1FrAAABWwASQlsAAAI7AAAAWwAVcPsAAAJLABKhOwAVIosAAAI7AAAB6wATUYsAEeHrgAAB2wAUwRsAAAGbABLiGwAAAfsAUkK7AFJB+wASofsAkvFLAAAAHpAAAPwAAAAekAAA3AAAABwAAAAcABEQwwAUgRwAFCCTABQBHAAAAKMAAAA8ARAg04BVYRwAE6AcAAAAPIAAAQwAEZAcAAACYwAToRMAE6DTABQhE4AUIQOAAACDAAAAcwAAAGkAFKETABSxAwBRkcMAUaEDAAABA4BR8JMAAADTANFikwDAANwAAADcAAAA3AAAAAAAAAAAUAAAAFe0MABYAAAAYAAAAGtCcABwAAAAcZmwAHWhQACAAAAAg2hQAIgAAACMAAAAkAAAAJL2kACUvbAAmAAAAKAAAACoAAAArQmAALAAAAC1CYAAvQmAAMAAAADEvbAAyEvQAMl7UADMvbAA0AAAANbQsADYS9AA2XtQANy9sADdVXAA4AAAAOEvgADhe1AA4l7QAPAAAAEEvbABES+AASAAAAEkvbABKXtQAAAAAAAkvbAAYupwAHHHEACAAAAAiqqwAJe6EACgAAAAoccQAKKKMACk+lAAr6UAALHHEAC8FsAAwAAAAAAAD//i6nAADHHAAA448AAY45AAIAAAACuOMAAxxwAAMccQAEAAAAAAAAAABAAAAAczMAAIAAAAGjjwBsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+wAA//ol7AABo48AAgAA//8AAP//gAD//oAA//4AAAAAgAAAAQAAAAAAAAAGAAAAAwAAAAIAAAAHHHEAEgAAAAIAAA==","cmbx5":"AU0AEgAAAH8ALwAPAAkABQBYAAoAAAAHqy2MaABQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAAD0FaAAACmgAAAnoAAAHKAAABqgAAAloAAAH6AAACegAAAfoAAAJ6AAAB+gAAAWsBEKFLAAABSwAAAqsAAAKrAAAAEwAAAENgAADrAAAA6wAAAOcAAADrAAAA5gAAAhsAAACgUAAA+wAAAfMAAAJzAAAA5UAAAroAAALaAAACfSAAABMAEAA7ABFxCwAAAptgAADuMAACnjAAAnsAAAAbABEgfoAAAH6AAADuAAACfHAAABFgAABTABFQEQAAAO6AAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAAEwAAABNgAAA0YAACchAAAMRgAADLABGCewAAAhoAFMHqAAAB+gAAAkoAE1GaAAABigASQooAAAJaAAAAagAVcRoAAAJqABKhWgAVIsoAAAJaAAACKgATUboAEeIqYAACCgAUwToAAAHaABLiOgAAAhoAUkLqAFJCGgASohoAkvF6AAAALoAAAQsAAAAugAAA6wAAABsAAAAbABEQ0wAUgTsAFCCjABQBOwAAALMAAABLARAg42BVYTsAE6AbAAAAS2AAASsAEZAbAAACkwAToTMAE6DjABQhM2AUISNgAACTAAAAgwAAAHgAFKEzABSxIwBRkfMAUaEjAAABI2BR8KMAAADjANFi4wDAAOsAAADrAAAA6wAAAAAAAAAAb6RgAHBW0AB5mQAAefQAAIRDoACMzAAAmOLQAJry0ACfSWAArYIAALE90AC30aAAvPlgAMIhMADDMtAAxPmgAMZlYADMcNAA1sBgAN9I0ADlrzAA6ZhgAOtfoADv/tAA+k5gAP/+0AEEQwABCIcwAQqpYAEOkqABFJ4AARpOYAEdJmABH0igASIg0AEjMdABJxsAASd2AAEpPTABK19gAT3cYAFO7TABVr/QAWT4oAF//jABhEJgAAAAAAAsFtAAbSQwAHHHMACAAAAAiqrQAJ2VAAChxzAAoopgAKT6YACvpQAAsccwALu7MAC8FtAAwAAAAAAAD//tJDAADHHQAA440AAY46AAK45gADHHMAA7uzAAQAAAAAAAAAAFJ9AACUegAApPoAAhPqAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/5Bbr/+Bx9AAIT6gACk+b//rYN//9bBv/+ERP//WwaAACk+gABSfMAAAAAAAhEOgAD3doAApPmAAcccwAYRCYAApPm","cmbx6":"AVAAEgAAAH8AMQAPAAoABQBYAAoAAAAHgEXAdABgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADyF6AAACqgAAAooAAAHaAAABugAAAmoAAAIKAAACigAAAgoAAAKKAAACCgAAAWsBEKFbAAABWwAAArsAAAK7AAAAEwAAAENwAADrAAAA6wAAAOcAAADrAAAA5gAAAisAAACgUAAA+wAAAgMAAAKDAAAA5UAAAsoAAALqAAACjSAAABMAEAA7ABFxCwAAAqtgAADuMAACrjAAAosAAAAbABEgfpAAAH6QAADuAAACjIAAABFwAABTABFQEQAAAO6QAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAAEwAAABNwAAA0cAACghAAAMRwAADLABGCiwAAAioAFMH6AAACCgAAAloAE1GqAAABmgASQpoAAAJqAAAAagAVcRoAAAJ6ABKhegAVItoAAAJqAAACOgATUcoAEeI6cAACGgAUwUoAAAHqABLiSgAAAioAUkMKAFJCKgASoioAkvGKAAAALpAAAQsAAAAukAAA6wAAABsAAAAbABEQ0wAUgUsAFCCjABQBSwAAALMAAABLARAg43BVYUsAE6AbAAAAS3AAATsAEZAbAAACowAToUMAE6DjABQhQ3AUISNwAACTAAAAgwAAAHgAFKFDABSxMwBRkgMAUaEzAAABM3BR8KMAAADjANFi8wDAAOsAAADrAAAA6wAAAAAAAAAAZL2AAGUq0ABt/AAAblcwAHfwsACBqNAAiyPQAI0PUACSMVAAnlcAAKJPgACn8LAArL1QALGKMAC1NwAAtc6AALYLMAC7I7AAuyPQAMS9UADJewAA0xSwANMzAADX8IAA3MywAOZmMADrI7AA76SwAPQlsAD1GFAA+T5QAP5W0AEE+gABB1jQAQhLgAEL+DABDHGAARCXUAEQ8oABEYoAARPKgAEkvTABLjiAATxxUAFKMNABYtewAWMUUAFnWLAAAAAAACqqsABrBdAAcccwAIAAAACKqtAAnHGwAKHHMACiilAApPpQAK+lAACxxzAAszMAALwW0ADAAAAAAAAP/+sF0AAMcdAADjjQABjjsAArjlAAMccAADHHMAAzMwAAQAAAAAAAAAAEzNAACKPQAAmZsAAf8NAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/5tCj/+MzLAAH/DQACZmX//szN//9mZf/+MzP//ZmbAACZmwABMzMAAAAAAAd/CwADmZgAAmZlAAcccwAWMUUAAmZl","cmbx7":"AU4AEgAAAH8AMAAPAAkABQBYAAoAAAAHZhck2ABwAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADwFrAAACmwAAAmsAAAHLAAABqwAAAlsAAAH7AAACawAAAfsAAAJrAAAB+wAAAVwBEKFMAAABTAAAAqwAAAKsAAAAEwAAAENwAADsAAAA7AAAAOcAAADsAAAA5gAAAhwAAACgUAABHAAAAfMAAAJjAAAA5UAAArsAAALrAAACbSAAABMAEAA8ABFxDAAAApxwAADuMAACnjAAAmwAAAAcABEgfoAAAH6AAADuAAACamAAABFwAABTABFQEQAAAO6AAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAAEwAAABNwAAA0cAACYhAAAMRwAADMABGCbAAAAhsAFMHrAAAB+wAAAksAE1GbAAABiwASQosAAAJbAAAAawAVcPsAAAJ7ABKhawAVIssAAAJbAAACKwATUbsAEeIrcAACCwAUwTsAAAHbABLiOwAAAhsAUkL7AFJCGwASohsAkvF7AAAALoAAAQwAAAAugAAA7AAAABwAAAAcABEQ0wAUgTwAFCCjABQBPAAAALMAAABMARAg43BVYTwAE6AcAAAATHAAASwAEZAcAAACkwAToTMAE6DjABQhM3AUISNwAACTAAAAgwAAAHgAFKEzABSxIwBRkfMAUaEjAAABI3BR8KMAAADjANFi0wDAAOwAAADsAAAA7AAAAAAAAAAAXPOwAF0vkABlsFAAZgtQAG8i4AB6t5AAgVIAAIMjkACI1pAAk4EgAJelAACcmLAAoSRwAKWwUACqXJAAqviQAKs5sACux+AAt99wALnncADC/wAAxf5QAMoOkADPFeAA2C1wANw9sADg6gAA5ZZQAOWwUADqAZAA7mzgAPW9UAD3xXAA999wAPwjsAD8MLABAIIAAQCcAAEA3QABAvIgARLLIAEW2yABKaaQATcPcAFLYJABTgTgAVKxIAAAAAAAKaaQAGkvAABxxyAAgAAAAIqqsACbObAAoccgAKKKUACk+lAArRrgAK+lAACxxyAAvBbgAMAAAAAAAA//6S8AAAxx4AAOOOAAGOOQACuOUAAtGuAAMccgAEAAAAAAAAAABIvgAAgu4AAJF5AAHwJwBsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+jDF//lCpQAB8CcAAkXl//7dDv//bof//kuV//26GwAAkXkAASLyAAAAAAAG8i4AA2jXAAJF5QAHHHIAFLYJAAJF5Q==","cmbx8":"AU0AEgAAAH8ALgAPAAoABQBYAAoAAAAHMsdAyQCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADuFbAAACiwAAAksAAAHLAAABmwAAAlsAAAHrAAACSwAAAesAAAJLAAAB6wAAAUwBEKE8AAABPAAAAowAAAKMAAAAEwAAADOAAADcAAAA3AAAANcAAADcAAAA1gAAAhwAAACQYAABDAAAAeMAAAJDAAAA1UAAApsAAALLAAACTSAAABMAEAAsABFw/AAAAoxwAADeMAACjjAAAkwAAAAcABEgbpAAAG6QAADeAAACSlAAABGAAABDABFQEQAAAN6QAADZAAAA2QAAANkAAADZAAAA2QAAANkAAADZAAAA2QAAANkAAADZAAAAEwAAABOAAAAkgAACQhAAALSAAAC8ABGCTAAAAhsAFMHbAAAB6wAAAisAE1GLAAABewASQnsAAAJbAAAAWwAVcOsAAAJrABKhWwAVIqsAAAJbAAACCwATUasAEeILgAAB+wAUwTsAAAG7ABLiOwAAAhsAUkLbAFJCGwASohsAkvFrAAAAHpAAAPwAAAAekAAA3AAAABwAAAAcABEQwwAUgTwAFCCTABQBPAAAAKMAAAA8ARAg04BVYTwAE6AcAAAAPIAAASwAEZAcAAACgwAToTMAE6DTABQhM4AUIROAAACDAAAAcwAAAGgAFKEzABSxIwBRkeMAUaEjAAABI4BR8JMAAADTANFiswDAANwAAADcAAAA3AAAAAAAAAAAVxygAF93oABf0sAAaIjAAHWC4AB59OAAe7LgAIGZ4ACLYQAAj6VAAJQXIACYciAAnM0gAKGZ4ACi2GAAo0ogAKWDIAClg0AArjlAALbvYAC8FyAAv6VgAMTNQADNg0AA0RGAANXeQADaIqAA2qsAAN6UYADifaAA6lAAAOuOwADsFyAA8ACAAPBEoADz6cAA9HIgAPTNQAD2UCABBVXgARuOwAEotoABOZpAAT5nAAFDM8AAAAAAACjjgABnXEAAcccgAIAAAACKqsAAmiIAAKHHIACiikAApPpgAKiIwACvpQAAsccgALwWwADAAAAAAAAP/+dcQAAMccAADjjgABjjoAAoiMAAK45AADHHAAAxxyAAQAAAAAAAAAAEWwAAB9cAAAi2IAAeT6AGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/6jjb/+ZsCAAHk+gACLYT//uk+//90nv/+Xdz//dJ8AACLYgABFsIAAAAAAAaIjAADREYAAi2EAAcccgATmaQAAi2E","cmbx9":"AUwAEgAAAH8ALgAPAAkABQBYAAoAAAAHdAyJOgCQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNQlgAAAAAAAAAAAAAAAAAAAAAAADsFbAAACiwAAAksAAAHLAAABmwAAAlsAAAHrAAACSwAAAesAAAJLAAAB6wAAAUwBEKE8AAABPAAAAowAAAKMAAAAEwAAADNwAADcAAAA3AAAANcAAADcAAAA1gAAAhwAAACQYAAA/AAAAeMAAAJDAAAA1UAAApsAAALLAAACTSAAABMAEAAsABFxDAAAAoxwAADeMAACjjAAAkwAAAAcABEgboAAAG6AAADeAAACSVAAABFwAABDABFQEQAAAN6AAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAAEwAAABNwAAAkcAACQhAAALRwAAC8ABGCTAAAAhsAFMHbAAAB6wAAAisAE1GLAAABewASQnsAAAJbAAAAWwAVcOsAAAJrABKhWwAVIqsAAAJbAAACCwATUasAEeILcAAB+wAUwTsAAAG7ABLiOwAAAhsAUkLbAFJCGwASohsAkvFrAAAAHoAAAQwAAAAegAAA3AAAABwAAAAcABEQwwAUgTwAFCCTABQBPAAAAKMAAAA8ARAg03BVYTwAE6AcAAAAPHAAASwAEZAcAAACgwAToTMAE6DTABQhM3AUIRNwAACDAAAAcwAAAGgAFKEzABSxIwBRkeMAUaEjAAABI3BR8JMAAADTANFiswDAANwAAADcAAAA3AAAAAAAAAAAVCWwAFw04ABcj+AAZPoAAHJAUAB1zlAAd31AAHz1IACGorAAiwBQAI8M4ACTQeAAl3cAAJxdIACd5+AAnhpAAJ/hIACf4UAAqEtQALC1kAC19pAAuR+wAL5gwADGyuAAyfQAAM7aIADSuSAA08BAANdEUADayFAA4wAgAOONcADklJAA6BiwAOicQADrnLAA7KPAAOz+wADuD8AA/HEAARIrcAEfIMABLu4AATPUIAE4ukAAAAAAAChL4ABlsHAAcccgAIAAAACKqrAAmUiwAKHHIACiikAApPoAAKT6UACvpQAAsccgALwWwADAAAAAAAAP/+WwcAAMccAADjjgABjjkAAk+gAAK45AADHHIABAAAAAAAAAAAQ1IAAHksAACGpAABz6UAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//q9pf/5zM4AAc+lAAIai//+8rv//3lc//5sF//95XUAAIakAAENRQAAAAAABk+gAAMn0AACGosABxxyABLu4AACGos=","cmbxsl10":"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","cmbxti10":"AX8AEgAAAH8ANgAQAAoAOgBNAAkAAAAHRg1DlgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNQlhUSQAAAAAAAAAAAAAAAAAAAADqF7CkAC2wAAApsEgAILAAAB2wwAAssNQAIrCQACmweAAisBgAKbB4ACKwZAAb2OUIFth8ABjYfAAw2HwAMdh8AAIwUAAEOBAAENAAABDQRAAQgDwAENBsABBgcAAu0AAADQYAABXYXAAiMEAAIjBAABBUVAAvsJAAM7CQACniSAABMAEPBdCNFxPQNAAt1ygAJtAAAC3zoAAp0EQAAtCpEgn5yAAJ+QwAEPC4ACl1DAACGAAABzAJFQIQAAAQ+cgAEKCsABCgrAAQoKwAEKCsABCorAAQoKwAEKCsABCorAAQoKwAEKCsAAIwIAACOCAABUgcACkhKAAQSAAAENCVGCnQTAAlsAEwIbBkACKwtAAnsEkrHLCQABqwpRorsCwALLDUAAiwxAARsLwAKrC1IBewAUEysNQALLDUACOwSSsesGUqI7hIACSwBTAUsIQAH7ClJCiw1AAlsNkaNLDZKiWwxSAlsOElGbC0AAP53AAT0NAAA/loABDQJAAC0KgAAtCpERAwUAAN0DFFDTAVRRDQfRkNMEFFBtjlAA04dAAQ0FAAAsCIAALIzAAN0IAAAdB9GS0wUAAUMFFMEDAxRRA4MUUNOHQADDCBRQowOAAEkFgAEjBQAA0wgAAdMIEZDjCcAA84dAALMLAAEDBhFjUwYAAQ0JQAENCUABDQmAAAAAAAAAS/IwAFsFgABbKgAAYo8wAGLYAABmZoAAahjQAHi/AAB5LCAAfKgwAH2U4ACAbSAAiD9gAI+AYACPySAAl1KwAJxNAACe3GAAntyAAKZmAACqPWAArKhQALKhIAC0MeAAtXlQALoq0ADBbAAAwbRgAMSMoADJhuAAy81gAM6BMADREKAA05/gANrgsADcBCAA3ZSAAN5YMADgI+AA4X3QAOKzMADlHjAA5TBgAOVnAADxxoAA8unQAQXUIAELcqABDzdgARKg4AEj+rABKPUAAS6lYAAAAAAAJbBgAGQf4ABxxyAAgAAAAIqqsACYLWAAmnPQAKHHIACiijAApPpQAK+lAACxeTAAsccgALwW0ADAAAAAAAAP/+Qf4AAMcdAADjjgABjjoAAac9AAK44wADHHAAAxxyAAQAAAAAAAAAAGjTAABq8wAAh2UAALziAADV6AAA5q4AAQyFAAESNgABEsgAARflAAEs8gABQf4AAUUwAAFOggABUsgAAVwrAAFdTQABczMAAXkrAAGCGAABg2sAAYrQAAGOygABkeAAAZZVAAGYeAABp0IAAavOAAGuFgABuXUAAbziAAHHHQABzWAAAdJrAAHTogAB1DMAAdXoAAHV6gACA2oAAg7LAAIQggACEjYAAhtOAAI45QACRfoAAksYAAJR7QACaigAAoJIAAKHZQACrN4AAq79AALA2wAC+uIAAwAAAAMrIAADfAUAaQAMAGYACwBsAA0AJ4AAAD+AAAAhgAAAKYAAgF2AAABpAA4AbAAPACeAAAA/gAAAIYAAACmAAIBdgAAAbIABgEyAAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+gGyABABvgAUAZYAFAHWABQBygAUAYYAFAEGABgBPgAcAQ4AHAEeAB4BRgAcAeYAFAGWABQBvgAUAcoAFAGGABQB1gAWAQYAFAFiABwBXgAcAQYAHAFaAB4BZgAcAboAHAGyABwBygAcAdYAHAG2ABwB0gAcAaYAHAEOABwBPgAcAR4AHAGiABwBigAcAVYAHAGuABwB2gAcAd4AHAFGABwBUgAUAWYAFAFaABgBXgAYAZYAIAGGACABvgAgAZIAIAGOACABngAiAcYAIgCeABgABtOj/+0Dd//nadgAB4moAAPE1//6WMP/+HZb//4dl//8OywAEAAAABqGNAALTngAB4moABxxyABLqVgAB4mo=","cmcsc10":"AUUAEgAAAH8AMQAQAAsABgBJAAsAAAAHjC34FACgAAAcVGVYIHRleHQgd2l0aG91dCBmLWxpZ2F0dXJlcwAAAAAAAAAAAAAABUNNQ1NDAAAAAAAAAAAAAAAAAAAAAADqGsAAACvAAAApwAAAIMAAABzAAAAkwAAAIsAAACnAAAAiwAAAKcAAACLAAAAN2AAADdgAAALQAAACSQAAC0kAAAFQAAAFUAAADdAAAA3QAAANkAAADdAAAA1wAAAk0AAACAcAACxQAAAdUAAAJVAAABZzAAAtwAAAL8AAACnjAAACMAEAAtABCA3QAAAr2AAADfQAACv0AAAp0AAAAtABAwb6AAAG+gAADfAAACmFAAACGQAAAzABBgIQAAAN+gAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAAIwAAACOQAAKWIAACkhAAApYgAAC9ABCSnQAAAkwAEgIcAAACLAAAAmwAEWHsAAABvAAQwqwAAAJMAAAATAATIPwAAAKMABDhrAASouwAAAJMAAACnAARYewAEKKckAACPAASATwAAAIsABCiTAAAAkwAkMMMAJDCTAAQ4kwBEKGcAAAAL6AAAN0AAAAvoAAA3QAAACsAAAAtABAhRQAT4QUAAAEVAAABVQATkOUAAADFABNBhQAAAUUAAAAVABSAVQAAAXUAE1ClABQx9QAAAUUAAAFlABOQ5QATMWVgAAElABPgdQAAARUAEzFFAAABRQBTQnUAU0FFABNRRQDTMJUAAADTAVBzAwFAAN0AAADbAAAA2wAAAAAAAAAATV5gAFHG4ABgtdAAZ9IwAGyoUABvpLAAdTDQAH6ToACAkYAAg2mwAIYLIACJGiAAjYKAAI7KYACRELAAlHrQAJdS4ACaKyAAnHFgAJ0DUACf24AAorOgAKKzsACkH7AAq2BQAK7ugAC2ZgAAuk8wALxNMAC93WAAvyVgAMFroADFVOAAyT4gAMzMUADQWoAA0w6gANRD0ADV5tAA19IAANgtAADZ9CAA5xvgAOphoAD5mQAA/ScwARd20AEbBQAAAAAAABsFsABd64AAbjjgAIAAAACDjjAAigJQAJCs4ACZmWAAoOOgAKT6UACq+NAAru7gALHHIAC7YLAAwAAAAAAAD//d64AACgJQAAxx0AAOOOAAGZlgACT6UAArjjAAMccAADHHIABAAAAAAAAAAALYMAADu7AABR6wAAa4UAAHd4AGyAAIBMgAGAYABcACcAIgA/gAKAIYACgC0Ae4AtAHyAYAAOgGAADwBhgAOAQYADAGGABABBgAQAb4AFAE+ABQBjgAUAQ4AFAGeABQBHgAUAcYAFgFGABQB4gAUAWIAFAHeABQBXgAUAYYAFAEGABQB2gAUAVoAFAHmABYBZgAUAY4AFAEOABQBvgAUAT4AFAGeABQBHgAUAdYAFAFWABQBxgAUAUYAFAFSAAwB0gAMAWYADAHmAAwBWgAQAdoAEAFeABIB3gASASYAGgGGABwBhgAgAb4AJAGOACQBngAmAcYAJAHiACQB3gAkAYYAJAHaACYB5gAkAY4AJAG+ACQBngAkAdYAJAHGACQAngAcAdIAHAHmABwB2gAiAd4AIgGmACv/645L/+jM2AAHd3f/+mZr//iIj//+IiAAAd3j//u7u//6T6v//pPoAAFsGAAAAAAAGC10AAszLAAHd3QAG444AEbBQAAHd3Q==","cmcsc8":"AUYAEgAAAH8AMgAQAAsABgBJAAsAAAAHoWaF5QCAAAAcVGVYIHRleHQgd2l0aG91dCBmLWxpZ2F0dXJlcwAAAAAAAAAAAAAACkNNQ1NDIFYyLjIAAAAAAAAAAAAAAADuGsAAACvAAAApwAAAIMAAAB3AAAAlwAAAIsAAACnAAAAiwAAAKcAAACLAAAAO2AAADtgAAALQAAACSQAAC0kAAAFQAAAFUAAADtAAAA7QAAAOkAAADtAAAA6AAAAl0AAACAcAACxQAAAcUAAAJFAAABdiAAAtwAAAL8AAACniAAACMAEAAtABCA7QAAAr2AAADvMAACvzAAAp0AAAAtABAwb6AAAG+gAADvAAACmVAAACGQAAAzABBgIQAAAO+gAADqAAAA6gAAAOoAAADqAAAA6gAAAOoAAADqAAAA6gAAAOoAAADqAAAAIwAAACOQAAKXQAACkhAAApdAAAC9ABCSnQAAAlwAEgIcAAACLAAAAnwAEWH8AAABvAAQwqwAAAJcAAAATAATIPwAAAKMABDhrAASouwAAAJcAAACnAARYfwAEKKckAACPAASAUwAAAIsABCiXAAAAlwAkMMcAJDCXAAQ4lwBEKGcAAAAL6AAAO0AAAAvoAAA7QAAACsAAAAtABAhNQAT4QUAAAEVAAABVQATkNUAAADFABNBhQAAATUAAAAVABSAVQAAAWUAE1ClABQx5QAAATUAAAF1ABOQ1QATMXVgAAElABPgdQAAARUAEzE1AAABNQBTQmUAU0E1ABNRNQDTMJUAAADjAVBzAwFAAO0AAADrAAAA6wAAAAAAAAAAUT7AAFRxwABkccAAa7vAAHGDIAB0ccAAeqsAAIRxwACGOUAAiJ+gAIxxwACOZsAAlC3gAJRxwACYFsAAmfUAAJ1VwACfvCAAoiKAAKRxwAClg0AAp+mgAKjkAACqF0AAtHHAALgWwADAFsAAwmbgAMRxwADEzUAAyBbAAMu7wADQFsAA1HHAANgWwADZg2AA27vAANvpwADgFsAA47vAAORxwADmREAA9HHAAPVWAAEIFsABC7vAASgWwAEo44ABK7vAAAAAAAAcccAAYMPAAG444ACAAAAAgZmgAI4LYACQKQAAktggAKBxwACk+mAAq67AAK7u4ACxxyAAu2CgAMAAAAAAAA//4MPAAAxxwAAOOOAAECkAACAAAAAhxyAAK45AADHHAAAxxyAAQAAAAAAAAAAC46AABAAAAAUzQAAHM0AACAAABsgACATIABgGAAXAAnACIAP4ACgCGAAoAtAHuALQB8gGAADoBgAA8AYYADgEGAAwBhgAQAQYAEAG+ABQBPgAUAY4AFAEOABQBngAUAR4AFAHGABYBRgAUAeIAFAFiABQB3gAUAV4AFAGGABQBBgAUAdoAFAFaABQB5gAWAWYAFAGOABQBDgAUAb4AFAE+ABQBngAUAR4AFAHWABQBVgAUAcYAFAFGABQBUgAMAdIADAFmAAwB5gAMAVoAEAHaABABXgASAd4AEgEmABoBhgAcAYYAIAG+ACQBjgAkAZ4AJgHGACQB4gAkAd4AJAGGACQB2gAmAeYAJAGOACQBvgAkAZ4AJAHWACQBxgAkAJ4AHAHSABwB5gAcAdoAIgHeACIBpgAr/+rjk//n+lAACAAD//oAA//4AAP//gAAAAIAA//7qqv/+jjj//6OOAABccgAAAAAABkccAAMAAAACAAAABuOOABKOOAACAAA=","cmcsc9":"AUUAEgAAAH8AMgAQAAoABgBJAAsAAAAH0AkarQCQAAAcVGVYIHRleHQgd2l0aG91dCBmLWxpZ2F0dXJlcwAAAAAAAAAAAAAACkNNQ1NDIFYyLjIAAAAAAAAAAAAAAADsGsAAACvAAAAowAAAH8AAABzAAAAkwAAAIsAAACjAAAAiwAAAKMAAACLAAAAN2AAADdgAAALQAAACSAAACkgAAAFQAAAGUAAADdAAAA3QAAANkAAADdAAAA1wAAAk0AAACAcAACxQAAAeUAAAJlAAABdyAAAtwAAAL8AAACjiAAACMAEAAtABCA3QAAAr2AAADfQAACv0AAAo0AAAAtABAwX5AAAF+QAADfAAACiFAAACGAAAAzABBgIQAAAN+QAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAA2gAAANoAAADaAAAAIwAAACOAAAKGMAACghAAAoYwAACtABCSjQAAAkwAEgIcAAACLAAAAlwAEWHcAAABvAAQwqwAAAJMAAAATAATIOwAAAJ8ABDhrAASouwAAAJMAAACjAARYdwAEKKMgAACPAASASwAAAIsABCiTAAAAkwAkMMcAJDCTAAQ4kwBEKGcAAAAL5AAAN0AAAAvkAAA3QAAACsAAAAtABAhRQAT4QUAAAEVAAABVQATkPUAAADFABNBhQAAAUUAAAAVABSAZQAAAWUAE1C1ABQyBQAAAUUAAAF1ABOQ9QATMXVgAAE1ABPgdQAAARUAEzFFAAABRQBTQpUAU0FFABNRRQDTMJUAAADTAVBzAwFAAN0AAADbAAAA2wAAAAAAAAAAT6TgAFCXkABfmrAAZt+QAG6dwABvU8AAeBjgAH2g4ACDjcAAhSJwAIY9kACL+AAAjKQAAJBGcACRsnAAl2zgAJp3kACbpyAAnSdQAJ/XIACi4cAApZGQAKXscACnRFAAqqpAAK5MsAC1zkAAua1QAL1PwAC/hgAAwPJAAMI1wADE0VAAyLBwAMxS4ADP9VAA09RwANZvwADXduAA17OQANkfkADZhMAA5rawAPAxwAD5XEAA/P6wARdicAEZSAABGwTgAAAAAAAbp5AAX06QAG444ACAAAAAhqMgAI0MkACSllAAmhKwAKDjkACk+lAAq0mwAK7u4ACxxyAAu2CwAMAAAAAAAA//306QAAxxwAANDJAADjjgABoSsAAjjkAAK45AADHHIABAAAAAAAAAAALdQAADwMAABSfAAAbBUAAHgZAGyAAIBMgAGAYABcACcAIgA/gAKAIYACgC0Ae4AtAHyAYAAOgGAADwBhgAOAQYADAGGABABBgAQAb4AFAE+ABQBjgAUAQ4AFAGeABQBHgAUAcYAFgFGABQB4gAUAWIAFAHeABQBXgAUAYYAFAEGABQB2gAUAVoAFAHmABYBZgAUAY4AFAEOABQBvgAUAT4AFAGeABQBHgAUAdYAFAFWABQBxgAUAUYAFAFSAAwB0gAMAWYADAHmAAwBWgAQAdoAEAFeABIB3gASASYAGgGGABwBhgAgAb4AJAGOACQBngAmAcYAJAHiACQB3gAkAYYAJAHaACYB5gAkAY4AJAG+ACQBngAkAdYAJAHGACQAngAcAdIAHAHmABwB2gAiAd4AIgGmACv/69of/+kRHAAHgZP/+l7X//h+c//+H5wAAeBn//u0L//6RZP//pFkAAFunAAAAAAAF+asAAtCVAAHgZAAG444AEZSAAAHgZA==","cmdunh10":"AUQAEgAAAH8AJAAQAAoABQBYAAoAAAAHS/FgeQCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNRFVOSAAAAAAAAAAAAAAAAAAAAADqEsAAAB7AAAAcwAAAFsAAABTAAAAawAAAGMAAABzAAAAYwAAAHMAAABjAAAAQ0BEKD9AAAA/QAAAe0AAAHtAAAAEwAAACNwAACqAAAAqgAAAKgAAACqAAAApwAAAa0AAACAYAAAvQAAAYMAAAHDAAAApFAAAfwAAAIsAAABziAAABMAEAAdABFwrQAAAe2AAACvMAAB7zAAAc0AAAAdABEgX5AAAF+QAACvAAABxUAAABFwAAAzABFQEQAAAK+QAACrAAAAqwAAAKsAAACrAAAAqwAAAKsAAACrAAAAqwAAAKsAAACrAAAAEwAAABNwAAAZcAABwhAAAJlwAACdABGBzQAAAawAFMF8AAABjAAAAbwAE1FcAAABPAASQdwAAAGsAAAATAAVcMwAAAHMABKhLAAVIgwAAAGsAAABzAATUVwAEeHMcAABnAAUwPwAAAGMABLhrAAAAawAUkI8AFJBrAASoawAkvEcAAAAH5AAAK0AAAAfkAAAqgAAABcAAAAdABEQowAUgP0AFCCDABQA/QAAAIMAAAAtARAgo3BVYP0AE6AXAAAAJ3AAAO0AEZAdAAAB4wAToPMAE6CjABQg83AUINNwAABjAAAAcwAAAFYAFKDzABSw4wBRkYMAUaDjAAAA43BR8IMAAACjANFiEwDAAKoAAACnAAAApwAAAAAAAAAARxyAAE45AABVVWAAXHHQAGOOUABkRGAAZPpgAHHHMAB447AAgAAgAIAAMACDjlAAhxyAAIccoACOOQAAlVWAAJxx4ACgACAApxygAKqq0ACuOQAAsccwALVVgAC447AAvHHgAMAAIADDjmAAxxygAMjjsADVVYAA5xygAOqq0AEAADABA45gAQccoAAAAAAAGwWwAF3rgABuOOAAhxyAAJVVYACddeAArGIgAMDjoADHHIAA3HHQAOwW0AD2C2AA+OOgAQJ9MAEHHGAAAAAP/93rgAAMcdAADjjQABVVYAAY46AAK44wADHHIAB446AAhxxgAAAAAAADjjAABmZgAAccgAAT6VAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/7jjj/+uONAAE+lQABxx3//xxy//+OOP/+qqr//jjjAABxyAAA444AAAAAAAVVVgACqqsAAccdAAbjjgAQAAMAAccd","cmex10":"APgAEgAAAH8AIAAGAA4AAwAAAAAAHAAN+rF1EgCgAAASVGVYIG1hdGggZXh0ZW5zaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNRVgAAAAAAAAAAAAAAAAAAAAAAADqBBcCEAQXAhECFwJoAhcCaQYXAmoGFwJrBhcCbAYXAm0KFwJuChcCbwYXAkQGFwJFAQMDAAgDAwEJFwIuCRcCLwsZAhILGQITDxwCIA8cAiEHHAIiBxwCIwocAiQKHAIlChwCJgocAicQHAIoEBwCKRAcAioQHAIrGhwCLBocAi0SHQIwEh0CMQodAjIKHQIzDR0CNA0dAjUNHQI2DR0CNxMdAjgTHQI5Ex0AABMdAAAdHQAAHR0AABQZAh4UGQIfFhkDAhYZAwMOGQMEDhkDBQ4ZAwYOGQMHDgMDCA4DAwkXBAMKFwQDCxcEAwwXBAMNFwoDDhcKAw8XAQMQDgMDERYZAxIWGQMTFgMDFBYDAxUMGQIcDBkCHRUFAkccKAAABQYGSQgLCAAcBQJLHygAABwFAk0fKAAAHAUCTx8oAAAbBQJYGAUCWQUGBloVBQJbFQUCXBUFAl0VBQJeFQUCXx4oAAAdKAAACAsIABwoAAAcKAAAHCgAABwoAAAcKAAAGAUCYR0oAAAIQAJjGVACZB5QAAAIQAJmGVACZx5QAAAGGQIUBhkCFQcZAhYHGQIXBxkCGAcZAhkOGQIaDhkCGxkXAnEZGQJyGRwCcxkdAnQbCgMWGwMAABsSAAARAwMXDgMDGA4DAxkDMAAAAzAAAAMwAAADMAAAEQMDGhEDAxsAAAAAAAVVVgAGqq0ABzM4AAdVWAAHjjoAB447AAhxygAI45AACT6VAAlVWAAJjjsACcceAAo45gAKqq0AC8cgAAwAAgAMccoADKquAAzjkwAM+lMADVVYAA4AAwAOOOYADxx1ABAAAwAQtg4AEOOSABHHIAAUccsAFxx2ABgtiAAAAAAAAKPWAAGZmwAB64MAC446AAwAAAAAAAAABMzQAAj1ygAJmaAADmZwABAADgARxygAEo9qABgADQAcKQoAHMzgACOOUgAlwqoAL1xKAAAAAAADHHMABxxzAAAADAAAAA0wAEBCMQBBQzIANDYzADU3AAA0NgAANTcyAAA2MwAANzg8Oj45PTs+OAA6PjkAOz4AAAA/AAAAdwAAAD54AHk/OAA7PjkAOj4AAABCAAAAQ3YAdHV+AH93eAAAPwAAeT9+AAB3AAB/dwAAAAAAAAAAAAAAAAAAAAAABuOOABAAAwAAAAAAAKPWAAHHHQACqqsAAzMzAAmZmgABmZo=","cmex7":"APsAEgAAAH8AIwAGAA4AAwAAAAAAHAANFyOwrQBwAAASVGVYIG1hdGggZXh0ZW5zaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAACUNNRVggVjIuMgAAAAAAAAAAAAAAAADwBBcCEAQXAhEDFwJoAxcCaQYXAmoGFwJrBhcCbAYXAm0KFwJuChcCbwYXAkQGFwJFAQMDAAkDAwEIFwIuCBcCLwsZAhILGQITDxwCIA8cAiEHHAIiBxwCIwocAiQKHAIlChwCJgocAicQHAIoEBwCKRAcAioQHAIrGxwCLBscAi0THQIwEx0CMQodAjIKHQIzDR0CNA0dAjUNHQI2DR0CNxQdAjgUHQI5FB0AABQdAAAfHQAAHx0AABIZAh4SGQIfFhkDAhYZAwMOGQMEDhkDBQ4ZAwYOGQMHDgMDCA4DAwkXBAMKFwQDCxcEAwwXBAMNFwoDDhcKAw8XAQMQDgMDERYZAxIWGQMTFgMDFBYDAxUMGQIcDBkCHRUFAkceKAAABQYGSQkLCAAeBQJLIigAAB4FAk0iKAAAHgUCTyIoAAAdBQJYGAUCWQUGBloVBQJbFQUCXBUFAl0VBQJeFQUCXyEoAAAgKAAACQsIAB4oAAAeKAAAHigAAB4oAAAeKAAAGAUCYSAoAAAJQAJjGlACZCFQAAAJQAJmGlACZyFQAAAGGQIUBhkCFQcZAhYHGQIXBxkCGAcZAhkOGQIaDhkCGxkXAnEZGQJyGRwCcxkdAnQcCgMWHAMAABwSAAARAwMXDgMDGA4DAxkCMAAAAjAAAAIwAAACMAAAEQMDGhEDAxsAAAAAAAZpqQAHtUIAB+OSAAighwAI34AACN+CAAnbcgAKPCcACllpAArXYgALFl4AC1VZAAvTUgAMUUkADYw3AA3LMAAOSSkADl5JAA6IJwAOxyUAD0UZABACDgAQQQkAETz5ABH35QASOOkAEoBuABLz1QATNNkAFDDJABaikAAXJJkAGhhpABtGuwAAAAAAAMbyAAGZmwACVNcAC445AAwAAAAAAAAABMzQAAjSrgAJmaAADmZwABAADgARxykAEmxOABgADgAcBe4AHMzgACOOUgAln44ALzkuAAAAAAADcckAB9+AAAAADAAAAA0wAEBCMQBBQzIANDYzADU3AAA0NgAANTcyAAA2MwAANzg8Oj45PTs+OAA6PjkAOz4AAAA/AAAAdwAAAD54AHk/OAA7PjkAOj4AAABCAAAAQ3YAdHV+AH93eAAAPwAAeT9+AAB3AAB/dwAAAAAAAAAAAAAAAAAAAAAABuOOABK68gAAAAAAAMbyAAHHGwACqqsAAzMyAAnHGwACSSU=","cmex8":"APcAEgAAAH8AHwAGAA4AAwAAAAAAHAANAQFhNgCAAAASVGVYIG1hdGggZXh0ZW5zaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAACUNNRVggVjIuMgAAAAAAAAAAAAAAAADuBBcCEAQXAhECFwJoAhcCaQUXAmoFFwJrBRcCbAUXAm0JFwJuCRcCbwUXAkQFFwJFAQMDAAcDAwEIFwIuCBcCLwoZAhIKGQITDhwCIA4cAiEGHAIiBhwCIwkcAiQJHAIlCRwCJgkcAicPHAIoDxwCKQ8cAioPHAIrGRwCLBkcAi0RHQIwER0CMQkdAjIJHQIzDB0CNAwdAjUMHQI2DB0CNxIdAjgSHQI5Eh0AABIdAAAcHQAAHB0AABMZAh4TGQIfFRkDAhUZAwMNGQMEDRkDBQ0ZAwYNGQMHDQMDCA0DAwkWBAMKFgQDCxYEAwwWBAMNFgoDDhYKAw8WAQMQDQMDERUZAxIVGQMTFQMDFBUDAxULGQIcCxkCHRQFAkcbKAAABQYGSQcLCAAbBQJLHigAABsFAk0eKAAAGwUCTx4oAAAaBQJYFwUCWQUGBloUBQJbFAUCXBQFAl0UBQJeFAUCXx0oAAAcKAAABwsIABsoAAAbKAAAGygAABsoAAAbKAAAFwUCYRwoAAAHQAJjGFACZB1QAAAHQAJmGFACZx1QAAAFGQIUBRkCFQYZAhYGGQIXBhkCGAYZAhkNGQIaDRkCGxgXAnEYGQJyGBwCcxgdAnQaCgMWGgMAABoSAAAQAwMXDQMDGA0DAxkDMAAAAzAAAAMwAAADMAAAEAMDGhADAxsAAAAAAAWqsAAHFVwABzM4AAfKsgAIByQACPjsAAlx0AAJ0oYACeq0AAonJgAKY5gACtx8AAtVYAAMg5oADMAMAA048AANdWIADbHUAA3KAgAOKrgADuAOAA8cgAAQDkgAEQAQABHBfAAR8dgAEuOgABW4+AAYjlAAGbB0AAAAAAAAuFIAAZmaAAIo9gALjjoADAAAAAAAAAAEzNAACOFOAAmZoAAOZnAAEAAOABHHKAASeu4AGAAMABwUjgAczOAAI45SACWuLgAvR84AAAAAAANOPAAHjkAAAAAMAAAADTAAQEIxAEFDMgA0NjMANTcAADQ2AAA1NzIAADYzAAA3ODw6Pjk9Oz44ADo+OQA7PgAAAD8AAAB3AAAAPngAeT84ADs+OQA6PgAAAEIAAABDdgB0dX4Af3d4AAA/AAB5P34AAHcAAH93AAAAAAAAAAAAAAAAAAAAAAAG444AEQAQAAAAAAAAuFIAAcccAAKqqgADMzQACbjkAAIAAA==","cmex9":"APkAEgAAAH8AIQAGAA4AAwAAAAAAHAANesDTaQCQAAASVGVYIG1hdGggZXh0ZW5zaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAACUNNRVggVjIuMgAAAAAAAAAAAAAAAADsBBcCEAQXAhECFwJoAhcCaQUXAmoFFwJrBRcCbAUXAm0LFwJuCxcCbwYXAkQGFwJFAQMDAAgDAwEJFwIuCRcCLwwZAhIMGQITEBwCIBAcAiEHHAIiBxwCIwocAiQKHAIlChwCJgocAicRHAIoERwCKREcAioRHAIrGxwCLBscAi0THQIwEx0CMQodAjIKHQIzDh0CNA4dAjUOHQI2Dh0CNxQdAjgUHQI5FB0AABQdAAAeHQAAHh0AABUZAh4VGQIfFxkDAhcZAwMPGQMEDxkDBQ8ZAwYPGQMHDwMDCA8DAwkYBAMKGAQDCxgEAwwYBAMNGAoDDhgKAw8YAQMQDwMDERcZAxIXGQMTFwMDFBcDAxUNGQIcDRkCHRYFAkcdKAAABQYGSQgLCAAdBQJLICgAAB0FAk0gKAAAHQUCTyAoAAAcBQJYGQUCWQUGBloWBQJbFgUCXBYFAl0WBQJeFgUCXx8oAAAeKAAACAsIAB0oAAAdKAAAHSgAAB0oAAAdKAAAGQUCYR4oAAAIQAJjGlACZB9QAAAIQAJmGlACZx9QAAAFGQIUBRkCFQcZAhYHGQIXBxkCGAcZAhkPGQIaDxkCGxoXAnEaGQJyGhwCcxodAnQcCgMWHAMAABwSAAASAwMXDwMDGA8DAxkDMAAAAzAAAAMwAAADMAAAEgMDGhIDAxsAAAAAAAV7QAAG2hAABzM5AAeJdwAHw/AAB8PyAAit0AAJIsAACYBMAAmXsAAJl7IACdInAAoMoAAKgZAACvaAAAwa1wAMVVIADMpAAA0EtwANPzAADVaUAA20IAAOY4cADp4AAA+H4AAQccAAESzbABFboAASRYAAFQMgABfAwAAY2WUAAAAAAACs8gABmZsAAgbVAAuOOQAMAAAAAAAAAATM0AAI7K4ACZmgAA5mcAAQAA4AEccpABKGTgAYAAwAHB/uABzM4AAjjlIAJbmOAC9TLgAAAAAAAzKQAAdPAAAAAAwAAAANMABAQjEAQUMyADQ2MwA1NwAANDYAADU3MgAANjMAADc4PDo+OT07PjgAOj45ADs+AAAAPwAAAHcAAAA+eAB5PzgAOz45ADo+AAAAQgAAAEN2AHR1fgB/d3gAAD8AAHk/fgAAdwAAf3cAAAAAAAAAAAAAAAAAAAAAAAbjjgAQccAAAAAAAACs8gABxxwAAqqrAAMzNAAJrdQAAccc","cmff10":"AUsAEgAAAH8AMAAOAAsAAQBYAAoAAAAHjRUb6wCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNRkYAAAAAAAAAAAAAAAAAAAAAAADqG6AAACqgAAAnoAAAGqAAAB2gAAAaoAAAI6AAACegAAAjoAAAJ6AAACOgAAAYkAEKF5AAABeQAAArkAAAK5AAAAJQAAAFWAAAEpAAABKQAAAScAAAEpAAABKAAAAekAAADQcAABGQAAAjUAAAJ1AAABK1AAAsoAAALqAAACfTAAACUAEAAZABFxKQAAAqmQAAEsIAACrCAAAlkAAAA5ABEgrKAAAKygAAEsAAACdEAAADFgAACFABFQMQAAASygAAEmAAABJgAAASYAAAEmAAABJgAAASYAAAEmAAABJgAAASYAAAEmAAAANQAAADVgAAATgAACchAAAOOAAADpABGCeQAAAgoAFMH6AAACOgAAAkoAE1IqAAAB+gASQmoAAAGqAAAAagAVcPoAAAI6ABKhugAVIooAAAGqAAACqgATUboAEeKqYAACKgAUwWoAAAJ6ABLhygAAAgoAEkLaABJCCgASogoAEvGaAAAATKAAASkAAABMoAABKQAAADkAAAA5ABERBQAUgVkAFCDVABQBWQAAANUAAAB5ABAhJYAVYVkAE6ApAAAAWYAAAUkAEZApAAAClQAToVUAE6ElABQhVYAUITWAAACVAAAAtQAAAKkAFKFVABSxRQARkhUAEaFFAAABRYAR8MUAAAElABFi9QAAASkAAAEpAAABKQAAAAAAAAAAMFsAADd3gAA7u7AAPHHQAD0n4ABBbAAAQWwgAEccYABQWwAAUn0gAFOgYABczLAAXd3QAGOOMABmZlAAZxxgAGccgABpPoAAaqqgAGqqsABwWwAAdJ8wAHVVUAB9J9AAf//gAIWwMACIiGAAi2CAAItgoACOOLAAjjjQAJEQ4ACSfSAAk+kgAJbBUACZmYAAn//gAKC14ACiIgAAp9JQAKk+gACtgrAAsREAALYLMADJ9GAAzMygANJ9AAAAAAAAEn0wAE9J4ABVVWAAa2CgAIccYACVVVAAlxyAAJniUACccdAAoAAAAKqqoACqqrAAsccgAAAAAAABESAADjjgABHHIAAdJ9AAI44wADHHIAA+OOAARxxgAE45AABccdAAAAAABsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj//IiI//w44wAA444AAWwW//9J9f//pPr//u7u//6T6gAAWwYAALYL//5mYAAEccYAAiIiAAFsFgAIccYADSfQAAFsFg==","cmfi10":"AWQAEgAAAH8AMgAOAAsAJABNAAkAAAAHEwuEjgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNRkkAAAAAAAAAAAAAAAAAAAAAAADqF6CAAC2gAAAooCQAGKAAABugWAAaoAAAI6BoACigOAAjoAgAKKA4ACOgMAAVmI0IEJhwABOYcAApmHAALJhwAANQcAAFWAAAD5AAAA+QAAAPcAAAD5AAAA+AKAAikAAACwcAABKYAAAjUCwAI1AsAA+0TAAuoGgAMKBoACjTJAABUAEPApARFw+QAAAtmQQAHpAAAC3CHAAokAAAA5ABEgjKVAAIygAAD8A8AChGAAADFQAAB1ABFQMQAAAPylQAD2BIAA9gSAAPYEgAD2BIAA9oSAAPYEgAD2BIAA9oSAAPYEgAD2BIAANQAAADVQAAAjgAACghBAAPOAAAD5ANGCiQIAAhoAEwH6AwACOgUAAloCUrIKBoAByggRonoAAAGqAAAAagXAAOoAAAJKBRIBegAUEroAAAGqAAACqgJSsZoDEqKqUkACKgATAUoBQAJqCBJB2gAAAhoIUaL6CFKiGgXSAhoIklFqBQAAPKdAAPkGQAA8oAAA+QAAADkAAAA5ABEQ9QcAALkBlFC1ABRQ+QcRkLUC1FBJiNAAtYNAAPkHAAA5BwAAOYRAALkGAAAZBxGS1QcAAUUHFMD1AZRQ9YGUULWDQAClBhRQhQQAAFkHAAEVBwAAtQYAAbUGEZDFB4AA1YNAAJUHwAD1BtFjFQbAAPkAwAD5AMAA+QAAAAAAAAAAPpPQAEIiAABNgrAATYLQAFT6MABWwTAAXHGgAGtggABrYKAAbxxQAHpPYAB6T4AAgcbgAIZmIACJPlAAjBagAJC10ACQteAAk44AAJgtMACbBYAApxwgAK+koACwWqAAszLQALPo0AC2CwAAtxwgALmZIAC6T2AAuqpQAL6TgAC/SYAAwiGwAMT54ADGwQAAyZkwANBaoADSfLAA0+jQAN1VAADfSYAA4LWAAOEQsADi17AA7u5gAQn0AAEMzDABEnygAAAAAAASfTAAT0ngAFVVYACAtdAAhxxgAJVVUACXHIAAmphgAJxx0ACgAAAAqqqgAKqqsACxxyAAAAAAAAERIAAOOOAAEccgACOOMAAxxyAAMn0AAD444ABHHGAATjkAAFxx0AAAAAAAAHZgAACIoAAAtlAAALZgAAERYAAB/eAAAiJgAAN8IAADu+AABEKwAASBAAAEiLAABJ+gAAVVgAAF3iAABgugAAbBsAAHd7AAB3fQAAiI0AAJmdAACsZQAAxEoAANgyAADibgAA45MAAP0VAAD+HQABERUAARPtAAEWxgABH1AAATvAAAFrigABrYYAaQAMAGYACwBsAA0AJ4AAAD+AAAAhgAAAKYAAgF2AAABpAA4AbAAPACeAAAA/gAAAIYAAACmAAIBdgAAAbIABgEyAAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+gGyABABvgAUAZYAFAHWABQBygAUAYYAFAEGABgBPgAcAQ4AHAEeAB4BRgAcAeYAFAGWABQBvgAUAcoAFAGGABQB1gAWAQYAFAFiABwBXgAcAQYAHAFaAB4BZgAcAboAHAGyABwBygAcAdYAHAG2ABwB0gAcAaYAHAEOABwBPgAcAR4AHAGiABwBigAcAVYAHAGuABwB2gAcAd4AHAFGABwBUgAUAWYAFAFaABgBXgAYAZYAIAGGACABvgAgAZIAIAGOACABngAiAcYAIgCeABgAA1Vb//BbD//tVWAAB3d0AAO7u//6Zmv/+IiP//4iI//8REgABmaAABccaAALMywAB3d0ACHHGABEnygAB3d0=","cmfib8":"AUAAEgAAAH8AJQAOAAcABQBYAAoAAAAHza9mPQCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNRklCAAAAAAAAAAAAAAAAAAAAAADuF8AAACLAAAAfwAAAGcAAABnAAAAcwAAAHMAAAB/AAAAcwAAAH8AAABzAAAAWwBEKFMAAABTAAAAhwAAAIcAAAAEwAAAENgAAEMAAABDAAAAQgAAAEMAAABBgAAAcwAAACwUAAA/AAAAcMAAAHzAAABBDAAAjwAAAJMAAAB/SAAABMAEAAsABFxDAAAAixgAAEMAAACLAAAAewAAAAsABEgfGAAAHxgAAEMAAAB+UAAACFgAABjABFQIQAAAQxgAAEMAAABDAAAAQwAAAEMAAABDAAAAQwAAAEMAAABDAAAAQwAAAEMAAAAIwAAACNgAAAlYAAB8hAAANVgAADcABGB/AAAAcwAFMGsAAABzAAAAdwAE1GcAAABjAASQfwAAAHMAAAAbAAVcQwAAAHcABKhfAAVIjwAAAHMAAAB/AATUZwAEeH8YAABzAAUwVwAAAHMABLhzAAAAcwAUkJMAFJBzAASocwAkvF8AAAAPGAAAQwAAAA8YAABDAAAACsAAAAsABEQ4wAUgTwAFCCzABQBPAAAAMMAAABcARAhA2BVYTwAE6AbAAAAS2AAASwAEZAcAAACAwAToTMAE6EDABQhM2AUIRNgAACDAAAAkwAAAHcAFKEzABSxIwBRkbMAUaEjAAABI2BR8KMAAAEDANFiQwDAAQwAAAEKAAABCwAAAAAAAAAAWcbgAF1VIABdVUAAYxxAAGaqgABv/8AAgqpgAIMcQACEiEAAlHFgAJVVAACYqmAAnqpgAKGN4ACmOKAAp/+gAK3GoACtxsAAtxwAALjjIAC6qkAAw/+gAM1U4ADWqkAA3/+AAOlU4ADvG+AA8qogAPv/gAEDjaABBVTAARRxIAEWOEABF/9gASqqAAFP/0AAAAAAAB444AB3pQAAgAAAAJhxwACeOQAAru7gALbbgAC7VWAAvxxAAMX4AADIMOAAzxyAANtVYAAAAA//2WwAAAw44AAYccAAIONAACrHIAAw44AAAAAAAASqoAAIZmAACVVgABmOQAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//pjkv/5scoAAZjkAAJVVP/+1Vb//2qq//5AAP/9qqwAAJVWAAEqqgAAAAAABv/8AAN//gACVVQACAAAABT/9AACVVQ=","cminch":"AHsAEgAwAFoAEQACAAIAAwAVAAQAAAAH3j5hywaBGaAVQVNDSUkgY2FwcyBhbmQgZGlnaXRzAAAAAAAAAAAAAAAAAAAAAAAABkNNSU5DSAAAAAAAAAAAAAAAAAAAAAAuAxAAAAMQAAADEAAAAxAAAAMQAAADEAAAAxAAAAMQAAADEAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKEAELCxAAAAkQAAAOEAEGBhAAAAUQAQELEAAADRAAAAEQARQCEAAADBABAgQQARAPEAAADRAAAA4QAQYIEAEADhEAAAgQAAAFEAAACxABAAwQAAAKEAUBEBAFAQoQAQIKEAkABxAAAAAAAAAABUn1AAhPpQAIzM0ACUn0AAnHHAAKREQACsFsAAs+lAALPpQAC7u7AAu7vAAMOOMADLYLAAy2CwAPpPoAEJ9KAAAAAAALHHIAAAAAAAGwWwAAAAAAAD6UAABwpIBBgAAAQYAAAE+AAQBDgAEAR4ABgFGAAQBYgAEAV4ABAEGAAQBWgAGAWYABAEOAAQBPgAEAR4ABAFWAAQBRgAEAVIAAAFmAAgBWgACAV4ACgEmAA//+iIj//4LY//4LYQAAfSgAAAAAAAXd3gAC7u8AAfSfAAdVVQARmZkAAfSf","cmitt10":"AMAAEgAAAH8AAgAPAAwAAgACAAAAAAAH3+o8eACgAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNSVRUAAAAAAAAAAAAAAAAAAAAAADqAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABOwQAATsEAAFQBAABWwQAAcAEAAHABAABsAQAAcAEAAGgBAABwAQAAQoEAAHLBAABUAQAAVAEAAGIBAABwAQAAcAEAAHUBAABKAQAAcAFAAHABAABwAQAAcAEAAHmBAABwAQAAcAEAAHlBAAB5QQAAWAEAAFyBAABGQQAAXIEAAEQBAAB5QQAAcAEAAHABAABwAQAAcAEAAHLBAABwAQAAcAEAAHLBAABwAQAAcAEAAFQBAABWQQAAZMEAAFBBAABkwQAAcAFAQHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAckEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHABAABwAQAAcAEAAHlBAAB5QQAAeUEAAHABAABBwQAAcAEAAFQBAABwAQAAVAEAAHABAABUAQAAcsEAAFbBAABwAQAAcAEAAHLBAABwAQAAcAEAAFQBAABUAQAAVAEAAFbBAABWwQAAVAEAAFQBAABwAQAAVAEAAFQBAABUAQAAVAEAAFbBAABUAQAAeUEAAHlBAAB5QQAAcAEAAHABAAAAAAAAAhmYgAAAAAAAgAAAAOC2AAGOOMABqZlAAbjjgAIVVYACH0mAAiqqwAI444ACQyDAAkOOgAJxx0ACqqrAAsccgAAAAD//N9I//62Cv//HHIAAOOOAAFVUwABVVUAAYWtAAHHHQACOOMAAxxzAAOOOgAAAAAAAscdgGAADoBgAA8ABAAAAAhmYgAAAAAAAAAAAAbjjgAQzMMACGZi","cmmi10":"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","cmmi12":"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","cmmi5":"AXkAEgAAAH8AYAAPAAkAHgA6AAsAAAAGTw3aXABQAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNTUkAAAAAAAAAAAAAAAAAAAAAAAD0MrBtHVuwASdPsBkYR7ABJ0uwSRhXsE0QUrAtGDOwbQxFsAEYP7BlCFCwJRhAQAEDKcctGCRHPAAPwBUJC0ABCxHHMRgjRx0LFsAZGARAAQsuQAAAM8AAADZHAQMcQEEBEccNITBAHAAeRwEYLEAdLxdAXQErQB0DNMcBGDlHAQtCxx0hPUAcABRAARg3wAEYWkAYAB5HARgHRUUYQUcBGF8yAABfMgAAXzIAAF8yAAABZAAAAWQAACBTAAAgUwAAIEAAACBAAAAgQAAAIEcAACBHAAAgRwAAIJAAACBHAAAgkAAAIEcAAAEQAAABFwAAVXYAACDoATRVdgAAIFMAACXAPRhNsAEiTrAlGEiwORVWsBkLSbAtGDqwbR1RsAEYV7BNEAywUSEnsFUrWbA5CEawAQNesFkZU7BZFE+wGRg7sG0dVLcBGEywBRg4sCkZMbBtFUSwWQQvsHExXbBtMViwURQtsHExQ7A5GQrgAAAKxwAACscAAF8hAABfIQAACcABIShAAAANwAAADkABCyHAASMVQAELGMdhKBpHHQMuwAEAA6AAAAinNS8mwAgAAsABGFxAAAA8QAAAG0ABCyJHARgQRx0YE0AZCRJAAQsGgAEYNUABAx1AHQNKQBEYKkABAx9HHQsZQCELA0ABAwVHARg+RwEhINBoAAHAdAAAAAAAAAdVWgAHr20ACImDAAjL4AAI2woACQTGAAlABgAJaUMACY49AAmOQAAJ0RYACgcjAAoiJgAKZA0ACnd9AAqK7QAKqrMACrjqAAq9qgAKy2YACtUQAArVWgAK590ACvHNAAsExgALNZoACz6aAAtkigALjkMAC53mAAuwZgALxyYAC9XWAAvV2gAL5nMAC/NTAAv7wAAMIToADF3mAAxkEAAMpnAADKqzAAyqtgANCvAADTBmAA09rQANPqAADUxgAA1RHQANUoYADXHTAA13gAANiYoADZizAA2vdgANs0AADdVgAA3gwAAOAXYADhfDAA4ugwAOOl0ADku2AA6c9gAOsGYADuOdAA8W0AAPGjYADxyAAA9KAwAPd4YAD++QABAcgAAQJM0AEEiWABB6ugAQk/oAEJeGABDCnQAQ+D0AEQZQABELcAARNhoAEVDWABFVZgARwg0AEcRTABHOSgASOPYAElEjABJx2gATpgMAFHeNABSLcwAVxzMAAAAAAAH0oAAFuOMABletAAbjjQAHccYACDymAAmdWgAJ110ACk+mAAqp2gAK7vAACxxzAAuPIwAMAAAAAAAA//244//+V63//3HGAAA8pgABjjoAAZ1aAAMccwAEAAAAAAAAAAAGwAAAQl0AAEqqAABuOgAAhEMAAI46AACS9gAAl7MAAL9KAADPowAA0n0AANjjAADxkwABFsAAARxzAAEhMAABKqoAASwWAAEwWgABOlAAAYWwAAG+kwAB2wYAAeOQAAHtPQACdg0AAscgAARxzQAJTXOAf4AAADuAAQA6gAGAf4ACADuAAwA6gAMAPYABgH+AAgA9gAEAO4ABADqAAYB/gAQAPYABADuAAwA6gAOAf4AEAD2AAQA7gAEAOoABgH+ABAA9gAUAPYAAADuAAQA6gAGAf4AGAD2AAQA7gAEAOoABgH+ABgA9gAEAO4ADADqAA4B/gAaAf4AHgH+ACABZgAQAWoABAGqAAwBmgAmAf4AKADuAAQA6gAGAf4AKAD2AAQA7gAMAOoADgH+ACgA7gAGAOoABADuACQA6gAmAPYADAAGAAQBBgAEATYABAE6AAQBZgASAWoAB//9xxv/+440AAI46//3HGgABHHP//lVTAAGqrQACOOYAAscg//yqpgADVVoABAAAAAAAAAAAAAAAAAAAAAbjjQAXjk0=","cmmi6":"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","cmmi7":"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","cmmi8":"AXwAEgAAAH8AYQAPAAkAIAA6AAsAAAAG1wEXMgCAAAAPVGVYIG1hdGggaXRhbGljAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNTUkAAAAAAAAAAAAAAAAAAAAAAADuOLBxHVuwASdQsBUYSLABJ0ywTRhYsFEQUrA1GDSwcQxEsAEYO7BpCFGwKRhBQAEDK8ctGCVHPAARwB0JCkABCxDHRRghRxkLGcAVGAVAAQsvQAAANMAAADdHAQMeQEEBEMchIS5AGAAjRwEYLUAZLxJAbQEpQBkDNccBGDxHAQtDxxkhPUAYABVAARg2wAEYWkAUACNHARgHRlkYQkcBGGAyAABgMgAAYDIAAGAyAAABZAAAAWQAACBTAAAgUwAAIEAAACBAAAAgQAAAIEcAACBHAAAgRwAAIJAAACBHAAAgkAAAIEcAAAEQAAABFwAAU3UAACDoATRTdQAAIFMAACfAPRhNsAEiT7ApGEmwSRVXsBULS7A1GD6wcR1UsAEYWLBREA+wVSEqsF0rXLBJCEewAQNfsGEZVrBhFFCwFRhAsHEdVbcBGE6wBRg6sDEZMrBxFUWwYQQzsHkxXrBxMVmwVRQxsHkxRrBJGQngAAAJxwAACccAAGAhAABgIQAADMABIShAAAANwAAADkABCyTAASMXQAELG8dlKBpHGQMvwAEABKAAAAunOS8mwAwAAsAJGF1AAAA5QAAAHEABCyJHARgTRxkYFEAVCRZAAQsGgAEYMEABAx1AGQNKQBEYLEABAx9HGQsYQCULA0ABAwhHARg/RwEhINB0AAHAfAAAAAAAAAS46AAFEvoABZe4AAXJtAAGBMIABiOUAAY46gAGZyAABpx4AAbfUAAG4AQABvHMAAdFuAAHXPIAB172AAd47AAHhbgAB4toAAeXBgAHq+AAB9mgAAfceAAH4uAAB+hSAAfuPgAIFwYACCqwAAg3gAAIRyQACFtKAAhnJAAIgAgACIfaAAiOugAItKYACL9QAAjBjAAI2hoACPSmAAkHngAJOOwACUlGAAmJ/AAJkc4ACbcIAAnDHgAJy+IACde8AAnaWgAJ5boACeZwAAnqtAAKGxAAChz0AAo6GgAKSUYAClCgAApWygAKeewACo5AAAqSDgAKwioACsZwAArHJAAK6y4ACxP0AAscfAALVWAAC4BAAAuFBAALj7AAC8oAAAwdxAAMMwIADHVgAAyI7gAMu8gADM26AAzSiAAM5igADREcAA0s2AANOPAADT8wAA1fDAANfkQADfJkAA33KAAN+24ADh00AA4quAAOVhgADwmIABAKBAAQU5wAEQAQAAAAAAABxxwABbjkAAYMPAAG444AB3HIAAe8TgAJApAACddeAApPpgAKk9AACu7uAAsccgALeJwADAAAAAAAAP/9uOT//gw8//9xyP//vE4AAQKQAAGOOgADHHIABAAAAAAAAAAAGWwAADCWAABtCgAAbjgAAHjkAACS9gAAmZgAAJ/+AACtCgAAyfQAANJ8AADk+gAA5bAAAOwQAADxyAABC9oAARjiAAEhbAABM44AATtgAAE/pAABQAAAAYC2AAG0RAABw44AAc08AAHY5AACXHQAAnYMAAPHIAAGsQCAf4AAADuAAQA6gAGAf4ACADuAAwA6gAMAPYABgH+AAgA9gAEAO4ABADqAAYB/gAQAPYABADuAAwA6gAOAf4AEAD2AAQA7gAEAOoABgH+ABAA9gAUAPYAAADuAAQA6gAGAf4AGAD2AAQA7gAEAOoABgH+ABgA9gAEAO4ADADqAA4B/gAaAf4AHgH+ACABZgAQAWoABAGqAAwBmgAmAf4AKADuAAQA6gAGAf4AKAD2AAQA7gAMAOoADgH+ACgA7gAGAOoABADuACQA6gAmAPYADAAGAAQBBgAEATYABAE6AAQBZgASAWoAB//+HHP//DjgAAHjk//4ccAAA8cj//pVUAAFqrAAB45AAAlx0//0qqAAC1VgABAAAAAAAAAAAAAAAAAAAAAbjjgARABA=","cmmi9":"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","cmmib10":"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","cmmib6":"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","cmmib7":"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","cmmib8":"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","cmmib9":"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","cmr10":"AUQAEgAAAH8AJAAQAAoABQBYAAoAAAAHS/FgeQCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADqEsAAAB7AAAAcwAAAFsAAABTAAAAawAAAGMAAABzAAAAYwAAAHMAAABjAAAAQ0BEKD9AAAA/QAAAe0AAAHtAAAAEwAAACOAAACtAAAArQAAAKkAAACtAAAApgAAAa0AAACAYAAAvQAAAYMAAAHDAAAApVAAAfwAAAIsAAABziAAABMAEAAdABFwrQAAAe1wAACvMAAB7zAAAc0AAAAdABEgX5AAAF+QAACvAAABx0AAABGAAAAzABFQEQAAAK+QAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAEwAAABOAAAAUgAABwhAAAJSAAACdABGBzQAAAawAFMF8AAABjAAAAbwAE1FcAAABPAASQdwAAAGsAAAATAAVcMwAAAHMABKhLAAVIgwAAAGsAAABzAATUVwAEeHMgAABnAAUwPwAAAGMABLhrAAAAawAUkI8AFJBrAASoawAkvEcAAAAH5AAAK0AAAAfkAAArQAAABsAAAAdABEQowAUgP0AFCCDABQA/QAAAIMAAAAtARAgo4BVYP0AE6AbAAAAK4AAAO0AEZAdAAAB4wAToPMAE6CjABQg84AUINOAAABjAAAAcwAAAFgAFKDzABSw4wBRkYMAUaDjAAAA44BR8IMAAACjANFiEwDAAK0AAACrAAAAqwAAAAAAAAAARxyAAE45AABVVWAAXHHQAGOOUABkRGAAZPpgAHHHMAB447AAgAAgAIAAMACDjlAAhxyAAIccoACOOQAAlVWAAJxx4ACgACAApxygAKqq0ACuOQAAsccwALVVgAC447AAvHHgAMAAIADDjmAAxxygAMjjsADVVYAA5xygAOqq0AEAADABA45gAQccoAAAAAAAGwWwAF3rgABuOOAAgAAAAIccgACRWdAAlVVgAJ114ACg46AApPpQAKr40ACu7uAAsccgALtgsADAAAAAAAAP/93rgAAMcdAADjjgABVVYAAY46AAK44wADHHAAAxxyAAQAAAAAAAAAADjjAABmZgAAccgAAT6VAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/7jjj/+uONAAE+lQABxx3//xxy//+OOP/+qqr//jjjAABxyAAA444AAAAAAAVVVgACqqsAAccdAAbjjgAQAAMAAccd","cmr12":"AUIAEgAAAH8AIgAQAAoABQBYAAoAAAAHWKtRCwDAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADmD8AAABzAAAAawAAAE8AAABHAAAAXwAAAFcAAABrAAAAVwAAAGsAAABXAAAAN0BEKDNAAAAzQAAAc0AAAHNAAAAEwAAACOAAACdAAAAnQAAAJkAAACdAAAAlgAAAX0AAABwYAAAnQAAAVMAAAGjAAAAlVAAAdwAAAIMAAABriAAABMAEAAdABFwnQAAAc1wAACfMAABzzAAAa0AAAAdABEgX5AAAF+QAACfAAABp0AAABGAAAAzABFQEQAAAJ+QAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAEwAAABOAAAAUgAABohAAAISAAACNABGBrQAAAXwAFMFMAAABXAAAAYwAE1EsAAABDAASQbwAAAF8AAAATAAVcKwAAAGcABKg/AAVIewAAAF8AAABrAATUSwAEeGsgAABbAAUwMwAAAFcABLhfAAAAXwAUkIcAFJBfAASoXwAkvDsAAAAH5AAAJ0AAAAfkAAAnQAAABsAAAAdABEQkwAUgM0AFCBzABQAzQAAAHMAAAAtARAgk4BVYM0AE6AbAAAAK4AAAL0AEZAdAAABwwAToMMAE6CTABQgw4AUILOAAABTAAAAYwAAAFgAFKDDABSwswBRkVMAUaCzAAAAs4BR8HMAAACTANFh8wDAAJ0AAACbAAAAmwAAAAAAAAAARaEAAEyXgABTjgAAWm3QAGF7AABi34AAb2gAAHZegAB9VQAAgMTwAIRLgACLQgAAkjiAAJkvAACcnvAAo5VwAKccAACqi/AArfvQALGCcAC1CQAAuHjwALvo0AC/b3AAwt9QAML2AADErgAA0OMAAOI/8ADlr9AA+qoAAP4Z8AEBidAAAAAAABjjkABcZBAAbjjwAIAAAACHHIAAkJeQAJOOAACddfAAoOOQAKT6UACp58AAru7wALHHEAC7YLAAwAAAAAAAD//cZBAADHHAAA448AATjgAAGOOQACuOMAAxxwAAMccQAEAAAAAAAAAAA3tAAAZEQAAG9oAAEdoQBsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+6Xw//r/iQABHaEAAb2g//8hMP//kJj//rHI//5CYAAAb2gAAN7QAAAAAAAFOOAAApxwAAG9oAAG448AD6qgAAG9oA==","cmr17":"AUMAEgAAAH8AJAAQAAkABQBYAAoAAAAHRNPtdAEUeuAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADbEMAAAB7AAAAbwAAAFMAAABLAAAAYwAAAFsAAABvAAAAWwAAAG8AAABbAAAAO0BEKDNAAAAzQAAAd0AAAHdAAAAEwAAACNwAACdAAAAnQAAAJkAAACdAAAAlgAAAY0AAABwYAAAnQAAAWMAAAGzAAAAlVAAAfwAAAIsAAABviAAABMAEAAdABFwnQAAAe1wAACfMAAB7zAAAb0AAAAdABEgX4AAAF+AAACfAAABt0AAABFwAAAzABFQEQAAAJ+AAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAEwAAABNwAAAUcAABshAAAIRwAACNABGBvQAAAYwAFMFcAAABbAAAAZwAE1E8AAABHAASQcwAAAGMAAAATAAVcKwAAAGsABKhDAAVIgwAAAGMAAABvAATUTwAEeG8cAABfAAUwNwAAAFsABLhjAAAAYwAUkI8AFJBjAASoYwAkvD8AAAAH4AAAJ0AAAAfgAAAnQAAABsAAAAdABEQkwAUgN0AFCBzABQA3QAAAHMAAAAtARAgk3BVYN0AE6AbAAAAK3AAAL0AEZAdAAAB4wAToNMAE6CTABQg03AUILNwAABTAAAAYwAAAFgAFKDTABSwswBRkWMAUaCzAAAAs3BR8HMAAACTANFiEwDAAJ0AAACbAAAAmwAAAAAAAAAAP+igAEaYkABNSIAAU94gAFqoUABb/sAAaAgwAG64IAB1aAAAeLLgAHwX8AB/0VAAgsfgAIaBQACQJ7AAk3KAAJoicACdh5AAoNJgAKQdMACnglAAqudgAK4yMACxfRAAtOIgALgs8AC4R0AAueygAL+58ADFpxAA1lHAANmckADq0BAA8RFwAPRcQAAAAAAAFPzgAFsHMABuNLAAf/vAAIcaYACPPgAAkDzwAJ1v4ACg4oAApQVAAKfuUACu5bAAsccgALtYkAC/xQAAAAAP/9sLcAAMcuAADf3gABBBMAAY5bAAK5HwADHLUAA/yTAAAAAAAANX8AAGBMAABq/wAA8swAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//wBdv/7YcoAAPLMAAGr+///KgP//5UB//6/BP/+VAUAAGr/AADV/QAAAAAABNSIAAKB+AABq/sABuNLAA6tAQABq/s=","cmr5":"ATEAEgAAAH8AIQAQAAoABQBJAAkAAAAHhgObWgBQAAAcVGVYIHRleHQgd2l0aG91dCBmLWxpZ2F0dXJlcwAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAAD0DsAAABvAAAAZwAAAEsAAABDAAAAWwAAAFMAAABnAAAAUwAAAGcAAABTAAAAJ2AAACdgAAAHQAAABSAAACEgAAAEwAAACOAAACdAAAAnQAAAJkAAACdAAAAlgAAAW0AAABwcAAAnQAAAUMAAAGTAAAAlUAAAcwAAAHsAAABniAAABMAEAAdABCAnQAAAb2AAACfMAABvzAAAZ0AAAAdABAwX5AAAF+QAACfAAABm2AAABGAAAAzABBgEQAAAJ+QAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAEwAAABOAAAGXUAABkhAAAZdQAACNABCRnQAAAWwAE9E8AAABTAAAAXwAEmEcAAAA/AARUawAAAFsAAAATAAUgKwAAAGMABGw7AAUMdwAAAFsAAABnAASYRwAEPGcgAABXAAT0MwAAAFMABHxbAAAAWwAUVH8AFFRbAARsWwAkgDcAAAAH5AAAJ0AAAAfkAAAnQAAABwAAAAdABAgkwATkM0AEzBzABMQzQAAAHMAAAAtAQAAk4BUcM0AErAcAAAALIAAAL0AEKAdAAABswASsMMAErCTABMww4ATMLOAAABTAAAAYwAAAFgAE7DDABPAswBQoUMAULCzAAAAs4BRAHMAAACTANByAwDAAJ0AAACcAAAAnAAAAAAAAAAAZxzQAHAAYAB45AAAfpRgAIqrMACMcmAAnHJgAKVWAACuOaAAsRHQALcdMADAANAA0cgAANSgMADdg9AA448wAOZnYADpP6AA70sAAPVWYAD4LqAA+wbQAQESMAED6mABBx2gAQiJ0AEY5NABLYQwATBcYAFREqABU+rQAVxzMAAAAAAAH0oAAGV60ABuONAAgAAAAIccYACUnzAAmdWgAJ110ACg46AApPpgAKqrMACuBNAAsccwALtg0ADAAAAAAAAP/+V60AAMcdAADjjQABjjoAAZ1aAAKqswACuOYAAxxzAAQAAAAAAAAAAEcdAACAAAAAjjoAAWk9AGyAAIBMgAGAYABcACcAIgA/gAKAIYACgC0Ae4AtAHyAYAAOgGAADwBhgAMAZYAEAGGABABvgASAY4AEAEGABQBvgAQAZYAEAGGABAAugAWALIAFAG+ABQBlgAUAdYAFAHKABQBhgAUAQYAGAE+ABABDgAQAR4AEgFGABAB5gAQAZYAFAG+ABQBygAUAYYAFAEGABYB1gAUAWIAEAFeABABBgAQAVoAEgFmABAB0gAQAdYAEAGKABAB5gAQAdoAEgHeABABogASAa4AEAGWABwBvgAcAeIAEAGSABwBjgAcAcYAHAHaABABqgAgAeYAEgHeABAB0gAQAQ4AEAE+ABABHgAQAVYAEAFGABABUgAUAWYAFAFaABoBXgAaAaoAHgEmAB//5jjP/+NJ2AAI45v/+443//3HG//5VU//9xxoAAI46AAEccwAAAAAAB45AAANVWgACOOYABuONABXHMwACOOY=","cmr6":"AUUAEgAAAH8AJQAQAAoABQBYAAoAAAAHuUFhqABgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADyEcAAAB7AAAAcwAAAFcAAABPAAAAZwAAAF8AAABzAAAAXwAAAHMAAABfAAAAP0BEKDtAAAA7QAAAf0AAAH9AAAAEwAAACOAAACtAAAArQAAAKgAAACtAAAApgAAAZ0AAABwYAAArQAAAXMAAAHDAAAApUAAAgwAAAIsAAABziAAABMAEAAdABFwrQAAAe1wAACvMAAB7zAAAc0AAAAdABEgX5AAAF+QAACvAAAByVAAABGAAAAzABFQEQAAAK+QAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAEwAAABOAAAAUgAABwhAAAJSAAACdABGBzQAAAZwAFMFsAAABfAAAAawAE1FMAAABLAASQdwAAAGcAAAATAAVcLwAAAG8ABKhHAAVIhwAAAGcAAABzAATUUwAEeHMgAABjAAUwNwAAAF8ABLhnAAAAZwAUkI8AFJBnAASoZwAkvEMAAAAH5AAAK0AAAAfkAAArQAAABsAAAAdABEQowAUgN0AFCBzABQA3QAAAIMAAAAtARAgo4BVYN0AE6AbAAAAK4AAAM0AEZAdAAAB4wAToNMAE6CjABQg04AUIMOAAABTAAAAYwAAAFcAFKDTABSwwwBRkXMAUaDDAAAAw4BR8HMAAACjANFiQwDAAK0AAACrAAAAqwAAAAAAAAAAWhKwAGJegABqqlAAcU1QAHtCAAB86tAAi9mwAIvZ0ACUJYAAnHFQAJ/C0ACkvTAArQkAALQlUAC8cTAAvaCwAMDyMADJPgAAzjhQANGJ0ADU21AA2dWwAN7QAADiIYAA5XMAAOptUADtvtAA72ewAPEQgAD//1ABDjgAARPogAEXOgABNRfQAThpUAE44rAAAAAAAB7QsABj0oAAbjjQAIAAAACHHIAAlCXQAJ110ACg47AAo44AAKT6UACs3jAAru8AALHHMAC7YNAAwAAAAAAAD//j0oAADHHQAA440AAY47AAI44AACuOUAAxxwAAMccwAEAAAAAAAAAABCYAAAd3gAAIS9AAFL2ABsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+l7V//mlAAABS9gAAhL1//72hf//e0P//nHI//3tCwAAhL0AAQl7AAAAAAAGqqUAAxxwAAIS9QAG440AE44rAAIS9Q==","cmr7":"AUUAEgAAAH8AJgAQAAkABQBYAAoAAAAH2ZOgUgBwAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADwEsAAAB/AAAAdwAAAFsAAABTAAAAawAAAGMAAAB3AAAAYwAAAHcAAABjAAAAQ0BEKD9AAAA/QAAAg0AAAINAAAAEwAAACNwAACdAAAAnQAAAJkAAACdAAAAlgAAAa0AAABwYAAArQAAAYMAAAHTAAAAlUAAAhwAAAI8AAAB3iAAABMAEAAdABFwnQAAAf1wAACfMAAB/zAAAd0AAAAdABEgX4AAAF+AAACfAAAB2FAAABFwAAAzABFQEQAAAJ+AAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAmgAAAJoAAACaAAAAEwAAABNwAAAUcAAB0hAAAIRwAACNABGB3QAAAawAFMF8AAABjAAAAbwAE1FcAAABPAASQewAAAGsAAAATAAVcLwAAAHMABKhLAAVIiwAAAGsAAAB3AATUVwAEeHccAABnAAUwOwAAAGMABLhrAAAAawAUkJcAFJBrAASoawAkvEcAAAAH4AAAJ0AAAAfgAAAnQAAABsAAAAdABEQkwAUgO0AFCBzABQA7QAAAHMAAAAtARAgk3BVYO0AE6AbAAAAK3AAAN0AEZAdAAAB8wAToOMAE6CTABQg43AUIMNwAABTAAAAYwAAAFcAFKDjABSw0wBRkYMAUaDTAAAA03BR8HMAAACTANFiQwDAAJ0AAACbAAAAmwAAAAAAAAAAUstQAFqq4ABiilAAaabgAHJJUABz3HAAgghQAInn4ACRx1AAkcdwAJVVkACZprAAmabgAKGGUACllpAArXYgALFFUAC005AAvLMgAMEEUADEkpAAyCDgAMxyIADQw1AA1FGQANff4ADcMSAA379wAOCCUADiSXAA8EFQAPhh4AEDjpABBxzgASMMkAEjjpABJprgAAAAAAAddeAAYlMAAG444ACAAAAAhxxwAJL/AACddeAAnnoAAKDjkACk+lAArDDgAK7vAACxxyAAu2DgAMAAAAAAAA//4lMAAAxx4AAOOOAAGOOQAB56AAArjlAAMccgAEAAAAAAAAAAA++wAAcWAAAH35AAFHHgBsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+tNL//ocbgABRx4AAffg//8EEP//ggf//oYX//4IIAAAffkAAPvwAAAAAAAGKKUAAvPQAAH34AAG444AEjjpAAH34A==","cmr8":"AUMAEgAAAH8AIwAQAAoABQBYAAoAAAAHfHtZBwCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADuEMAAAB3AAAAbwAAAFMAAABLAAAAYwAAAFsAAABvAAAAWwAAAG8AAABbAAAAO0BEKDdAAAA3QAAAd0AAAHdAAAAEwAAACOAAACtAAAArQAAAKkAAACtAAAApgAAAY0AAACAYAAArQAAAWMAAAGzAAAApUAAAewAAAIcAAABviAAABMAEAAdABFwrQAAAd1wAACvMAAB3zAAAb0AAAAdABEgX5AAAF+QAACvAAABt1AAABGAAAAzABFQEQAAAK+QAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAEwAAABOAAAAUgAABshAAAJSAAACdABGBvQAAAYwAFMFcAAABbAAAAZwAE1E8AAABHAASQcwAAAGMAAAATAAVcLwAAAGsABKhDAAVIfwAAAGMAAABvAATUTwAEeG8gAABfAAUwNwAAAFsABLhjAAAAYwAUkIsAFJBjAASoYwAkvD8AAAAH5AAAK0AAAAfkAAArQAAABsAAAAdABEQowAUgN0AFCCDABQA3QAAAIMAAAAtARAgo4BVYN0AE6AbAAAAK4AAAM0AEZAdAAAB0wAToNMAE6CjABQg04AUIMOAAABjAAAAcwAAAFgAFKDTABSwwwBRkWMAUaDDAAAAw4BR8IMAAACjANFiAwDAAK0AAACrAAAAqwAAAAAAAAAAS46AAFMcwABaqwAAYfUAAGnHgABqAGAAa0pgAHjkAACAckAAiACAAIulgACPjsAAlx0AAJ6rQACmOYAAqd6AALFswAC1VgAAuPsAALygAADAiUAAxHKAAMgXgADLvIAAz6XAANNKwADTjwAA1WGAAOKrgAD1bQAA+RIAARABAAETpgABF0sAAAAAAAAcccAAYMPAAG444ACAAAAAhxyAAJLYIACaqwAAnXXgAKDjoACk+mAAq67AAK7u4ACxxyAAu2CgAMAAAAAAAA//4MPAAAxxwAAOOOAAGOOgABqrAAArjkAAMccAADHHIABAAAAAAAAAAAPHIAAGzOAAB45AABQ44AbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//tHGP/6k+QAAUOOAAHjkP//Djj//4cc//6VVP/+HHAAAHjkAADxyAAAAAAABaqwAALVWAAB45AABuOOABEAEAAB45A=","cmr9":"AUMAEgAAAH8AJAAQAAkABQBYAAoAAAAHb7SLxwCQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNUgAAAAAAAAAAAAAAAAAAAAAAAADsEcAAAB7AAAAcwAAAFcAAABPAAAAZwAAAF8AAABzAAAAXwAAAHMAAABfAAAAP0BEKDtAAAA7QAAAe0AAAHtAAAAEwAAACNwAAC9AAAAvQAAALkAAAC9AAAAtgAAAZ0AAACAYAAAvQAAAXMAAAHDAAAAtVAAAfwAAAIsAAABziAAABMAEAAdABFwvQAAAe1wAAC/MAAB7zAAAc0AAAAdABEgX4AAAF+AAAC/AAABx0AAABFwAAAzABFQEQAAAL+AAAC6AAAAugAAALoAAAC6AAAAugAAALoAAAC6AAAAugAAALoAAAC6AAAAEwAAABNwAAAUcAABwhAAAKRwAACtABGBzQAAAZwAFMFsAAABfAAAAawAE1FMAAABLAASQdwAAAGcAAAATAAVcMwAAAG8ABKhHAAVIgwAAAGcAAABzAATUUwAEeHMcAABjAAUwOwAAAF8ABLhnAAAAZwAUkI8AFJBnAASoZwAkvEMAAAAH4AAAL0AAAAfgAAAvQAAABsAAAAdABEQswAUgO0AFCCDABQA7QAAAJMAAAAtARAgs3BVYO0AE6AbAAAAK3AAAN0AEZAdAAAB4wAToOMAE6CzABQg43AUINNwAABjAAAAcwAAAFgAFKDjABSw0wBRkXMAUaDTAAAA03BR8IMAAACzANFiEwDAAL0AAAC7AAAAuwAAAAAAAAAASRYAAFBlAABXtAAAXvjgAGZSAABm6cAAZ8hAAHTwAAB1CVAAfD8AAIOOAACHMHAAit0AAJIsAACZewAAoMoAAKRscACru3AAr2gAALMKcAC2rOAAullwAL4GAADBqHAAxUrgAMj3cADMmeAAzKQAAM51QADbQgAA7YJwAPEk4AEHHAABCr5wAQ5g4AAAAAAAG6eQAF9OkABuOOAAgAAAAIcccACSF+AAl7QAAJ114ACg45AApPpQAKtJsACu7uAAsccgALtgsADAAAAAAAAP/99OkAAMccAADjjgABe0AAAY45AAK45AADHHIABAAAAAAAAAAAOnkAAGk+AAB08AABQMkAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//tuoP/6v4kAAUDJAAHTwP//FiD//4sQ//6hMP/+LEAAAHTwAADp4AAAAAAABXtAAAK9oAAB08AABuOOABBxwAAB08A=","cmsl10":"AXkAEgAAAH8AJQAQAAoAOQBYAAoAAAAHcK4wSgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU0wAAAAAAAAAAAAAAAAAAAAAAADqEsCkAB/AAAAcwGAAFsAAABTAwAAawMwAGMCEABzAkAAYwDAAHMCQABjAgAAQ0OEKD9BMAA/QTAAf0EwAH9BMAAEwAAACOAAACtAAAArQOAAKkBgACtBUAApgZAAe0AAACAYAAAvQiAAYMHgAHDB4AApVBAAgwIQAI8CEABziYAABMAEAAdB9FwrQAAAf1zwACvOoAB/zmAAc0FgAAdB9EgX5xAAF+RQACvCwABx0FAABGAAAAzAJFQEQAAAK+cQACqCoAAqgqAAKoKgACqCoAAqgqAAKoKgACqCoAAqgqAAKoKgACqCoAAEwEAABOBAAAUgsABwhPAAJSAAACdC9GBzQbAAawAFMF8CAABjAuAAbwGE1FcCEABPApSQdwCgAGsDMAATAyVcMwKwAHMC5KhLAAVIhwMwAGsDMABzAYTUVwIEeHMhgABnAAUwPwIQAGMClLhrAzAAawNkkJMDZJBrAySoawN0vEcC4AAH51AAK0NAAAflAAArQDAABsGgAAdB9EQowAUgP0CFCCDCNQA/QTAAIMHgAAtDhAgo4tVYP0AE6AbBoAAK4RAAO0I0ZAdBMAB8wAToPMAE6CjBdQg84NUINOCQABjCcAAcwUAAFgB1KDzABSw4wtRkYMLUaDjCUAA44tR8IMHAACjChFiIwoAAK0IgACrB0AAqwSAAAAAAAAARxyAAE45AABVVWAAXHHQAGOOUABkRGAAZPpgAHHHMAB447AAgAAgAIAAMACDjlAAhxyAAIccoACOOQAAlVWAAJxx4ACgACAApxygAKqq0ACuOQAAsccwALVVgAC447AAvHHgAMAAIADDjmAAxxygAMjjsADPA2AA1VWAAOccoADqqtABAAAwAQOOYAEHHKAAAAAAABsFsABd64AAbjjgAIAAAACHHIAAkVnQAJVVYACddeAAoOOgAKT6UACq+NAAru7gALHHIAC7YLAAwAAAAAAAD//d64AADHHQAA444AAVVWAAGOOgACuOMAAxxwAAMccgAEAAAAAAAAAAAHmAAAITAAACT9AAA3AgAAOOUAAFIGAABZIwAAWhUAAF7VAABguAAAZmoAAHd4AAB8NgAAhMAAAIiuAACK0wAAjw0AAKAeAAChMwAAqMgAALJDAADK6wAAzcIAANTFAADY8gAA2QIAANoVAADhqwAA5GIAAOVzAADrKAAA7BgAAO7yAAD2iAAA+G0AAQNtAAEajgABHHYAASXwAAEncgABJ9YAAUYtAAFSfgABVVoAAV7TAAFguAABe0YAAYLbAAGOPQABmZ0AAbu9AAHDVQACAAUAAgtjAAI45gADGKsAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGGABABlgAUAYYAFAG+ABYBjgAUAQYAGAG+ABQBlgAUAYYAFAC6ABoAsgAYAb4AGAGWABgB1gAYAcoAGAGGABgBBgAcAT4AFAEOABQBHgAWAUYAFAHmABQBlgAYAb4AGAHKABgBhgAYAQYAGgHWABgBYgAUAV4AFAEGABQBWgAWAWYAFAHSABQB1gAUAYoAFAHmABQB2gAWAd4AFAGiABYBrgAUAZYAIAG+ACAB4gAUAZIAIAGOACABxgAgAdoAFAGqACQB5gAWAd4AFAHSABQBDgAUAT4AFAEeABQBVgAUAUYAFAFSABgBZgAYAVoAHgFeAB4BqgAiASYAI//uOOP/6440AAT6VAAHHHf//HHL//444//6qqv/+OOMAAHHIAADjjgACqrAABVVWAAKqqwABxx0ABuOOABAAAwABxx0=","cmsl12":"AXgAEgAAAH8AIwAQAAoAOgBYAAoAAAAHfWgh0wDAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU0wAAAAAAAAAAAAAAAAAAAAAAADmD8CoAB3AAAAawGQAE8AAABHAxAAXwMwAFcCIABrAlAAVwDQAGsCUABXAgAAN0OUKDNBMAAzQTAAd0EwAHdBMAAEwAAACOAAACdAAAAnQPAAJkBwACdBUAAlgaAAc0AAABwYAAAnQkAAVMGwAGjBsAAlVBAAewIgAIcCIABriZAABMAEAAdB5FwnQAAAd1zgACfOwAB3znAAa0FgAAdB5EgX5yAAF+RQACfC0ABp0FAABGAAAAzAJFQEQAAAJ+cgACaCwAAmgsAAJoLAACaCwAAmgsAAJoLAACaCwAAmgsAAJoLAACaCwAAEwEAABOBAAAUgoABohOAAISAAACNDBGBrQcAAXwAFMFMCAABXAvAAYwGU1EsCIABDAqSQbwCwAF8DMAATA0VcKwKwAGcC9Kg/AAVIfwMwAF8DMABrAZTUSwIEeGshkABbAAUwMwIQAFcCpLhfAzAAXwN0kIsDdJBfA0SoXwOEvDsC8AAH52AAJ0NQAAflEAAnQDAABsGAAAdB5EQkwAUgM0BlCBzCNQAzQTAAHMGwAAtDlAgk4uVYM0AE6AbBgAAK4QAAL0I0ZAdBMAB0wAToMMAE6CTBdQgw4MUILOCAABTCkAAYwUAAFgCVKDDABSwswuRkVMLkaCzCYAAs4uR8HMHQACTChFiAwoAAJ0JAACbB8AAmwSAAAAAAAAARaEAAEyXgABTjgAAWm3QAGF7AABi34AAb2gAAHZegAB9VQAAgMTwAIRLgACLQgAAkjiAAJkvAACcnvAAo5VwAKccAACqi/AArfvQALGCcAC1CQAAuHjwALvo0AC/b3AAwt9QAML2AADErgAAyuwQANDjAADiP/AA5a/QAPqqAAD+GfABAYnQAAAAAAAY45AAXGQQAG448ACAAAAAhxyAAJCXkACTjgAAnXXwAKDjkACk+lAAqefAAK7u8ACxxxAAu2CwAMAAAAAAAA//3GQQAAxxwAAOOPAAE44AABjjkAArjjAAMccAADHHEABAAAAAAAAAAACq8AACOQAAAnIAAAL20AADtEAABQmwAAVCsAAFx1AABdaAAAXtUAAGjJAAByBwAAedgAAIb7AACL3wAAjDUAAI18AACW4QAAoTQAAKtkAAC0KwAAzNAAAM3BAADOlQAA1yUAANp7AADaywAA3HQAAOMYAADjlAAA5kgAAO54AADzsQAA9wMAAPlgAAD7RwABBcwAARrMAAEhNAABJREAASXwAAEutwABN/cAAUiMAAFY6AABXaQAAWMZAAF7RQABhIUAAZCcAAGZJQABms0AAcPPAAIABAACCjUAAjbFAAL3uABsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AYYAEAGWABQBhgAUAb4AFgGOABQBBgAYAb4AFAGWABQBhgAUALoAGgCyABgBvgAYAZYAGAHWABgBygAYAYYAGAEGABwBPgAUAQ4AFAEeABYBRgAUAeYAFAGWABgBvgAYAcoAGAGGABgBBgAaAdYAGAFiABQBXgAUAQYAFAFaABYBZgAUAdIAFAHWABQBigAUAeYAFAHaABYB3gAUAaIAFgGuABQBlgAgAb4AIAHiABQBkgAgAY4AIAHGACAB2gAUAaoAJAHmABYB3gAUAdIAFAEOABQBPgAUAR4AFAFWABQBRgAUAVIAGAFmABgBWgAeAV4AHgGqACIBJgAj/+6Xw//r/iQABHaEAAb2g//8hMP//kJj//rHI//5CYAAAb2gAAN7QAAKqsAAFOOAAApxwAAG9oAAG448AD6qgAAG9oA==","cmsl8":"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","cmsl9":"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","cmsltt10":"AMEAEgAAAH8AAgAQAAwAAgACAAAAAAAH3+o8eACgAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNU0xUVAAAAAAAAAAAAAAAAAAAAADqAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAABOwQAATsEAAFQBAABWwQAAdAEAAHQBAABwAQAAdAEAAGwBAAB0AQAAQoEAAHQBAABUAQAAVAEAAGIBAAB0AQAAdAEAAHkBAABKAQAAdAFAAHQBAAB0AQAAfYEAAH2BAAB0AQAAdAEAAH1BAAB9QQAAWAEAAFyBAABGQQAAXIEAAEQBAAB9QQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAFQBAABWQQAAaMEAAFBBAABowQAAdAFAQHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdkEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAHQBAAB0AQAAdAEAAH1BAAB9QQAAfUEAAHQBAABBwQAAdAEAAFQBAAB0AQAAVAEAAHQBAABUAQAAdAEAAFbBAAB0AQAAdAEAAHbBAAB0AQAAdAEAAFQBAABUAQAAVAEAAFbBAABWwQAAVAEAAFQBAABkAQAAVAEAAFQBAABUAQAAVAEAAFbBAABUAQAAfUEAAH1BAAB9QQAAdAEAAHQBAAAAAAAAAhmYgAAAAAAAgAAAAOC2AAGOOMABqZlAAbjjgAIVVYACH0mAAiqqwAI23IACOOOAAkMgwAJDjoACccdAAqqqwALHHIAAAAA//zfSP/+tgr//xxyAADjjgABVVMAAVVVAAGFrQABxx0AAjjjAAMccwADjjoAAAAAAAHaFoBgAA6AYAAPAAKqsAAIZmIAAAAAAAAAAAAG444AEMzDAAhmYg==","cmss10":"AUkAEgAAAH8ANAAQAAsABQBOAAgAAAAHbSO9UgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1MAAAAAAAAAAAAAAAAAAAAAAADqF9AAAC7QAAAr0AAAHdAAACDQAAAm0AAAJ9AAACvQAAAn0AAAK9AAACfQAAAa0BEKFtAAABbQAAAt0AAALdAAAAEwAAACOQAAFNAAABTQAAAUkAAAFNAAABSAAAAh0AAADgcAABLQAAAnMAAAKzAAABRVAAAv0AAAMtAAACviAAABMAEAB9ABFxTQAAAu2AAAFPMAAC7zAAAq0AAAA9ABEgz6AAAM+gAAFPAAACt0AAADFgAACDABFQMQAAAU+gAAFKAAABSgAAAUoAAAFKAAABSgAAAUoAAAFKAAABSgAAAUoAAAFKAAAAMwAAADNgAAB0kAACshAAAQSQAAENABGCDQAAAh0AFCIdAAAB7QAAAo0AE0G9AAABnQASMg0AAAJtAAAATQAU0Q0AAAJdABKRfQAUgw0AAAJtAAACnQATQe0AEdKdYAAB/QAAAY0AAAItABLSTQAAAh0AUjMdAFIyHQASkh0AkuHNAAAAX6AAAU0AAABfoAABTQAAADwAAAA9ABEREwAT8V0AE5DjAAABXQAAAOMAAABtARAhQ5BUwV0AAAAcAAAALJAAAT0AEZAdAAACwwAAAVMAAAFDABORU5ATkVOQAACTAEAAswAAAKYAFAFTABQQ8wBAAjMAUZDzAAAA85BR4NMAAAFDANFjMwDAAU0AAAFLAAABTAAAAAAAAAAAPSfgAEREYABHHIAARxygAEn0sABOOQAAUccwAFVVYABXd6AAXHHQAGIiMABjjlAAb0oAAHHHMAB2C4AAeOOwAHsF0AB7BeAAfSgAAIAAIACERGAAiT6wAIqq0ACOOQAAkcdQAJVVgACY47AAnHHgAJxyAACjjmAApVWAAKqq0ACqquAArjkAAK7vIACwAFAAscdgALVVoAC447AAuOPQALxx4ADCIlAAxxygAMtg4ADQWzAA1VWAANxyAADgAFAA8cdgAPjj0AEAADAAAAAAABVVUABeuFAAcccgAIAAAACKqrAAkklQAJVVYACb4AAAoccgAKfSgACtNOAArergALHHIAC+OOAAwAAAAAAAD//euFAADHHQAA444AAVVWAAGOOgACAAAAArjjAAMccAADHHIABAAAAAAAAAAAOOMAAGZmAABxyAABHHIAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb//C2C//vd2wABHHIAAccd//+OOP/+qqoAAHHI//444wAAAAAABVVWAAKqqwABxx0ABxxyABAAAwABxx0=","cmss12":"AUsAEgAAAH8ANgAQAAsABQBOAAgAAAAHgs5SNgDAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1MAAAAAAAAAAAAAAAAAAAAAAADmF9AAADDQAAAt0AAAHNAAACPQAAAo0AAAKtAAAC3QAAAq0AAALdAAACrQAAAa0BEKFtAAABbQAAAv0AAAL9AAAAEwAAACOQAAFNAAABTQAAAUkAAAFNAAABSAAAAh0AAADgcAABLQAAAqMAAALTAAABRVAAAx0AAANNAAAC3iAAABMAEAB9ABFxTQAAAw2AAAFPMAADDzAAAs0AAABNABEgz6AAAM+gAAFPAAAC10AAAEFgAACDABFQQQAAAU+gAAFKAAABSgAAAUoAAAFKAAABSgAAAUoAAAFKAAABSgAAAUoAAAFKAAAAQwAAAENgAAB0kAAC0hAAARSQAAEdABGCPQAAAh0AFCItAAAB/QAAAp0AE0G9AAABnQASMj0AAAKNAAAAPQAU0Q0AAAJ9ABKRfQAUgy0AAAKNAAACvQATQe0AEdK9YAACDQAAAY0AAAJtABLSXQAAAh0AUjM9AFIyHQASkh0AkuHdAAAAX6AAAU0AAABfoAABTQAAAEwAAABNABERIwAT8V0AE5DjAAABXQAAAOMAAABtARAhQ5BUwV0AAAAcAAAALJAAAT0AEZAdAAAC4wAAAVMAAAFDABORU5ATkVOQAACTAEAAswAAAKYAFAFTABQQ8wBAAkMAUZDzAAAA85BR4NMAAAFDANFjUwDAAU0AAAFLAAABTAAAAAAAAAAAOvZQAEHs0ABEJbAARaEAAEhxsABMl4AAT7QAAFOOAABVLzAAWoSAAGAWgABhewAAbL1QAG9oAAByqlAAdaDQAHZegAB3/7AAeaDQAH1VAACAl1AAheywAIdn0ACLQgAAjl5QAJI4gACVVNAAl7OwAJkvAACfZ9AAoCWAAKFU0ACloLAApl5QAKccAACqXlAAqqowAKr2AACslzAAr7OwALRLUAC1CQAAuOMAAL2gsADC9gAAxjhQAMuNsADQ4wAA1xvQANl6sADrQbAA8vXQAPqqAAAAAAAAFL2wAF0nwABxxxAAgAAAAIqqsACSSVAAk44AAJudUAChxxAAp7QwAKzpAACtgLAAsccQAL440ADAAAAAAAAP/90nwAAMccAADjjwABOOAAAY45AAIAAAACuOMAAxxwAAMccQAEAAAAAAAAAAA3tAAAZEQAAG9oAAEWhABsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AZYAEAGGABABvgASAY4AEAEGABQBvgAQAZYAEAGGABAAugAWALIAFAG+ABABlgAQAdYAEAHKABABhgAQAQYAFAE+ABABDgAQAR4AEgFGABAB5gAUAZYAFAG+ABQBygAUAYYAFAEGABYB1gAUAWIAEAFeABABBgAQAVoAEgFmABABlgAYAb4AGAHiABABkgAYAY4AGAHGABgBygAQAeYAEgHeABAB0gAQAQ4AEAE+ABABHgAQAVYAEAFGABABUgAUAWYAFAFaAB4BXgAeAaoAGgEmABv/8UJv//AcgAAEWhAABvaD//5CY//6xyAAAb2j//kJgAAAAAAAFOOAAApxwAAG9oAAHHHEAD6qgAAG9oA==","cmss17":"AUoAEgAAAH8ANgAQAAoABQBOAAgAAAAHBdbGHwEUeuAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1MAAAAAAAAAAAAAAAAAAAAAAADbF9AAADDQAAAt0AAAHNAAACPQAAAo0AAAKtAAAC3QAAAq0AAALdAAACrQAAAa0BEKFtAAABbQAAAv0AAAL9AAAAEwAAACOAAAFNAAABTQAAAUkAAAFNAAABSAAAAh0AAADgcAABLQAAAqMAAALTAAABRVAAAx0AAANNAAAC3iAAABMAEAB9ABFxTQAAAw2AAAFPMAADDzAAAs0AAABNABEgz5AAAM+QAAFPAAAC10AAAEFgAACDABFQQQAAAU+QAAFLAAABSwAAAUsAAAFLAAABSwAAAUsAAAFLAAABSwAAAUsAAAFLAAAAQwAAAENgAAB0gAAC0hAAARSAAAEdABGCPQAAAh0AFCItAAAB/QAAAp0AE0G9AAABnQASMj0AAAKNAAAAPQAU0Q0AAAJ9ABKRfQAUgy0AAAKNAAACvQATQe0AEdK9YAACDQAAAY0AAAJNABLSbQAAAh0AUjM9AFIyHQASkh0AkuHdAAAAX5AAAU0AAABfkAABTQAAAEwAAABNABERIwAT8V0AE5DjAAABXQAAAOMAAABtARAhQ4BUwV0AAAAcAAAALIAAAT0AEZAdAAAC4wAAAVMAAAFDABORU4ATkVOAAACTAEAAswAAAKYAFAFTABQQ8wBAAlMAUZDzAAAA84BR4NMAAAFDANFjUwDAAU0AAAFKAAABTAAAAAAAAAAAOP7gAD+uwABCQSAAQt8wAEXbEABJjyAATL+gAFA/EABR/tAAVu8AAFxIkABdnuAAaIagAGr+wABufkAAcV+gAHGusABzbnAAdS4gAHhekAB73hAAgM5AAII+4ACFvnAAiO7QAIxuYACPnsAAkoAwAJMeQACZfyAAmc4wAJs+0ACf4AAAoC8QAKB+IACj/ZAAo/2gAKTQQACmj/AAqcBwAK2O4ACt3fAAsV1gALZNoAC7PdAAvr1QAMOtcADInaAAzv6AANHf8ADiv0AA6b4wAPC9MAAAAAAAFJOAAFsHMABuNLAAf/vAAIcaYACNsaAAkDzwAJmc4ACg4oAAp7mgAKfmsACoIwAAsccgAL46AAC/xQAAAAAP/9sLcAAMcuAADf3gABBBMAAY5bAAIBlQACuR8AAxy1AAP8kwAAAAAAADV/AABgTAAAav8AAQt9AGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//xwEv/8JgAAAQt9AAGr+///lQH//r8EAABq///+VAUAAAAAAAUD8QACgfgAAav7AAbjSwAPC9MAAav7","cmss8":"AUQAEgAAAH8ALwAQAAsABQBOAAgAAAAHxnM2kQCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1MAAAAAAAAAAAAAAAAAAAAAAADuFdAAACnQAAAm0AAAGtAAAB3QAAAi0AAAI9AAACbQAAAj0AAAJtAAACPQAAAY0BEKFNAAABTQAAAo0AAAKNAAAAEwAAACOQAAEtAAABLQAAASkAAAEtAAABKAAAAd0AAADQcAABDQAAAjMAAAJjAAABJUAAAq0AAALdAAACbiAAABMAEABtABFxLQAAAp2AAAEvMAACnzAAAl0AAAA9ABEgv6AAAL+gAAEvAAACZ1AAADFgAABzABFQMQAAAS+gAAEqAAABKgAAASoAAAEqAAABKgAAASoAAAEqAAABKgAAASoAAAEqAAAAMwAAADNgAABkkAACYhAAAPSQAAD9ABGB3QAAAd0AFCHdAAABvQAAAj0AE0GdAAABfQASMd0AAAItAAAAPQAU0P0AAAIdABKRXQAUgr0AAAItAAACTQATQb0AEdJNYAABzQAAAW0AAAH9ABLSDQAAAd0AUjLNAFIx3QASkd0AkuGtAAAAT6AAAS0AAABPoAABLQAAADwAAAA9ABERAwAT8T0AE5DTAAABPQAAANMAAABdARAhI5BUwT0AAAAcAAAALJAAAR0AEZAdAAACcwAAATMAAAEjABORM5ATkTOQAACDAEAAowAAAJYAFAEzABQQ4wBAAeMAUZDjAAAA45BR4MMAAAEjANFi4wDAAS0AAAErAAABLAAAAAAAAAAAQOPAAEhyAABLjoAATxzAAFMcwABWOSAAWqsAAFzj4ABiOUAAaESgAGnHgAB2OUAAeOQAAH1VwACAckAAgqsgAITkAACIAIAAjHJAAJHHoACUAKAAlx0AAJuO4ACeq0AAox0gAKY5gACtx8AAsACgALVWAAC5x8AAucfgALqrYAC85EAAwACgAMRygADI5GAAzjmgANOPAADYAMAA3VYgAOKrgADqOcAA7VYgAQDkgAEIcsABEAEAAAAAAAAXHIAAYaLAAHHHIACAAAAAiqrAAJJJYACaqwAAnVVAAKHHIACoAAAArhiAAK9t4ACxxyAAvjjgAMAAAAAAAA//4aLAAAxxwAAOOOAAGOOgABqrAAAg44AAK45AADHHAAAxxyAAQAAAAAAAAAADxyAABszgAAeOQAAS46AGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//vxxP/7nG4AAS46AAHjkP//hxz//pVUAAB45P/+HHAAAAAAAAWqsAAC1VgAAeOQAAcccgARABAAAeOQ","cmss9":"AUoAEgAAAH8ANgAQAAoABQBOAAgAAAAH0m/HdwCQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1MAAAAAAAAAAAAAAAAAAAAAAADsGNAAADDQAAAt0AAAHtAAACLQAAAo0AAAKdAAAC3QAAAp0AAALdAAACnQAAAb0BEKF9AAABfQAAAv0AAAL9AAAAEwAAACOAAAFdAAABXQAAAVkAAAFdAAABWAAAAk0AAADgcAABPQAAApMAAALTAAABVVAAAx0AAANNAAAC3iAAABMAEAB9ABFxXQAAAw2AAAFfMAADDzAAAs0AAAA9ABEgz5AAAM+QAAFfAAAC10AAADFgAACDABFQMQAAAV+QAAFaAAABWgAAAVoAAAFaAAABWgAAAVoAAAFaAAABWgAAAVoAAAFaAAAAMwAAADNgAAB0gAAC0hAAARSAAAEdABGCLQAAAk0AFCI9AAAB/QAAAq0AE0HNAAABrQASMi0AAAKNAAAATQAU0S0AAAJ9ABKRjQAUgy0AAAKNAAACvQATQg0AEdK9YAACHQAAAZ0AAAJdABLSbQAAAk0AUjM9AFIyTQASkk0AkuHdAAAAX5AAAV0AAABfkAABXQAAADwAAAA9ABERMwAT8W0AE5DjAAABbQAAAPMAAABtARAhU4BUwW0AAAAcAAAALIAAAU0AEZAdAAAC4wAAAWMAAAFTABORY4ATkWOAAACTAEAAswAAAKYAFAFjABQRAwBAAlMAUZEDAAABA4BR4NMAAAFTANFjUwDAAV0AAAFbAAABXAAAAAAAAAAAPtBwAEYfcABJFgAASXsgAExxsABQZQAAU1uQAFe0AABZ4EAAXwMAAGTb4ABmUgAAcl6QAHTwAAB08CAAeUhwAHw/AAB8cZAAfmtAAICXcACDjgAAh+ZwAI0JQACPaAAAkiwAAJa3AACZewAAngYAAKDKAAChLyAAqBkAAKhLkACqd8AAr2gAAK+akACvzSAAs8BwALTv4AC3HCAAuhKwAL4GAAC+OJAAwl5wAMeBQADMpAAA0PxwANYfQADbQgAA4sOQAOXssAD44yAA//+QAQccAAAAAAAAFh+QAGAkcABxxyAAgAAAAIqqsACSSVAAl7QAAJzrIAChxyAAp4GQAK2aAACuyXAAsccgAL444ADAAAAAAAAP/+AkcAAMccAADjjgABe0AAAY45AAIGUgACuOQAAxxyAAQAAAAAAAAAADp5AABpPgAAdPAAASRZAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//wS+f/7vaQAASRZAAHTwP//ixD//qEwAAB08P/+LEAAAAAAAAV7QAACvaAAAdPAAAcccgAQccAAAdPA","cmssbx10":"AT4AEgAAAH8ALAANAAsABQBOAAgAAAAH8WtBSACgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNU1NCWAAAAAAAAAAAAAAAAAAAAADqF6AAACWgAAAioAAAG6AAAB2gAAAgoAAAIKAAACKgAAAgoAAAIqAAACCgAAAaoBEKGKAAABigAAAkoAAAJKAAAAEwAAACOQAAE6AAABOgAAATgAAAE6AAABOQAAAdoAAADQcAABagAAAgMAAAIjAAABNUAAAmoAAAKqAAACKyAAABMAEAB6ABFxSgAAAlqAAAE8MAACjDAAAhoAAAA6ABEgvKAAALygAAE8AAACJ2AAADFQAABzABFQMQAAATygAAE6AAABOgAAAToAAAE6AAABOgAAAToAAAE6AAABOgAAAToAAAE6AAAAMwAAADNQAAB0kAACIhAAAQSQAAEKABGB2gAAAdoAFCHaAAABygAAAgoAE0GqAAABmgASMdoAAAIKAAAASgAU0QoAAAH6ABKRegAUgnoAAAIKAAACCgATQcoAEdIKUAABygAAAZoAAAHaABLR+gAAAdoAUjKaAFIx2gASkdoAkuG6AAAAbKAAAUoAAABsoAABOgAAADoAAAA6ABEREwAT8VoAE5DTAAABWgAAAPMAAABaARAhM5BUwVoAAAAaAAAAKpAAASoAEZAaAAACMwAAAVMAAAEzABORU5ATkVOQAACDAEAAowAAAJYAFAFTABQQ4wBAAeMAUZDjAAAA45BR4MMAAAEzANFiswDAAToAAAE6AAABOgAAAAAAAAAAQWwwAEk+sABOOQAAVJ9gAFYLgABX0qAAXd4AAF9KIABnd6AAa/KAAG2DAAB59NAAfSgAAIAAMACC2GAAhPqAAIZmoACH0rAAjM0AAI7vIACPpTAAkLYwAJSfgACWC6AAnHIAAKREgACsFwAAs+mAALu8AAC+lDAAw46AAMthAADUn6AA2wYAAN3eMADkRKAA6qsAAPJ9gAD6UAABB3RQAQn1AAERx4ABGZoAAAAAAAAhbCAAaAAAAHVVUACAAAAAjjjgAJbboACd3gAAoqqwAKNFUACxxyAAvjjgAMAAAAAAAA//6AAAAAxx0AAOOOAAGOOgABsFsAAd3gAAK44wADHHAAAxxyAAQAAAAAAAAAAD6VAABwowAAfSgAATjlAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//vpPf/7T6MAATjlAAH0oP//gtj//oiIAAB9KP/+C2AAAAAAAAXd4AAC7vAAAfSgAAdVVQARmaAAAfSg","cmssdc10":"AUwAEgAAAH8AOgANAAsABQBOAAgAAAAHcNrjaQCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNU1NEQwAAAAAAAAAAAAAAAAAAAADqGqAAADOgAAAwoAAAIKAAACSgAAAroAAALKAAADCgAAAsoAAAMKAAACygAAAdoBEKGaAAABmgAAAyoAAAMqAAAAEwAAACOQAAFqAAABagAAAWkAAAFqAAABaAAAAmoAAADgcAABWgAAAsMAAAMDAAABZVAAA0oAAAOKAAADCyAAABMAEAB6ABFxegAAAzqAAAFsQAADbEAAAvoAAAA6ABEgzKAAAMygAAFsAAADBjAAADFgAACDABFQMQAAAWygAAFqAAABagAAAWoAAAFqAAABagAAAWoAAAFqAAABagAAAWoAAAFqAAAAMwAAADNgAAB0kAADAhAAARSQAAEaABGCSgAAAmoAFCJaAAACGgAAAtoAE0HqAAABygASMkoAAAK6AAAASgAU0SoAAAKqABKRqgAUg1oAAAK6AAAC6gATQioAEdLqYAACOgAAAboAAAKKABLSmgAAAmoAUjN6AFIyagASkmoAkuH6AAAAbKAAAXoAAABsoAABagAAADoAAAA6ABERMwAT8YoAE5DjAAABigAAAQMAAABaARAhg5AUwYoAAAAaAAAAKpAAAUoAEZAaAAADEwAAAYMAAAFjABORg5ATkYOQAACTAEAAswAAAKcAFAGDABQQ8wBAAnMAUZDzAAAA85BR4NMAAAFjANFjkwDAAWoAAAFqAAABagAAAAAAAAAAOC0wAD7uoABDjgAASIhgAEpPYABLBYAATjiwAFEQ0ABSIdAAWIhQAF050ABek6AAaT4wAGwWYABuOGAAcC0wAHLX0ABzMtAAc+jQAHT50AB30lAAeZkwAHmZUAB7uzAAgWugAIONsACHHAAAik8gAI3dYACREIAAlJ7QAJVU0ACbYDAAm7swAJ0nMACiIaAAonygAKLXoACkQ6AApPmwAKgtAACpmQAArYJQAK+kYACv/2AAsnyAALd20AC9JzAAv0kwAMT5oADKqgAA0cZgANYKsADhIyAA5mWgAOzMAADzMmAAAAAAABsFsABpdTAAeOOgAIccYACOOQAAlJ8AAJtuAACiauAAo44wALHHIAC8cdAAwAAAAAAAD//iWNAACqqwAA2CoAAOOOAAFVVgABxx0AAlVWAAKqqgACqqsAA446AAAAAAAANgsAAGFGAABsFgABDjgAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb//H0t//v6UwABDjgAAbBa//+T6v/+u70AAGwW//5PpgAAAAAABRENAAKIhgABsFoAB446AA8zJgABsFo=","cmssi10":"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","cmssi12":"AX8AEgAAAH8ANwAQAAsAOABOAAgAAAAH2gMizQDAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNU1NJAAAAAAAAAAAAAAAAAAAAAADmF9DIADHQAAAu0FQAHNAAACPQwAAo0HAAKtC8AC7QjAAq0DQALtCMACrQaAAa0N0KFtCoABbQoAAw0KgAMNCgAAEwMAACOTAAFNAAABTQlAAUkHQAFNCcABSAfAAr0AAADgcAABLQlAAqMEwALjBMABRVOAAy0LwANdC8AC7iVAABMAEAB9BBFxTQBAAx2DwAFPOwADHzJAAt0CgABNBhEgz6xAAM+hgAFPC4AC50GAAEFgAACDARFQQQAAAU+sQAFKCwABSgsAAUoLAAFKCwABSgsAAUoLAAFKCwABSgsAAUoLAAFKCwAAQwHAAENhwAB0kMAC4hPAARSQAAEdC1GCPQVAAh0AFCItBoAB/QvAAp0FU0G9C8ABnQySMj0LwAKNBwAAPQyU0Q0HAAJ9C9KRfQAUgz0HAAKNBwACzQVTQe0GkdLNZUACDQaAAY0JQAJtDJLSXQcAAh0NUjNNDVIyHQySkh0NkuHdC8AAX60AAU0MwABfqEABTQZAAEwFgABNBhERIwCT8V0CE5DjBsABXQoAAOMEwABtDdAhQ5rUwV0BQAAcCkAALJmAAT0G0ZAdCgAC8wFAAVMBQAFDBJORU5LTkVOTAACTCsAAswXAAKYFFAFTAxQQ8wrAAkMK0ZDzCQAA85rR4NMIAAFDB5FjYweAAU0JQAFLCIABTARAAAAAAAAAOvZQAEHs0ABEJbAARaEAAEhxsABMl4AAT7QAAFOOAABVLzAAWoSAAGAWgABhewAAbL1QAG9oAAByqlAAdaDQAHZegAB3/7AAeaDQAH1VAACAl1AAheywAIdn0ACLQgAAjl5QAJI4gACVVNAAl7OwAJkvAACfZ9AAoCWAAKFU0ACloLAApl5QAKccAACqXlAAqqowAKr2AACslzAAr7OwALRLUAC1CQAAt8QAALjjAAC9oLAAwvYAAMY4UADLjbAA0OMAANcb0ADZerAA60GwAPL10AD6qgAAAAAAABS9sABdJ8AAcccQAIAAAACKqrAAkklQAJOOAACbnVAAoccQAKe0MACs6QAArYCwALHHEAC+ONAAwAAAAAAAD//dJ8AADHHAAA448AATjgAAGOOQACAAAAArjjAAMccAADHHEABAAAAAAAAAAAFuwAADd3AABLBQAAUhEAAFdfAABqQAAAaz8AAH8cAACCbwAAig8AAKCIAAC3GQAAvuUAAMztAADNZwAA9E8AAQgkAAEO3AABGIwAASnRAAE30AABP9gAAUAZAAFE5wABS8AAAVYMAAFWYQABWjwAAV3kAAFejAABah0AAWrEAAFrywABbTwAAXRHAAF3zQABfckAAYI4AAGJpAABkMEAAZUtAAGaPAABuqUAAcrvAAHjrwAB5dwAAe0xAAIOnQACHZAAAiTlAAJGUQACjPgAApRNAALA3QADcx0AbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb//FCb//wHIAABFoQAAb2g//+QmP/+scgAAG9o//5CYAADZqAABTjgAAKccAABvaAABxxxAA+qoAABvaA=","cmssi17":"AX4AEgAAAH8ANwAQAAoAOABOAAgAAAAHoI/udQEUeuAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNU1NJAAAAAAAAAAAAAAAAAAAAAADbF9DIADHQAAAu0FwAHNAAACPQwAAo0HgAKtC8AC7QjAAq0DQALtCMACrQcAAa0N0KFtCoABbQpAAw0KgAMNCkAAEwMAACODAAFNAAABTQmAAUkIAAFNCgABSAhAAs0AAADgcAABLQmAAqMEwALjBMABRVPAAy0LwANdC8AC7iXAABMAEAB9BFFxTQBAAx2DgAFPOwADHzKAAt0CQABNBtEgz5xAAM+RgAFPC4AC50GAAEFgAACDANFQQQAAAU+cQAFLCwABSwsAAUsLAAFLCwABSwsAAUsLAAFLCwABSwsAAUsLAAFLCwAAQwHAAENhwAB0gUAC4hOAARSAAAEdC1GCPQXAAh0AFCItBwAB/QvAAp0F00G9C8ABnQySMj0LwAKNB4AAPQyU0Q0HgAJ9C9KRfQAUgz0HgAKNB4ACvQXTQe0HEdK9ZcACDQcAAY0JgAJNDJLSbQeAAh0NUjNNDVIyHQySkh0NkuHdC8AAX50AAU0MwABfmUABTQZAAEwFgABNBtERIwCT8V0CE5DjBgABXQpAAOMEwABtDdAhQ4rUwV0BAAAcCcAALIkAAT0GEZAdCkAC8wEAAVMBAAFDBJORU4LTkVODAACTCsAAswVAAKYFFAFTAxQQ8wrAAlMK0ZDzCIAA84rR4NMHQAFDBpFjYwaAAU0JgAFKB8ABTAQAAAAAAAAAOP7gAD+uwABCQSAAQt8wAEXbEABJjyAATL+gAFA/EABR/tAAVu8AAFxIkABdnuAAaIagAGr+wABufkAAcV+gAHGusABzbnAAdS4gAHhekAB73hAAgM5AAII+4ACFvnAAiO7QAIxuYACPnsAAkoAwAJMeQACZfyAAmc4wAJs+0ACf4AAAoC8QAKB+IACj/ZAAo/2gAKTQQACmj/AAqcBwAK2O4ACt3fAAsV1gALMGgAC2TaAAuz3QAL69UADDrXAAyJ2gAM7+gADR3/AA4r9AAOm+MADwvTAAAAAAABSTgABbBzAAbjSwAH/7wACHGmAAjbGgAJA88ACZnOAAoOKAAKe5oACn5rAAqCMAALHHIAC+OgAAv8UAAAAAD//bC3AADHLgAA394AAQQTAAGOWwACAZUAArkfAAMctQAD/JMAAAAAAAA4dQAAOZcAAFBnAABYVQAAXN8AAG6iAABvbQAAgCUAAITTAACG1wAAoD0AALSQAADDTgAAypQAANIXAAEFiAABBjcAAQZbAAEUzgABITQAATaaAAE7BwABPDkAAUwAAAFR4QABUqEAAVU7AAFadQABXhwAAWDCAAFkbAABZQcAAWntAAFsGQABeLAAAXmUAAF68AABhpwAAYoKAAGYuAABml4AAaQ9AAGsTAAB0AQAAeOvAAHrsQAB8ZsAAhG0AAIhMQACJxoAAkczAAKMLwACkhkAArzmAANoFwBsgACATIABAGkADABmAAsAbAANACeAAgA/gAIAIYACACmAAoBdgAIAaQAOAGwADwAngAIAP4ACACGAAgApgAKAXYACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD4AZYAEAGGABABvgASAY4AEAEGABQBvgAQAZYAEAGGABAAugAWALIAFAG+ABABlgAQAdYAEAHKABABhgAQAQYAFAE+ABABDgAQAR4AEgFGABAB5gAUAZYAFAG+ABQBygAUAYYAFAEGABYB1gAUAWIAEAFeABABBgAQAVoAEgFmABABlgAYAb4AGAHiABABkgAYAY4AGAHGABgBygAQAeYAEgHeABAB0gAQAQ4AEAE+ABABHgAQAVYAEAFGABABUgAUAWYAFAFaAB4BXgAeAaoAGgEmABv/8cBL//CYAAAELfQABq/v//5UB//6/BAAAav///lQFAANmoAAFA/EAAoH4AAGr+wAG40sADwvTAAGr+w==","cmssi8":"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","cmssi9":"AX0AEgAAAH8ANwAQAAoANwBOAAgAAAAHK6GXFwCQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNU1NJAAAAAAAAAAAAAAAAAAAAAADsGNDEADHQAAAu0FAAHtAAACLQvAAo0GQAKdC4AC7QiAAp0DAALtCIACnQaAAb0NkKF9CgABfQnAAw0KAAMNCcAAEwLAACOCwAFdAAABXQjAAVkGwAFdCYABWAhAAr0AAADgcAABPQjAApMEgALjBIABVVNAAy0LgANdC4AC7iUAABMAEAB9A9FxXQAAAx2DgAFfOsADHzIAAt0BwAA9BVEgz5wAAM+RgAFfCwAC50GAADFgAACDARFQMQAAAV+cAAFaCsABWgrAAVoKwAFaCsABWgrAAVoKwAFaCsABWgrAAVoKwAFaCsAAMwFAADNhQAB0gIAC4hOAARSAAAEdC1GCLQUAAk0AFCI9BoAB/QuAAq0FE0HNC4ABrQxSMi0LgAKNBkAATQxU0S0GQAJ9C5KRjQAUgz0GQAKNBkACzQUTQg0GkdLNZQACHQaAAZ0IwAJdDFLSbQZAAk0NEjNNDRIyTQxSkk0NUuHdC4AAX5zAAV0MgABfl0ABXQXAADwGAAA9BVERMwBT8W0CU5DjBwABbQnAAPMEgABtDZAhU4qUwW0AwAAcCkAALIlAAU0HEZAdCcAC8wDAAWMAwAFTBFORY4KTkWOCwACTCoAAswWAAKYE1AFjAtQRAwqAAlMKkZEDCQABA4qR4NMIAAFTB5FjYweAAV0IwAFbB8ABXAQAAAAAAAAAPtBwAEYfcABJFgAASXsgAExxsABQZQAAU1uQAFe0AABZ4EAAXwMAAGTb4ABmUgAAcl6QAHTwAAB08CAAeUhwAHw/AAB8cZAAfmtAAICXcACDjgAAh+ZwAI0JQACPaAAAkiwAAJa3AACZewAAngYAAKDKAAChLyAAqBkAAKhLkACqd8AAr2gAAK+akACvzSAAs8BwALTv4AC3HCAAuhKwAL4GAAC+OJAAwfBwAMJecADHgUAAzKQAAND8cADWH0AA20IAAOLDkADl7LAA+OMgAP//kAEHHAAAAAAAABYfkABgJHAAcccgAIAAAACKqrAAkklQAJe0AACc6yAAoccgAKeBkACtmgAArslwALHHIAC+OOAAwAAAAAAAD//gJHAADHHAAA444AAXtAAAGOOQACBlIAArjkAAMccgAEAAAAAAAAAAApRAAAPmAAAEn1AABMiQAAYC4AAGS5AAB2TgAAfOcAAIJEAAClVwAArAkAALlcAADDDAAA0gcAAOerAAEIKQABDtwAARwgAAElZQABMkkAATnXAAE8xwABPrcAAUKiAAFJpQABUIQAAVDbAAFULAABY+QAAWQUAAFkhQABZd4AAWZAAAFuvgABcrsAAXdAAAF7hQABgokAAYWyAAGMBAABlM4AAb1rAAHEuwAB3ZAAAeOuAAHnqwACCr4AAhgJAAIiIgACRTcAAoz5AAKXFAACxdkAA4D0AGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBlgAQAYYAEAG+ABIBjgAQAQYAFAG+ABABlgAQAYYAEAC6ABYAsgAUAb4AEAGWABAB1gAQAcoAEAGGABABBgAUAT4AEAEOABABHgASAUYAEAHmABQBlgAUAb4AFAHKABQBhgAUAQYAFgHWABQBYgAQAV4AEAEGABABWgASAWYAEAGWABgBvgAYAeIAEAGSABgBjgAYAcYAGAHKABAB5gASAd4AEAHSABABDgAQAT4AEAEeABABVgAQAUYAEAFSABQBZgAUAVoAHgFeAB4BqgAaASYAG//wS+f/7vaQAASRZAAHTwP//ixD//qEwAAB08P/+LEAAA2agAAV7QAACvaAAAdPAAAcccgAQccAAAdPA","cmssq8":"AUYAEgAAAH8ANQAPAAgABQBOAAgAAAAHS3RFbwCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNU1NRAAAAAAAAAAAAAAAAAAAAAADuF6AAADCgAAAsoAAAGaAAACSgAAAhoAAAKaAAACygAAApoAAALKAAACmgAAAYsBEKFbAAABWwAAAusAAALrAAAAEwAAACNgAAE7AAABOwAAATYAAAE7AAABNwAAAfsAAADgQAABKwAAApMAAALDAAABNTAAAxoAAAM6AAACzSAAABMAEABrABFxOwAAAwtQAAE+MAADDjAAAqsAAABLABEgznAAAM5wAAE+AAACzGAAAEFgAACDABFQQQAAAT5wAAE4AAABOAAAATgAAAE4AAABOAAAATgAAAE4AAABOAAAATgAAAE4AAAAQwAAAENgAABkYAACwhAAARRgAAEbABGCSwAAAfoAFCI6AAAB6gAAAnoAE0HKAAABqgASMkoAAAIaAAAAOgAU0QoAAAJqABKRegAUgvoAAAIaAAACugATQdoAEdK6YAACKgAAAWoAAAKKABLSCgAAAfoAUjMqAFIx+gASkfoAkuG6AAAAXnAAATsAAABecAABOwAAAEsAAABLABEREwAT8UsAE5DjAAABSwAAAOMAAAB7ARAhQ2AUwUsAAAAbAAAAK2AAASsAEZAbAAAC0wAAAUMAAAEzABORQ2ATkUNgAACTAEAAswAAAKkAFAFDABQQ8wBAAlMAUZDzAAAA82BR4NMAAAEzANFjQwDAATsAAAE7AAABOwAAAAAAAAAARxygAFAAQABRx0AAWOOgAFo5AABaqsAAYcdAAGqqwABqquAAc45AAHqqwAB8ceAAicdAAI45AACOOSAAk45gAJccoACXHMAAoAAgAKAAQACo48AAscdAALVVgAC6quAAvHIAAL45IADDjmAAxxygAMjjwADMcgAAzjkgAM8cwADQAEAA0OPAANHHYADVVYAA1VWgANccwADjjoAA5VWAAOccoADwAEAA9xygAPjjwAD44+ABAcdgAQVVoAEKquABEABAASccwAEzjoABQABAAAAAAAAY44AAbgAAAIVVYACOOOAAlxyAAKaqwACn/+AAqOOAAKtuAACvHIAAsccgALHHQAC4ACAAw45AAAAAD//fxwAACOOgABHHIAAfHIAAI44AACOOQAA1VUAAAAAAAARxwAAIAAAACOOgABY44AbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb/+442//s44AABY44AAjjk//9xxv/+VVQAAI46//3HHAAAAAAABqqsAANVVgACOOQACFVWABQABAACOOQ=","cmssqi8":"AXYAEgAAAH8ANgAPAAgANABOAAgAAAAHnQUCAQCAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNU1NRSQAAAAAAAAAAAAAAAAAAAADuF6C0ADGgAAAtoEwAGaAAACSgrAAhoFAAKqCkAC2geAAqoCwALaB4ACqgXAAYsM0KFbCMABWwgAAvsIwAL7CAAAEwOAACNjgAE7AAABOwdAATYHAAE7BkABNwhAAnsAAADgQAABKwdAAqMFgALTBYABNTJAAyoKQANKCkAC3STAABMAEABrA9FxOwAAAxtUAAE+OYADHjFAArsDQABLBFEgznsAAM5xgAE+CgAC3GGAAEFgAACDANFQQQAAAT57AAE4CYABOAmAATgJgAE4CYABOAmAATgJgAE4CYABOAmAATgJgAE4CYAAQwCAAENggABkYcAC0hQAARRgAAEbCpGCSwVAAfoAFCI6BcAB6gpAAooE00HKCkABqgtSMkoKQAIaBQAAOgtU0QoFAAJqClKRegAUgwoFAAIaBQACygTTQdoF0dLKZMACKgXAAWoGgAKaC1LSCgUAAfoMUjM6DFIx+gtSkfoMkuG6CkAAXnwAATsLwABedIABOwYAAEsEQABLBFEREwBT8UsCE5DjCQABSwgAAOMFgAB7DNAhQ2OUwUsBAAAbCMAAK2gAASsJEZAbCAAC4wEAAUMBAAEzBtORQ2KTkUNjgACTC4AAswiAAKkH1AFDA5QQ8wuAAlMLkZDzCcAA82uR4NMJwAEzCVFjUwlAATsHQAE7B0ABOwMAAAAAAAAARxygAFAAQABRx0AAWOOgAFo5AABaqsAAYcdAAGqqwABqquAAc45AAHqqwAB8ceAAicdAAI45AACOOSAAk45gAJccoACXHMAAoAAgAKAAQACo48AAscdAALVVgAC6quAAvHIAAL45IADDjmAAxxygAMjjwADMcgAAzjkgAM8cwADQAEAA0OPAANHHYADVVYAA1VWgANccwADa0aAA446AAOVVgADnHKAA8ABAAPccoAD448AA+OPgAQHHYAEFVaABCqrgARAAQAEnHMABM46AAUAAQAAAAAAAGOOAAG4AAACFVWAAjjjgAJccgACmqsAAp//gAKjjgACrbgAArxyAALHHIACxx0AAuAAgAMOOQAAAAA//38cAAAjjoAARxyAAHxyAACOOAAAjjkAANVVAAAAAAAADFCAABTrAAAVIAAAFSIAABjnAAAY54AAGOsAABp1gAAkCIAAJSAAACbigAAo7YAAKkAAAC+VgAA3JgAAOfeAADq0gABA7oAARKmAAEThgABGP4AASneAAEwbAABMVQAATHuAAE3FgABPWoAAT3sAAFAKAABTjQAAVOuAAFVfAABZgIAAXAeAAF5CgABjJAAAaZ4AAGwJAABtzoAAcO6AAHFTgAB464AAe/6AAIK1gACDGwAAgyQAAJAKAACmRAAApqkAALTiAADwCgAbIAAgEyAAQBpAAwAZgALAGwADQAngAIAP4ACACGAAgApgAKAXYACAGkADgBsAA8AJ4ACAD+AAgAhgAIAKYACgF2AAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+AGWABABhgAQAb4AEgGOABABBgAUAb4AEAGWABABhgAQALoAFgCyABQBvgAQAZYAEAHWABABygAQAYYAEAEGABQBPgAQAQ4AEAEeABIBRgAQAeYAFAGWABQBvgAUAcoAFAGGABQBBgAWAdYAFAFiABABXgAQAQYAEAFaABIBZgAQAZYAGAG+ABgB4gAQAZIAGAGOABgBxgAYAcoAEAHmABIB3gAQAdIAEAEOABABPgAQAR4AEAFWABABRgAQAVIAFAFmABQBWgAeAV4AHgGqABoBJgAb/+442//s44AABY44AAjjk//9xxv/+VVQAAI46//3HHAADZqAABqqsAANVVgACOOQACFVWABQABAACOOQ=","cmsy10":"ARkAEgAAAH8ALAAPABAAEgAHAAcAAAAWISIsmgCgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAADqIKgAAANCAAAgqAAACGQAACCoAAAIQgAAIKgAACCoAAAgqAAAIKgAACCoAAAgqAAAIKgAACrdAAAIQgAACEIAACBTAAAgUwAAILsAACC7AAAguwAAILsAACC7AAAguwAAICEAACB1AAAghgAAIIYAACqGAAAqhgAAIIYAACCGAAAqIQAAKiEAAAjcAAAI3AAAKiEAACrcAAAq3AAAIFMAACohAAAqIQAAENwAABDcAAAqIQAAKtwAACrcAAAgMAAAApAAACowAAAUhgAAFIYAACjdAAAo3QAAAdwAAAEhAAAN0AAADdAAABQwAAAI5wAAG9AAABvQAAAg0AAAINAAABDQAAAiwAEGE8ARBAnAFQQfwA0CCsAtAxrAMQMOyRkDJsAFAwvAHQAWyUEFHsAJARfAAQQrwAEEJMA9AiHADQMYwCkCI8kBAyfAAQIPwCEEDMBFABLAMQIRwCkAKcApAhnAOQQVySkCHMAlBBSQAAAUkAAAFJAAABSQAAAUkAAAENAAABDQAAAG7gAABu4AAAbuAAAG7gAACO4AAAjuAAAE7gAABO4AAAPuAAAI7gAACO4AABDuAAAI7gAAA9wAACUfAAAdwAAAJcAAAAXdNAAUkAAAFJAAACC7AAAguwAAB90AAAbdAAAG3QAAEN0AACDaAAAg2gAAINoAACDaAAAAAAAAAAAAAAAEZmYABHHIAAY45QAGqq0ABxxzAAccdQAIAAIACGyqAAhxywAItlYACLbdAAjjkAAJhJIACbBeAAnHHgAJzfUACgNoAAqCSwAKqq0ACrGCAArYMAALCR0ACyEDAAtpqgALf/4AC447AAuYegAMAAIADDDzAAxXoAAMccoADLziAAzGigANERUADSC7AA1VWAANgyUADY9gAA445gAPzfYAEAADABM24wAAAAAAAKPWAAXeuAAG444ABxxzAAdrgwAHccgAB7reAAigJQAI45AACVVWAAos8AAK7u4ACxxyAAwAAAAAAAD//d64//8cc///a4P//3HI//+63gAAoCUAAOOOAAFVVgABjjoAAhL2AAIs8AADHHAAAxxyAAQAAAAPXCoAAAAAAAAniwAAOysAAHHIAAB8kgAA7vIAAPLoAAEuYAABMy4AAUVmAAFQyAABbloAAZbCAAHHHQACV8UAAluWAAL0ngAEERKAMIAAgDCAAYAwgAKAMIADgDCABIAwgAWAMIAGAABxyAAA45AAAVVYAAHHIAACOOgAAqqwAAMceAAEAAAAAAAAAAAAAAAAAAAABuOOABAAAwAAAAAACtL6AAZMugAHGYYACvmoAAWEeAAGmzUABc5oAASfSgACZmYAA/SaAAYtgAAAzM0AJj1wABAo9gAEAAA=","cmsy5":"ARYAEgAAAH8ALAAPAA8AEAAHAAcAAAAWsNwwbgBQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAAD0HqoAAANTAAAeqgAAB0IAAB6qAAAHUwAAHqoAAB6qAAAeqgAAHqoAAB6qAAAeqgAAHqoAACnLAAAHUwAAB1MAAB5kAAAeZAAAHtwAAB7cAAAe3AAAHtwAAB7cAAAe3AAAHiEAAB51AAAemAAAHpgAACmYAAApmAAAHpgAAB6YAAApIQAAKSEAAAfLAAAHywAAKSEAACnLAAApywAAHmQAACkhAAApIQAAEMsAABDLAAApIQAAKcsAACnLAAAeMAAAAoAAACkwAAAUmAAAFJgAACjLAAAoywAAAcsAAAEhAAAKwAAACsAAABQwAAAH5gAAG8AAABvAAAAewAAAHsAAABDAAAAisAEGErAFBAmwDQQfsAkCCLAdAxewKQMNtxUDJrABAwuwEQAVtzkFHbABARawAQQrsAEEI7A1AiCwCQMasCUCJLcBAyewAQIOsBkEDLA9AA+wKQIRsCUAKrAlAhmwMQQTtyUCGLAhBBSAAAAUgAAAFIAAABSAAAAUgAAAEMAAABDAAAAG7QAABu0AAAbtAAAG7QAAB+0AAAftAAAE7QAABO0AAAPtAAAH7QAAB+0AABDtAAAH7QAAA8sAACEeAAAcsAAAJbAAAAXLLAAUgAAAFIAAAB7cAAAe3AAABssAAAbLAAAGywAAEMsAAB7JAAAeyQAAHskAAB7JAAAAAAAAAAAAAAAHDj0AB1VaAAmOQAAKHHoACqqzAAvHJgAMVWAADINzAAzjmgANHMoADSiwAA2bXQAN45oADfrqAA4ADQAOYeoADrWGAA7fEAAPHIAAD1VjAA9vkAAPz7AAD9zKAA/yPQAP9mYAEDjzABCT+gAQ4V0AEVVmABFXsAARbUoAEY5NABHQ1gASBFYAEhyDABJx2gATHNAAEyNdABOOTQAVxzMAFeHzABkV9gAAAAAAAOVgAAZXrQAG440AB3HGAAfjkwAIPKYACJ2mAAjjkAAJnVoACqqzAAru8AALHHMAC4JWAAwAAAAAAAD//let//9xxv//45MAADymAACdpgAA440AAY46AAGdWgACEvYAAqqzAAMccwADglYABAAAAA8aoAAAAAAAAEQ9AACOOgAAnroAANWgAADYKgABFwYAAT39AAFQxgABXwAAAaT6AAI45gACV8YAAngKAAMC2gAEZmqAMIAAgDCAAYAwgAKAMIADgDCABIAwgAWAMIAGAACOOgABHHMAAaqtAAI45gACxyAAA1VaAAPjkwAEAAAAAAAAAAAAAAAAAAAABuONABeOTQAAAAAADs3KAAYzDQAIEO0AEGdjAAiCswAIDpAABnT2AAS2DQADMzMABmZmAAfpQAABmZoAH64TABa4UwAEAAA=","cmsy6":"ARcAEgAAAH8ALAAPABAAEAAHAAcAAAAWcaElCwBgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAADyH6oAAANTAAAfqgAAB0IAAB+qAAAHUwAAH6oAAB+qAAAfqgAAH6oAAB+qAAAfqgAAH6oAACnMAAAHUwAAB1MAAB9kAAAfZAAAH90AAB/dAAAf3QAAH90AAB/dAAAf3QAAHyEAAB91AAAflwAAH5cAACmXAAAplwAAH5cAAB+XAAApIQAAKSEAAAfLAAAHywAAKSEAACnLAAApywAAH2QAACkhAAApIQAAD8sAAA/LAAApIQAAKcsAACnLAAAfMAAAAoAAACkwAAAUlwAAFJcAACjMAAAozAAAAcsAAAEhAAAKwAAACsAAABQwAAAH5gAAG8AAABvAAAAfwAAAH8AAAA/AAAAhsAEGErAFBAmwDQQesAkCCLAhAxiwKQMNuBEDJrABAwuwFQAVuDkFHbABARawAQQrsAEEI7A1AiCwCQMXsCUCJLgBAyewAQIOsBkEDLA9ABCwKQIRsCUAKrAlAhmwMQQTuCUCGrAdBBSAAAAUgAAAFIAAABSAAAAUgAAAD8AAAA/AAAAG7gAABu4AAAbuAAAG7gAAB+4AAAfuAAAE7gAABO4AAAPuAAAH7gAAB+4AAA/uAAAH7gAAA8sAACIfAAAcsAAAJbAAAAXMLAAUgAAAFIAAAB/dAAAf3QAABswAAAbMAAAGzAAAD8wAAB/JAAAfyQAAH8kAAB/JAAAAAAAAAAAAAAAF2hMABhL1AAgl6wAIqqsACS9lAAo44AAKvZ0ACtqgAAtCWwALWWMAC2GAAAvygwAMMUgADEvVAAxkFQAMkEsADQM1AA0upQANVVAADYpoAA2sKwAODgMADhPgAA4jdQAOJMUADl7LAA7I+wAPBU0AD2EQAA9oRQAPkTsAD9bNAA//+AAQFzUAECIbABBxwAAQ8vgAEPtrABF7OwATjjAAE5BFABbV8AAAAAAAANOgAAY9KAAG440AB3HIAAehLQAIEIAACG34AAjjkAAJaGUACjjgAAru8AALHHMACzu9AAwAAAAAAAD//j0o//9xyP//oS0AABCAAABt+AAA440AAWhlAAGOOwACEvgAAjjgAAMccAADHHMAAzu9AAQAAAAPLGAAAAAAAABXBQAAhL0AALl7AADhGAAA9CsAASBrAAFM/QABTiAAAVpDAAGgPQACEvUAAlfIAAJujQAC/h0ABEn1gDCAAIAwgAGAMIACgDCAA4AwgASAMIAFgDCABgAAhL0AAQl7AAGOOAACEvUAApezAAMccAADoS0ABAAAAAAAAAAAAAAAAAAAAAbjjQAUccAAAAAAAA0A0AAGRv0AB8JAAA3RZQAG3q0ACAwoAAa20wAEl7UAAqqrAAVVVQAGl7AAAVVVAB+7uwAVmZsABAAA","cmsy7":"ARgAEgAAAH8ALQAPAA8AEQAHAAcAAAAWTyHihQBwAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAADwIKkAAANTAAAgqQAACEIAACCpAAAIUwAAIKkAACCpAAAgqQAAIKkAACCpAAAgqQAAIKkAACvcAAAIUwAACFMAACBkAAAgZAAAIMsAACDLAAAgywAAIMsAACDLAAAgywAAICEAACB1AAAglwAAIJcAACuXAAArlwAAIJcAACCXAAArIQAAKyEAAAjcAAAI3AAAKyEAACvcAAAr3AAAIGQAACshAAArIQAAENwAABDcAAArIQAAK9wAACvcAAAgMAAAAoAAACswAAAVlwAAFZcAACncAAAp3AAAAdwAAAEhAAAM0AAADNAAABUwAAAI5gAAHNAAABzQAAAg0AAAINAAABDQAAAisAEGE7AJBAqwEQQfsA0CCbApAxmwLQMOuBUDJ7ABAwuwGQAWuD0FHrAFARewAQQssAEEI7A5AiGwDQMYsCUCJLgBAyiwAQIPsB0EDbBBABGwLQISsCUAKrAlAhqwNQQUuCUCG7AhBBWAAAAVgAAAFYAAABWAAAAVgAAAENAAABDQAAAG7QAABu0AAAbtAAAG7QAACO0AAAjtAAAE7QAABO0AAAPtAAAI7QAACO0AABDtAAAI7QAAA9wAACUeAAAdsAAAJrAAAAXcMAAVgAAAFYAAACDLAAAgywAAB9wAAAbcAAAG3AAAENwAACDaAAAg2gAAINoAACDaAAAAAAAAAAAAAAAFRRUABW25AAdlmQAH5ZsACGGJAAhhiwAJXXkACdt1AAnsRwAKWBIACllpAApdeQALBCsACzwpAAtVWQALfBsAC4TSAAwOFQAMOt4ADFFJAAyDrgAMqtsADPJJAA0X+wANGgkADSuXAA1NOQANvwIADfJlAA47MAAOSSkADn5QAA6ugAAO+BkADvmHAA8EFQAPRRkAD6iHAA+yUgAQQQkAEilnABI46QAVe6cAAAAAAADG8gAGJTAABuOOAAdxxwAHcckAB+blAAhA1QAI45AACTX3AAnnoAAK7vAACveuAAsccgAMAAAAAAAA//4lMP//ccf//3HJ///m5QAAQNUAAOOOAAE19wABjjkAAeegAAIS9wAC964AAxxyAAQAAAAPOQ4AAAAAAAAFiQAAZHAAAH35AADMkgAA53IAAQn3AAEnIAABSkcAAVbiAAFZoAABnNkAAffgAAJXxQACZ8kAAvq3AAQ1pYAwgACAMIABgDCAAoAwgAOAMIAEgDCABYAwgAYAAH35AAD78gABeesAAfflAAJ13gAC89cAA3HQAAQAAAAAAAAAAAAAAAAAAAAG444AErryAAAAAAALt44ABiR3AAeKDgAMCM4ABYHnAAgKawAG5dkABJJJAAJJJQAEkkkABaaXAAEkkgAbMzIAEoOpAAQAAA==","cmsy8":"ARgAEgAAAH8AKwAPABAAEgAHAAcAAAAWvkvICwCAAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAADuH6kAAANCAAAfqQAAB1MAAB+pAAAHQgAAH6kAAB+pAAAfqQAAH6kAAB+pAAAfqQAAH6kAACndAAAHQgAAB0IAAB9kAAAfZAAAH7sAAB+7AAAfuwAAH7sAAB+7AAAfuwAAHyEAAB91AAAflwAAH5cAACmXAAAplwAAH5cAAB+XAAApIQAAKSEAAAfcAAAH3AAAKSEAACncAAAp3AAAH2QAACkhAAApIQAAD9wAAA/cAAApIQAAKdwAACncAAAfMAAAAoAAACkwAAAUlwAAFJcAACfdAAAn3QAAAdwAAAEhAAAM0AAADNAAABQwAAAH5gAAG9AAABvQAAAf0AAAH9AAAA/QAAAhwAEGEsANBAnAFQQewBECCMAtAxnAMQMNyBkDJcAFAwrAHQAVyEEFHcAJARbAAQQqwAEEI8A9AiDAEQMXwCkCIsgBAybAAQIOwCEEC8BFABHAMQIQwCkAKMApAhjAOQQTyCkCGsAlBBSAAAAUgAAAFIAAABSAAAAUgAAAD9AAAA/QAAAG7gAABu4AAAbuAAAG7gAAB+4AAAfuAAAE7gAABO4AAAPuAAAH7gAAB+4AAA/uAAAH7gAAA9wAACQfAAAcwAAAJMAAAAXdNAAUgAAAFIAAAB+7AAAfuwAABt0AAAbdAAAG3QAAD90AAB/aAAAf2gAAH9oAAB/aAAAAAAAAAAAAAAAEnHIABLjoAAaceAAHGOoAB45AAAiACAAI+OwACQCaAAleLgAJYZAACXHQAAoYgAAKS2oACmOYAAp/xAAKmuYACx1WAAtLIgALVWAAC4W8AAuw9gAL5JoADBoMAAwiKAAMN8wADEcoAAy7yAAM60wADSXiAA048AANdzoADZdcAA3iMAAN594ADiq4AA53zgAOgp4ADxyAABDfygARABAAFDt6AAAAAAAAuFIABgw8AAbjjgAHTjwAB3HIAAe8TgAIErYACOOQAAkCkAAJqrAACrKiAAru7gALHHIADAAAAAAAAP/+DDz//048//9xyP//vE4AABK2AADjjgABApAAAY46AAGqsAACEvYAArKiAAMccAADHHIABAAAAA9HrgAAAAAAAATYAAAb4AAAbn4AAHjkAADa5AAA7DoAARbEAAEsJgABSD4AAVRWAAFiRAABmlAAAeOQAAJXxgACYrQAAvguAAQmaIAwgACAMIABgDCAAoAwgAOAMIAEgDCABYAwgAYAAHjkAADxyAABaqwAAeOQAAJcdAAC1VgAA048AAQAAAAAAAAAAAAAAAAAAAAG444AEQAQAAAAAAALJCwABoqUAAdRsAAL/FoABkZQAAaljAAFpYwABI44AAIAAAAEAAAABlVWAAEAAAAXzMwAEjM0AAQAAA==","cmsy9":"ARcAEgAAAH8AKwAPAA8AEgAHAAcAAAAWqbGQygCQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNU1kAAAAAAAAAAAAAAAAAAAAAAADsH6gAAANCAAAfqAAAB1MAAB+oAAAHQgAAH6gAAB+oAAAfqAAAH6gAAB+oAAAfqAAAH6gAACncAAAHQgAAB0IAAB9kAAAfZAAAH7sAAB+7AAAfuwAAH7sAAB+7AAAfuwAAHyEAAB91AAAfhgAAH4YAACmGAAAphgAAH4YAAB+GAAApIQAAKSEAAAfcAAAH3AAAKSEAACncAAAp3AAAH2QAACkhAAApIQAAD9wAAA/cAAApIQAAKdwAACncAAAfMAAAApAAACkwAAAUhgAAFIYAACfcAAAn3AAAAdwAAAEhAAAM0AAADNAAABQwAAAH5wAAG9AAABvQAAAf0AAAH9AAAA/QAAAhwAEGEsARBAnAFQQewA0CCMAtAxnAMQMNyRkDJcAFAwrAHQAVyUEFHcAJARbAAQQqwAEEI8A9AiDADQMXwCkCIskBAybAAQIOwCEEC8BFABHAMQIQwCkAKMApAhjAOQQTySkCGsAlBBSQAAAUkAAAFJAAABSQAAAUkAAAD9AAAA/QAAAG7QAABu0AAAbtAAAG7QAAB+0AAAftAAAE7QAABO0AAAPtAAAH7QAAB+0AAA/tAAAH7QAAA9wAACQeAAAcwAAAJMAAAAXcNAAUkAAAFJAAAB+7AAAfuwAABtwAAAbcAAAG3AAAD9wAAB/aAAAf2gAAH9oAAB/aAAAAAAAAAAAAAAAEeBkABJFgAAZlIAAG2hIAB08AAAg44AAIrdAACK5gAAkA5QAJArAACSLAAAnGRwAJ9TwACgygAAoc8AAKRrQACscpAAr1wgAK9oAACyVFAAtTrAALd+QAC7gEAAvIBwAL3z4AC+BgAAxUrgAMg7kADLM+AAzKQAAND6cADSNLAA1t9QANeS4ADbQgAA3v0AAN+2sADp4AABBHlwAQccAAE6qkAAAAAAAArPIABfTpAAbjjgAHMpAAB3HHAAeTVwAH5jkACNDJAAjjkAAJe0AACm83AAru7gALHHIADAAAAAAAAP/99On//zKQ//9xx///k1f//+Y5AADQyQAA444AAXtAAAGOOQACEvcAAm83AAMccgAEAAAAD1MOAAAAAAAAGCIAAC1HAAB08AAAdlIAAOYLAADv8AABI+QAATAOAAFGqwABUlwAAWj8AAGYVQAB08AAAlfFAAJewAAC9jUABBqMgDCAAIAwgAGAMIACgDCAA4AwgASAMIAFgDCABgAAdPAAAOngAAFe0AAB08AAAkiwAAK9oAADMpAABAAAAAAAAAAAAAAAAAAAAAbjjgAQccAAAAAAAApZCwAGjiQABzJ8AAraAAAFbesAB6+VAAbMBwAEl7QAAcccAALQngAFoTQAAOOOACp9JwAQLYQABAAA","cmtcsc10":"AMIAEgAAAH8AAwAQAA0AAQACAAAAAAAH0zcZrQCgAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABkNNVENTQwAAAAAAAAAAAAAAAAAAAADqAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAABPAAAATwAAAFgAAABYAAAAdAAAAHQAAABwAAAAdAAAAGwAAAB0AAAAQsAAAJgAAABYAAAAWAAAAGEAAAB0AAAAdAAAAHkAAABKQAAAdABAAHQAAAB0AAAAfYAAAH2AAAB0AAAAdAAAAH1AAAB9QAAAXAAAAGSAAABGgAAAZIAAAEQAAAB9QAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAFQAAABWgAAAaMAAAFBAAABowAAAdABAQHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdoAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAH1AAAB9QAAAfUAAAHQAAABBwAAAdAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABaAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAfUAAAH1AAAB9QAAAdAAAAHQAAAAAAAAAAhmYgAQzMMAAAAAAAIAAAADgtgABjjjAAamZQAG444AB446AAhVVgAIccgACH0mAAjjjgAJDIMACQ46AAnHHQAKqqsACxxyAAAAAP/830j//rYK//8ccgAA444AAVVTAAFVVQABha0AAbBbAAHHHQACOOMAAxxzAAOOOgAAAACAYAAOgGAADwAAAAAACGZiAAAAAAAAAAAABuOOABDMwwAIZmI=","cmtex10":"AMAAEgAAAH8AAgAQAA4AAQAAAAAAAAAH3+o8eACgAAASVGVYIGV4dGVuZGVkIEFTQ0lJAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNVEVYAAAAAAAAAAAAAAAAAAAAAADqAWMAAAHAAAABMAAAAc0AAAFAAAABMAAAAaUAAAEwAAABwAAAAT0AAAHAAAABwAAAAYQAAAGEAAABMAAAAcAAAAGlAAABpQAAAUAAAAFAAAABwAAAAcAAAAGEAAABtgAAASEAAAEhAAAB6AAAAWMAAAHXAAAB1wAAAVIAAAFAAAABAAAAAcAAAAHAAAABwAAAAfoAAAH6AAABwAAAAcAAAAH5AAAB+QAAAXAAAAGEAAABHAAAAYQAAAEQAAAB+QAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAEwAAABPAAAAaUAAAEhAAABpQAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcwAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAH5AAAB+QAAAfkAAAHAAAABCwAAAcAAAAEwAAABwAAAATAAAAHAAAABMAAAAcAAAAE9AAABwAAAAcAAAAHNAAABwAAAAcAAAAEwAAABMAAAATAAAAE9AAABPQAAATAAAAEwAAABkAAAATAAAAEwAAABMAAAATAAAAE9AAABMAAAAfkAAAH5AAAB+QAAAcAAAAHNAAAAAAAAAAhmYgAAAAAAAgAAAAamZQAG444AB9KAAAfbAgAIJ9IACFVWAAh9JgAI23IACOOOAAmVVQAJxx0AChgrAApEOwALHHIAAAAA//zfSP/+E+X//mC1//62Cv//HHL//844AABRDgAAfR4AAVVTAAFVVQABha0AAjjjAAOOOgAAAAAAAAAAAAhmYgAAAAAAAAAAAAbjjgAQzMMACGZi","cmtex8":"AMAAEgAAAH8AAgAQAA4AAQAAAAAAAAAH30PKcwCAAAASVGVYIGV4dGVuZGVkIEFTQ0lJAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNVEVYAAAAAAAAAAAAAAAAAAAAAADuAWMAAAHAAAABMAAAAc0AAAFAAAABMAAAAaUAAAEwAAABwAAAAT0AAAHAAAABwAAAAYQAAAGEAAABMAAAAcAAAAGlAAABpQAAAUAAAAFAAAABwAAAAcAAAAGEAAABtgAAASEAAAEhAAAB6AAAAWMAAAHXAAAB1wAAAVIAAAFAAAABAAAAAcAAAAHAAAABwAAAAfoAAAH6AAABwAAAAcAAAAH5AAAB+QAAAXAAAAGEAAABHAAAAYQAAAEQAAAB+QAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAEwAAABPAAAAaUAAAEhAAABpQAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcwAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAH5AAAB+QAAAfkAAAHAAAABCwAAAcAAAAEwAAABwAAAATAAAAHAAAABMAAAAcAAAAE9AAABwAAAAcAAAAHNAAABwAAAAcAAAAEwAAABMAAAATAAAAE9AAABPQAAATAAAAEwAAABkAAAATAAAAEwAAABMAAAATAAAAE9AAABMAAAAfkAAAH5AAAB+QAAAcAAAAHNAAAAAAAAAAiACAAAAAAAAiceAAa0ngAG444AB9J+AAfpOgAIMcoACFVWAAiIJAAI23AACPHIAAmjjgAJxxwACiZkAApSdAALHHIAAAAA//ztgv/+Ih7//mqu//7BCP//Kqz//9xyAABfSAAAi1gAAVVUAAFVVgABk+QAAjjkAAOOOAAAAAAAAAAAAAiACAAAAAAAAAAAAAbjjgARABAACIAI","cmtex9":"AL8AEgAAAH8AAgAQAA0AAQAAAAAAAAAH36ROAACQAAASVGVYIGV4dGVuZGVkIEFTQ0lJAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNVEVYAAAAAAAAAAAAAAAAAAAAAADsAWMAAAHAAAABMAAAAcwAAAFAAAABMAAAAaUAAAEwAAABwAAAATwAAAHAAAABwAAAAYQAAAGEAAABMAAAAcAAAAGlAAABpQAAAUAAAAFAAAABwAAAAcAAAAGEAAABtgAAASEAAAEhAAAB6AAAAWMAAAHXAAAB1wAAAVIAAAFAAAABAAAAAcAAAAHAAAABwAAAAfkAAAH5AAABwAAAAcAAAAH5AAAB+QAAAXAAAAGEAAABGwAAAYQAAAEQAAAB+QAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAEwAAABOwAAAaUAAAEhAAABpQAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcsAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAH5AAAB+QAAAfkAAAHAAAABCgAAAcAAAAEwAAABwAAAATAAAAHAAAABMAAAAcAAAAE8AAABwAAAAcAAAAHMAAABwAAAAcAAAAEwAAABMAAAATAAAAE8AAABPAAAATAAAAEwAAABkAAAATAAAAEwAAABMAAAATAAAAE8AAABMAAAAfkAAAH5AAAB+QAAAcAAAAHMAAAAAAAAAAhmYAAAAAAAAgl8AAav4gAG444AB9KAAAfkgAAIJ9AACFVVAAh9JQAI23AACO0LAAme0gAJxxwACiGpAApNvAALHHIAAAAA//zoxf/+HWT//mC0//62Cf//Je7//9e1AABajAAAhqAAAVVVAAGPKwACOOQAA445AAAAAAAAAAAACGZgAAAAAAAAAAAABuOOABDMwAAIZmA=","cmti10":"AXIAEgAAAH8AKQAQAAoAOgBNAAkAAAAH/QAnOgCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVEkAAAAAAAAAAAAAAAAAAAAAAADqEsCoACDAAAAcwFQAFsAAABTAxAAawNAAGMCUABzAhAAYwBwAHMCEABjAaAAR2OUID9hsABDYbAAi2GwAJNhsAAIwOAADOAwAC9AAAAvQYAALgEAAC9CAAAtgbAAh0AAACAYAAA7YdAAYMDAAGDAwAAtVTAAjwJQAJsCUABziVAABMAEPAtClFwzQLAAg1yQAHtAAACDzsAAc0GAAAtClEgb5zAAG+QgAC/DAABxkCAACGAAABDAFFQIQAAAL+cwAC5CsAAuQrAALkKwAC5CsAAuYrAALkKwAC5CsAAuYrAALkKwAC5CsAAIwGAACOBgAAkg0ABwhJAALSAAAC9CdGBzQXAAawAEwF8BoABjAvAAbwFUrFcCUABPAqRofwEQAGsDQAAXAyAANwLQAHcC9IBLAAUElwNAAGsDQABzAVSsVwGkqHMhUABnAETAPwJAAGMCpJBrA0AAawNkaJ8DZKhrAySAawOElEcC8AAL53AAM0NQAAvl4AAvQKAACsIwAAtClEQswOAAI0CFFCDAVRQvQbRkIMDFFAtjlAAg4SAAL0DgAAqBkAAKouAAI0HwAAdBtGSAwOAAPMDlMCzAhRQs4IUUIOEgABzB9RQYwPAADcFgADjA4AAgwfAAUMH0ZCTCYAAo4SAAGMKAACzBRFigwUAAL0JwAC7CIAAuwcAAAAAAAAAQWwAAE6BoABVDGAAW5cwAGKzoABorNAAa/IwAHXCYAB2wVAAfE0wAILYAACDsoAAhmYwAIli0ACP7aAAlnhgAJ0DMACgkWAApxwwAKoY0ACtpwAAsTUwALQx0AC3LmAAurygAL5K0ADBR2AAxEQAAMTVoADE41AAxgsgANFZoADUz4AA4bSgAOH9YADk+gAA5YugAPwooAD/ttABBbAAAAAAAAAbBbAAXeuAAG444ACAAAAAhxyAAI/JUACddeAAoOOgAKT6UACnxaAAqvjQAK7u4ACxxyAAu2CwAMAAAAAAAA//3euAAAxx0AAOOOAADoGgABjjoAArjjAAMccAADHHIABAAAAAAAAAAAc8UAAJdTAACZCAAAnnAAAOeKAADuXgAA9TIAAQKOAAEPAgABEDgAAR0iAAEzxQABNXsAATo4AAFQNgABU8YAAWVDAAFqYgABeJsAAXkoAAGBIwABhI0AAYkaAAGNFgABoV4AAaQgAAGnQgABrQgAAa6lAAGvOAABuOMAAbqaAAHHHQAB2ooAAeFeAAHqYgAB7KgAAe06AAH1wwAB93gAAfyYAAIg/gACKz0AAi6mAAI+lQACUJUAAlMOAAJi/QACcnUAAodlAAKXUwACn0sAArItAALwEgADAAAAAxnwAANkIABpAAwAZgALAGwADQAngAAAP4AAACGAAAApgACAXYAAAGkADgBsAA8AJ4AAAD+AAAAhgAAAKYAAgF2AAABsgAGATIACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD6AbIAEAG+ABQBlgAUAdYAFAHKABQBhgAUAQYAGAE+ABwBDgAcAR4AHgFGABwB5gAUAZYAFAG+ABQBygAUAYYAFAHWABYBBgAUAWIAHAFeABwBBgAcAVoAHgFmABwBugAcAbIAHAHKABwB1gAcAbYAHAHSABwBpgAcAQ4AHAE+ABwBHgAcAaIAHAGKABwBVgAcAa4AHAHaABwB3gAcAUYAHAFSABQBZgAUAVoAGAFeABgBlgAgAYYAIAG+ACABkgAgAY4AIAGeACIBxgAiAJ4AGAAGrPf/76UD/+t8DAAGiswAA0Vr//sX6//5dTf//l1P//y6mAAQAAAAFuXMAAnQNAAGiswAG444AEFsAAAGisw==","cmti12":"AXMAEgAAAH8AKQAQAAoAOwBNAAkAAAAHm7uIQADAAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVEkAAAAAAAAAAAAAAAAAAAAAAADmEsCsACDAAAAcwFQAFsAAABTAyAAawMwAGMCgABzAiAAYwBwAHMCIABjAbAAR2OkID9h0ABDYdAAi2HQAJNh0AAIwOAADOAwAC9AAAAvQYAALkEAAC9CEAAtwcAAh0AAACQYAAA3YfAAYMDQAGDA0AAtVUAAjwKAAJsCgABziVAABMAEPAtClFwvQKAAg1yQAHtAAACD0uAAc0GAAAtClEgb51AAG+QgAC/DEABxjCAACGAAABDAFFQIQAAAL+dQAC6C0AAugtAALoLQAC6C0AAuotAALoLQAC6C0AAuotAALoLQAC6C0AAIwFAACOBQAAkgwABwhJAALSAAAC9CpGBzQXAAawAEwF8BsABjAwAAbwFUrFcCgABPArRofwEgAGsDMAAXA0AAMwLAAHcDBIBLAAUElwMwAGsDMABzAVSsVwG0qHMhUABnAETAOwJgAGMCtJBrAzAAawN0aJ8DdKhrA0SAawOUlEcDAAAL54AAL0NgAAvl4AAvQLAACsIwAAtClEQswOAAJ0CFFCTAZRQvQdRkJMDVFAtjpAAk4RAAL0DgAAqBkAAKovAAJ0IAAAdB1GSAwOAAOMDlMCzAhRQs4IUUJOEQACDCBRQcwPAADgFgADTA4AAkwgAAUMIEZCTCUAAo4RAAGMJwACzBNFigwTAAL0KgAC7CQAAuwaAAAAAAAAAQAAwAEzNAABTM3AAWZnQAGB5sABmZrAAZmbAAGmZ8ABzM4AAeZnwAIAAUACDcEAAhmbAAIzNMACMzUAAkzOwAJmaAACdCfAAo3BQAKZm0ACp1sAArUawALA9MACzM7AAtqOQALoTgAC9CgAAwACAAMB58ADBVcAAwbiAAMzNUADQmEAA3M2AAN0KEADgALAA4HoAAPajwAD6E7ABAACwAAAAAAAY45AAXGQQAG448ACAAAAAhxyAAIzNAACQWwAAnXXwAKDjkACl9cAAqefAAK7u8ACxxxAAu2CwAMAAAAAAAA//3GQQAAxxwAAMzQAADjjwABjjkAArjjAAMccAADHHEABAAAAAAAAAAAdgwAAJmZAACajAAApmUAAOZnAADsFwAA93gAAPrIAAELKQABDaUAARJ8AAEtgwABMkAAATJBAAFSfQABVgsAAWdZAAFtCAABduMAAXfxAAGDaQABhbAAAYtgAAGT6AABmd8AAaHtAAGmZwABp9EAAajEAAGxfQABszEAAbjkAAG8NAAByWQAAdUhAAHa0QAB7BgAAe7vAAHxyAAB8rkAAfSfAAH6TwACJewAAiqpAAItgwACMzMAAko7AAJVVQACZmUAAnQNAAKEvAACiIgAApmZAAKyoQAC7vAAAwAAAAMX5QADYLcAaQAMAGYACwBsAA0AJ4AAAD+AAAAhgAAAKYAAgF2AAABpAA4AbAAPACeAAAA/gAAAIYAAACmAAIBdgAAAbIABgEyAAoBgAFwAJwAiAD+AA4AhgAOALQB7gC0AfIBgADyAYAA+gGyABABvgAUAZYAFAHWABQBygAUAYYAFAEGABgBPgAcAQ4AHAEeAB4BRgAcAeYAFAGWABQBvgAUAcoAFAGGABQB1gAWAQYAFAFiABwBXgAcAQYAHAFaAB4BZgAcAboAHAGyABwBygAcAdYAHAG2ABwB0gAcAaYAHAEOABwBPgAcAR4AHAGiABwBigAcAVYAHAGuABwB2gAcAd4AHAFGABwBUgAUAWYAFAFaABgBXgAYAZYAIAGGACABvgAgAZIAIAGOACABngAiAcYAIgCeABgABp9T/+//9//r8MQABmZsAAMzN//7MzP/+ZmX//5mZ//8zMwAEAAAABZmdAAJmaAABmZsABuOPABAACwABmZs=","cmti7":"AXUAEgAAAH8ALQAQAAkAOgBNAAkAAAAHdH1cygBwAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVEkAAAAAAAAAAAAAAAAAAAAAAADwFcCoACXAAAAiwFgAGsAAABjAyAAewMQAHMCUACLAhAAcwCAAIsCEABzAeAAW1+UIEtdgABPXYAAo12AAKddgAAIwTAAENwwADdAAAA3QRAANkDgADdCAAA1gfAAk0AAACgYAABDXdAAcMDQAHDA0AA1UUAAmwJQAKsCUACLiWAABMAEPAtCZFw3QGAAl1zAAH9AAACXzsAAi0EQAAtCZEgf40AAH+BAADfDAACJ1EAACFwAABTAFFQIQAAAN+NAADaC0AA2gtAANoLQADaC0AA2ntAANoLQADaC0AA2ntAANoLQADaC0AAIwFAACNxQAAkcsACIhMAANRwAADdCdGCLQXAAewAEwG8B4ABzAuAAgwFkrGcCUABfAqRojwDwAHsDEAAbAzAAOwKQAIcC5IBXAAUEnwMQAHsDEACLAWSsZwHkqIsdYAB3ACTARwJQAHMCpJB7AxAAewNkaK8DZKh7AzSAewOElFMC4AAL43AAN0NQAAvhsAA3QJAACwIwAAtCZEQ0wTAAK0ClFCjAdRQ3QYRkKMDVFA9flAAo3SAAN0EwAArBUAAK3vAAK0IgAAdBhGSUwTAARME1MDTApRQ03KUUKN0gACTCJRQcwQAAEgGQADzBMAAowiAAYMIkZCzCgAAw3SAAIMKwADTBxFiwwcAAN0JwADcCQAA3AaAAAAAAAAATz0gAF5GIABeRlAAZcqwAG1PIAB0a7AAfFggAHxYUACAGnAAi2EgAIthUACS5bAAmmogAJ34cACh7rAAoe7gAKlzIACtg5AAtQgAALh8IAC8CnAAvIxwAMOPAADHhSAAyxNwAM6hsADSmAAA1o4gANoccADdqrAA4VYAAOGhAADlL1AA5ZcgAOdeUAD0L3AA9KAgAQc3cAEKxbABD4vgARNOIAElSXABKNewATTUUAAAAAAAHXXgAGJTAABuOOAAgAAAAIcccACSsQAAmjYAAJ114ACg45AApPpQAKggkACtj+AAsccgALtg4ADAAAAAAAAP/+JTAAAMceAADjjgABjjkAAaNgAAK45QADHHIABAAAAAAAAAAAZCkAAGfSAABuHgAAh7cAAMN1AADELgAAyFUAAOWVAADwWwAA8ssAAQqQAAERAgABKqsAATPpAAE2cAABQJsAAV5FAAFergABYJcAAWTHAAFqDgABcYcAAXl+AAF8VwABfMAAAX8wAAGCWQABiMUAAY9wAAGUhQABllkAAZcpAAG3ggABuOUAAbtVAAHANQAByysAAdGuAAHWjgAB9QkAAfy7AAIHUAACDjsAAg9wAAIboAACQ3IAAkZLAAJLlQACXkIAAmeJAAJ/lwACh7cAAq8QAAL34AADAAAAAyf7AAN7iQBpAAwAZgALAGwADQAngAAAP4AAACGAAAApgACAXYAAAGkADgBsAA8AJ4AAAD+AAAAhgAAAKYAAgF2AAABsgAGATIACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD6AbIAEAG+ABQBlgAUAdYAFAHKABQBhgAUAQYAGAE+ABwBDgAcAR4AHgFGABwB5gAUAZYAFAG+ABQBygAUAYYAFAHWABYBBgAUAWIAHAFeABwBBgAcAVoAHgFmABwBugAcAbIAHAHKABwB1gAcAbYAHAHSABwBpgAcAQ4AHAE+ABwBHgAcAaIAHAGKABwBVgAcAa4AHAHaABwB3gAcAUYAHAFSABQBZgAUAVoAGAFeABgBlgAgAYYAIAG+ACABkgAgAY4AIAGeACIBxgAiAJ4AGAAHCpf/7DC7/+eK5AAHhIAAA8JD//pcn//4e4P//h7f//w9wAAQAAAAG1PIAAtGwAAHhIAAG444AE01FAAHhIA==","cmti8":"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","cmti9":"AXEAEgAAAH8AKQAQAAkAOgBNAAkAAAAHvGqRuQCQAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVEkAAAAAAAAAAAAAAAAAAAAAAADsEsCoACDAAAAdwFQAFsAAABTAxAAawMwAGMCUAB3AiAAYwBwAHcCIABjAaAAR1+UID9dsABDXbAAi12wAJNdsAAIwOAADNxAAC9AAAAvQXAALgEAAC9CAAAtgcAAh0AAACAYAAA7XfAAYMDQAGDA0AAtVTAAjwJQAJsCUAB3iVAABMAEPAtChFwzQKAAg1ywAHNAAACDzsAAd0FwAAtChEgb40AAG+AgAC/DAAB1kCAACFwAABDAFFQIQAAAL+NAAC5CsAAuQrAALkKwAC5CsAAuXrAALkKwAC5CsAAuXrAALkKwAC5CsAAIwGAACNxgAAkcwAB0hLAALRwAAC9CdGB3QYAAawAEwF8BoABjAuAAbwFUrFcCUABPAqRofwEQAGsDMAAXAyAANwLQAHsC5IBLAAUElwMwAGsDMAB3AVSsVwGkqHcdUABnADTAPwJQAGMCpJBrAzAAawNkaJ8DZKhrAySAawOElEcC4AAL43AAM0NQAAvh4AAvQJAACsJAAAtChEQswOAAI0CFFCDAVRQvQbRkIMDVFAtflAAg3SAAL0DgAAqBkAAKnvAAI0IQAAdBtGSAwOAAPMDlMCzAhRQs3IUUIN0gABzCFRQYwPAADcFgADjA4AAgwhAAUMIUZCTCYAAo3SAAGMKQACzBRFigwUAAL0JwAC7CMAAuwdAAAAAAAAAQylQAFCYAABXT1AAXgawAGVLkABrdVAAbtEAAHjkAAB5SSAAf5tQAIZSsACHHOAAifUgAI0KAACTwVAAmniwAKEwAACk0nAAq4nAAK6esACyQSAAteOQALj4cAC8DVAAv6/AAMNSQADGZyAAyTywAMl8AADKCZAAy01AANbqsADZ1wAA57UAAOf7wADrELAA655AAQLZIAEGe5ABDKVQAAAAAAAbp5AAX06QAG444ACAAAAAhxxwAJEvcACddeAAoOOQAKT6UACnu3AAq0mwAK7u4ACxxyAAu2CwAMAAAAAAAA//306QAAxxwAAOOOAAEJgAABjjkAArjkAAMccgAEAAAAAAAAAABw/AAAlIsAAJSyAACWHgAA4fkAAOhLAADyaQABAg4AAQ1uAAEQbAABEcUAAS9nAAE1aQABQ/UAAU1uAAFQ/AABXEkAAW0JAAF4GQABe/AAAX5bAAGDKQABhLwAAYZSAAGVcgABoVcAAaRXAAGl7AABptQAAaikAAGpFQABt04AAbjkAAHEVQAB1jwAAdyOAAHk0gAB7p4AAfAyAAH2hAAB/mwAAhqMAAIodAACKRUAAi3UAAJQRwACUxQAAl7QAAJwhAAChgIAAo45AAKUiwACsZ4AAvF3AAMAAAADHHQAA2hMAGkADABmAAsAbAANACeAAAA/gAAAIYAAACmAAIBdgAAAaQAOAGwADwAngAAAP4AAACGAAAApgACAXYAAAGyAAYBMgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPoBsgAQAb4AFAGWABQB1gAUAcoAFAGGABQBBgAYAT4AHAEOABwBHgAeAUYAHAHmABQBlgAUAb4AFAHKABQBhgAUAdYAFgEGABQBYgAcAV4AHAEGABwBWgAeAWYAHAG6ABwBsgAcAcoAHAHWABwBtgAcAdIAHAGmABwBDgAcAT4AHAEeABwBogAcAYoAHAFWABwBrgAcAdoAHAHeABwBRgAcAVIAFAFmABQBWgAYAV4AGAGWACABhgAgAb4AIAGSACABjgAgAZ4AIgHGACIAngAYAAa9p//vNa//6vFkAAa3VAADW6//+vaD//lIr//+Ui///KRUABAAAAAXgawAChMAAAa3VAAbjjgAQylUAAa3V","cmtt10":"AMAAEgAAAH8AAgAQAAwAAQACAAAAAAAH3+o8eACgAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVFQAAAAAAAAAAAAAAAAAAAAAAADqAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAABOwAAATsAAAFQAAABWwAAAdAAAAHQAAABwAAAAdAAAAGwAAAB0AAAAQoAAAHQAAABUAAAAVAAAAGIAAAB0AAAAdAAAAHkAAABKAAAAdABAAHQAAAB0AAAAfYAAAH2AAAB0AAAAdAAAAH1AAAB9QAAAWAAAAFyAAABGQAAAXIAAAEQAAAB9QAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAFQAAABWQAAAaMAAAFBAAABowAAAdABAQHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdkAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAH1AAAB9QAAAfUAAAHQAAABBwAAAdAAAAFQAAAB0AAAAVAAAAHQAAABUAAAAdAAAAFbAAAB0AAAAdAAAAHbAAAB0AAAAdAAAAFQAAABUAAAAVAAAAFbAAABWwAAAVAAAAFQAAABkAAAAVAAAAFQAAABUAAAAVAAAAFbAAABUAAAAfUAAAH1AAAB9QAAAdAAAAHQAAAAAAAAAAhmYgAAAAAAAgAAAAOC2AAGOOMABqZlAAbjjgAIVVYACH0mAAiqqwAI23IACOOOAAkMgwAJDjoACccdAAqqqwALHHIAAAAA//zfSP/+tgr//xxyAADjjgABVVMAAVVVAAGFrQABxx0AAjjjAAMccwADjjoAAAAAgGAADoBgAA8AAAAAAAhmYgAAAAAAAAAAAAbjjgAQzMMACGZi","cmtt12":"AMEAEgAAAH8AAgAQAA0AAQACAAAAAAAH34a1VADAAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVFQAAAAAAAAAAAAAAAAAAAAAAADmAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB1AAAAdQAAAHQAAABPAAAATwAAAFQAAABXAAAAdAAAAHQAAABwAAAAdAAAAGwAAAB0AAAAQsAAAHQAAABUAAAAVAAAAGJAAAB0AAAAdAAAAHlAAABKQAAAdABAAHQAAAB1AAAAfcAAAH3AAAB0AAAAdAAAAH2AAAB9gAAAWAAAAFyAAABGgAAAXIAAAEQAAAB9gAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAFQAAABWgAAAZMAAAFBAAABkwAAAdABAQHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdoAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAH2AAAB9gAAAfYAAAHQAAABCAAAAdAAAAFQAAAB0AAAAVAAAAHQAAABUAAAAdAAAAFcAAAB0AAAAdAAAAHcAAAB0AAAAdAAAAFQAAABUAAAAVAAAAFcAAABXAAAAVAAAAFQAAABoAAAAVAAAAFQAAABUAAAAVAAAAFcAAABUAAAAfYAAAH2AAAB9gAAAdAAAAHQAAAAAAAAAAg7vAAAAAAAAc44AAOEvQAGOOMABpzpAAbjjwAIVVcACGrgAAiqrAAI2hQACNtxAAj+GQAJDjkACcccAAqqqwALHHEAAAAA//zVzP/+o8P//xL3/////QAA448AAVVTAAFVVQABfDAAAccdAAI45AADHHMAA445AAAAAIBgAA6AYAAPAAAAAAAIO7wAAAAAAAAAAAAG448AEHd4AAg7vA==","cmtt8":"AMAAEgAAAH8AAgAQAAwAAQACAAAAAAAH30PKcwCAAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVFQAAAAAAAAAAAAAAAAAAAAAAADuAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAABOwAAATsAAAFQAAABWwAAAdAAAAHQAAABsAAAAdAAAAHAAAAB0AAAAQoAAAHQAAABUAAAAVAAAAGIAAAB0AAAAdAAAAHkAAABKAAAAdABAAHQAAAB0AAAAfYAAAH2AAAB0AAAAdAAAAH1AAAB9QAAAWAAAAFyAAABGQAAAXIAAAEQAAAB9QAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAFQAAABWQAAAaMAAAFBAAABowAAAdABAQHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdkAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAH1AAAB9QAAAfUAAAHQAAABBwAAAdAAAAFQAAAB0AAAAVAAAAHQAAABUAAAAdAAAAFbAAAB0AAAAdAAAAHbAAAB0AAAAdAAAAFQAAABUAAAAVAAAAFbAAABWwAAAVAAAAFQAAABkAAAAVAAAAFQAAABUAAAAVAAAAFbAAABUAAAAfUAAAH1AAAB9QAAAdAAAAHQAAAAAAAAAAiACAAAAAAAAiceAAOAAAAGOOQABrSeAAbjjgAIVVYACIgkAAiqqgAI23AACPHIAAkOOAAJIiAACcccAAqqqgALHHIAAAAA//ztgv/+wQj//yqsAADjjgABVVQAAVVWAAGT5AABxxwAAjjkAAMccgADjjgAAAAAgGAADoBgAA8AAAAAAAiACAAAAAAAAAAAAAbjjgARABAACIAI","cmtt9":"AL8AEgAAAH8AAgAQAAsAAQACAAAAAAAH36ROAACQAAATVGVYIHR5cGV3cml0ZXIgdGV4dAAAAAAAAAAAAAAAAAAAAAAAAAAABENNVFQAAAAAAAAAAAAAAAAAAAAAAADsAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAABOgAAAToAAAFQAAABWgAAAdAAAAHQAAABsAAAAdAAAAHAAAAB0AAAAQkAAAHQAAABUAAAAVAAAAGHAAAB0AAAAdAAAAHkAAABJwAAAdABAAHQAAAB0AAAAfUAAAH1AAAB0AAAAdAAAAH1AAAB9QAAAWAAAAFyAAABGAAAAXIAAAEQAAAB9QAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAFQAAABWAAAAaMAAAFBAAABowAAAdABAQHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdgAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAH1AAAB9QAAAfUAAAHQAAABBgAAAdAAAAFQAAAB0AAAAVAAAAHQAAABUAAAAdAAAAFaAAAB0AAAAdAAAAHaAAAB0AAAAdAAAAFQAAABUAAAAVAAAAFaAAABWgAAAVAAAAFQAAABkAAAAVAAAAFQAAABUAAAAVAAAAFaAAABUAAAAfUAAAH1AAAB9QAAAdAAAAHQAAAAAAAAAAhmYAAAAAAAAgl8AAOBlQAGOOQABq/iAAbjjgAIVVUACH0lAAiqqwAI23AACO0LAAkOOQAJHHAACcccAAqqqwALHHIAAAAA//zoxf/+tgn//yXuAADjjgABVVUAAY8rAAHHHAACOOQAAxxyAAOOOQAAAACAYAAOgGAADwAAAAAACGZgAAAAAAAAAAAABuOOABDMwAAIZmA=","cmu10":"AT8AEgAAAH8AKQAQAAoABwBNAAkAAAAHEyBQ4gCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NNVQAAAAAAAAAAAAAAAAAAAAAAAADqFMAAACHAAAAfwAAAGcAAABfAAAAdwAAAG8AAAB/AAAAbwAAAH8AAABvAAAAT2BkIEdgUABLYFAAi2BQAJNgUAAIwFAAEOAAADdAAAA3QAAANkAAADdAAAA1gAAAd0AAACgYAABDYAAAbMAAAGzAAAA1VAAAjwAAAJsAAAB/iAAABMAEPAtABFw3QAAAh1wAAFdAAACHzAAAf0AAAAtABEgf5AAAH+QAADfAAAB90AAACGAAABTABFQIQAAAN+QAADaAAAA2gAAANoAAADaAAAA2oAAANoAAADaAAAA2oAAANoAAADaAAAAIwAAACOAAAAkgAAB8hAAANSAAADdABGB/QAAAdwAEwGsAAABvAAAAewAErGMAAABbAARogwAAAHcAAAAbAAAAOwAAAH8ABIBTAAUElwAAAHcAAAB/AASsYwAEqH8gAABzAATARwAAAG8ABJB3AAAAdwAkaJ8AJKh3AASAdwA0lE8AAAAL5AAAN0AAAAvkAAA3QAAACsAAAAtABEQ0wFAAK0AFFCjABRQ3QFRkKMAFFA9gZAAo4AAAN0BQAArAUAAK4AAAK0AAAAdAVGSEwFAARMBVMDTABRQ04AUUKOAAACTABRQcwAAAEgBQADzAUAAowAAAXMAEZCzAUAAw4AAAIMAQADTARFigwEAAN0AAADbAAAA2wAAAAAAAAAARxxgAFVVUABVVWAAXHHQAGOOMABqqqAAcccgAHHHMAB1VWAAgAAAAIIiMACHHIAAjjjgAJHHIACVVWAAlVWAAJxx0ACjjjAAqqqwAK444ACxxyAAtVVgALjjoAC8cdAAwAAAAMOOUADHHIAAyqqwAM444ADRxzAA1VVgANccgADjjlAA9VVQAPVVYAD444AA+OOgARHHMAEVVWABHHHQAAAAAAAbBbAAXeuAAG444ACAAAAAhxyAAJFZ0ACVVWAAnXXgAKDjoACk+lAAqhUwAK7u4ACxxyAAu2CwAMAAAAAAAA//3euAAAxx0AAOOOAAFVVgABjjoAArjjAAMccAADHHIABAAAAAAAAAAAMzMAADjjAABmZgAAccgAAKT7AACqqwBpAAwAZgALAGwADQAngAAAP4AAACGAAAApgACAXYAAAGkADgBsAA8AJ4AAAD+AAAAhgAAAKYAAgF2AAABsgAGATIACgGAAXAAnACIAP4ADgCGAA4AtAHuALQB8gGAAPIBgAD6AbIAEAG+ABQBlgAUAdYAFAHKABQBhgAUAQYAGAE+ABwBDgAcAR4AHgFGABwB5gAUAZYAFAG+ABQBygAUAYYAFAHWABYBBgAUAWIAHAFeABwBBgAcAVoAHgFmABwBugAcAbIAHAHKABwB1gAcAbYAHAHSABwBpgAcAQ4AHAE+ABwBHgAcAaIAHAGKABwBVgAcAa4AHAHaABwB3gAcAUYAHAFSABQBZgAUAVoAGAFeABgBlgAgAYYAIAG+ACABkgAgAY4AIAGeACIBxgAiAJ4AGAACqq//7jjr/+nHIAAHHHQAA447//qqq//444///jjj//xxyAAAAAAAGOOMAAqqrAAHHHQAG444AEccdAAHHHQ==","cmvtt10":"ATgAEgAAAH8AGgAOAAoABQBYAAoAAAAHwqDVmQCgAAAIVGVYIHRleHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNNVlRUAAAAAAAAAAAAAAAAAAAAAADqEKAAABegAAAWoAAAEqAAABKgAAAUoAAAFKAAABagAAAUoAAAFqAAABSgAAAPoBEKDqAAAA6gAAAXoAAAF6AAAAFAAAADSQAACqAAAAqgAAAKkAAACqAAAAqAAAAUoAAABwgAAAugAAAUQAAAFkAAAApmAAAYoAAAGaAAABbDAAABQAEAAaABFwqgAAAXoAAACtUAABfVAAAWoAAAAaABEgXUAAAF1AAAClAAABayAAABFwAABEABFQEQAAAK1AAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAqgAAAKoAAACqAAAAFAAAABRwAAASkAABYxAAAIKQAACKABGBKgAAAUoAFME6AAABSgAAAVoAE1EqAAABGgASQWoAAAFKAAAASgAVcKoAAAFaABKhCgAVIYoAAAFKAAABagATUSoAEeFqcAABSgAUwOoAAAFKABLhSgAAAUoAUkGaAFJBSgASoUoAkvEKAAAALUAAAKoAAAAtQAAAqgAAABoAAAAaABEQlAAUgOoAFCB0ABQA6gAAAHQAAAA6ARAgpJBVYOoAE6AaAAAAOpAAANoAEZAaAAABdAAToOQAE6CkABQg5JAUIMSQAABUAAAAZAAAAFcAFKDkABSw1ABRkUQAUaDUAAAA1JBR8HQAAACkANFhlADAAKoAAACqAAAAqgAAAAAAAAAASqqAAEwWsABSIgAAWZlgAGiIUABqBqAAd3cwAH7usACCqmAAhmYgAIZmMACN3YAAjd2gAJVVAACczIAApEPgAKu7YACzMtAAuqpQAMIhsADJmTAA0RCgAN//gADu7mABDMwwAAAAAAAZmaAAY44wAGpmUABuOOAAhVVgAIqqsACNtyAAkMgwAJDjoACccdAAp9JQAKqqsACxxyAAAAAP/830gAALYIAADjjgABVVMAAVVVAAHHHQACOOMAAxxzAAOOOgAAAAAAADu7AABrhQAAd3gAATBbAGyAAIBMgAEAaQAMAGYACwBsAA0AJ4ACAD+AAgAhgAIAKYACgF2AAgBpAA4AbAAPACeAAgA/gAIAIYACACmAAoBdgAKAYABcACcAIgA/gAOAIYADgC0Ae4AtAHyAYAA8gGAAPgBhgAQAZYAFAGGABQBvgAWAY4AFAEGABgBvgAUAZYAFAGGABQAugAaALIAGAG+ABgBlgAYAdYAGAHKABgBhgAYAQYAHAE+ABQBDgAUAR4AFgFGABQB5gAUAZYAGAG+ABgBygAYAYYAGAEGABoB1gAYAWIAFAFeABQBBgAUAVoAFgFmABQB0gAUAdYAFAGKABQB5gAUAdoAFgHeABQBogAWAa4AFAGWACABvgAgAeIAFAGSACABjgAgAcYAIAHaABQBqgAkAeYAFgHeABQB0gAUAQ4AFAE+ABQBHgAUAVYAFAFGABQBUgAYAWYAGAFaAB4BXgAeAaoAIgEmACP/7VVj/+t3gAAEwWwAB3d3//xES//+IiP/+mZr//iIjAAB3eAAA7u4AAAAAAAWZlgACzMsAAd3dAAbjjgAQzMMAAd3d","euex10":"AMoAEgAIAH0ADgAIAA8AAwAAAAAABwANYgdhMQCgAAAYZXVsZXIgc3Vic3RpdHV0aW9ucyBvbmx5AAAAAAAAAAAAAAAAAAAACUVVRVggVjIuMgAAAAAAAAAAAAAAAADqBRgCCgUYAgsGGgIMBhoCDQcdAg4HHQIPCB4COAgeAjkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApBAAAKQQAACkEAAApBAAAAAAAAAAAAAAAAAAAAAAAACkEAAApBAAADYgAAA2IAAApBAAAKYgAACmIAAAAAAAAKQQAACkEAAAZiAAAGYgAACkEAAApiAAAKYgAAAAAAAAAAAAAKUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQUDAAkFAwEJBQMCCQUDAwkLAAAJCwAACQQDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQHBkkBDAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwYCWAsGAlkEBwZaAAAAAAAAAAAAAAAAAAAAAAAAAAANOQAADDkAAAEMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsGAmEMOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzAAAGcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAIgAAACIAAAAiAAAAAAAAAABxxzAAczOAAIAAIACHHIAAlVWAAKqq0ADAACAAzjkwAOOOYAEAADABDjkgAWk+0AFxx2AAAAAAAAo9YAAY44AAGZmwAF3rgABuOOAAsccgAMAAAAAAAA//3euAADHHAABAAAAATM0AAOZnAAEAAOABHHKAASj2oAGAANABwpCgAczOAAI45SACXCqgAvXEoAAAAAAABxyAABxx04PDo+OT07PjgAOj45ADs+AAAAPjgAOz45ADo+AAAAAAAAAAAAAAAAAAAAAAAG444AEAADAAAAAAAAo9YAAccdAAKqqwADMzMACZmaAAGZmg==","euex7":"AMoAEgAIAH0ADgAIAA8AAwAAAAAABwANaxPfkQBwAAAYZXVsZXIgc3Vic3RpdHV0aW9ucyBvbmx5AAAAAAAAAAAAAAAAAAAACUVVRVggVjIuMgAAAAAAAAAAAAAAAADwBRgCCgUYAgsGGgIMBhoCDQcdAg4HHQIPCB4COAgeAjkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApBAAAKQQAACkEAAApBAAAAAAAAAAAAAAAAAAAAAAAACkEAAApBAAADYgAAA2IAAApBAAAKYgAACmIAAAAAAAAKQQAACkEAAAZiAAAGYgAACkEAAApiAAAKYgAAAAAAAAAAAAAKUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQUDAAkFAwEJBQMCCQUDAwkLAAAJCwAACQQDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQHBkkCDAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwYCWAsGAlkEBwZaAAAAAAAAAAAAAAAAAAAAAAAAAAANKQAADCkAAAIMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsGAmEMKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzAAAGcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAEwAAABMAAAATAAAAAAAAAAB3Q+AAgghQAJHHUACZprAAqWXgAMEEUADYorAA6GIAAQAAUAEfflABLz1QAZQDsAGddlAAAAAAAAxvIAAZmbAAGmmQAGJTAABuOOAAsccgAMAAAAAAAA//4lMAADHHIABAAAAATM0AAOZnAAEAAOABHHKQASbE4AGAAOABwF7gAczOAAI45SACWfjgAvOS4AAAAAAAB9+QAB9+A4PDo+OT07PjgAOj45ADs+AAAAPjgAOz45ADo+AAAAAAAAAAAAAAAAAAAAAAAG444AEjjpAAAAAAAAxvIAAccbAAKqqwADMzIACccbAAJJJQ==","euex8":"AMoAEgAIAH0ADgAIAA8AAwAAAAAABwANJAX55wCAAAAYZXVsZXIgc3Vic3RpdHV0aW9ucyBvbmx5AAAAAAAAAAAAAAAAAAAACUVVRVggVjIuMgAAAAAAAAAAAAAAAADuBRgCCgUYAgsGGgIMBhoCDQcdAg4HHQIPCB4COAgeAjkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApBAAAKQQAACkEAAApBAAAAAAAAAAAAAAAAAAAAAAAACkEAAApBAAADYgAAA2IAAApBAAAKYgAACmIAAAAAAAAKQQAACkEAAAZiAAAGYgAACkEAAApiAAAKYgAAAAAAAAAAAAAKUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQUDAAkFAwEJBQMCCQUDAwkLAAAJCwAACQQDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQHBkkCDAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwYCWAsGAlkEBwZaAAAAAAAAAAAAAAAAAAAAAAAAAAANKQAADCkAAAIMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsGAmEMKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzAAAGcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAEwAAABMAAAATAAAAAAAAAABzM4AAeOQAAIgAgACPjsAAnqtAALVWAADMAMAA2x1AAPHIAAEQAQABHx2AAX/T4AGI5QAAAAAAAAuFIAAZmaAAGccAAGDDwABuOOAAsccgAMAAAAAAAA//4MPAADHHAABAAAAATM0AAOZnAAEAAOABHHKAASeu4AGAAMABwUjgAczOAAI45SACWuLgAvR84AAAAAAAB45AAB45A4PDo+OT07PjgAOj45ADs+AAAAPjgAOz45ADo+AAAAAAAAAAAAAAAAAAAAAAAG444AEQAQAAAAAAAAuFIAAcccAAKqqgADMzQACbjkAAIAAA==","euex9":"AMsAEgAIAH0ADwAIAA8AAwAAAAAABwANhtgXiQCQAAAYZXVsZXIgc3Vic3RpdHV0aW9ucyBvbmx5AAAAAAAAAAAAAAAAAAAACUVVRVggVjIuMgAAAAAAAAAAAAAAAADsBRgCCgUYAgsGGgIMBhoCDQcdAg4HHQIPCB4COAgeAjkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApBAAAKQQAACkEAAApBAAAAAAAAAAAAAAAAAAAAAAAACkEAAApBAAADYgAAA2IAAApBAAAKYgAACmIAAAAAAAAKQQAACkEAAAZiAAAGYgAACkEAAApiAAAKYgAAAAAAAAAAAAAKUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQUDAAkFAwEJBQMCCQUDAwkLAAAJCwAACQQDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQHBkkCDAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwYCWAwGAlkEBwZaAAAAAAAAAAAAAAAAAAAAAAAAAAAOOQAADTkAAAIMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwGAmENOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzAAAGcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEgAAABIAAAASAAAAAAAAAABzM5AAdPAAAIOOAACK3QAAmXsgAK9oAADFVSAA0/MAAOngAAEHHAABFboAARW6IAFzRsABfAwAAAAAAAAKzyAAGUiQABmZsABfTpAAbjjgALHHIADAAAAAAAAP/99OkAAxxyAAQAAAAEzNAADmZwABAADgARxykAEoZOABgADAAcH+4AHMzgACOOUgAluY4AL1MuAAAAAAAAdPAAAdPAODw6Pjk9Oz44ADo+OQA7PgAAAD44ADs+OQA6PgAAAAAAAAAAAAAAAAAAAAAABuOOABBxwAAAAAAAAKzyAAHHHAACqqsAAzM0AAmt1AABxxw=","eufb10":"AQEAEgABAH8ARAAIAAcAAQAAAAAAAAAW2JYM5wCgAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRkIgVjIuMgAAAAAAAAAAAAAAAADqGVAAAA1lAAAKUAAAHWUAAAxgAAAOYAAAAAAAADxgAAArIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAADNgAAABYAAAEHYAABB2AAAFUAAANEMAAAUQAAA0QwAABRAAAB12AAAdIAAAHSAAAB0gAAAdJQAAHSUAAB0lAAAdYAAAHSUAAB1gAAAdJQAAAyAAAAMkAAAAAAAAGCAAAAAAAAAPYAAAAAAAADBgAABBYAAAKmAAAD5gAAAsYAAAKWQAADdgAAAyYgAAJ2AAACVkAAAuYAAALWAAAENgAAA/YAAAOGAAADllAAA4YQAAOmAAADtgAAAvYAAAMmAAAD1gAABCYAAAMWAAAEBlAAAoZAAABHYAAAAAAAAEdgAAHGAAAAAAAAAAAAAAICAAABxgAAATIAAAGlAAABUgAAALZQAAHiUAACRlAAAGYAAAB2AAABRgAAAIYAAANiAAACYgAAAjIAAAITUAAB8lAAARIAAAFiAAAAxQAAAaIAAAIjAAADUwAAAQJQAAGyUAABIlAAAAAAAAAAAAAAJgAAAAAAAAF2AAAAAAAAAABAFoAAQOeAAEFQAABBuIAAU+0wAFTTIABU6AAAVjZgAFllgABjMYAAY3AwAGSpsABkvqAAZc5QAG2P0AB1eyAAdaTgAHYNYAB2tKAAdsmAAHjUAACFzyAAisoAAJTpoACWYdAAlrVgAJbKUACXCQAAl7AwAJhCgACYgTAAmk0AAJqLsACatYAAm+8AAJ2RAACm9IAAp10AAKebsAC1+iAAuMCwALkpMAC6DyAAyFigAMlTYADKD4AAyjlQANjrUADZaLAA2bxQAN8K0ADkmAAA6uFQAOvcIADtaTAA+fvQAPoloAD6T2AA+nkwAPsLgAD7SjAA+18gAPuI4AD7x6ABCzWwATwxsAE9QWAAAAAAABuoAAB5sAAAhtLgAJU0oAChGQAAsQAAAL/dgAAAAAAACa4AABAiAAAVS6AAIEQAADBmAAA/9IAAAAAAAAAAAABVVVAAAAAAAAAAAAB5sAABAAAAAAAAAABgzAAARSQAAEwOAABgzAAAKXwAAGe2AABgzAAAUvgAADBmAAA+OgAAZ7YAAAbqAAIyzdAA/9IAAEGvA=","eufb5":"AQEAEgABAH8ARAAIAAcAAQAAAAAAAAAWouDdiQBQAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRkIgVjIuMgAAAAAAAAAAAAAAAAD0GVAAAA1lAAAKUAAAHWUAAAxgAAAOYAAAAAAAADxgAAArIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAADNgAAABYAAAEHYAABB2AAAFUAAANEMAAAUQAAA0QwAABRAAAB12AAAdIAAAHSAAAB0gAAAdJQAAHSUAAB0lAAAdYAAAHSUAAB1gAAAdJQAAAyAAAAMkAAAAAAAAGCAAAAAAAAAPYAAAAAAAADBgAABBYAAAKmAAAD5gAAAsYAAAKWQAADdgAAAyYgAAJ2AAACVkAAAuYAAALWAAAENgAAA/YAAAOGAAADllAAA4YQAAOmAAADtgAAAvYAAAMmAAAD1gAABCYAAAMWAAAEBlAAAoZAAABHYAAAAAAAAEdgAAHGAAAAAAAAAAAAAAICAAABxgAAATIAAAGlAAABUgAAALZQAAHiUAACRlAAAGYAAAB2AAABRgAAAIYAAANiAAACYgAAAjIAAAITUAAB8lAAARIAAAFiAAAAxQAAAaIAAAIjAAADUwAAAQJQAAGyUAABIlAAAAAAAAAAAAAAJgAAAAAAAAF2AAAAAAAAAAB8bwAAfVUAAH3IAAB+OwAAkkQAAJNBAACTWAAAlMgAAJhJAACjEQAAo1YAAKSvAACkxgAApfEAAK56AAC3MQAAt18AALfSAAC4igAAuKEAALrgAADJKQAAzqQAANnIAADbZgAA28IAANvZAADcHgAA3NYAAN13AADdvAAA37YAAN/7AADgKQAA4YIAAONOAADtowAA7hYAAO5bAAD+KwABATkAAQGsAAECqQABEmIAARN2AAEURQABFHMAASSfAAElKQABJYUAAStcAAExeAABOGMAATl3AAE7LAABSQIAAUkwAAFJXgABSYwAAUotAAFKcgABSokAAUq3AAFK/AABW/cAAZHfAAGTCgAAAAAAABvQAAB6YAAAh5YAAJYMYACiAgAAsgAAAMDzAAAAAAAACbwAABA5YAAVamAAIHKgADCsAABAUQAAAAAAAAAAAABVVWAAAAAAAAAAAAB6YAABAAAAAAAAAABhWAAARYgAAEx8AABhWAAAKbgAAGhMAABhWAAAU3AAADCsAAA+lAAAaEwAAAb0AAI1+9ABAUQAAEIOA=","eufb6":"AQEAEgABAH8ARAAIAAcAAQAAAAAAAAAWONiU4gBgAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRkIgVjIuMgAAAAAAAAAAAAAAAADyGVAAAA1lAAAKUAAAHWUAAAxgAAAOYAAAAAAAADxgAAArIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAADNgAAABYAAAEHYAABB2AAAFUAAANEMAAAUQAAA0QwAABRAAAB12AAAdIAAAHSAAAB0gAAAdJQAAHSUAAB0lAAAdYAAAHSUAAB1gAAAdJQAAAyAAAAMkAAAAAAAAGCAAAAAAAAAPYAAAAAAAADBgAABBYAAAKmAAAD5gAAAsYAAAKWQAADdgAAAyYgAAJ2AAACVkAAAuYAAALWAAAENgAAA/YAAAOGAAADllAAA4YQAAOmAAADtgAAAvYAAAMmAAAD1gAABCYAAAMWAAAEBlAAAoZAAABHYAAAAAAAAEdgAAHGAAAAAAAAAAAAAAICAAABxgAAATIAAAGlAAABUgAAALZQAAHiUAACRlAAAGYAAAB2AAABRgAAAIYAAANiAAACYgAAAjIAAAITUAAB8lAAARIAAAFiAAAAxQAAAaIAAAIjAAADUwAAAQJQAAGyUAABIlAAAAAAAAAAAAAAJgAAAAAAAAF2AAAAAAAAAABd8tAAXtCAAF8/UABfrjAAcv1QAHPxMAB0B1AAdWoAAHjKgACDLoAAg3EAAIS9gACE07AAhfPQAI4tsACWk9AAlsAwAJcvAACX4FAAl/aAAJogsACn5TAArS1QALfqAAC5eQAAudGwALnn0AC6KlAAutuwALt20AC7uVAAvaEAAL3jgAC+D9AAv1xQAMEXsADLDNAAy3uwAMu+MADa+4AA3e0wAN5cAADfT9AA7ncAAO+BAADwSIAA8HTQAQAK0AEAj9ABAOiAAQaJUAEMbLABExeAARQhgAEVxrABIxxQASNIsAEjdQABI6FQASQ8gAEkfwABJJUwASTBgAElBAABNWGAAWlVgAFqdbAAAAAAABuasAB5dVAAhpIAAJTssACgy1AAsKqwAL+BAAAAAAAACalQABAaMAAVQVAAIDSAADBOsAA/1bAAAAAAAAAAAABVVVAAAAAAAAAAAAB5dVABAAAAAAAAAABgnVAARQKwAEvpUABgnVAAKWgAAGeEAABgnVAAUtAAADBOsAA+HAAAZ4QAAAbmsAIxvoAA/1awAEGPU=","eufb7":"AQEAEgABAH8ARAAIAAcAAQAAAAAAAAAWjMZs2QBwAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRkIgVjIuMgAAAAAAAAAAAAAAAADwGVAAAA1lAAAKUAAAHWUAAAxgAAAOYAAAAAAAADxgAAArIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAADNgAAABYAAAEHYAABB2AAAFUAAANEMAAAUQAAA0QwAABRAAAB12AAAdIAAAHSAAAB0gAAAdJQAAHSUAAB0lAAAdYAAAHSUAAB1gAAAdJQAAAyAAAAMkAAAAAAAAGCAAAAAAAAAPYAAAAAAAADBgAABBYAAAKmAAAD5gAAAsYAAAKWQAADdgAAAyYgAAJ2AAACVkAAAuYAAALWAAAENgAAA/YAAAOGAAADllAAA4YQAAOmAAADtgAAAvYAAAMmAAAD1gAABCYAAAMWAAAEBlAAAoZAAABHYAAAAAAAAEdgAAHGAAAAAAAAAAAAAAICAAABxgAAATIAAAGlAAABUgAAALZQAAHiUAACRlAAAGYAAAB2AAABRgAAAIYAAANiAAACYgAAAjIAAAITUAAB8lAAARIAAAFiAAAAxQAAAaIAAAIjAAADUwAAAQJQAAGyUAABIlAAAAAAAAAAAAAAJgAAAAAAAAF2AAAAAAAAAABR5nAAUrtQAFMlsABTkCAAZhrgAGcFAABnGlAAaG7gAGutAAB1p1AAdecgAHcmcAB3O7AAeFBwAIA2kACIR1AAiHHgAIjcUACJhpAAiZvgAIuwAACY6HAAnfrgAKhKUACpyXAAqh6QAKoz4ACqc7AAqx4AAKuzAACr8uAArccgAK4HAACuMZAAr3DgALEakAC6qnAAuxTgALtUsADJ9wAAzMqwAM01IADOH1AA3KxQAN2rsADea1AA3pXgAO2NUADuDQAA7mIgAPPJsAD5cSAA/9ggAQDXkAECbAABDzoAAQ9kkAEPjyABD7mwARBOsAEQjpABEKPgARDOcAERDlABIMVQAVKosAFTvXAAAAAAAButsAB5ySAAhu7gAJVTcAChOlAAsSSQAMAFIAAAAAAACbAAABAlUAAVUAAAIEqwADBwAABAAbAAAAAAAAAAAABVVVAAAAAAAAAAAAB5ySABAAAAAAAAAABg4AAARTJQAEwdsABg4AAAKYSQAGfLcABg4AAAUwkgADBwAAA+RuAAZ8twAAbrcAIzQiABAAbgAEG8k=","eufb8":"AQEAEgABAH8ARAAIAAcAAQAAAAAAAAAWsafUNwCAAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRkIgVjIuMgAAAAAAAAAAAAAAAADuGVAAAA1lAAAKUAAAHWUAAAxgAAAOYAAAAAAAADxgAAArIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAADNgAAABYAAAEHYAABB2AAAFUAAANEMAAAUQAAA0QwAABRAAAB12AAAdIAAAHSAAAB0gAAAdJQAAHSUAAB0lAAAdYAAAHSUAAB1gAAAdJQAAAyAAAAMkAAAAAAAAGCAAAAAAAAAPYAAAAAAAADBgAABBYAAAKmAAAD5gAAAsYAAAKWQAADdgAAAyYgAAJ2AAACVkAAAuYAAALWAAAENgAAA/YAAAOGAAADllAAA4YQAAOmAAADtgAAAvYAAAMmAAAD1gAABCYAAAMWAAAEBlAAAoZAAABHYAAAAAAAAEdgAAHGAAAAAAAAAAAAAAICAAABxgAAATIAAAGlAAABUgAAALZQAAHiUAACRlAAAGYAAAB2AAABRgAAAIYAAANiAAACYgAAAjIAAAITUAAB8lAAARIAAAFiAAAAxQAAAaIAAAIjAAADUwAAAQJQAAGyUAABIlAAAAAAAAAAAAAAJgAAAAAAAAF2AAAAAAAAAABAxyAAQZpgAEIEAABCbaAAVNSAAFW84ABV0gAAVyQAAFpb4ABkQuAAZIJAAGW/IABl1EAAZubgAG69wAB2vuAAdukgAHdSwAB3+8AAeBDgAHohAACHP+AAjEiAAJaEAACYAEAAmFTAAJhp4ACYqUAAmVJAAJnmIACaJYAAm/ZAAJw1oACcX+AAnZzAAJ9DQACowKAAqSpAAKlpoAC376AAur3gALsngAC8D+AAyoDAAMt+QADMPGAAzGagANtBIADbv+AA3BRgAOFxgADnDgAA7WigAO5mIADv94AA/KzAAPzXAAD9AUAA/SuAAP2/YAD9/sAA/hPgAP4+IAD+fYABDhYgAT+ZIAFAq8AAAAAAABu8AAB6CAAAhzSAAJWggAChjYAAsYAAAMBoQAAAAAAACbUAABAtoAAVWwAAIFtgADCJAABAIsAAAAAAAAAAAABVVWAAAAAAAAAAAAB6CAABAAAAAAAAAABhEgAARVYAAExFAABhEgAAKZoAAGgBAABhEgAAUzQAADCJAAA+ZwAAaAEAAAbvAAI0ZMABAIsAAEHeg=","eufb9":"AQEAEgABAH8ARAAIAAcAAQAAAAAAAAAWTTF9WgCQAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRkIgVjIuMgAAAAAAAAAAAAAAAADsGVAAAA1lAAAKUAAAHWUAAAxgAAAOYAAAAAAAADxgAAArIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAADNgAAABYAAAEHYAABB2AAAFUAAANEMAAAUQAAA0QwAABRAAAB12AAAdIAAAHSAAAB0gAAAdJQAAHSUAAB0lAAAdYAAAHSUAAB1gAAAdJQAAAyAAAAMkAAAAAAAAGCAAAAAAAAAPYAAAAAAAADBgAABBYAAAKmAAAD5gAAAsYAAAKWQAADdgAAAyYgAAJ2AAACVkAAAuYAAALWAAAENgAAA/YAAAOGAAADllAAA4YQAAOmAAADtgAAAvYAAAMmAAAD1gAABCYAAAMWAAAEBlAAAoZAAABHYAAAAAAAAEdgAAHGAAAAAAAAAAAAAAICAAABxgAAATIAAAGlAAABUgAAALZQAAHiUAACRlAAAGYAAAB2AAABRgAAAIYAAANiAAACYgAAAjIAAAITUAAB8lAAARIAAAFiAAAAxQAAAaIAAAIjAAADUwAAAQJQAAGyUAABIlAAAAAAAAAAAAAAJgAAAAAAAAF2AAAAAAAAAABADcAAQN6wAEFHIABBr5AAU+HAAFTHkABU3HAAViqwAFlZUABjJAAAY2KwAGScAABksOAAZcBwAG2A4AB1ayAAdZTgAHX9UAB2pHAAdrlQAHjDkACFvOAAircgAJTVUACWTVAAlqDgAJa1wACW9HAAl5uQAJgtwACYbHAAmjgAAJp2sACaoHAAm9nAAJ17kACm3cAAp0ZAAKeE4AC14VAAuKeQALkQAAC59cAAyD1QAMk4AADJ9AAAyh3AANjNwADZSyAA2Z6wAN7scADkeOAA6sFQAOu8AADtSOAA+dnAAPoDkAD6LVAA+lcgAPrpUAD7KAAA+zzgAPtmsAD7pVABCxFQATwGsAE9FkAAAAAAABuasAB5dVAAhpIAAJTssACgy1AAsKqwAL+BAAAAAAAACalQABAaQAAVQVAAIDRwADBOsAA/1bAAAAAAAAAAAABVVVAAAAAAAAAAAAB5dVABAAAAAAAAAABgnVAARQKwAEvpUABgnVAAKWgAAGeEAABgnVAAUtAAADBOsAA+HAAAZ4QAAAbmsAIxvnAA/1awAEGPU=","eufm10":"AQQAEgAAAH8ARAAJAAgAAQAAAAAAAAAWjyVusgCgAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRk0gVjIuMgAAAAAAAAAAAAAAAADqGGAAABlgAAAMdgAACnYAACA2AAALcAAADWAAAB4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAA0cAAAAXAAABCHAAAQhwAABGAAADVUAAAEEAAANVQAAAQQAAAfhwAAHzAAAB8wAAAfMAAAHzYAAB82AAAfNgAAH3AAAB82AAAfcAAAHzYAAAMwAAADNQAAAAAAADUhAAAAAAAADnAAAAAAAAAxcAAAQXAAACtwAAA+cAAALXAAACp1AAA4cAAAM3MAAChwAAAndQAAL3AAAC5wAABDcAAAP3AAADlwAAA6dgAAOXIAADtwAAA8cAAAMHAAACxwAAA9cAAAQnAAADJwAABAdgAAKXUAAASHAAAAAAAABIcAABxwAAAAAAAAAAAAAB0wAAAjcAAAEjAAABpgAAAUMAAACXYAACE2AAAldgAABXAAAAdwAAAScAAABnAAADYwAAAmMAAAFjAAAB1GAAAXNgAAETAAABUwAAALYAAAJDAAACJAAAA3QAAAEDYAABs2AAATNgAAAAAAAAAAAAACcAAAAAAAAA9wAAAAAAAAAANkaAADb3gAA3UAAARxOgAEdsIABHj4AAR+gAAEu1gABThaAAVEhQAFVAIABVUdAAVYbgAFzJYABgzAAAY35QAGOhsABjs2AAY/owAGaJIABxUlAAfSUAAH02sAB/W2AAf5CAAH+iMAB/s+AAf+kAAIAeIACAL9AAgHagAIDg0ACA8oAAgwWAAINeAACEZ4AAhXEAAIbTAACNZIAAjfIgAJodUACcdyAAnM+gAKVQsACpq9AAqoAwAKsfgACrQuAAt7TgALgfIAC4ZeAAvORgAMGYAADESlAAxgTQAMkPoADTtWAA09jQANP8MADUH6AA1NCgANTiUADVBbAA1TrQAOJMIAELyCABDK4wAAAAAAAbqAAAXmCAAHmwAACGIgAAlTSgAJ8GAACxAAAAv92AAAAAD//ed4AACa4AABAiAAAVS6AAIEQAADBmAAA/9IAAAAAAAAAAAABVVVAAAAAAAAAAAAB5sAABAAAAAAAAAABgzAAARSQAAEwOAABgzAAAKXwAAGe2AABgzAAAUvgAADBmAAA+OgAAZ7YAAAbqAAIyzdAA/9IAAEGvA=","eufm5":"AQQAEgAAAH8ARAAJAAgAAQAAAAAAAAAWuMmv1ABQAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRk0gVjIuMgAAAAAAAAAAAAAAAAD0GGAAABlgAAAMdgAACnYAACA2AAALcAAADWAAAB4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAA0cAAAAXAAABCHAAAQhwAABGAAADVUAAAEEAAANVQAAAQQAAAfhwAAHzAAAB8wAAAfMAAAHzYAAB82AAAfNgAAH3AAAB82AAAfcAAAHzYAAAMwAAADNQAAAAAAADUhAAAAAAAADnAAAAAAAAAxcAAAQXAAACtwAAA+cAAALXAAACp1AAA4cAAAM3MAAChwAAAndQAAL3AAAC5wAABDcAAAP3AAADlwAAA6dgAAOXIAADtwAAA8cAAAMHAAACxwAAA9cAAAQnAAADJwAABAdgAAKXUAAASHAAAAAAAABIcAABxwAAAAAAAAAAAAAB0wAAAjcAAAEjAAABpgAAAUMAAACXYAACE2AAAldgAABXAAAAdwAAAScAAABnAAADYwAAAmMAAAFjAAAB1GAAAXNgAAETAAABUwAAALYAAAJDAAACJAAAA3QAAAEDYAABs2AAATNgAAAAAAAAAAAAACcAAAAAAAAA9wAAAAAAAAAAcrIAAHOGAABz8AAAhtGgAIc7oACHZgAAh9AAAIxeAACVuaAAlqLQAJfLoACX4NAAmCBgAKDSYACloAAAqNrQAKkFMACpGmAAqW8wAKx/oAC5atAAx5QAAMepMADKOmAAynoAAMqPMADKpGAAyuQAAMsjoADLONAAy42gAMwM0ADMIgAAzp4AAM8IAADQRgAA0YQAANMsAADbCgAA27OgAOpG0ADtF6AA7YGgAPexMAD86NAA/ecwAP6mAAD+0GABDbhgAQ43oAEOjGABE+5gARmQAAEcytABHtzQASKBoAEvQmABL2zQAS+XMAEvwaABMJWgATCq0AEw1TABMRTQAUC7oAFya6ABc38wAAAAAAAb0AAAXukAAHpgAACG5AAAlgxgAJ/sAACyAAAAwPMAAAAAD//eRwAACbwAABA5YAAVamAAIHKgADCsAABAUQAAAAAAAAAAAABVVWAAAAAAAAAAAAB6YAABAAAAAAAAAABhWAAARYgAAEx8AABhWAAAKbgAAGhMAABhWAAAU3AAADCsAAA+lAAAaEwAAAb0AAI1+9ABAUQAAEIOA=","eufm6":"AQQAEgAAAH8ARAAJAAgAAQAAAAAAAAAWZRZ7xABgAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRk0gVjIuMgAAAAAAAAAAAAAAAADyGGAAABlgAAAMdgAACnYAACA2AAALcAAADWAAAB4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAA0cAAAAXAAABCHAAAQhwAABGAAADVUAAAEEAAANVQAAAQQAAAfhwAAHzAAAB8wAAAfMAAAHzYAAB82AAAfNgAAH3AAAB82AAAfcAAAHzYAAAMwAAADNQAAAAAAADUhAAAAAAAADnAAAAAAAAAxcAAAQXAAACtwAAA+cAAALXAAACp1AAA4cAAAM3MAAChwAAAndQAAL3AAAC5wAABDcAAAP3AAADlwAAA6dgAAOXIAADtwAAA8cAAAMHAAACxwAAA9cAAAQnAAADJwAABAdgAAKXUAAASHAAAAAAAABIcAABxwAAAAAAAAAAAAAB0wAAAjcAAAEjAAABpgAAAUMAAACXYAACE2AAAldgAABXAAAAdwAAAScAAABnAAADYwAAAmMAAAFjAAAB1GAAAXNgAAETAAABUwAAALYAAAJDAAACJAAAA3QAAAEDYAABs2AAATNgAAAAAAAAAAAAACcAAAAAAAAA9wAAAAAAAAAAVXjQAFZCgABWp1AAaJ1QAGkCMABpKoAAaY9QAG3kgAB2y1AAd6kwAHjDgAB417AAeRQwAIFZsACF61AAiP3QAIkmMACJOlAAiYsAAIx1MACYvzAApjewAKZL0ACovQAAqPmAAKkNsACpIdAAqV5QAKma0ACprwAAqf+wAKp4sACqjNAArOnQAK1OsACufTAAr6uwALE/AAC4utAAuVwwAMc5gADJ5zAAykwAANP8gADY8wAA2eUAANqagADawtAA6PDQAOlp0ADpuoAA7tlQAPQ0sAD3RzAA+T9QAPy2sAEI2FABCQCwAQkpAAEJUVABChsAAQovMAEKV4ABCpQAARl3gAFIu4ABScGwAAAAAAAbmrAAXjMAAHl1UACF4VAAlOywAJ65UACwqrAAv4EAAAAAD//eh7AACalQABAaMAAVQVAAIDSAADBOsAA/1bAAAAAAAAAAAABVVVAAAAAAAAAAAAB5dVABAAAAAAAAAABgnVAARQKwAEvpUABgnVAAKWgAAGeEAABgnVAAUtAAADBOsAA+HAAAZ4QAAAbmsAIxvoAA/1awAEGPU=","eufm7":"AQQAEgAAAH8ARAAJAAgAAQAAAAAAAAAWWO0mAgBwAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRk0gVjIuMgAAAAAAAAAAAAAAAADwGGAAABlgAAAMdgAACnYAACA2AAALcAAADWAAAB4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAA0cAAAAXAAABCHAAAQhwAABGAAADVUAAAEEAAANVQAAAQQAAAfhwAAHzAAAB8wAAAfMAAAHzYAAB82AAAfNgAAH3AAAB82AAAfcAAAHzYAAAMwAAADNQAAAAAAADUhAAAAAAAADnAAAAAAAAAxcAAAQXAAACtwAAA+cAAALXAAACp1AAA4cAAAM3MAAChwAAAndQAAL3AAAC5wAABDcAAAP3AAADlwAAA6dgAAOXIAADtwAAA8cAAAMHAAACxwAAA9cAAAQnAAADJwAABAdgAAKXUAAASHAAAAAAAABIcAABxwAAAAAAAAAAAAAB0wAAAjcAAAEjAAABpgAAAUMAAACXYAACE2AAAldgAABXAAAAdwAAAScAAABnAAADYwAAAmMAAAFjAAAB1GAAAXNgAAETAAABUwAAALYAAAJDAAACJAAAA3QAAAEDYAABs2AAATNgAAAAAAAAAAAAACcAAAAAAAAA9wAAAAAAAAAASaewAEpnIABKxuAAW9NwAFwzIABcWXAAXLkgAGDWAABpSSAAahuwAGsnsABrOuAAa3RQAHNOUAB3pJAAeo8gAHq1cAB6yJAAexUgAH3ZcACJg7AAlk0gAJZgUACYsbAAmOsgAJj+UACZEXAAmUrgAJmEUACZl3AAmeQAAJpW4ACaagAAnKhQAJ0IAACeJyAAn0ZQAKDFIACn37AAqHjgALWiAAC4LOAAuIyQAMG/IADGdSAAx1rgAMgHIADILXAA1aMgANYWAADWYpAA2z7gAOBUkADjPyAA5R2wAOhoAADz7AAA9BJQAPQ4kAD0XuAA9R5QAPUxcAD1V7AA9ZEgAQOzIAEwkOABMYmwAAAAAAAbrbAAXnQAAHnJIACGPbAAlVNwAJ8m4ACxJJAAwAUgAAAAD//ecJAACbAAABAlUAAVUAAAIEqwADBwAABAAbAAAAAAAAAAAABVVVAAAAAAAAAAAAB5ySABAAAAAAAAAABg4AAARTJQAEwdsABg4AAAKYSQAGfLcABg4AAAUwkgADBwAAA+RuAAZ8twAAbrcAIzQiABAAbgAEG8k=","eufm8":"AQQAEgAAAH8ARAAJAAgAAQAAAAAAAAAWXJeCJQCAAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRk0gVjIuMgAAAAAAAAAAAAAAAADuGGAAABlgAAAMdgAACnYAACA2AAALcAAADWAAAB4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAA0cAAAAXAAABCHAAAQhwAABGAAADVUAAAEEAAANVQAAAQQAAAfhwAAHzAAAB8wAAAfMAAAHzYAAB82AAAfNgAAH3AAAB82AAAfcAAAHzYAAAMwAAADNQAAAAAAADUhAAAAAAAADnAAAAAAAAAxcAAAQXAAACtwAAA+cAAALXAAACp1AAA4cAAAM3MAAChwAAAndQAAL3AAAC5wAABDcAAAP3AAADlwAAA6dgAAOXIAADtwAAA8cAAAMHAAACxwAAA9cAAAQnAAADJwAABAdgAAKXUAAASHAAAAAAAABIcAABxwAAAAAAAAAAAAAB0wAAAjcAAAEjAAABpgAAAUMAAACXYAACE2AAAldgAABXAAAAdwAAAScAAABnAAADYwAAAmMAAAFjAAAB1GAAAXNgAAETAAABUwAAALYAAAJDAAACJAAAA3QAAAEDYAABs2AAATNgAAAAAAAAAAAAACcAAAAAAAAA9wAAAAAAAAAAOFhgADkQIAA5bAAAScmAAEolYABKSiAASqYAAE6YoABWtQAAV38gAFiAYABYksAAWMngAGBTQABkfQAAZ0mgAGduYABngMAAZ8pAAGpyIAB1pKAAgerAAIH9IACENsAAhG3gAISAQACEkqAAhMnAAIUA4ACFE0AAhVzAAIXLAACF3WAAiASgAIhggACJdCAAiofAAIv3QACSyOAAk1vgAJ/94ACibqAAosqAAKueoACwJEAAsQDAALGmIACxyuAAvrZgAL8koAC/biAAxBiAAMj6AADLxqAAzZIAANC6gADbyEAA2+0AANwRwADcNoAA3O5AAN0AoADdJWAA3VyAAOrtYAEV/mABFu1AAAAAAAAbvAAAXqTAAHoIAACGgwAAlaCAAJ95AACxgAAAwGhAAAAAD//eX0AACbUAABAtoAAVWwAAIFtgADCJAABAIsAAAAAAAAAAAABVVWAAAAAAAAAAAAB6CAABAAAAAAAAAABhEgAARVYAAExFAABhEgAAKZoAAGgBAABhEgAAUzQAADCJAAA+ZwAAaAEAAAbvAAI0ZMABAIsAAEHeg=","eufm9":"AQQAEgAAAH8ARAAJAAgAAQAAAAAAAAAW+DPzrwCQAAAPVGVYIHRleHQgc3Vic2V0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVVRk0gVjIuMgAAAAAAAAAAAAAAAADsGGAAABlgAAAMdgAACnYAACA2AAALcAAADWAAAB4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAA0cAAAAXAAABCHAAAQhwAABGAAADVUAAAEEAAANVQAAAQQAAAfhwAAHzAAAB8wAAAfMAAAHzYAAB82AAAfNgAAH3AAAB82AAAfcAAAHzYAAAMwAAADNQAAAAAAADUhAAAAAAAADnAAAAAAAAAxcAAAQXAAACtwAAA+cAAALXAAACp1AAA4cAAAM3MAAChwAAAndQAAL3AAAC5wAABDcAAAP3AAADlwAAA6dgAAOXIAADtwAAA8cAAAMHAAACxwAAA9cAAAQnAAADJwAABAdgAAKXUAAASHAAAAAAAABIcAABxwAAAAAAAAAAAAAB0wAAAjcAAAEjAAABpgAAAUMAAACXYAACE2AAAldgAABXAAAAdwAAAScAAABnAAADYwAAAmMAAAFjAAAB1GAAAXNgAAETAAABUwAAALYAAAJDAAACJAAAA3QAAAEDYAABs2AAATNgAAAAAAAAAAAAACcAAAAAAAAA9wAAAAAAAAAAN4lAADg+UAA4mOAASLpAAEkUwABJOQAASZOQAE13sABVdkAAVj1wAFc7AABXTSAAV4NwAF7xIABjC5AAZc3gAGXyIABmBEAAZkywAGjqwABz9CAAgA0gAIAfQACCULAAgocAAIKZIACCq0AAguGQAIMX4ACDKgAAg3JwAIPfIACD8UAAhhCQAIZrIACHesAAiIpwAIn0sACQrUAAkT4gAJ2xsACgGXAAoHQAAKknsACtnLAArnYAAK8ZAACvPUAAu/lAALxl4AC8rlAAwUeQAMYXIADI2XAAyp5AAM27IADYoEAA2MRwANjosADZDOAA2cIAANnUIADZ+FAA2i6wAOeNsAESAFABEuvAAAAAAAAbmrAAXjMAAHl1UACF4VAAlOywAJ65UACwqrAAv4EAAAAAD//eh7AACalQABAaQAAVQVAAIDRwADBOsAA/1bAAAAAAAAAAAABVVVAAAAAAAAAAAAB5dVABAAAAAAAAAABgnVAARQKwAEvpUABgnVAAKWgAAGeEAABgnVAAUtAAADBOsAA+HAAAZ4QAAAbmsAIxvnAA/1awAEGPU=","eurb10":"AS4AEgAAAH8AXgAGAAQABQAOAAUAAAAWkWV3yACgAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUkIgVjIuMgAAAAAAAAAAAAAAAADqEkAJBUVAAQBYQAEATUABAC1AAABLQAEAPEAAAEdAAQBaQAAAREABAFdAAAA+IAAAO0IAACkiAAAcQAAAHSAAAA9BAQEsIgAAK0ABAAMgAAAaIAAAH0ABAyoiAAAlIAAAHkEAADEgAQEgIgEAOyAAABkgAQEkIAAAUEIAAB0iAABJQgEAWSABABEgAAAmQAAAVjAAAAAAAAAAAAAASCABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAAAIQAAACEAAABSAAABhTAQgEIAAAAAAAAChAAABKQAAAP0AAAEZAAQFSQAAAJ0AAABBAAQVMQAEATkABAAxAAAALQQAAQ0AAACNAAABdQAAAVUAAAFFAAQAzQAEGU0IAAD1AAAAuQAEAE0ARBU9AAABCQAkEXEAFBEFAAQEbQA0EQEABAQAAAAAAAAAAAAAAAAAAAAAAAAAACEAAADMgAQA5QAAAFiABADlAAAAiIAEACUABAi8iAQAyQAAABkAAAAVCAAAhQAAAB0AAAFsgAAA2IAAAOCABADAiAAA3IgAADSAAAA4gAQAKMAAANSAAABUgAABUIAAAFyAAADQiAAAUIAEABiAAAAYgAAA6IAEBAAAAAAEAAAAAAAAAAAAAAAAE5OAABapQAAXHkAAFzuAABd/wAAXmCAAGkeAABuTAAAb/kAAHUnAAB2EQAAfzUAAH+qAACGEAAAhoUAAIgyAACJS6AAixSwAItlAACL2gAAjJ0AAIzrAACNhwAAlLAAAJVMAACVf+AAlYaAAJZwgACWhAAAmKYAAJxhgACcdQAAnSSAAJ7lAACfMwAAo3cAAKOxgACj/4AApK8AAKVegAClcgAApiGAAKbRAACnC4AAp5QAAKh+AACpooAAqheAAKorAACqPoAAq4oAAKudgACrxIAAq/8AAKxNAACsYIAArK6AALM7gAC2boAAttAAALb3AAC574AAu9cAALzBAAC+2CAAv38AAMgagADIaIAAyhWAAMthAADRKwAA0mMAANRxgADYVAAA2I6AANkDgADbYAAA29UAAN+kAADh2YAA5muAAOtLgADrXwAA7CIAAO7gAAD1uwAA9/CAAPkogAD5PAAA/TIAASAs0AEoiYAAAAAAABuoAAB8dAAAoRkAALPEAAC/3YAAAAAAACBEAAAwZgAAP/SAAAAAAAAH1DAAD6hgABd8oAAfUNgH+AAIB/gAGAf4ACgH+AAwB/gAEAPYADADuABIA6gAQAQYADAGGAAwBngAMAAYADAAOAA4ALgAMAAH1DAAD6hgAB9Q3//wV6//6INgAAAAAABVVVAAAAAAAAAAAAB8dAABAAAAAAAAAABgzAAARSQAAEwOAABgzAAAKXwAAGe2AABgzAAAUvgAADBmAAA+OgAAZ7YAAAbqAAIyzdAA/9IAAEGvA=","eurb5":"AS4AEgAAAH8AXgAGAAQABQAOAAUAAAAWKiAvnABQAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUkIgVjIuMgAAAAAAAAAAAAAAAAD0EkAJBUVAAQBYQAEATUABAC1AAABLQAEAPEAAAEdAAQBaQAAAREABAFdAAAA+IAAAO0IAACkiAAAcQAAAHSAAAA9BAQEsIgAAK0ABAAMgAAAaIAAAH0ABAyoiAAAlIAAAHkEAADEgAQEgIgEAOyAAABkgAQEkIAAAUEIAAB0iAABJQgEAWSABABEgAAAmQAAAVjAAAAAAAAAAAAAASCABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAAAIQAAACEAAABSAAABhTAQgEIAAAAAAAAChAAABKQAAAP0AAAEZAAQFSQAAAJ0AAABBAAQVMQAEATkABAAxAAAALQQAAQ0AAACNAAABdQAAAVUAAAFFAAQAzQAEGU0IAAD1AAAAuQAEAE0ARBU9AAABCQAkEXEAFBEFAAQEbQA0EQEABAQAAAAAAAAAAAAAAAAAAAAAAAAAACEAAADMgAQA5QAAAFiABADlAAAAiIAEACUABAi8iAQAyQAAABkAAAAVCAAAhQAAAB0AAAFsgAAA2IAAAOCABADAiAAA3IgAADSAAAA4gAQAKMAAANSAAABUgAABUIAAAFyAAADQiAAAUIAEABiAAAAYgAAA6IAEBAAAAAAEAAAAAAAAAAAAAAAAI+40ACeBgAAoCRgAKCsAACh6GAAollgAK7MAAC0zNAAtr4AALy+0AC9zgAAyGYAAMjtoADQWAAA0N+gANLQ0ADUFzAA1ikAANaGAADXDaAA1++gANhKAADY/tAA4UswAOIAAADiPDAA4kPQAONTAADjaaAA5eJgAOo10ADqTGAA6xfQAO0foADtegAA8mugAPKvYADzCdAA89UwAPSgoAD0tzAA9YKgAPZOAAD2kdAA9zAAAPg/MAD5kjAA+hnQAPowYAD6RwAA+8cwAPvd0AD8CwAA/E7QAPypMAD8v9AA/RowAQSx0AEIZwABCNgAAQkFMAEMdqABDqugAQ+60AESJwABEuhgARziMAEdPKABHy3QASCuAAEnY6ABKM0wASsvYAEvsAABL/PQATB7YAEzOAABM7+gATgpoAE6uQABQAUAAUWrYAFFwgABRqQAAUnRoAFRw6ABVFMAAVW8oAFV0zABWmpgAYL00AGMpdAAAAAAABvQAAB9KAAAogIAALTIAADA8wAAAAAAACByoAAwrAAAQFEAAAAAAAAJEtAAEiWgABs4YAAkSzgH+AAIB/gAGAf4ACgH+AAwB/gAEAPYADADuABIA6gAQAQYADAGGAAwBngAMAAYADAAOAA4ALgAMAAJEtAAEiWgACRLP//t2m//5MegAAAAAABVVWAAAAAAAAAAAAB9KAABAAAAAAAAAABhWAAARYgAAEx8AABhWAAAKbgAAGhMAABhWAAAU3AAADCsAAA+lAAAaEwAAAb0AAI1+9ABAUQAAEIOA=","eurb6":"AS4AEgAAAH8AXgAGAAQABQAOAAUAAAAWojUPnQBgAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUkIgVjIuMgAAAAAAAAAAAAAAAADyEkAJBUVAAQBYQAEATUABAC1AAABLQAEAPEAAAEdAAQBaQAAAREABAFdAAAA+IAAAO0IAACkiAAAcQAAAHSAAAA9BAQEsIgAAK0ABAAMgAAAaIAAAH0ABAyoiAAAlIAAAHkEAADEgAQEgIgEAOyAAABkgAQEkIAAAUEIAAB0iAABJQgEAWSABABEgAAAmQAAAVjAAAAAAAAAAAAAASCABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAAAIQAAACEAAABSAAABhTAQgEIAAAAAAAAChAAABKQAAAP0AAAEZAAQFSQAAAJ0AAABBAAQVMQAEATkABAAxAAAALQQAAQ0AAACNAAABdQAAAVUAAAFFAAQAzQAEGU0IAAD1AAAAuQAEAE0ARBU9AAABCQAkEXEAFBEFAAQEbQA0EQEABAQAAAAAAAAAAAAAAAAAAAAAAAAAACEAAADMgAQA5QAAAFiABADlAAAAiIAEACUABAi8iAQAyQAAABkAAAAVCAAAhQAAAB0AAAFsgAAA2IAAAOCABADAiAAA3IgAADSAAAA4gAQAKMAAANSAAABUgAABUIAAAFyAAADQiAAAUIAEABiAAAAYgAAA6IAEBAAAAAAEAAAAAAAAAAAAAAAAHFCsAB/E7AAgR+wAIGisACC1FAAg0GAAI9IAACVFLAAlvUAAJzBsACdx7AAqAOwAKiGsACvsLAAsDOwALIUAACzT1AAtU8wALWpAAC2LAAAtwZQALddsAC4DFAAwBCwAMC/UADA+YAAwQDQAMIG0ADCHLAAxIAAAMit0ADIw7AAyYgwAMt+UADL1bAA0JxQANDd0ADRNTAA0fmwANK+MADS1AAA05iAANRdAADUnoAA1TdQANY9UADXhNAA2AfQANgdsADYM4AA2aawANm8gADZ6DAA2imwANqBAADaltAA2u4wAOJD0ADl2NAA5kYAAOZxsADpxTAA6+cAAOztAADvRDAA7/8AAPmiMAD5+YAA+9nQAP1NAAEDyFABBSWwAQdzMAELzLABDA4wAQyRMAEPNgABD7kAARP8sAEWddABG5PQASEJMAEhHwABIflQASULUAEsuFABLzGAATCO0AEwpLABNRQAAVw+UAFlmzAAAAAAABuasAB8OAAAoMtQALNtUAC/gQAAAAAAACA0gAAwTrAAP9WwAAAAAAAIxAAAEYgAABpMAAAjEAgH+AAIB/gAGAf4ACgH+AAwB/gAEAPYADADuABIA6gAQAQYADAGGAAwBngAMAAYADAAOAA4ALgAMAAIxAAAEYgAACMQD//ueA//5bQAAAAAAABVVVAAAAAAAAAAAAB8OAABAAAAAAAAAABgnVAARQKwAEvpUABgnVAAKWgAAGeEAABgnVAAUtAAADBOsAA+HAAAZ4QAAAbmsAIxvoAA/1awAEGPU=","eurb7":"AS4AEgAAAH8AXgAGAAQABQAOAAUAAAAWSWQ5hwBwAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUkIgVjIuMgAAAAAAAAAAAAAAAADwEkAJBUVAAQBYQAEATUABAC1AAABLQAEAPEAAAEdAAQBaQAAAREABAFdAAAA+IAAAO0IAACkiAAAcQAAAHSAAAA9BAQEsIgAAK0ABAAMgAAAaIAAAH0ABAyoiAAAlIAAAHkEAADEgAQEgIgEAOyAAABkgAQEkIAAAUEIAAB0iAABJQgEAWSABABEgAAAmQAAAVjAAAAAAAAAAAAAASCABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAAAIQAAACEAAABSAAABhTAQgEIAAAAAAAAChAAABKQAAAP0AAAEZAAQFSQAAAJ0AAABBAAQVMQAEATkABAAxAAAALQQAAQ0AAACNAAABdQAAAVUAAAFFAAQAzQAEGU0IAAD1AAAAuQAEAE0ARBU9AAABCQAkEXEAFBEFAAQEbQA0EQEABAQAAAAAAAAAAAAAAAAAAAAAAAAAACEAAADMgAQA5QAAAFiABADlAAAAiIAEACUABAi8iAQAyQAAABkAAAAVCAAAhQAAAB0AAAFsgAAA2IAAAOCABADAiAAA3IgAADSAAAA4gAQAKMAAANSAAABUgAABUIAAAFyAAADQiAAAUIAEABiAAAAYgAAA6IAEBAAAAAAEAAAAAAAAAAAAAAAAGYa4ABzkyAAdZIAAHYRsAB3O7AAd6YgAINfcACJBuAAitsgAJCCkACRggAAm3xQAJv8AACi+AAAo3ewAKVMAACmf3AAqHJwAKjKAACpSbAAqh6QAKpzsACrHgAAsu7gALOZIACz0eAAs9kAALTYcAC07bAAt0GwALtUsAC7agAAvCmQAL4TIAC+aFAAwxBQAMNQIADDpVAAxGTgAMUkcADFObAAxflQAMa44ADG+LAAx42wAMiNIADJzHAAykwgAMphcADKdrAAy+CQAMv14ADMIHAAzGBQAMy1cADMyrAAzR/gANRGcADXxHAA2C7gANhZcADbl5AA3auwAN6rIADg81AA4alwAOsOsADrY+AA7TggAO6iAAD087AA9khQAPiHAAD8xJAA/QRwAP2EIAEAGAABAJewAQTAAAEHKVABDCZwARF4sAERjgABEmLgARVhIAEc3OABH0YgASCasAEgsAABJQLgAUsxsAFUUnAAAAAAAButsAB8jbAAoTpQALPpIADABSAAAAAAACBKsAAwcAAAQAGwAAAAAAAIi7AAERdwABmjIAAiLugH+AAIB/gAGAf4ACgH+AAwB/gAEAPYADADuABIA6gAQAQYADAGGAAwBngAMAAYADAAOAA4ALgAMAAIi7AAERdwACIu7//u6J//5lzgAAAAAABVVVAAAAAAAAAAAAB8jbABAAAAAAAAAABg4AAARTJQAEwdsABg4AAAKYSQAGfLcABg4AAAUwkgADBwAAA+RuAAZ8twAAbrcAIzQiABAAbgAEG8k=","eurb8":"AS4AEgAAAH8AXgAGAAQABQAOAAUAAAAWgDKNzQCAAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUkIgVjIuMgAAAAAAAAAAAAAAAADuEkAJBUVAAQBYQAEATUABAC1AAABLQAEAPEAAAEdAAQBaQAAAREABAFdAAAA+IAAAO0IAACkiAAAcQAAAHSAAAA9BAQEsIgAAK0ABAAMgAAAaIAAAH0ABAyoiAAAlIAAAHkEAADEgAQEgIgEAOyAAABkgAQEkIAAAUEIAAB0iAABJQgEAWSABABEgAAAmQAAAVjAAAAAAAAAAAAAASCABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAAAIQAAACEAAABSAAABhTAQgEIAAAAAAAAChAAABKQAAAP0AAAEZAAQFSQAAAJ0AAABBAAQVMQAEATkABAAxAAAALQQAAQ0AAACNAAABdQAAAVUAAAFFAAQAzQAEGU0IAAD1AAAAuQAEAE0ARBU9AAABCQAkEXEAFBEFAAQEbQA0EQEABAQAAAAAAAAAAAAAAAAAAAAAAAAAACEAAADMgAQA5QAAAFiABADlAAAAiIAEACUABAi8iAQAyQAAABkAAAAVCAAAhQAAAB0AAAFsgAAA2IAAAOCABADAiAAA3IgAADSAAAA4gAQAKMAAANSAAABUgAABUIAAAFyAAADQiAAAUIAEABiAAAAYgAAA6IAEBAAAAAAEAAAAAAAAAAAAAAAAFNTAABgdIAAYmaAAGLjAABkBYAAZG1AAG/bAAB1XgAAdyaAAHypgAB9ooAAh1yAAIfZAACOqAAAjySAAJDtAACSGMAAk/9AAJRUgACU0QAAlaCAAJXzgACWmYAAnjgAAJ7eAACfFWAAnxxAAKAVQACgKgAAom8AAKZnwACmfIAApzdAAKkUgACpZ4AArfGAAK4vwACugsAArz2AAK/4QACwDQAAsMfAALGCgACxwMAAslIAALNLAAC0gkAAtP7AALUTgAC1KEAAtokAALadwAC2x0AAtwWAALdYgAC3bUAAt8BAAL64wADCIEAAwogAAMKxgADF2sAAx+GAAMjagADLFAAAy8WAANTuQADVQUAA1wnAANhqgADek4AA39+AAOIPwADmMgAA5nBAAObswADpcAAA6eyAAO36AADwU8AA9TDAAPpgwAD6dYAA+0UAAP4wAAEFe4ABB9VAAQkhQAEJNgABDW0AATKl4AE7i8AAAAAAABu8AAB8zgAAoY2AALRGAADAaEAAAAAAACBbYAAwiQAAQCLAAAAAAAAIVKAAEKlAABj94AAhUogH+AAIB/gAGAf4ACgH+AAwB/gAEAPYADADuABIA6gAQAQYADAGGAAwBngAMAAYADAAOAA4ALgAMAAIVKAAEKlAACFSj//vVs//5wIgAAAAAABVVWAAAAAAAAAAAAB8zgABAAAAAAAAAABhEgAARVYAAExFAABhEgAAKZoAAGgBAABhEgAAUzQAADCJAAA+ZwAAaAEAAAbvAAI0ZMABAIsAAEHeg=","eurb9":"AS4AEgAAAH8AXgAGAAQABQAOAAUAAAAWgtT4EwCQAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUkIgVjIuMgAAAAAAAAAAAAAAAADsEkAJBUVAAQBYQAEATUABAC1AAABLQAEAPEAAAEdAAQBaQAAAREABAFdAAAA+IAAAO0IAACkiAAAcQAAAHSAAAA9BAQEsIgAAK0ABAAMgAAAaIAAAH0ABAyoiAAAlIAAAHkEAADEgAQEgIgEAOyAAABkgAQEkIAAAUEIAAB0iAABJQgEAWSABABEgAAAmQAAAVjAAAAAAAAAAAAAASCABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAABdAAAAXQAAAF0AAAAIQAAACEAAABSAAABhTAQgEIAAAAAAAAChAAABKQAAAP0AAAEZAAQFSQAAAJ0AAABBAAQVMQAEATkABAAxAAAALQQAAQ0AAACNAAABdQAAAVUAAAFFAAQAzQAEGU0IAAD1AAAAuQAEAE0ARBU9AAABCQAkEXEAFBEFAAQEbQA0EQEABAQAAAAAAAAAAAAAAAAAAAAAAAAAACEAAADMgAQA5QAAAFiABADlAAAAiIAEACUABAi8iAQAyQAAABkAAAAVCAAAhQAAAB0AAAFsgAAA2IAAAOCABADAiAAA3IgAADSAAAA4gAQAKMAAANSAAABUgAABUIAAAFyAAADQiAAAUIAEABiAAAAYgAAA6IAEBAAAAAAEAAAAAAAAAAAAAAAAE/dwABcc8AAXlEgAF7IcABf3uAAYEJQAGs2sABwfyAAcjSwAHd9IAB4a8AAgb5wAII1wACIvHAAiTPAAIrpUACMCLAAjdsAAI4ssACOpAAAj2rgAI+6cACQWZAAl6cgAJhGQACYe1AAmIHgAJlwkACZhHAAm7FQAJ9/4ACfk8AAoEbAAKIQQACiX8AAprmQAKb1QACnRMAAp/fAAKiqwACovrAAqXGwAKoksACqYFAAquuQAKvaQACtBJAArXvgAK2PwACto7AArvXAAK8JsACvMXAAr20gAK+8sACv0JAAsCAgALbOkAC6EeAAunVQALqdIAC9pMAAv5YAAMCEsADCppAAw1CwAMwYIADMZ7AAzh1AAM9vUADVVuAA1pUgANiuIADcpHAA3OAgAN1XcADfwAAA4DdQAOQZwADmWpAA6wPgAO/8wADwELAA8NeQAPOjkAD6oZAA/OJQAP4gkAD+NHABAj6wASXsIAEuc3AAAAAAABuasAB8OAAAoMtQALNtUAC/gQAAAAAAACA0cAAwTrAAP9WwAAAAAAAH/CAAD/hAABf0UAAf8HgH+AAIB/gAGAf4ACgH+AAwB/gAEAPYADADuABIA6gAQAQYADAGGAAwBngAMAAYADAAOAA4ALgAMAAH/CAAD/hAAB/wf//wB8//6AuwAAAAAABVVVAAAAAAAAAAAAB8OAABAAAAAAAAAABgnVAARQKwAEvpUABgnVAAKWgAAGeEAABgnVAAUtAAADBOsAA+HAAAZ4QAAAbmsAIxvnAA/1awAEGPU=","eurm10":"ATMAEgAAAH8AYQAHAAUABQAOAAUAAAAWIvvBOQCgAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUk0gVjIuMgAAAAAAAAAAAAAAAADqDVARBUdQAQBOUAEAUlABADFQAABKUAEAPlAAAElQAQBaUAAARlABAFxQAABAIAAAQVMAADgjAAAXUAAAHiAAABlSAQEnIwAAIVABAAUgAAAjIAAAHFABAzojAAAyIAAAIFIAADkgAQEdIwEANiAAABogAQEtIAAAS1MAACwjAABMUwEAWyABABEgAAAfUAAAXUAAAAAAAAAAAAAATyABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAAAIQAAACEAAATTEAABhkAQhNMQAAAAAAAChQAABRUAAAP1AAAEhQAQFXUAAANVAAABVQAQVQUAEAVFAAAAlQAAAKUgAARVAAACZQAABgUAAAWVAAAFVQAQArUAUGWFMAADlQAAAlUAEAE1ARBVNQAAA9UA0EX1AJBENQAQEiUAkERFABAQAAAAAAAAAAAAAAAAAAAAAAAAAACFAAADkgAQAuUAAAEiABADNQAAAWIAEADFABAiojAQA7UAAABlAAAANTAAAkUAAAB1AAAF4gAABCIAAAKSABAC8jAAA3IwAADiAAAA8gAQALQAAAPCAAABQgAABWIAAAGyAAADAjAAAQIAEABCAAAAMjAAA0IAEBAAAAAAEAAAAAAAAAAAAAAAAEcToABU+VAAVUAgAFW8AABcKiAAXYwgAGNsoABk8gAAZvNQAGqvIABrg4AAbbfQAG6gAAB0taAAeIMgAHyFsAB8qSAAfixgAH7fgAB/11AAf+kAAIBBgACAdqAAgxcwAIOTIACGr6AAirIwAIxJUACM1uAAjVLQAI2ZoACN4GAAjh1QAI4nMACOSqAAjqMgAI8fAACPZdAAj3eAAJA6MACRnDAAk3ogAJOdgACWT9AAlqhQAJbvIACYClAAmJfgAJlsUACamTAAmrygAJrgAACa8bAAmwNgAJvGIACb6YAAnh/gAJ8pYACkfFAApW4gAKWF0ACnzeAAqJCgAKmaIACqFgAAqoAwAKqjoACrMTAAtArQALaZsAC28jAAt1xgALkFMAC6Q9AAwRwgAMGYAADB8IAAw2QwAMPx0ADFQiAAxVPQAMY54ADIggAAzZ/QAM/n4ADUDeAA1DFQANRmYADVTIAA2dywAOAnYADgOSAA6nSwAPyIMAELTDAAAAAAABuoAAB1igAAhRiAAKEZAACxAAAAv92AAAAAAAAFL4AAIEQAADBmAAA/9IAAAAAAAAbqAAAONmAAFVGgABxs2Af4AAgH+AAYB/gAKAf4ADAH+AAQA9gAMAO4AEgDqABABBgAMAYYADAGeAAwABgAMAA4ADgAuAAwAAcbMAAONmAAHGzf//HJr//qrmAAAAAAAFVVUAAAAAAAAAAAAHWKAAEAAAAAAAAAAGDMAABFJAAATA4AAGDMAAApfAAAZ7YAAGDMAABS+AAAMGYAAD46AABntgAABuoAAjLN0AD/0gAAQa8A==","eurm5":"ATMAEgAAAH8AYQAHAAUABQAOAAUAAAAWNzvG5wBQAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUk0gVjIuMgAAAAAAAAAAAAAAAAD0DVARBUdQAQBOUAEAUlABADFQAABKUAEAPlAAAElQAQBaUAAARlABAFxQAABAIAAAQVMAADgjAAAXUAAAHiAAABlSAQEnIwAAIVABAAUgAAAjIAAAHFABAzojAAAyIAAAIFIAADkgAQEdIwEANiAAABogAQEtIAAAS1MAACwjAABMUwEAWyABABEgAAAfUAAAXUAAAAAAAAAAAAAATyABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAAAIQAAACEAAATTEAABhkAQhNMQAAAAAAAChQAABRUAAAP1AAAEhQAQFXUAAANVAAABVQAQVQUAEAVFAAAAlQAAAKUgAARVAAACZQAABgUAAAWVAAAFVQAQArUAUGWFMAADlQAAAlUAEAE1ARBVNQAAA9UA0EX1AJBENQAQEiUAkERFABAQAAAAAAAAAAAAAAAAAAAAAAAAAACFAAADkgAQAuUAAAEiABADNQAAAWIAEADFABAiojAQA7UAAABlAAAANTAAAkUAAAB1AAAF4gAABCIAAAKSABAC8jAAA3IwAADiAAAA8gAQALQAAAPCAAABQgAABWIAAAGyAAADAjAAAQIAEABCAAAAMjAAA0IAEBAAAAAAEAAAAAAAAAAAAAAAAIbRoACXdtAAl8ugAJhgAACgE6AAobugAKjFoACqmAAArP7QALF3oACydgAAtRpgALYwAAC9eaAAwgegAMbVMADG/6AAyNAAAMmmAADKztAAyuQAAMtOAADLjaAAzrMwAM9HoADTAaAA188wANm20ADaYGAA2vTQANtJoADbnmAA2+egANvzMADcHaAA3IegAN0cAADdcNAA3YYAAN5vMADgFzAA4lOgAOJ+AADluNAA5iLQAOZ3oADnytAA6HRgAOly0ADq2zAA6wWgAOswAADrRTAA61pgAOxDoADsbgAA7xRgAPBSYAD2stAA99TQAPfw0AD6rGAA+5WgAPzToAD9aAAA/ecwAP4RoAD+uzABCVTQAQxlMAEMzzABDU5gAQ9LMAEQyNABGPugARmQAAEZ+gABG7cwARxg0AEd86ABHgjQAR8cYAEh2AABJ/jQASq0YAEvrGABL9bQATAWYAExKgABNqEwAT4qYAE+P6ABSoEwAWAoAAFx1zAAAAAAABvQAAB2NAAAhdkAAKICAACyAAAAwPMAAAAAAAAFNwAAIHKgADCsAABAUQAAAAAAAAhIAAARBaAAGYhgACILOAf4AAgH+AAYB/gAKAf4ADAH+AAQA9gAMAO4AEgDqABABBgAMAYYADAGeAAwABgAMAA4ADgAuAAwAAiC0AARBaAAIgs//+76b//md6AAAAAAAFVVYAAAAAAAAAAAAHY0AAEAAAAAAAAAAGFYAABFiAAATHwAAGFYAAApuAAAaEwAAGFYAABTcAAAMKwAAD6UAABoTAAABvQAAjX70AEBRAAAQg4A==","eurm6":"ATMAEgAAAH8AYQAHAAUABQAOAAUAAAAW5Ax4JwBgAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUk0gVjIuMgAAAAAAAAAAAAAAAADyDVARBUdQAQBOUAEAUlABADFQAABKUAEAPlAAAElQAQBaUAAARlABAFxQAABAIAAAQVMAADgjAAAXUAAAHiAAABlSAQEnIwAAIVABAAUgAAAjIAAAHFABAzojAAAyIAAAIFIAADkgAQEdIwEANiAAABogAQEtIAAAS1MAACwjAABMUwEAWyABABEgAAAfUAAAXUAAAAAAAAAAAAAATyABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAAAIQAAACEAAATTEAABhkAQhNMQAAAAAAAChQAABRUAAAP1AAAEhQAQFXUAAANVAAABVQAQVQUAEAVFAAAAlQAAAKUgAARVAAACZQAABgUAAAWVAAAFVQAQArUAUGWFMAADlQAAAlUAEAE1ARBVNQAAA9UA0EX1AJBENQAQEiUAkERFABAQAAAAAAAAAAAAAAAAAAAAAAAAAACFAAADkgAQAuUAAAEiABADNQAAAWIAEADFABAiojAQA7UAAABlAAAANTAAAkUAAAB1AAAF4gAABCIAAAKSABAC8jAAA3IwAADiAAAA8gAQALQAAAPCAAABQgAABWIAAAGyAAADAjAAAQIAEABCAAAAMjAAA0IAEBAAAAAAEAAAAAAAAAAAAAAAAGpYAAB6cIAAesKAAHtSAACCxIAAhF6AAIstAACM8AAAj0KAAJOVgACUi4AAlxkAAJgmAACfMgAAo5mAAKg+gACoZ4AAqigAAKr3gACsFoAArCsAAKyRgACszwAAr9oAALBpgAC0BAAAuKkAALqAgAC7JIAAu7QAALwGAAC8WAAAvJ6AALyqAAC80wAAvTmAAL3JAAC+GwAAvi+AAL8RAADAqwAAwtSAAML9gADGHQAAxoOAAMbVgADIHYAAyMGAAMm3gADLFAAAyz0AAMtmAADLeoAAy48AAMxwgADMmYAAzymAANBdAADWh4AA15+AANe7AADaX4AA20EAANx0gADdBAAA3X8AAN2oAADeTAAA6IwAAOuCgADr6QAA7GQAAO5QAADvwQAA966AAPg+AAD4pIAA+lMAAPr3AAD8fIAA/JEAAP2bgAEAQAABBi0AAQjRgAENn4ABDciAAQ4GAAEPEIABFFmAARujAAEbt4ABJ5GAATyBAAFNmwAAAAAAABuasAB1UVAAhNhQAKDLUACwqrAAv4EAAAAAAAAFLQAAIDSAADBOsAA/1bAAAAAAAAgCAAAQdgAAGLEAACDsCAf4AAgH+AAYB/gAKAf4ADAH+AAQA9gAMAO4AEgDqABABBgAMAYYADAGeAAwABgAMAA4ADgAuAAwAAg7AAAQdgAAIOwP/++KD//nTwAAAAAAAFVVUAAAAAAAAAAAAHVRUAEAAAAAAAAAAGCdUABFArAAS+lQAGCdUAApaAAAZ4QAAGCdUABS0AAAME6wAD4cAABnhAAABuawAjG+gAD/VrAAQY9Q==","eurm7":"ATMAEgAAAH8AYQAHAAUABQAOAAUAAAAW+ruHXABwAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUk0gVjIuMgAAAAAAAAAAAAAAAADwDVARBUdQAQBOUAEAUlABADFQAABKUAEAPlAAAElQAQBaUAAARlABAFxQAABAIAAAQVMAADgjAAAXUAAAHiAAABlSAQEnIwAAIVABAAUgAAAjIAAAHFABAzojAAAyIAAAIFIAADkgAQEdIwEANiAAABogAQEtIAAAS1MAACwjAABMUwEAWyABABEgAAAfUAAAXUAAAAAAAAAAAAAATyABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAAAIQAAACEAAATTEAABhkAQhNMQAAAAAAAChQAABRUAAAP1AAAEhQAQFXUAAANVAAABVQAQVQUAEAVFAAAAlQAAAKUgAARVAAACZQAABgUAAAWVAAAFVQAQArUAUGWFMAADlQAAAlUAEAE1ARBVNQAAA9UA0EX1AJBENQAQEiUAkERFABAQAAAAAAAAAAAAAAAAAAAAAAAAAACFAAADkgAQAuUAAAEiABADNQAAAWIAEADFABAiojAQA7UAAABlAAAANTAAAkUAAAB1AAAF4gAABCIAAAKSABAC8jAAA3IwAADiAAAA8gAQALQAAAPCAAABQgAABWIAAAGyAAADAjAAAQIAEABCAAAAMjAAA0IAEBAAAAAAEAAAAAAAAAAAAAAAAF/wAABvpAAAb/QAAHCAAAB3xAAAeVQAAH/4AACBsAAAg/QAAIgsAACJHAAAi5mwAIygAACTgAAAl8wAAJxUAACcfAAAnjGwAJ78AACgFAAAoCgAAKCMAACgyAAAo8AAAKRMAACn0AAArFgAAK4kAACuxAAAr1AAAK+gAACv8AAAsDTgALBAAACwaAAAsMwAALFYAACxqAAAsbwAALKYAAC0KAAAtkQAALZsAAC5eAAAudwAALosAAC7bAAAvAwAALz8AAC+UAAAvngAAL6gAAC+tAAAvsgAAL+kAAC/zAAAwkwAAMN4AADJfAAAyo1QAMqoAADNPAAAzhgAAM9EAADP0AAA0EgAANBwAADREAAA2xAAAN30AADeWAAA3tAAAOCwAADiGAAA6dQAAOpgAADqxAAA7GgAAO0IAADuhAAA7pgAAO+cAADyMAAA9/gAAPqMAAD/PAAA/2QAAP+gAAEApAABBcwAAQzoAAEM/AABGIwAASz44AE9qAAAAAAAAButsAB1olAAhTQAAKE6UACxJJAAwAUgAAAAAAAFMJAAIEqwADBwAABAAbAAAAAAAAfQAAAQDyAAGBawACAeWAf4AAgH+AAYB/gAKAf4ADAH+AAQA9gAMAO4AEgDqABABBgAMAYYADAGeAAwABgAMAA4ADgAuAAwAAgHkAAQDyAAIB5f/+/w7//n6VAAAAAAAFVVUAAAAAAAAAAAAHWiUAEAAAAAAAAAAGDgAABFMlAATB2wAGDgAAAphJAAZ8twAGDgAABTCSAAMHAAAD5G4ABny3AAButwAjNCIAEABuAAQbyQ==","eurm8":"ATMAEgAAAH8AYQAHAAUABQAOAAUAAAAWeMbKNgCAAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUk0gVjIuMgAAAAAAAAAAAAAAAADuDVARBUdQAQBOUAEAUlABADFQAABKUAEAPlAAAElQAQBaUAAARlABAFxQAABAIAAAQVMAADgjAAAXUAAAHiAAABlSAQEnIwAAIVABAAUgAAAjIAAAHFABAzojAAAyIAAAIFIAADkgAQEdIwEANiAAABogAQEtIAAAS1MAACwjAABMUwEAWyABABEgAAAfUAAAXUAAAAAAAAAAAAAATyABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAAAIQAAACEAAATTEAABhkAQhNMQAAAAAAAChQAABRUAAAP1AAAEhQAQFXUAAANVAAABVQAQVQUAEAVFAAAAlQAAAKUgAARVAAACZQAABgUAAAWVAAAFVQAQArUAUGWFMAADlQAAAlUAEAE1ARBVNQAAA9UA0EX1AJBENQAQEiUAkERFABAQAAAAAAAAAAAAAAAAAAAAAAAAAACFAAADkgAQAuUAAAEiABADNQAAAWIAEADFABAiojAQA7UAAABlAAAANTAAAkUAAAB1AAAF4gAABCIAAAKSABAC8jAAA3IwAADiAAAA8gAQALQAAAPCAAABQgAABWIAAAGyAAADAjAAAQIAEABCAAAAMjAAA0IAEBAAAAAAEAAAAAAAAAAAAAAAAEzMgABb0KAAXB0gAFyjAABjlaAAZRQgAGttwABtEoAAbz0gAHNF4AB0K2AAdo1AAHeIAAB+GwAAgjbgAIaMIACGsmAAiFUAAIkWYACKIiAAijVAAIqU4ACKzkAAjaUAAI4q4ACRh4AAldzAAJeUoACYLaAAmLOAAJkAAACZTIAAmY5gAJmZAACZv0AAmh7gAJqkwACa8UAAmwRgAJvWwACdVUAAn1mgAJ9/4ACiacAAoslgAKMV4ACkR+AApODgAKXGYACnC4AApzHAAKdYAACnayAAp35AAKhQoACoduAAqtrgAKv5wACxumAAsr/AALLZQAC1UGAAtiLAALdBoAC3x4AAuDpAALhggAC4+YAAwomAAMVNIADFrMAAxh+AAMfqgADJQsAA0KggANEuAADRjaAA0x9AANO4QADVI6AA1TbAANYvYADYpoAA3i3AAOCk4ADlIGAA5UagAOWAAADmeKAA62bgAPIzQADyRmAA/VTgARDdAAEg0UAAAAAAABu8AAB13wAAhXjAAKGNgACxgAAAwGhAAAAAAAAFM0AAIFtgADCJAABAIsAAAAAAAAd4gAAPW0AAFwjgAB62iAf4AAgH+AAYB/gAKAf4ADAH+AAQA9gAMAO4AEgDqABABBgAMAYYADAGeAAwABgAMAA4ADgAuAAwAAetoAAPW0AAHraP//Ckz//o9yAAAAAAAFVVYAAAAAAAAAAAAHXfAAEAAAAAAAAAAGESAABFVgAATEUAAGESAAApmgAAaAEAAGESAABTNAAAMIkAAD5nAABoAQAABu8AAjRkwAEAiwAAQd6A==","eurm9":"ATMAEgAAAH8AYQAHAAUABQAOAAUAAAAWlSOt9QCQAAAWVGVYIG1hdGggaXRhbGljIHN1YnNldAAAAAAAAAAAAAAAAAAAAAAACUVVUk0gVjIuMgAAAAAAAAAAAAAAAADsDVARBUdQAQBOUAEAUlABADFQAABKUAEAPlAAAElQAQBaUAAARlABAFxQAABAIAAAQVMAADgjAAAXUAAAHiAAABlSAQEnIwAAIVABAAUgAAAjIAAAHFABAzojAAAyIAAAIFIAADkgAQEdIwEANiAAABogAQEtIAAAS1MAACwjAABMUwEAWyABABEgAAAfUAAAXUAAAAAAAAAAAAAATyABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAABZQAAAWUAAAFlAAAAIQAAACEAAATTEAABhkAQhNMQAAAAAAAChQAABRUAAAP1AAAEhQAQFXUAAANVAAABVQAQVQUAEAVFAAAAlQAAAKUgAARVAAACZQAABgUAAAWVAAAFVQAQArUAUGWFMAADlQAAAlUAEAE1ARBVNQAAA9UA0EX1AJBENQAQEiUAkERFABAQAAAAAAAAAAAAAAAAAAAAAAAAAACFAAADkgAQAuUAAAEiABADNQAAAWIAEADFABAiojAQA7UAAABlAAAANTAAAkUAAAB1AAAF4gAABCIAAAKSABAC8jAAA3IwAADiAAAA8gAQALQAAAPCAAABQgAABWIAAAGyAAADAjAAAQIAEABCAAAAMjAAA0IAEBAAAAAAEAAAAAAAAAAAAAAAAEkscABXeyAAV8QAAFhDkABe4kAAYE6wAGZbkABn7HAAafzgAG3U4ABur5AAcPRwAHHjkAB4JyAAfBFQAIAyQACAVrAAgeVQAIKdwACDnOAAg68gAIQKQACEQOAAhvVQAId04ACKqOAAjsnAAJBs4ACQ/rAAkX5AAJHHIACSEAAAkk6wAJJY4ACSfVAAkthwAJNYAACToOAAk7MgAJR7kACV6AAAl9QAAJf4cACavyAAmxpAAJtjIACchrAAnRhwAJ3zIACfKOAAn01QAJ9xwACfhAAAn5ZAAKBesACggyAAospAAKPbkACpVrAAqk+QAKpoAACswVAArYnAAK6bIACvGrAAr4gAAK+scACwPkAAuVqwALv84AC8WAAAvMVQAL56sAC/wrAAxs6wAMdOQADHqVAAySgAAMm5wADLFAAAyyZAAMwTIADObHAA07DgANYKQADaT5AA2nQAANqqsADbl5AA4EpAAObEcADm1rAA8V+QAQP7kAETLyAAAAAAABuasAB1UVAAhNhQAKDLUACwqrAAv4EAAAAAAAAFLQAAIDRwADBOsAA/1bAAAAAAAAceQAAOocAAFfKwAB1DmAf4AAgH+AAYB/gAKAf4ADAH+AAQA9gAMAO4AEgDqABABBgAMAYYADAGeAAwABgAMAA4ADgAuAAwAAdQ4AAOocAAHUOf//FeT//qDVAAAAAAAFVVUAAAAAAAAAAAAHVRUAEAAAAAAAAAAGCdUABFArAAS+lQAGCdUAApaAAAZ4QAAGCdUABS0AAAME6wAD4cAABnhAAABuawAjG+cAD/VrAAQY9Q==","eusb10":"AN0AEgAAAHgAJgAGAAQAAgACAAIAAAAWsJWMkwCgAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU0IgVjIuMgAAAAAAAAAAAAAAAADqGjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQgAAAAAAAAIUAAAApAAAAAAAAAAAAAAB1AAAAfQAEAG0AAAAxAAAAiQAAADkAAABJAAAANQgAAI0AAAARAAQEGQgEBIEAAABdAAAAkQAAAHEAAABZAAAAQQAAAE0AAABlAAAAIQAAAC0AEABVAAAARQAAAJUAAABhAAAAMQAAAD0AAAAAAAAAAAAAAAAAAAB5AAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAPbgAAFyUAACQOAAAkSgAAJJoAACU/AAAmUgAAJ+IAACgZAAAp2wAAK5MAACu2AAAr/AAAL4AAAC/GAAAwEQAAMFcAADD8AAAxfgAAMycAADMsAAAzvQAAM9YAADREAAA2sAAAN1AAADf6AAA4BAAAOA4AADizAAA7gwAAO+IAADwPAAA/9wAARwkAAEeLAAAAAAAADBmAAB8dAAAlTSgALPEAAC/3YAAAAAAABVLoAAgRAAAP/SAAAAAAAAPoAgDCAAIAwgAEAAoJgAAEA8wAAAAAABVVVAAAAAAAAAAAAB8dAABAAAAAAAAAABgzAAARSQAAEwOAABgzAAAKXwAAGe2AABgzAAAUvgAADBmAAA+OgAAZ7YAAAbqAAIyzdAA/9IAAEGvA=","eusb5":"AN0AEgAAAHgAJgAGAAQAAgACAAIAAAAWKR7o6wBQAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU0IgVjIuMgAAAAAAAAAAAAAAAAD0GjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQgAAAAAAAAIUAAAApAAAAAAAAAAAAAAB1AAAAfQAEAG0AAAAxAAAAiQAAADkAAABJAAAANQgAAI0AAAARAAQEGQgEBIEAAABdAAAAkQAAAHEAAABZAAAAQQAAAE0AAABlAAAAIQAAAC0AEABVAAAARQAAAJUAAABhAAAAMQAAAD0AAAAAAAAAAAAAAAAAAAB5AAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAerYAAJ2VAADX76AA2P7QANpoYADdUjAA4i0wAOk9MADqNdAA8ifQAPnsoAD6itAA+8cwAQurMAEM56ABDjqgAQ93AAESYNABFKxgARwtYAEcRAABHtNgAR9EYAEhNaABLCgAAS77MAEx+6ABMijQATJWAAE1P9ABQfYwAUOjoAFEbwABVhcAAXYMMAF4V9AAAAAAADCsAAB9KAAAlgxgALTIAADA8wAAAAAAABVqYAAgcqAAQFEAAAAAAAARqAgDCAAIAwgAEAAtXgAAEiWgAAAAAABVVWAAAAAAAAAAAAB9KAABAAAAAAAAAABhWAAARYgAAEx8AABhWAAAKbgAAGhMAABhWAAAU3AAADCsAAA+lAAAaEwAAAb0AAI1+9ABAUQAAEIOA=","eusb6":"AN0AEgAAAHgAJgAGAAQAAgACAAIAAAAWjvSeXgBgAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU0IgVjIuMgAAAAAAAAAAAAAAAADyGjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQgAAAAAAAAIUAAAApAAAAAAAAAAAAAAB1AAAAfQAEAG0AAAAxAAAAiQAAADkAAABJAAAANQgAAI0AAAARAAQEGQgEBIEAAABdAAAAkQAAAHEAAABZAAAAQQAAAE0AAABlAAAAIQAAAC0AEABVAAAARQAAAJUAAABhAAAAMQAAAD0AAAAAAAAAAAAAAAAAAAB5AAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAXawAAH+eAAC4bAAAuXQAALrUAAC9qgAAwmQAAMlEAADKNgAA0fIAANmCAADaHAAA21AAAOrIAADr/AAA7UYAAO56AADxUAAA84wAAPraAAD68AAA/W4AAP3cAAD/wAABCmgAAQ0oAAEQFAABEEAAARBsAAETQgABH6IAASFEAAEiCgABMzoAAVJWAAFUkgAAAAAAADBOsAB8OAAAlOywALNtUAC/gQAAAAAAABVBUAAgNIAAP9WwAAAAAAARMAgDCAAIAwgAEAAsKdAAEapQAAAAAABVVVAAAAAAAAAAAAB8OAABAAAAAAAAAABgnVAARQKwAEvpUABgnVAAKWgAAGeEAABgnVAAUtAAADBOsAA+HAAAZ4QAAAbmsAIxvoAA/1awAEGPU=","eusb7":"AN0AEgAAAHgAJgAGAAQAAgACAAIAAAAW249NFwBwAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU0IgVjIuMgAAAAAAAAAAAAAAAADwGjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQgAAAAAAAAIUAAAApAAAAAAAAAAAAAAB1AAAAfQAEAG0AAAAxAAAAiQAAADkAAABJAAAANQgAAI0AAAARAAQEGQgEBIEAAABdAAAAkQAAAHEAAABZAAAAQQAAAE0AAABlAAAAIQAAAC0AEABVAAAARQAAAJUAAABhAAAAMQAAAD0AAAAAAAAAAAAAAAAAAAB5AAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAUt5QAHPukACrQuAArEQAAK2a4ACwXgAAtPiQALuq4AC8lpAAxB8gAMt84ADMEuAAzT7gANxQAADdfAAA3r1wAN/pcADirJAA5NmwAOv3IADsDJAA7noAAO7lIADwvJAA+x2wAP3LcAEApAABAM7gAQD5sAEDvOABD8qQARFhsAESIpABIuBQAUEtcAFDWpAAAAAAADBwAAB8jbAAlVNwALPpIADABSAAAAAAABVQAAAgSrAAQAGwAAAAAAAQvbgDCAAIAwgAEAArBCAAETTgAAAAAABVVVAAAAAAAAAAAAB8jbABAAAAAAAAAABg4AAARTJQAEwdsABg4AAAKYSQAGfLcABg4AAAUwkgADBwAAA+RuAAZ8twAAbrcAIzQiABAAbgAEG8k=","eusb8":"AN0AEgAAAHgAJgAGAAQAAgACAAIAAAAWZ1+2OgCAAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU0IgVjIuMgAAAAAAAAAAAAAAAADuGjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQgAAAAAAAAIUAAAApAAAAAAAAAAAAAAB1AAAAfQAEAG0AAAAxAAAAiQAAADkAAABJAAAANQgAAI0AAAARAAQEGQgEBIEAAABdAAAAkQAAAHEAAABZAAAAQQAAAE0AAABlAAAAIQAAAC0AEABVAAAARQAAAJUAAABhAAAAMQAAAD0AAAAAAAAAAAAAAAAAAAB5AAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAQGtAAGCg4ACWh0AAl4HAAJjPwACbgKAAn/zAAKaCwACnaGAArr8gALXsIAC2fkAAt6KAAMZQAADHdEAAyK1gAMnRoADMgoAAzqFAANWPoADVpIAA2AHgANhqQADaNYAA5FIAAObuAADps8AA6d2AAOoHQADsuCAA+HYgAPoCwAD6vqABCw2gASiSYAEqsSAAAAAAADCJAAB8zgAAlaCAALRGAADAaEAAAAAAABVbAAAgW2AAQCLAAAAAAAAQTwgDCAAIAwgAEAAp54AAEMMAAAAAAABVVWAAAAAAAAAAAAB8zgABAAAAAAAAAABhEgAARVYAAExFAABhEgAAKZoAAGgBAABhEgAAUzQAADCJAAA+ZwAAaAEAAAbvAAI0ZMABAIsAAEHeg=","eusb9":"AN0AEgAAAHgAJgAGAAQAAgACAAIAAAAWHpN8ugCQAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU0IgVjIuMgAAAAAAAAAAAAAAAADsGjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQgAAAAAAAAIUAAAApAAAAAAAAAAAAAAB1AAAAfQAEAG0AAAAxAAAAiQAAADkAAABJAAAANQgAAI0AAAARAAQEGQgEBIEAAABdAAAAkQAAAHEAAABZAAAAQQAAAE0AAABlAAAAIQAAAC0AEABVAAAARQAAAJUAAABhAAAAMQAAAD0AAAAAAAAAAAAAAAAAAAB5AAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAPr9QAF4fAACSn1AAk5NQAJTYsACXd7AAm9YAAKIwsACjEFAAqjZQALEzsACxwgAAst6wAMEqsADCR1AAw3hQAMSVAADHNAAAyUSwANAFAADQGVAA0mcAANLMsADUjAAA3mVQAODwAADjo1AA48wAAOP0sADmk7AA8gOwAPOGAAD0PQABBB+wASDgUAEi8QAAAAAAADBOsAB8OAAAlOywALNtUAC/gQAAAAAAABVBUAAgNHAAP9WwAAAAAAAP4rgDCAAIAwgAEAAo0OAAEFOQAAAAAABVVVAAAAAAAAAAAAB8OAABAAAAAAAAAABgnVAARQKwAEvpUABgnVAAKWgAAGeEAABgnVAAUtAAADBOsAA+HAAAZ4QAAAbmsAIxvnAA/1awAEGPU=","eusm10":"AOAAEgAAAHgAJwAGAAQABAACAAIAAAAWTFKnrgCgAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU00gVjIuMgAAAAAAAAAAAAAAAADqGzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUgAAAAAAAAIkAAAApAAAAAAAAAAAAAAB9AAAAdQAEAHEAAAA1AAAAjQAAAD0AAABBACAAOQgAAJEAEAARAAQEGQgEBIUAAABhAAAAlQAAAHkAEABZAAAASQAAAE0AAABpAAAAIQAAAC0AMABdAAAAUQAAAJkAAABlAAAAMQAAAEUAAAAAAAAAAAAAAAAAAACBAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAANp8AAFHugABuR4AAgHagAIGR0ACD2eAAisPgAI0vYACN8iAAlj4gAJiGMACaQLAAmrygAJu0YACmNtAAqCZgAKkeMACpmiAAqiewAK8z0AC1JgAAts7QALcnUAC3f9AAuQUwAMGYAADC1qAAxUIgAMYoMADGS6AAxm8AANKr4ADT/DAA1JuAAOJvgAD7duAA/UMgAAAAAAAwZgAAdYoAAJU0oACzxAAAv92AAAAAAAAVS6AAIEQAAD/0gAAAAAAAA3UAAAbqAAAKXwgDCAAIAwgAEAAjiAAADjZgAAAAAABVVVAAAAAAAAAAAAB1igABAAAAAAAAAABgzAAARSQAAEwOAABgzAAAKXwAAGe2AABgzAAAUvgAADBmAAA+OgAAZ7YAAAbqAAIyzdAA/9IAAEGvA=","eusm5":"AOAAEgAAAHgAJwAGAAQABAACAAIAAAAWlB1XVwBQAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU00gVjIuMgAAAAAAAAAAAAAAAAD0GzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUgAAAAAAAAIkAAAApAAAAAAAAAAAAAAB9AAAAdQAEAHEAAAA1AAAAjQAAAD0AAABBACAAOQgAAJEAEAARAAQEGQgEBIUAAABhAAAAlQAAAHkAEABZAAAASQAAAE0AAABpAAAAIQAAAC0AMABdAAAAUQAAAJkAAABlAAAAMQAAAEUAAAAAAAAAAAAAAAAAAACBAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAcxwAAJPSAAC1xgAAy42gAMzg0ADPnGAA1+RgANrKYADbs6AA5aOgAOhfMADqcTAA6wWgAOwuYAD4xNAA+xZgAPw/MAD806AA/X0wAQOI0AEKqAABDKTQAQ0O0AENeNABD0swARmQAAEbDaABHfOgAR8HMAEfMaABH1wAAS4EYAEvlzABMFYAAUDmAAFe4GABYQegAAAAAAAwrAAAdjQAAJYMYAC0yAAAwPMAAAAAAAAVamAAIHKgAEBRAAAAAAAABCQAAAhIAAAMbAgDCAAIAwgAEAAqjgAAEQWgAAAAAABVVWAAAAAAAAAAAAB2NAABAAAAAAAAAABhWAAARYgAAEx8AABhWAAAKbgAAGhMAABhWAAAU3AAADCsAAA+lAAAaEwAAAb0AAI1+9ABAUQAAEIOA=","eusm6":"AOAAEgAAAHgAJwAGAAQABAACAAIAAAAW/BiHugBgAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU00gVjIuMgAAAAAAAAAAAAAAAADyGzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUgAAAAAAAAIkAAAApAAAAAAAAAAAAAAB9AAAAdQAEAHEAAAA1AAAAjQAAAD0AAABBACAAOQgAAJEAEAARAAQEGQgEBIUAAABhAAAAlQAAAHkAEABZAAAASQAAAE0AAABpAAAAIQAAAC0AMABdAAAAUQAAAJkAAABlAAAAMQAAAEUAAAAAAAAAAAAAAAAAAACBAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAV0kAAHbqgACXv4AArM8AAK4XAACwu4AAuL2AALuLAAC8bIAAxgiAAMitAADKrYAAyz0AAMxcAADYiAAA2sYAANvlAADcdIAA3RiAAOLxAADp1AAA68AAAOwmgADsjQAA7lAAAPg+AAD5rwAA/HyAAP2HAAD9sAAA/dkAAQwFgAENiwABDkOAAR5HgAE7RIABPVmAAAAAAAAwTrAAdVFQAJTssACzbVAAv4EAAAAAAAAVQVAAIDSAAD/VsAAAAAAABAEAAAgCAAAMAwgDCAAIAwgAEAApJwAAEHYAAAAAAABVVVAAAAAAAAAAAAB1UVABAAAAAAAAAABgnVAARQKwAEvpUABgnVAAKWgAAGeEAABgnVAAUtAAADBOsAA+HAAAZ4QAAAbmsAIxvoAA/1awAEGPU=","eusm7":"AOAAEgAAAHgAJwAGAAQABAACAAIAAAAWahQE5gBwAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU00gVjIuMgAAAAAAAAAAAAAAAADwGzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUgAAAAAAAAIkAAAApAAAAAAAAAAAAAAB9AAAAdQAEAHEAAAA1AAAAjQAAAD0AAABBACAAOQgAAJEAEAARAAQEGQgEBIUAAABhAAAAlQAAAHkAEABZAAAASQAAAE0AAABpAAAAIQAAAC0AMABdAAAAUQAAAJkAAABlAAAAMQAAAEUAAAAAAAAAAAAAAAAAAACBAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAATVgAAGw0AACMPAAAoMgAAKIIAACknAAArGwAAK8oAACwBAAAuWQAALv4AAC97AAAvngAAL+QAADLcAAAzaAAAM64AADPRAAAz+QAANWYAADcUAAA3jAAAN6UAADe+AAA4LAAAOpgAADryAAA7oQAAO+IAADvsAAA79gAAP2sAAD/KAAA/9wAAQ98AAErxAABLcwAAAAAAAAwcAAAdaJQAJVTcACz6SAAwAUgAAAAAAAVUAAAIEqwAEABsAAAAAAAA+gAAAfQAAALuAgDCAAIAwgAEAAoJeAAEA8gAAAAAABVVVAAAAAAAAAAAAB1olABAAAAAAAAAABg4AAARTJQAEwdsABg4AAAKYSQAGfLcABg4AAAUwkgADBwAAA+RuAAZ8twAAbrcAIzQiABAAbgAEG8k=","eusm8":"AOAAEgAAAHgAJwAGAAQABAACAAIAAAAWoul3jACAAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU00gVjIuMgAAAAAAAAAAAAAAAADuGzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUgAAAAAAAAIkAAAApAAAAAAAAAAAAAAB9AAAAdQAEAHEAAAA1AAAAjQAAAD0AAABBACAAOQgAAJEAEAARAAQEGQgEBIUAAABhAAAAlQAAAHkAEABZAAAASQAAAE0AAABpAAAAIQAAAC0AMABdAAAAUQAAAJkAAABlAAAAMQAAAEUAAAAAAAAAAAAAAAAAAACBAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAO2eAAFkbQAB378AAi7aAAIzqgACPZcAAlurAAJmMgACaYEAAo2ZAAKXhgACnwsAAqEmAAKlXAAC0xQAAtuAAALftgAC4dEAAuQ5AAL6LgADFAwAAxtEAAMcxQADHkYAAyTkAANKMAADT5oAA1ohAANeCgADXqQAA18+AAOUewADmjIAA5znAAPZDwAERfEABE3DAAAAAAAAwiQAAdd8AAJWggAC0RgAAwGhAAAAAAAAVWwAAIFtgAEAiwAAAAAAAA8KAAAeFAAALR4gDCAAIAwgAEAAmpIAAD3UAAAAAAABVVWAAAAAAAAAAAAB13wABAAAAAAAAAABhEgAARVYAAExFAABhEgAAKZoAAGgBAABhEgAAUzQAADCJAAA+ZwAAaAEAAAbvAAI0ZMABAIsAAEHeg=","eusm9":"AOAAEgAAAHgAJwAGAAQABAACAAIAAAAWdd5K2ACQAAAXVGVYIG1hdGggc3ltYm9scyBzdWJzZXQAAAAAAAAAAAAAAAAAAAAACUVVU00gVjIuMgAAAAAAAAAAAAAAAADsGzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUgAAAAAAAAIkAAAApAAAAAAAAAAAAAAB9AAAAdQAEAHEAAAA1AAAAjQAAAD0AAABBACAAOQgAAJEAEAARAAQEGQgEBIUAAABhAAAAlQAAAHkAEABZAAAASQAAAE0AAABpAAAAIQAAAC0AMABdAAAAUQAAAJkAAABlAAAAMQAAAEUAAAAAAAAAAAAAAAAAAACBAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MAAANTAAAAAAAAAAAAAAJTAAAAAAAAAAAAAAAAAAAFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAOOsgAFVgsABy6uAAhd3AAIcE4ACJZZAAkJoAAJMfkACT6nAAnI/AAJ7wcACgvZAAoT6wAKJA4ACtNHAArzjgALA7IACwvEAAsU/AALaSQAC8xHAAvn8gAL7bUAC/N5AAwM1QAMm8cADLCHAAzY4AAM59wADOorAAzseQANuIQADc5rAA3YywAOv1kAEGCnABB+oAAAAAAAAwTrAAdVFQAJTssACzbVAAv4EAAAAAAAAVQVAAIDRwAD/VsAAAAAAAA5pAAAc0cAAKzrgDCAAIAwgAEAAlBlAADs9QAAAAAABVVVAAAAAAAAAAAAB1UVABAAAAAAAAAABgnVAARQKwAEvpUABgnVAAKWgAAGeEAABgnVAAUtAAADBOsAA+HAAAZ4QAAAbmsAIxvnAA/1awAEGPU=","msam10":"AOUAEgAAAH8AFQAQABAAAgAAAAAAAAAWl7PuzQCgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAADqC4AAAAuAAAALgAAAC4AAAAuAAAACUAAAB5cAAAeXAAALZgAAC2YAABFDAAARQwAAC4AAAAiQAAANkAAABpAAABFDAAARQwAAEYoAABGKAAAMmwAADJsAAAObAAADmwAAA5sAAAObAAASQwAAEkMAABGKAAARigAABJAAAASQAAAREQAAFBEAABFQAAARUAAAC6wAAAusAAALrAAAC70AABJQAAAHkAAAB5AAAAtmAAAL5gAAC6wAAAusAAALvQAAC3gAAAt4AAALeAAAC3gAAAt4AAALvQAAC3gAAAuKAAABUAAABDIAAAtmAAALZgAAC3gAAAu9AAALeAAAC4oAAAtUAAALVAAAC1QAAAtUAAALeAAAC3gAAA+bAAAEvQAACFAAAAtUAAALVAAABDIAAAQyAAAIUAAACFAAAAhQAAALkAAAC94AAAveAAAL/wAAC/8AAAmABAAReAAAEXgAAAyQAAAGmwAABpsAAAa7AAAIkAAACJAAAAhEAAALkAAAC5sAAAubAAALVAAAC1QAAAdQAAAHUAAAClAAAApQAAALkAAAC5AAAAu9AAALvQAAC1UAAAtVAAATVAAAE1QAAASQAAAEkAAAEJkAAA6ZAAAHkAAAC5YAAAsRAAALMgAABBAAAAQQAAAMkAAABMAAAAUrAAALZgAAC2YAAAtmAAAAAAAAAARmZgAEccgABqqtAAgAAgAI45AACcceAAqqrQALjjsADAACAAwqqwAMccoADVVYAA445gAOb30ADxxzAA8liAAQAAMAEccgABVVWgAWOOgAAAAAAAYLzgAG444AB2ydAAhbugAIzDoACU/IAAovyAAKzM0ACxNrAAusXQAMF+UADTM4AA4rygAOqq0AD7iWAAAAAP/93rj//2ydAAA3dQAAkBIAAPhQAAFPyAABxx0AAi/IAAJ9SgAC5JAAAxxwAAOsXQAEF+UABivKAAe4lgAAAAAAAGZmAAAAAAAAAAAAAAAAAAAAAAAG444AEAADAAAAAAAK0voABky6AAcZhgAK+agABYR4AAabNQAFzmgABJ9KAAJmZgAD9JoABi2AAADMzQAmPXAAECj2AAQAAA==","msam5":"AOcAEgAAAH8AFwAQABAAAgAAAAAAAAAWIokceABQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAAD0EKAAABCgAAAQoAAAEKAAABCgAAACQAAACXUAAAl1AAAQdgAAEHYAABNDAAATQwAAEKAAAAxwAAAScAAACHAAABNDAAATQwAAE4cAABOHAAARdwAAEXcAAAR3AAAEdwAABHcAAAR3AAAUQwAAFEMAABOHAAAThwAABXAAAAVwAAATEQAAFhEAABNAAAATQAAAELwAABCsAAAQrAAAEM0AABRAAAAJcAAACXAAABB2AAAK5gAAEKsAABCrAAAQzQAAEIgAABCIAAAQiAAAEIgAABCIAAAQvQAAEIgAABCaAAABQAAAAzIAABBmAAAQZgAAEIgAABC9AAAQiAAAEJoAABBUAAAQVAAAEFQAABBUAAAQiAAAEIgAAA93AAAFmQAAB0AAABBUAAAQVAAAAzIAAAMyAAAHQAAAB0AAAAdAAAAQcAAAEN4AABDeAAAQ/wAAEP8AAA5wBAATdwAAE3cAABFwAAAIdwAACHcAAAiXAAAMcAAADHAAAAxDAAAQcAAAEHcAABB3AAAQVAAAEFQAAAlAAAAJQAAADUAAAA1AAAAQcAAAEHAAABC9AAAQvQAAEGUAABBlAAAVVAAAFVQAAAVwAAAFcAAADoYAAAuGAAAJcAAAEKYAABARAAAQMgAABTAAAAUwAAARcAAABaAAAAYnAAAQdgAAEHYAABB2AAAAAAAAAAcOPQAHVVoACgANAAocegALxyYADOOaAA4AAwAOAA0ADxyAAA+OTQAP0o0AEDjzABCOOgAQk/oAERxzABFVZgAScdoAE45NABXHMwAYABoAHHHmAB2OWgAAAAAABletAAbjjQAICCYACLHGAAmdWgAKWvoACuOTAAt3nQAMPe0ADRydAA2iFgAOCLoAEFaTABFVZgASO5AAAAAA//5XrQAAQuYAAIfTAAGdWgACLUMAAp+DAAMfCgADglYABAAAAAR73QAE9KAABV/mAAXxXQAIVpMACjuQAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAbjjQAXjk0AAAAAAA7NygAGMw0ACBDtABBnYwAIgrMACA6QAAZ09gAEtg0AAzMzAAZmZgAH6UAAAZmaAB+uEwAWuFMABAAA","msam6":"AOgAEgAAAH8AGAAQABAAAgAAAAAAAAAWDEXqNgBgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAADyD6AAAA+gAAAPoAAAD6AAAA+gAAACQAAACXUAAAl1AAAPZgAAD2YAABRDAAAUQwAAD6AAAApwAAATcAAAB3AAABRDAAAUQwAAFHkAABR5AAASeQAAEnkAAAN5AAADeQAAA3kAAAN5AAAVQwAAFUMAABR5AAAUeQAABXAAAAVwAAAUEQAAFxEAABRAAAAUQAAAD7wAAA+8AAAPvAAAD80AABVAAAAJcAAACXAAAA9mAAAL5gAAD6sAAA+rAAAPzQAAD4kAAA+JAAAPiQAAD4kAAA+JAAAPzQAAD4kAAA+aAAABQAAABDIAAA9mAAAPZgAAD4kAAA/NAAAPiQAAD5oAAA9UAAAPVAAAD1QAAA9UAAAPiQAAD4kAABF5AAAFmgAACEAAAA9UAAAPVAAABDIAAAQyAAAIQAAACEAAAAhAAAAPcAAAD94AAA/eAAAP/wAAD/8AAAxwBAAUeAAAFHgAABJwAAAHeQAAB3kAAAeZAAAKcAAACnAAAApDAAAPcAAAD3kAAA95AAAPVAAAD1QAAAlAAAAJQAAADUAAAA1AAAAPcAAAD3AAAA/NAAAPzQAAD2UAAA9lAAAWVAAAFlQAAAVwAAAFcAAAEHcAAA53AAAJcAAAD5YAAA8RAAAPMgAABSAAAAUgAAAScAAABbAAAAYpAAAPZgAAD2YAAA9mAAAAAAAAAAXaEwAGEvUACKqoAAlVUAAKOOAAC0JbAAxL1QAM45AADVVQAA5eywAOhLUADsj7AA8GowAPaDUAD2hFABAl1QAQJfAAEHHAABF7OwATjjAAFaElABnHEAAa0IsAAAAAAAY9KAAHEvMACAg9AAiwyAAJaGUAChjAAArzyAALO70ADCXrAAyTcAANGvgADY8wAA/lTQAQccAAEbilAAAAAP/+PSgAAAg9AAB/AAABaGUAAftlAAJDQwACqB0AAtedAAMsFQAEFEgABLUjAAUC4wAFjzAAB+VNAAm4pQAAAAAAAHd4AAAAAAAAAAAAAAAAAAAAAAAG440AFHHAAAAAAAANANAABkb9AAfCQAAN0WUABt6tAAgMKAAGttMABJe1AAKqqwAFVVUABpewAAFVVQAfu7sAFZmbAAQAAA==","msam7":"AOgAEgAAAH8AGAAQABAAAgAAAAAAAAAWuHXuNwBwAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAADwDqAAAA6gAAAOoAAADqAAAA6gAAACUAAACJYAAAiWAAAOZgAADmYAABRDAAAUQwAADqAAAAqQAAATkAAAB5AAABRDAAAUQwAAFJgAABSYAAAQmAAAEJgAAAOYAAADmAAAA5gAAAOYAAAVQwAAFUMAABSYAAAUmAAABZAAAAWQAAAUEQAAFxEAABRQAAAUUAAADrsAAA67AAAOuwAADs0AABVQAAAIkAAACJAAAA5mAAAM5gAADroAAA66AAAOzQAADpgAAA6YAAAOmAAADpgAAA6YAAAOzAAADpgAAA6pAAABUAAABDIAAA52AAAOdgAADpgAAA7MAAAOmAAADqkAAA5UAAAOVAAADlQAAA5UAAAOmAAADpgAABGYAAAFqQAACVAAAA5UAAAOVAAABDIAAAQyAAAJUAAACVAAAAlQAAAOkAAADt4AAA7eAAAO/wAADv8AAAuQBAAUhwAAFIcAABCQAAAHmAAAB5gAAAeoAAAKkAAACpAAAApDAAAOkAAADpgAAA6YAAAOVAAADlQAAAhQAAAIUAAADVAAAA1QAAAOkAAADpAAAA7MAAAOzAAADmUAAA5lAAAWVAAAFlQAAAWQAAAFkAAAEocAAA+HAAAIkAAADqYAAA4RAAAOMgAABSAAAAUgAAAQkAAABcAAAAYoAAAOZgAADmYAAA5mAAAAAAAAAAVFFQAFbbkAB+OSAAjbcAAJXXkACllpAAtVWQAMUUkADFlpAA1NOQANvwIADccgAA4WxQAOSSkADxxuAA9FGQAPtuAAD9dZABBBCQASOOkAFDDJABggiQAZHHkAAAAAAAYlMAAG444AB9lSAAh2MAAJDMIACcgeAAoMFQAKlUAACwWwAAvnoAAMksAADTIZAA92kAAPz0AAEThHAAAAAP/+JTD//9lSAAB2MAABNfcAAaibAAH52QACp3IAAwoQAAPr5wAEdacABKqLAAUc2wAFR1kAB3aQAAk4RwAAAAAAAHFgAAAAAAAAAAAAAAAAAAAAAAAG444AErryAAAAAAALt44ABiR3AAeKDgAMCM4ABYHnAAgKawAG5dkABJJJAAJJJQAEkkkABaaXAAEkkgAbMzIAEoOpAAQAAA==","msam8":"AOYAEgAAAH8AFgAQABAAAgAAAAAAAAAWr1pEswCAAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAADuDJAAAAyQAAAMkAAADJAAAAyQAAACUAAAB4cAAAeHAAAMZgAADGYAABJDAAASQwAADJAAAAmAAAAPgAAABoAAABJDAAASQwAAEokAABKJAAANiQAADYkAAAOJAAADiQAAA4kAAAOJAAATQwAAE0MAABKJAAASiQAABIAAAASAAAASEQAAFREAABJQAAASUAAADKwAAAy8AAAMvAAADM0AABNQAAAHgAAAB4AAAAxmAAAM5gAADKwAAAysAAAMzQAADHgAAAx4AAAMeAAADHgAAAx4AAAMzQAADHgAAAyaAAABUAAABDIAAAxmAAAMZgAADHgAAAzNAAAMeAAADJoAAAxUAAAMVAAADFQAAAxUAAAMeAAADHgAABCJAAAEqwAACFAAAAxUAAAMVAAABDIAAAQyAAAIUAAACFAAAAhQAAAMgAAADO4AAAzuAAAM/wAADP8AAAqABAASeAAAEngAAA2AAAAGiQAABokAAAapAAAJgAAACYAAAAlDAAAMgAAADIkAAAyJAAAMVAAADFQAAAdQAAAHUAAAC1AAAAtQAAAMgAAADIAAAAzNAAAMzQAADGUAAAxlAAAUVAAAFFQAAASAAAAEgAAAEYgAAA6IAAAHgAAADJYAAAwRAAAMMgAABCAAAAQgAAANgAAABNAAAAUpAAAMZgAADGYAAAxmAAAAAAAAAASccgAEuOgABxVcAAiACAAJcdAACmOYAAtVYAALuOgADEcoAAy7yAANE+wADTjwAA4quAAO45gADxyAAA8qrAAPnHwAEQAQABLjoAAWqsAAF5yIAAAAAAAGDDwABsACAAewcgAIbV4ACPMQAAmadAAKmwYACwWwAAtx0AAMJVYADFz0AAzTDAANMzgADy4aABC26AAAAAD//gw8//+wcgAAbV4AAQKQAAFsYAABuZwAAeOQAAKbBgADEO4AA4YSAAQAAAAESY4ABNMMAAcG1gAItugAAAAAAABszgAAAAAAAAAAAAAAAAAAAAAABuOOABEAEAAAAAAACyQsAAaKlAAHUbAAC/xaAAZGUAAGpYwABaWMAASOOAACAAAABAAAAAZVVgABAAAAF8zMABIzNAAEAAA=","msam9":"AOYAEgAAAH8AFgAQABAAAgAAAAAAAAAW07GMBwCQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQU0gVjIuMgAAAAAAAAAAAAAAAADsDJAAAAyQAAAMkAAADJAAAAyQAAACYAAAB5gAAAeYAAAMdwAADHcAABJTAAASUwAADJAAAAmQAAAOkAAABpAAABJTAAASUwAAEpoAABKaAAANmwAADZsAAAObAAADmwAAA5sAAAObAAATUwAAE1MAABKaAAASmgAABJAAAASQAAASEQAAFREAABJgAAASYAAADLwAAAy8AAAMvAAADM0AABNgAAAHkAAAB5AAAAx3AAAM5wAADLwAAAy8AAAMzQAADIkAAAyJAAAMiQAADIkAAAyJAAAMzQAADIkAAAybAAABYAAABEIAAAx3AAAMdwAADIkAAAzNAAAMiQAADJsAAAxlAAAMZQAADGUAAAxlAAAMiQAADIkAABCbAAAEvAAACGAAAAxlAAAMZQAABEIAAARCAAAIYAAACGAAAAhgAAAMkAAADO4AAAzuAAAM/wAADP8AAAqQBAASiQAAEokAAA2QAAAGmwAABpsAAAa7AAAJkAAACZAAAAlUAAAMkAAADJsAAAybAAAMZQAADGUAAAdgAAAHYAAAC2AAAAtgAAAMkAAADJAAAAzNAAAMzQAADHYAAAx2AAAUZQAAFGUAAASQAAAEkAAAEZkAAA+ZAAAHkAAADKcAAAwRAAAMQgAABCAAAAQgAAANkAAABNAAAAU7AAAMdwAADHcAAAx3AAAAAAAAAAR4GQAEkWAABtoQAAg44AAJIsAACgygAAr2gAALoTAAC+BgAAxUrgAMnB4ADMpAAA20IAAOngAADqqcAA8ixAAPYesAEHHAABJFgAAV7QAAFtbgAAAAAAAF9OkABmUgAAbjjgAHjLcACGSMAAjaLAAJXQQACmTVAAsXMgALTwAAC/9OAAx3QAANMzkADsegABA3MAAAAAD//fTp//+MtwAASRkAAIAAAADQyQABMccAAYHAAAHTwAACbMUAAvPHAAMpMgAD/04ABHdAAAaYwAAINzAAAAAAAABpPgAAAAAAAAAAAAAAAAAAAAAABuOOABBxwAAAAAAAClkLAAaOJAAHMnwACtoAAAVt6wAHr5UABswHAASXtAABxxwAAtCeAAWhNAAA444AKn0nABAthAAEAAA=","msbm10":"AOMAEgAAAH8AEwAQABAAAgAAAAAAAAAWiLYWyACgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAADqDbsAAA27AAANzgAADc4AAA2ZAAANmQAADZkAAA2ZAAANuwAADbsAAA3OAAANzgAADXYAAA12AAANzgAADc4AAA2qAAANqgAADaoAAA2qAAAN/wAADf8AAA27AAANuwAADbwAAA28AAANvAAADbwAAA0RAAANzgAADogAAA6oAAANdgAADXYAAA27AAANuwAADc0AAA3NAAANuwAADbsAAA12AAANdgAADc4AAA3OAAAGqwAAAqsAAAFlAAADZQAACYAAAAyAAAAJgAAADIAAAA3OAAANzgAADZkAAA2ZAAAQEQAAEBEAABARAAAQEQAAEBEAABARAAANZQAADWUAAAiAAAAMgAAAC4AAAAyAAAAMgAAAC4AAAAmAAAANgAAADYAAAAOAAAAGhwAADYAAAAuAAAAPgAAADIAAAA2HAAAJgAAADYcAAAyAAAAIgAAAC4AAAAyAAAAMgAAAEIAAAAyAAAAMgAAAC4AAABHQAlwS0AAAEdACXhLgAAAAAAAACIAAAAqAAAAAAAAAAAAAAAAAAAAAAAAADIAAAAiAAAANMgAAC4AAAAWAAAALgAAADVQAAA1UAAANZQAADWUAAAFlAAADZQAADWUAAA0RAAANQwAADWUAAA28AAANvAAAECAAABAgAAANZQAACyAEAAiAAAAHgAAAB4AAAAQgAAAAAAAAAAOOOgAEccgABjjlAAbd4AAHHHMACAACAAik/QAI45AACcceAAo45QAKqq0AC447AAxxygAOOOYADxx1ABAAAwAeOOoAJVVdAAAAAAAF3rgABuOOAAdrgwAHut4ACKAlAAlOgAAKLPAACwWwAAtK0AAL25YADB26AAyzhgANMzgADmZlAA62UwAAAAD//d64//9rg///ut4AAKAlAAFOgAACLPAAAqqrAAMccAADStAAA7ctAAQF0wAEL8sABI6aAATYCAAGtlMAAAAAAACk+wAEAAAABMzQAAJmYAABmaAAB2hNABAAAAABmaAACtL6AAZMugAHGYYACvmoAAWEeAAGmzUABc5oAASfSgACZmYAA/SaAAYtgAAAzM0AJj1wABAo9gAEAAA=","msbm5":"AOsAEgAAAH8AGwAQABAAAgAAAAAAAAAW/fYhFwBQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAAD0FssAABbLAAAW7gAAFu4AABapAAAWqQAAFqkAABapAAAWywAAFssAABbuAAAW7gAAFocAABaHAAAW7gAAFu4AABapAAAWugAAFqkAABa6AAAW/wAAFv8AABbLAAAWywAAFswAABbMAAAWzAAAFswAABYRAAAW7gAAF3YAABeWAAAWhwAAFocAABbLAAAWywAAFt0AABbdAAAWywAAFssAABaHAAAWhwAAFu4AABbuAAAMmAAAA5gAAAJlAAAGZQAAEHAAABVwAAAQcAAAFXAAABbuAAAW7gAAFqkAABapAAAYEQAAGBEAABgRAAAYEQAAGBEAABgRAAAWZQAAFmUAAA9wAAALcAAACXAAAAtwAAALcAAACXAAAAdwAAANcAAADXAAAAFwAAAEdQAADXAAAAlwAAAScAAAC3AAAA11AAAHcAAADXUAAAtwAAAFcAAACXAAAAtwAAALcAAAFHAAAAtwAAALcAAACXAAABmwAlwasAAAGbACXhrQAAAAAAAAD3AAABFwAAAAAAAAAAAAAAAAAAAAAAAAFXAAAA9wAAAWMgAAE3AAAApwAAATcAAAFlQAABZUAAAWZQAAFmUAAAJlAAAGZQAAFmUAABYRAAAWQwAAFmUAABbMAAAWzAAAGCAAABggAAAWZQAAEyAEAAVwAAAOcAAADnAAAAggAAAAAAAAAAY42gAGOOYAB1VaAAf/8wAI44AACY5AAAnHDQAKVV0ACqqaAAqqswALjiYAC8cmAAxxswAMqrYADOOaAA4ADQAOjkYADxxaAA8cgAAP/+YAEDjzABFVZgATjk0AFcczACeOZgAwcgAAAAAAAAZXrQAG440ACDymAAidpgAJnVoACpaqAAsFsAALglYADAAAAAzzqgANRG0ADfFdAA5wNgAO7uYAES9aAAAAAP/+V60AADymAACdpgABnVoAApaqAAMccwADglYABAAAAATzqgAFVaAABdoAAAYIugAGeg0ABu7mAAkvWgAAAAAAAOOQAAQAAAAEzNAAAmZgAAGZoAAHaEAAEAAAAAGZoAAOzcoABjMNAAgQ7QAQZ2MACIKzAAgOkAAGdPYABLYNAAMzMwAGZmYAB+lAAAGZmgAfrhMAFrhTAAQAAA==","msbm6":"AOsAEgAAAH8AGwAQABAAAgAAAAAAAAAWTxoEKwBgAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAADyFcwAABXMAAAV7gAAFe4AABWpAAAVqQAAFakAABWpAAAVzAAAFcwAABXuAAAV7gAAFYcAABWHAAAV7gAAFe4AABWqAAAVuwAAFaoAABW7AAAV/wAAFf8AABXMAAAVzAAAFcwAABXMAAAVzAAAFcwAABURAAAV7gAAF3cAABeXAAAVhwAAFYcAABXMAAAVzAAAFd0AABXdAAAVzAAAFcwAABWHAAAVhwAAFe4AABXuAAAKmAAAApgAAAFlAAAFZQAAD3AAABNwAAAPcAAAE3AAABXuAAAV7gAAFakAABWpAAAYEQAAGBEAABgRAAAYEQAAGBEAABgRAAAVZQAAFWUAAA1wAAAOcAAAC3AAAA5wAAAOcAAAC3AAAAlwAAAQcAAAEHAAAANwAAAEdgAAEHAAAAtwAAAUcAAADnAAABB2AAAJcAAAEHYAAA5wAAAGcAAAC3AAAA5wAAAOcAAAFnAAAA5wAAAOcAAAC3AAABmwAlwasAAAGbACXhrgAAAAAAAADXAAABFwAAAAAAAAAAAAAAAAAAAAAAAAE3AAAA1wAAAVMgAAEnAAAAhwAAAScAAAFVQAABVUAAAVZQAAFWUAAAFlAAAFZQAAFWUAABURAAAVQwAAFWUAABXMAAAVzAAAGCAAABggAAAVZQAAEiAEAAZwAAAMcAAADHAAAAcgAAAAAAAAAAUJewAGEvUABjjdAAf/+AAIJesACOOFAAjjjQAJL2UACccTAAo44AAKqqAACwl4AAtCWwALji0ADEvVAAxxuwAM0JMADVVQAA5eywAPHGMAD2hFAA//8AARezsAE44wACQl2wAscbAAAAAAAAY9KAAG440ACBCAAAht+AAJaGUACj0YAAsFsAALO70ADAAAAAyc+wANGvgADY8wAA4THQAOZeAAEJVVAAAAAP/+PSgAABCAAABt+AABaGUAAj0YAAKqqAADLBUABAAAAASE1QAEtSMABQK7AAWPMAAGEx0ABmXgAAiVVQAAAAAAANCYAAQAAAAEzNAAAmZgAAGZoAAHaEUAEAAAAAGZoAANANAABkb9AAfCQAAN0WUABt6tAAgMKAAGttMABJe1AAKqqwAFVVUABpewAAFVVQAfu7sAFZmbAAQAAA==","msbm7":"AOsAEgAAAH8AGwAQABAAAgAAAAAAAAAWcXnAgQBwAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAADwFLsAABS7AAAU3gAAFN4AABSIAAAUiAAAFIgAABSIAAAUuwAAFLsAABTeAAAU3gAAFHcAABR3AAAU3gAAFN4AABSZAAAUqgAAFJkAABSqAAAU/wAAFP8AABS7AAAUuwAAFLwAABS8AAAUvAAAFLwAABQRAAAU3gAAF3cAABeHAAAUdwAAFHcAABS7AAAUuwAAFM0AABTNAAAUuwAAFLsAABR3AAAUdwAAFN4AABTeAAAJiAAAAogAAAFlAAAEZQAADnAAABNwAAAOcAAAE3AAABTeAAAU3gAAFIgAABSIAAAYEQAAGBEAABgRAAAYEQAAGBEAABgRAAAUZQAAFGUAAAxwAAAPcAAADXAAAA9wAAAPcAAADXAAAApwAAAScAAAEnAAAANwAAAFdgAAEnAAAA1wAAAVcAAAD3AAABJ2AAAKcAAAEnYAAA9wAAAIcAAADXAAAA9wAAAPcAAAFnAAAA9wAAAPcAAADXAAABmwAlwasAAAGbACXhrgAAAAAAAADHAAABBwAAAAAAAAAAAAAAAAAAAAAAAAE3AAAAxwAAAUMgAAEXAAAAdwAAARcAAAFFQAABRUAAAUZQAAFGUAAAFlAAAEZQAAFGUAABQRAAAUQwAAFGUAABS8AAAUvAAAGCAAABggAAAUZQAAESAEAAhwAAALcAAAC3AAAAYgAAAAAAAAAARxyQAFbbkABjjgAAdlmQAH//sACBx1AAhhiQAI44kACV15AAnHFwAKIIcACllpAAqqpQALVVkAC44yAAvTUAAMUUkADHHAAA1NOQAOSSkADxxpAA//9wAQQQkAEjjpACH36QAp12kAAAAAAAYlMAAG444AB+blAAhA1QAJNfcACfUVAAsFsAAMFOIADHWnAAyv2QANMhkADbFFAA3zqQAOZmUAEBCrAAAAAP/+JTD//+blAABA1QABNfcAAfUVAAKqqQADChAABBTiAAR1pwAEr9kABRzbAAVHWQAFsUUABfOpAAgQqwAAAAAAAMMOAAQAAAAEzNAAAmZgAAGZoAAHaEcAEAAAAAGZoAALt44ABiR3AAeKDgAMCM4ABYHnAAgKawAG5dkABJJJAAJJJQAEkkkABaaXAAEkkgAbMzIAEoOpAAQAAA==","msbm8":"AOsAEgAAAH8AGwAQABAAAgAAAAAAAAAWcMpwzACAAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAADuFLsAABS7AAAU3gAAFN4AABSYAAAUmAAAFJgAABSYAAAUuwAAFLsAABTeAAAU3gAAFHYAABR2AAAU3gAAFN4AABSqAAAUqgAAFKoAABSqAAAU/wAAFP8AABS7AAAUuwAAFLwAABS8AAAUvAAAFLwAABQRAAAU3gAAFocAABaXAAAUdgAAFHYAABS7AAAUuwAAFM0AABTNAAAUuwAAFLsAABR2AAAUdgAAFN4AABTeAAAImQAAApkAAAFlAAAEZQAADYAAABKAAAANgAAAEoAAABTeAAAU3gAAFJgAABSYAAAYEQAAGBEAABgRAAAYEQAAGBEAABgRAAAUZQAAFGUAAAuAAAARgAAADoAAABGAAAARgAAADoAAAAyAAAATgAAAE4AAAAOAAAAHhgAAE4AAAA6AAAAVgAAAEYAAABOGAAAMgAAAE4YAABGAAAAJgAAADoAAABGAAAARgAAAF4AAABGAAAARgAAADoAAABnAAlwawAAAGcACXhrgAAAAAAAAC4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAEoAAAAuAAAAUMgAAEIAAAAaAAAAQgAAAFFQAABRUAAAUZQAAFGUAAAFlAAAEZQAAFGUAABQRAAAUQwAAFGUAABS8AAAUvAAAGCAAABggAAAUZQAAECAEAAmAAAAKgAAACoAAAAUgAAAAAAAAAAPHIAAEuOgABjjiAAaceAAHTkAAB45AAAf//gAIgAgACOOMAAk47AAJcdAACccaAApjmAAKqqgACtx8AAtVYAALjjYADEcoAAxxxAANOPAADxxuAA8cgAAP//wAEQAQACAckAAnqtAAAAAAAAYMPAAG444AB7xOAAgStgAJApAACba8AAqyogALBbAAC+v0AAxJjgAM0wwADUBUAA2L0AAOZmQAD5Q0AAAAAP/+DDz//7xOAAAStgABApAAAba8AAKupgADHHAAA9foAAQAAAAESY4ABL7cAATnPAAFTXIABYvQAAeUNAAAAAAAALjkAAQAAAAEzNAAAmZgAAGZoAAHaEoAEAAAAAGZoAALJCwABoqUAAdRsAAL/FoABkZQAAaljAAFpYwABI44AAIAAAAEAAAABlVWAAEAAAAXzMwAEjM0AAQAAA==","msbm9":"AOsAEgAAAH8AGwAQABAAAgAAAAAAAAAWqgC1YQCQAAAQVGVYIG1hdGggc3ltYm9scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU1TQk0gVjIuMgAAAAAAAAAAAAAAAADsFLsAABS7AAAU3gAAFN4AABSZAAAUmQAAFJkAABSZAAAUuwAAFLsAABTeAAAU3gAAFHYAABR2AAAU3gAAFN4AABSqAAAUqgAAFKoAABSqAAAU/wAAFP8AABS7AAAUuwAAFLwAABS8AAAUvAAAFLwAABQRAAAU3gAAFYgAABWoAAAUdgAAFHYAABS7AAAUuwAAFM0AABTNAAAUuwAAFLsAABR2AAAUdgAAFN4AABTeAAAIqgAAAqoAAAFlAAAEZQAADYAAABKAAAANgAAAEoAAABTeAAAU3gAAFJkAABSZAAAYEQAAGBEAABgRAAAYEQAAGBEAABgRAAAUZQAAFGUAAAuAAAARgAAAD4AAABGAAAARgAAAD4AAAAyAAAATgAAAE4AAAAOAAAAHhwAAE4AAAA+AAAAWgAAAEYAAABOHAAAMgAAAE4cAABGAAAAJgAAAD4AAABGAAAARgAAAF4AAABGAAAARgAAAD4AAABnQAlwa0AAAGdACXhrgAAAAAAAAC4AAAA6AAAAAAAAAAAAAAAAAAAAAAAAAEoAAAAuAAAAUMgAAEIAAAAaAAAAQgAAAFFQAABRUAAAUZQAAFGUAAAFlAAAEZQAAFGUAABQRAAAUQwAAFGUAABS8AAAUvAAAGCAAABggAAAUZQAAECAEAAmAAAAKgAAACoAAAAUgAAAAAAAAAAOngAAEkWAABjjkAAZlIAAHD8sAB08AAAgAAAAIOOAACOOOAAjmtAAJIsAACcccAAoMoAAKgZAACqqrAAr2gAALjjkAC+BgAAxxxwAMykAADp4AAA8ccgAQAAAAEHHAAB8PwAAmXsAAAAAAAAX06QAG444AB5NXAAfmOQAI0MkACX/0AApvNwALBbAAC45pAAwAXAAMd0AADOzkAA0wBwAOZmQADyHAAAAAAP/99On//5NX///mOQAA0MkAAX/0AAJvNwACqqsAAxxyAAOOaQAEAFwABGQgAASKYAAE7OQABS5LAAchwAAAAAAAAK3UAAQAAAAEzNAAAmZgAAGZoAAHaEwAEAAAAAGZoAAKWQsABo4kAAcyfAAK2gAABW3rAAevlQAGzAcABJe0AAHHHAAC0J4ABaE0AADjjgAqfScAEC2EAAQAAA=="}; - -/***/ }), - -/***/ "../dvi2html/lib/tfm/index.js": -/*!************************************!*\ - !*** ../dvi2html/lib/tfm/index.js ***! - \************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(Buffer) { // PyDvi - A Python Library to Process DVI Stream -// Copyright (C) 2014 Fabrice Salvaire -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . -///////////////////////////////////////////////////////////////////////////// - -var __read = this && this.__read || function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), - r, - ar = [], - e; - - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } catch (error) { - e = { - error: error - }; - } finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } finally { - if (e) throw e.error; - } - } - - return ar; -}; - -var __spread = this && this.__spread || function () { - for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); - - return ar; -}; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var Tfm = __webpack_require__(/*! ./tfm */ "../dvi2html/lib/tfm/tfm.js"); - -var fontdata = __webpack_require__(/*! ./fonts.json */ "../dvi2html/lib/tfm/fonts.json"); - -var NO_TAG = 0; -var LIG_TAG = 1; -var LIST_TAG = 2; -var EXT_TAG = 3; -var KERN_OPCODE = 128; // Defines the tables present in a TFM file. - -var tables = { - header: 0, - character_info: 1, - width: 2, - height: 3, - depth: 4, - italic_correction: 5, - lig_kern: 6, - kern: 7, - extensible_character: 8, - font_parameter: 9 -}; -/*** Compute the pointer to the word element index *index* from the base *base*. A word - element has a size of 32-bit. - - ``prt = base + 4*index`` -***/ - -function word_ptr(base, index) { - return base + 4 * index; -} - -var TFMParser = -/** @class */ -function () { - function TFMParser(buffer) { - this.position = 0; - this.stream = buffer; - this.read_lengths(); - this.read_header(); - this.read_font_parameters(); - this.read_lig_kern_programs(); - this.read_characters(); - } - - TFMParser.prototype.seek = function (position) { - this.position = position; - }; - - TFMParser.prototype.read_unsigned_byte1 = function (p) { - if (p) this.position = p; - var result = this.stream.readUInt8(this.position); - this.position = this.position + 1; - return result; - }; - - TFMParser.prototype.read_unsigned_byte2 = function (p) { - if (p) this.position = p; - var result = this.stream.readUInt16BE(this.position); - this.position = this.position + 2; - return result; - }; - - TFMParser.prototype.read_unsigned_byte4 = function (p) { - if (p) this.position = p; - var result = this.stream.readUInt32BE(this.position); - this.position = this.position + 4; - return result; - }; - - TFMParser.prototype.read_four_byte_numbers_in_table = function (table, index) { - /*** Return the four numbers in table *table* at index *index*. - ***/ - this.seek(this.position_in_table(table, index)); - return [this.read_unsigned_byte1(), this.read_unsigned_byte1(), this.read_unsigned_byte1(), this.read_unsigned_byte1()]; - }; - - TFMParser.prototype.read_extensible_recipe = function (index) { - /*** Return the extensible recipe, four numbers, at index *index*. - Extensible characters are specified by an extensible recipe, which consists of four bytes - called top, mid, bot, and rep (in this order). These bytes are the character codes of - individual pieces used to build up a large symbol. If top, mid, or bot are zero, they are - not present in the built-up result. For example, an extensible vertical line is like an - extensible bracket, except that the top and bottom pieces are missing. - ***/ - return this.read_four_byte_numbers_in_table(tables.extensible_character, index); - }; // BADBAD - - - TFMParser.prototype.read_fix_word = function (p) { - if (p) this.position = p; - var result = this.stream.readUInt32BE(this.position); - this.position = this.position + 4; - return result; - }; - - TFMParser.prototype.read_fix_word_in_table = function (table, position) { - return this.read_fix_word(this.position_in_table(table, position)); - }; // BADBAD - - - TFMParser.prototype.read_bcpl = function (position) { - if (position) this.position = position; - var length = this.read_unsigned_byte1(); - var result = this.stream.slice(this.position, this.position + length).toString('ascii'); - this.position += length; - return result; - }; - - TFMParser.prototype.seek_to_table = function (table, position) { - if (position) this.seek(this.position_in_table(table, position));else this.seek(this.table_pointers[table]); - }; - - TFMParser.prototype.position_in_table = function (table, index) { - return word_ptr(this.table_pointers[table], index); - }; - /* The fist 24 bytes (6 words) of a TFM file contain twelve 16-bit - integers that give the lengths of the various subsequent - portions of the file. These twelve integers are, in order: - - * lf = length of the entire file, in words; - * lh = length of the header data, in words; - * bc = smallest character code in the font; - * ec = largest character code in the font; - * nw = number of words in the width table; - * nh = number of words in the height table; - * nd = number of words in the depth table; - * ni = number of words in the italic correction table; - * nl = number of words in the lig/kern table; - * nk = number of words in the kern table; - * ne = number of words in the extensible character table; - * np = number of font parameter words. - - They are all nonnegative and less than 2**15. We must have - ``bc - 1 <= ec <= 255``, ``ne <= 256``, and - - ``lf = 6 + lh + (ec - bc + 1) + nw + nh + nd + ni + nl + nk + ne + np``. - Note that a font may contain as many as 256 characters (if ``bc = 0`` and ``ec = 255``), and - as few as 0 characters (if ``bc = ec + 1``). - - The rest of the TFM file may be regarded as a sequence of ten data arrays having the - informal specification: - ========== ===================== ==================== - header array [0 ... lh - 1] of stuff - char info array [bc ... ec ] of char info word - width array [0 ... nw - 1] of fix word - height array [0 ... nh - 1] of fix word - depth array [0 ... nd - 1] of fix word - italic array [0 ... ni - 1] of fix word - lig kern array [0 ... nl - 1] of lig kern command - kern array [0 ... nk - 1] of fix word - exten array [0 ... ne - 1] of extensible recipe - param array [1 ... np ] of fix word - ========== ===================== ==================== - ***/ - - - TFMParser.prototype.read_lengths = function () { - ////////////////////// - // Read and set table lengths - this.table_lengths = []; - this.seek(0); - this.entire_file_length = this.read_unsigned_byte2(); - var header_length = this.read_unsigned_byte2(); - this.smallest_character_code = this.read_unsigned_byte2(); - this.largest_character_code = this.read_unsigned_byte2(); - var header_data_length_min = 18; - this.table_lengths[tables.header] = Math.max(header_data_length_min, header_length); - this.number_of_chars = this.largest_character_code - this.smallest_character_code + 1; - this.table_lengths[tables.character_info] = this.number_of_chars; // read the last lengths - - for (var i = tables.width; i <= tables.font_parameter; i++) { - this.table_lengths[i] = this.read_unsigned_byte2(); - } ////////////////////// - // Compute table pointers - - - this.table_pointers = []; // The header starts at 24 bytes - - this.table_pointers[tables.header] = 24; - - for (var table = tables.header; table < tables.font_parameter; table++) { - this.table_pointers[table + 1] = this.position_in_table(table, this.table_lengths[table]); - } ////////////////////// - // Sanity check - - - var length = this.position_in_table(tables.font_parameter, this.table_lengths[tables.font_parameter]); - - if (length != word_ptr(0, this.entire_file_length)) { - throw Error('Bad TFM file'); - } - - return; - }; - /*** The first data array is a block of header information, which contains general facts - about the font. The header must contain at least two words, and for TFM files to be used - with Xerox printing software it must contain at least 18 words, allocated as described - below. - ``header[0]`` is a 32-bit check sum that TEX will copy into - the DVI output file whenever it uses the font. Later on when - the DVI file is printed, possibly on another computer, the - actual font that gets used is supposed to have a check sum - that agrees with the one in the TFM file used by TEX. In this - way, users will be warned about potential incompatibilities. - (However, if the check sum is zero in either the font file or - the TFM file, no check is made.) The actual relation between - this check sum and the rest of the TFM file is not important; - the check sum is simply an identification number with the - property that incompatible fonts almost always have distinct - check sums. - ``header[1]`` is a fix word containing the design size of the font, in units of TEX points - (7227 TEX points = 254 cm). This number must be at least 1.0; it is fairly arbitrary, but - usually the design size is 10.0 for a "10 point" font, i.e., a font that was designed to - look best at a 10-point size, whatever that really means. When a TEX user asks for a font - "at delta pt", the effect is to override the design size and replace it by delta, and to - multiply the x and y coordinates of the points in the font image by a factor of delta - divided by the design size. All other dimensions in the TFM file are fix word numbers in - design-size units. Thus, for example, the value of ``param[6]``, one em or ``\quad``, is - often the fix word value ``2**20 = 1.0``, since many fonts have a design size equal to one - em. The other dimensions must be less than 16 design-size units in absolute value; thus, - ``header[1]`` and ``param[1]`` are the only fix word entries in the whole TFM file whose - first byte might be something besides 0 or 255. - - ``header[2 ... 11]``, if present, contains 40 bytes that identify the character coding - scheme. The first byte, which must be between 0 and 39, is the number of subsequent ASCII - bytes actually relevant in this string, which is intended to specify what - character-code-to-symbol convention is present in the font. Examples are ASCII for standard - ASCII, TeX text for fonts like cmr10 and cmti9, TeX math extension for cmex10, XEROX text - for Xerox fonts, GRAPHIC for special-purpose non- alphabetic fonts, UNSPECIFIED for the - default case when there is no information. Parentheses should not appear in this name. - (Such a string is said to be in BCPL format.) - ``header[12 ... 16]``, if present, contains 20 bytes that name the font family (e.g., CMR or - HELVETICA), in BCPL format. This field is also known as the "font identifier." - ``header[17]``, if present, contains a first byte called the ``seven_bit_safe_flag``, then - two bytes that are ignored, and a fourth byte called the *face*. If the value of the fourth - byte is less than 18, it has the following interpretation as a "weight, slope, and - expansion": Add 0 or 2 or 4 (for medium or bold or light) to 0 or 1 (for roman or italic) to - 0 or 6 or 12 (for regular or condensed or extended). For example, 13 is ``0+1+12``, so it - represents medium italic extended. A three-letter code (e.g., MIE) can be used for such - face data. - ``header[18 ... whatever]`` might also be present; the individual words are simply called - ``header[18]``, ``header[19]``, etc., at the moment. - ***/ - - - TFMParser.prototype.read_header = function () { - this.seek_to_table(tables.header); // Read header[0 ... 1] - - var checksum = this.read_unsigned_byte4(); - var designSize = this.read_fix_word(); // Read header[2 ... 11] if there - - var character_info_table_position = this.table_pointers[tables.character_info]; - var position = this.position; - var character_coding_scheme; - if (position < character_info_table_position) character_coding_scheme = this.read_bcpl(); // Read header[12 ... 16] if there - - var character_coding_scheme_length = 40; // bytes (11 - 2 + 1) * 4 = 10 * 4 - - position += character_coding_scheme_length; - var family; - if (position < character_info_table_position) family = this.read_bcpl(position); // Read header[12 ... 16] if there - - var family_length = 20; // bytes (16 - 12 +1) * 4 = 5 * 4 - - position += family_length; - - if (position < character_info_table_position) { - var seven_bit_safe_flag = this.read_unsigned_byte1(position); - this.read_unsigned_byte2(); - var face = this.read_unsigned_byte1(); - } // Fixme: complete - // don't read header [18 ... whatever] - - - this.tfm = new Tfm.Tfm(this.smallest_character_code, this.largest_character_code, checksum, designSize, character_coding_scheme, family); - }; - /*** The final portion of a TFM fie is the param array, which is another sequence of fix word - values. - * param[1] = ``slant`` is the amount of italic slant, which is used to help position - accents. For example, slant = .25 means that when you go up one unit, you also go .25 - units to the right. The slant is a pure number; it's the only fix word other than the - design size itself that is not scaled by the design size. - * param[2] = ``space`` is the normal spacing between words in text. Note that character " " - in the font need not have anything to do with blank spaces. - * param[3] = ``space_stretch`` is the amount of glue stretching between words. - * param[4] = ``space_shrink`` is the amount of glue shrinking between words. - * param[5] = ``x_height`` is the height of letters for which accents don't have to be - raised or lowered. - * param[6] = ``quad`` is the size of one em in the font. - * param[7] = ``extra_space`` is the amount added to param[2] at the ends of sentences. - When the character coding scheme is ``TeX math symbols``, the font is supposed to have 15 - additional parameters called ``num1``, ``num2``, ``num3``, ``denom1``, ``denom2``, ``sup1``, - ``sup2``, ``sup3``, ``sub1``, ``sub2``, ``supdrop``, ``subdrop``, ``delim1``, ``delim2``, - and ``axis_height``, respectively. When the character coding scheme is ``TeX math - extension``, the font is supposed to have six additional parameters called - ``defaul_rule_thickness`` and ``big_op_spacing1`` through ``big_op_spacing5``. - ***/ - - - TFMParser.prototype.read_font_parameters = function () { - this.seek_to_table(tables.font_parameter); - var stream = this; - - if (this.tfm.character_coding_scheme == 'TeX math italic') {// undocumented in tftopl web - //throw 'undocumented character coding scheme'; - } else { - // Read the seven fix word parameters - this.tfm.set_font_parameters(__spread(Array(7).keys()).map(function () { - return stream.read_fix_word(); - })); - } - - if (this.tfm.character_coding_scheme == 'TeX math symbols') { - // Read the additional 15 fix word parameters - this.tfm.set_math_symbols_parameters(__spread(Array(15).keys()).map(function () { - return stream.read_fix_word(); - })); - } - - if (this.tfm.character_coding_scheme == 'TeX math extension' || this.tfm.character_coding_scheme == 'euler substitutions only') { - // Read the additional 6 fix word parameters - this.tfm.set_math_extension_parameters(__spread(Array(6).keys()).map(function () { - return stream.read_fix_word(); - })); - } - }; - /*** The lig kern array contains instructions in a simple programming language that explains - what to do for special letter pairs. Each word is a lig kern command of four bytes. - * first byte: ``skip_byte``, indicates that this is the final program step if the byte is - 128 or more, otherwise the next step is obtained by skipping this number of intervening - steps. - * second byte: ``next_char``, "if ``next_char`` follows the current character, then perform - the operation and stop, otherwise continue." - * third byte: ``op_byte``, indicates a ligature step if less than 128, a kern step otherwise. - * fourth byte: ``remainder``. - In a kern step, an additional space equal to ``kern[256 * (op_byte + 128) + remainder]`` is - inserted between the current character and next char. This amount is often negative, so - that the characters are brought closer together by kerning; but it might be positive. - There are eight kinds of ligature steps, having ``op_byte`` codes ``4a+2b+c`` where ``0 <= a - <= b+c`` and ``0 <= b; c <= 1``. The character whose code is remainder is inserted between - the current character and next char; then the current character is deleted if ``b = 0``, and - next char is deleted if ``c = 0``; then we pass over a characters to reach the next current - character (which may have a ligature/kerning program of its own). - - Notice that if ``a = 0`` and ``b = 1``, the current character is unchanged; if ``a = b`` and - ``c = 1``, the current character is changed but the next character is unchanged. - If the very first instruction of the lig kern array has ``skip_byte = 255``, the - ``next_char`` byte is the so-called right boundary character of this font; the value of - ``next_char`` need not lie between ``bc`` and ``ec``. If the very last instruction of the - lig kern array has ``skip_byte = 255``, there is a special ligature/kerning program for a - left boundary character, beginning at location ``256 * op_byte + remainder``. The - interpretation is that TEX puts implicit boundary characters before and after each - consecutive string of characters from the same font. These implicit characters do not - appear in the output, but they can affect ligatures and kerning. - If the very first instruction of a character's ``lig_kern`` program has ``skip_byte > 128``, - the program actually begins in location ``256 * op_byte + remainder``. This feature allows - access to large lig kern arrays, because the first instruction must otherwise appear in a - location ``<= 255``. - Any instruction with ``skip_byte > 128`` in the lig kern array must have ``256 * op_byte + - remainder < nl``. If such an instruction is encountered during normal program execution, it - denotes an unconditional halt; no ligature command is performed. - ***/ - - - TFMParser.prototype.read_lig_kern_programs = function () { - // Fixme: complete special cases - this.seek_to_table(tables.lig_kern); // Read very first instruction of the table - - var first_skip_byte = this.read_unsigned_byte1(); - var next_char = this.read_unsigned_byte1(); - var op_byte = this.read_unsigned_byte1(); - var remainder = this.read_unsigned_byte1(); - - if (first_skip_byte == 255) { - var right_boundary_char = next_char; - throw Error('Font has right boundary char'); - } - - this.seek_to_table(tables.lig_kern, this.table_lengths[tables.lig_kern] - 1); - var last_skip_byte = this.read_unsigned_byte1(); - next_char = this.read_unsigned_byte1(); - op_byte = this.read_unsigned_byte1(); - remainder = this.read_unsigned_byte1(); - - if (last_skip_byte == 255) { - var left_boundary_char_program_index = 256 * op_byte + remainder; - throw Error('Font has left boundary char program'); - } // Read the instructions - - - var first_instruction = true; - - for (var i = 0; i < this.table_lengths[tables.lig_kern]; i++) { - this.seek_to_table(tables.lig_kern, i); - var skip_byte = this.read_unsigned_byte1(); - next_char = this.read_unsigned_byte1(); - op_byte = this.read_unsigned_byte1(); - remainder = this.read_unsigned_byte1(); // Large lig/kern table ? - - if (first_instruction && skip_byte > 128) { - var large_index = 256 * op_byte + remainder; - skip_byte = this.read_unsigned_byte1(); - next_char = this.read_unsigned_byte1(); - op_byte = this.read_unsigned_byte1(); - remainder = this.read_unsigned_byte1(); - } // Last step ? - - - var stop = skip_byte >= 128; - - if (op_byte >= KERN_OPCODE) { - // Kern step - var kern_index = 256 * (op_byte - KERN_OPCODE) + remainder; - var kern = this.read_fix_word_in_table(tables.kern, kern_index); // Fixme: self registration ? - - new Tfm.TfmKern(this.tfm, i, stop, next_char, kern); - } else { - // Ligature step - var number_of_chars_to_pass_over = op_byte >> 2; - var current_char_is_deleted = (op_byte & 0x02) == 0; - var next_char_is_deleted = (op_byte & 0x01) == 0; - var ligature_char_code = remainder; // Fixme: self registration ? - - new Tfm.TfmLigature(this.tfm, i, stop, next_char, ligature_char_code, number_of_chars_to_pass_over, current_char_is_deleted, next_char_is_deleted); - } - - first_instruction = stop == true; - } - }; - /*** Next comes the char info array, which contains one char info word per character. Each - char info word contains six fields packed into four bytes as follows. - * first byte: ``width_index`` (8 bits) - * second byte: ``height_index`` (4 bits) times 16, plus depth index (4 bits) - * third byte: ``italic_index`` (6 bits) times 4, plus tag (2 bits) - * fourth byte: ``remainder`` (8 bits) - The actual width of a character is ``width[width_index]``, in design-size units; this is a - device for compressing information, since many characters have the same width. Since it is - quite common for many characters to have the same height, depth, or italic correction, the - TFM format imposes a limit of 16 different heights, 16 different depths, and 64 different - italic corrections. - Incidentally, the relation ``width[0] = height[0] = depth[0] = italic[0] = 0`` should - always hold, so that an index of zero implies a value of zero. The width index should never - be zero unless the character does not exist in the font, since a character is valid if and - only if it lies between ``bc`` and ``ec`` and has a nonzero width index. - The tag field in a char info word has four values that explain how to interpret the remainder field. - * ``tag = 0`` (``no_tag``) means that remainder is unused. - * ``tag = 1`` (``lig_tag``) means that this character has a ligature/kerning program - starting at ``lig_kern[remainder]``. - * ``tag = 2`` (``list_tag``) means that this character is part of a chain of characters of - ascending sizes, and not the largest in the chain. The remainder field gives the - character code of the next larger character. - * ``tag = 3`` (``ext_tag``) means that this character code represents an extensible - character, i.e., a character that is built up of smaller pieces so that it can be made - arbitrarily large. The pieces are specified in ``exten[remainder]``. - * ``no_tag = 0`` vanilla character - * ``lig_tag = 1`` character has a ligature/kerning program - * ``list_tag = 2`` character has a successor in a charlist - * ``ext_tag = 3`` character is extensible - ***/ - - - TFMParser.prototype.read_characters = function () { - // Read the character information table - for (var c = this.smallest_character_code; c < this.largest_character_code; c++) { - this.process_char(c); - } - }; - - TFMParser.prototype.process_char = function (c) { - /*** Process the character code *c* in the character information table. - ***/ - var info = this.read_char_info(c); - var width_index = info.width_index; - var height_index = info.height_index; - var depth_index = info.depth_index; - var italic_index = info.italic_index; - var tag = info.tag; - var remainder = info.remainder; // Get the parameters in the corresponding tables - - var width = 0; - if (width_index != 0) width = this.read_fix_word_in_table(tables.width, width_index); // warning: euex10 has zero width characters - - var height = 0; - if (height_index != 0) height = this.read_fix_word_in_table(tables.height, height_index); - var depth = 0; - if (depth_index != 0) depth = this.read_fix_word_in_table(tables.depth, depth_index); - var italic_correction = 0; - if (italic_index != 0) italic_correction = this.read_fix_word_in_table(tables.italic_correction, italic_index); // Interpret the tag field - - var lig_kern_program_index; - var next_larger_char; - var extensible_recipe; - if (tag == LIG_TAG) lig_kern_program_index = remainder; - if (tag == LIST_TAG) next_larger_char = remainder; - if (tag == EXT_TAG) extensible_recipe = this.read_extensible_recipe(remainder); - - if (extensible_recipe !== undefined) { - // Fixme: self registration ? - new Tfm.TfmExtensibleChar(this.tfm, c, width, height, depth, italic_correction, extensible_recipe, lig_kern_program_index, next_larger_char); - } else { - // Fixme: self registration ? - new Tfm.TfmChar(this.tfm, c, width, height, depth, italic_correction, lig_kern_program_index, next_larger_char); - } - }; - - TFMParser.prototype.read_char_info = function (c) { - /*** Read the character code *c* data in the character information table. - ***/ - var index = c - this.smallest_character_code; - var bytes = []; - this.seek_to_table(tables.character_info, index); - bytes[0] = this.read_unsigned_byte1(); - bytes[1] = this.read_unsigned_byte1(); - bytes[2] = this.read_unsigned_byte1(); - bytes[3] = this.read_unsigned_byte1(); - return { - width_index: bytes[0], - height_index: bytes[1] >> 4, - depth_index: bytes[1] & 0xF, - italic_index: bytes[2] >> 6, - tag: bytes[2] & 0x3, - remainder: bytes[3] - }; - }; - - return TFMParser; -}(); - -function parse(buffer) { - var p = new TFMParser(buffer); - return p.tfm; -} - -function tfmData(fontname) { - if (fontdata[fontname]) { - var buffer = Buffer.from(fontdata[fontname], 'base64'); - return buffer; - } - - throw Error("Could not find font " + fontname); -} - -exports.tfmData = tfmData; - -function loadFont(fontname) { - return parse(tfmData(fontname)); -} - -exports.loadFont = loadFont; -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../tikzjax/node_modules/buffer/index.js */ "./node_modules/buffer/index.js").Buffer)) - -/***/ }), - -/***/ "../dvi2html/lib/tfm/tfm.js": -/*!**********************************!*\ - !*** ../dvi2html/lib/tfm/tfm.js ***! - \**********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // PyDvi - A Python Library to Process DVI Stream -// Copyright (C) 2014 Fabrice Salvaire -//; -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . -///////////////////////////////////////////////////////////////////////////// - -var __extends = this && this.__extends || function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - }; - - return extendStatics(d, b); - }; - - return function (d, b) { - extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -}(); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/* This module handles TeX Font Metric. - -The class :class:`PyDvi.Tfm` handles the font's metric. To get a :class:`PyDvi.Tfm` instance for a -particular font use the static method :meth:`PyDvi.TfmParser.TfmParser.parse`. For example use this -code for the font "cmr10":: - - tfm = TfmParser.parse('cmr10', '/usr/share/texmf/fonts/tfm/public/cm/cmr10.tfm') - -The number of characters in the font can be obtained using the function :func:`len`:: - - >>> len(tfm) - 128 - -Each character's metric is stored in a :class:`TfmChar` instance that can be accessed using the char -code as index on the :class:`Tfm` class instance. For example to get the metric of the character -"A" use:: - - tfm[ord('A')] - - */ -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////; - -var TfmChar = -/** @class */ -function () { - function TfmChar(tfm, char_code, width, height, depth, italic_correction, lig_kern_program_index, next_larger_char) { - this.tfm = tfm; - tfm.set_char(char_code, this); - this.char_code = char_code; - this.width = width; - this.height = height; - this.depth = depth; - this.italic_correction = italic_correction; - this.lig_kern_program_index = lig_kern_program_index; - this.next_larger_char = next_larger_char; - } - - TfmChar.prototype.scaled_width = function (scale_factor) { - /* Return the scaled width by *scale_factor*. */ - return this.width * scale_factor; - }; - - TfmChar.prototype.scaled_height = function (scale_factor) { - /* Return the scaled height by *scale_factor*. */ - return this.height * scale_factor; - }; - - TfmChar.prototype.scaled_depth = function (scale_factor) { - /* Return the scaled depth by *scale_factor*. */ - return Number(this.depth * scale_factor); - }; - - TfmChar.prototype.scaled_dimensions = function (scale_factor) { - /* Return the 3-tuple made of the scaled width, height and depth by *scale_factor*. */ - return [this.width, this.height, this.depth].map(function (x) { - return x * scale_factor; - }); - }; - - TfmChar.prototype.next_larger_tfm_char = function () { - /* Return the :class:`TfmChar` instance for the next larger char if it exists else return - :obj:`None`. */ - ; - - if (this.next_larger_char !== null) { - return this.tfm.get_char(this.next_larger_char); - } else { - return null; - } - }; - - TfmChar.prototype.get_lig_kern_program = function (self) { - /* Get the ligature/kern program of the character. */ - ; - - if (this.lig_kern_program_index !== null) { - return this.tfm.get_lig_kern_program(this.lig_kern_program_index); - } else { - return null; - } - }; - - return TfmChar; -}(); - -exports.TfmChar = TfmChar; -/* This class encapsulates a TeX Font Metric for an extensible Glyph. */ - -var TfmExtensibleChar = -/** @class */ -function (_super) { - __extends(TfmExtensibleChar, _super); - - function TfmExtensibleChar(tfm, char_code, width, height, depth, italic_correction, extensible_recipe, lig_kern_program_index, next_larger_char) { - var _this = _super.call(this, tfm, char_code, width, height, depth, italic_correction, lig_kern_program_index, next_larger_char) || this; // BADBAD - - - _this.top, _this.mid, _this.bot, _this.rep = extensible_recipe; - return _this; - } - - return TfmExtensibleChar; -}(TfmChar); - -exports.TfmExtensibleChar = TfmExtensibleChar; - -var TfmLigKern = -/** @class */ -function () { - function TfmLigKern(tfm, index, stop, next_char) { - this.tfm = tfm; - this.stop = stop; - this.index = index; - this.next_char = next_char; - this.tfm.add_lig_kern(this); - } - - return TfmLigKern; -}(); - -exports.TfmLigKern = TfmLigKern; -/* This class represents a Kerning Program Instruction. */ - -var TfmKern = -/** @class */ -function (_super) { - __extends(TfmKern, _super); - - function TfmKern(tfm, index, stop, next_char, kern) { - var _this = _super.call(this, tfm, index, stop, next_char) || this; - - _this.kern = kern; - return _this; - } - - return TfmKern; -}(TfmLigKern); - -exports.TfmKern = TfmKern; -/* This class represents a Ligature Program Instruction. */ - -var TfmLigature = -/** @class */ -function (_super) { - __extends(TfmLigature, _super); - - function TfmLigature(tfm, index, stop, next_char, ligature_char_code, number_of_chars_to_pass_over, current_char_is_deleted, next_char_is_deleted) { - var _this = _super.call(this, tfm, index, stop, next_char) || this; - - _this.ligature_char_code = ligature_char_code; - _this.number_of_chars_to_pass_over = number_of_chars_to_pass_over; - _this.current_char_is_deleted = current_char_is_deleted; - _this.next_char_is_deleted = next_char_is_deleted; - return _this; - } - - return TfmLigature; -}(TfmLigKern); - -exports.TfmLigature = TfmLigature; -/* This class encapsulates a TeX Font Metric for a font. */ - -var Tfm = -/** @class */ -function () { - function Tfm(smallest_character_code, largest_character_code, checksum, designSize, character_coding_scheme, family) { - this.smallest_character_code = smallest_character_code; - this.largest_character_code = largest_character_code; - this.checksum = checksum; - this.designSize = designSize; - this.character_coding_scheme = character_coding_scheme; - this.family = family; - this._lig_kerns = []; - this.characters = {}; - } - - Tfm.prototype.get_char = function (x) { - return this.characters[x]; - }; - - Tfm.prototype.set_char = function (x, y) { - this.characters[x] = y; - }; - - Tfm.prototype.set_font_parameters = function (parameters) { - /* Set the font parameters. */ - ; - this.slant = parameters[0]; - this.spacing = parameters[1]; - this.space_stretch = parameters[2]; - this.space_shrink = parameters[3]; - this.x_height = parameters[4]; - this.quad = parameters[5]; - this.extra_space = parameters[6]; - }; - - Tfm.prototype.set_math_symbols_parameters = function (parameters) { - /* Set the math symbols parameters. */ - ; - this.num1 = parameters[0]; - this.num2 = parameters[1]; - this.num3 = parameters[2]; - this.denom1 = parameters[3]; - this.denom2 = parameters[4]; - this.sup1 = parameters[5]; - this.sup2 = parameters[6]; - this.sup3 = parameters[7]; - this.sub1 = parameters[8]; - this.sub2 = parameters[9]; - this.supdrop = parameters[10]; - this.subdrop = parameters[11]; - this.delim1 = parameters[12]; - this.delim2 = parameters[13]; - this.axis_height = parameters[14]; - }; - - Tfm.prototype.set_math_extension_parameters = function (parameters) { - this.default_rule_thickness = parameters[0]; - this.big_op_spacing = parameters.slice(1); - }; - - Tfm.prototype.add_lig_kern = function (obj) { - /* Add a ligature/kern program *obj*. */ - ; - - this._lig_kerns.push(obj); - }; - - Tfm.prototype.get_lig_kern_program = function (i) { - /* Return the ligature/kern program at index *i*. */ - ; - return this._lig_kerns[i]; - }; - - return Tfm; -}(); - -exports.Tfm = Tfm; - -/***/ }), - -/***/ "./node_modules/base64-js/index.js": -/*!*****************************************!*\ - !*** ./node_modules/base64-js/index.js ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.byteLength = byteLength; -exports.toByteArray = toByteArray; -exports.fromByteArray = fromByteArray; -var lookup = []; -var revLookup = []; -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i]; - revLookup[code.charCodeAt(i)] = i; -} // Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications - - -revLookup['-'.charCodeAt(0)] = 62; -revLookup['_'.charCodeAt(0)] = 63; - -function getLens(b64) { - var len = b64.length; - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4'); - } // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - - - var validLen = b64.indexOf('='); - if (validLen === -1) validLen = len; - var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4; - return [validLen, placeHoldersLen]; -} // base64 is 4/3 + up to two characters of the original data - - -function byteLength(b64) { - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; -} - -function _byteLength(b64, validLen, placeHoldersLen) { - return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; -} - -function toByteArray(b64) { - var tmp; - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); - var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars - - var len = placeHoldersLen > 0 ? validLen - 4 : validLen; - - for (var i = 0; i < len; i += 4) { - tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)]; - arr[curByte++] = tmp >> 16 & 0xFF; - arr[curByte++] = tmp >> 8 & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 2) { - tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4; - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 1) { - tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2; - arr[curByte++] = tmp >> 8 & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - return arr; -} - -function tripletToBase64(num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]; -} - -function encodeChunk(uint8, start, end) { - var tmp; - var output = []; - - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF); - output.push(tripletToBase64(tmp)); - } - - return output.join(''); -} - -function fromByteArray(uint8) { - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - // go through the array every three bytes, we'll deal with trailing stuff later - - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength)); - } // pad the end with zeros, but make sure to not forget the extra bytes - - - if (extraBytes === 1) { - tmp = uint8[len - 1]; - parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '=='); - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1]; - parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '='); - } - - return parts.join(''); -} - -/***/ }), - -/***/ "./node_modules/buffer/index.js": -/*!**************************************!*\ - !*** ./node_modules/buffer/index.js ***! - \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ - -/* eslint-disable no-proto */ - - -var base64 = __webpack_require__(/*! base64-js */ "./node_modules/base64-js/index.js"); - -var ieee754 = __webpack_require__(/*! ieee754 */ "./node_modules/ieee754/index.js"); - -var isArray = __webpack_require__(/*! isarray */ "./node_modules/isarray/index.js"); - -exports.Buffer = Buffer; -exports.SlowBuffer = SlowBuffer; -exports.INSPECT_MAX_BYTES = 50; -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * Due to various browser bugs, sometimes the Object implementation will be used even - * when the browser supports typed arrays. - * - * Note: - * - * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. - * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. - * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. - - * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they - * get the Object implementation, which is slower but behaves correctly. - */ - -Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport(); -/* - * Export kMaxLength after typed array support is determined. - */ - -exports.kMaxLength = kMaxLength(); - -function typedArraySupport() { - try { - var arr = new Uint8Array(1); - arr.__proto__ = { - __proto__: Uint8Array.prototype, - foo: function () { - return 42; - } - }; - return arr.foo() === 42 && // typed array instances can be augmented - typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` - arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray` - } catch (e) { - return false; - } -} - -function kMaxLength() { - return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff; -} - -function createBuffer(that, length) { - if (kMaxLength() < length) { - throw new RangeError('Invalid typed array length'); - } - - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = new Uint8Array(length); - that.__proto__ = Buffer.prototype; - } else { - // Fallback: Return an object instance of the Buffer class - if (that === null) { - that = new Buffer(length); - } - - that.length = length; - } - - return that; -} -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - - -function Buffer(arg, encodingOrOffset, length) { - if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { - return new Buffer(arg, encodingOrOffset, length); - } // Common case. - - - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new Error('If encoding is specified then the first argument must be a string'); - } - - return allocUnsafe(this, arg); - } - - return from(this, arg, encodingOrOffset, length); -} - -Buffer.poolSize = 8192; // not used by this implementation -// TODO: Legacy, not needed anymore. Remove in next major version. - -Buffer._augment = function (arr) { - arr.__proto__ = Buffer.prototype; - return arr; -}; - -function from(that, value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number'); - } - - if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { - return fromArrayBuffer(that, value, encodingOrOffset, length); - } - - if (typeof value === 'string') { - return fromString(that, value, encodingOrOffset); - } - - return fromObject(that, value); -} -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ - - -Buffer.from = function (value, encodingOrOffset, length) { - return from(null, value, encodingOrOffset, length); -}; - -if (Buffer.TYPED_ARRAY_SUPPORT) { - Buffer.prototype.__proto__ = Uint8Array.prototype; - Buffer.__proto__ = Uint8Array; - - if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) { - // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true - }); - } -} - -function assertSize(size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be a number'); - } else if (size < 0) { - throw new RangeError('"size" argument must not be negative'); - } -} - -function alloc(that, size, fill, encoding) { - assertSize(size); - - if (size <= 0) { - return createBuffer(that, size); - } - - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill); - } - - return createBuffer(that, size); -} -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ - - -Buffer.alloc = function (size, fill, encoding) { - return alloc(null, size, fill, encoding); -}; - -function allocUnsafe(that, size) { - assertSize(size); - that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); - - if (!Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < size; ++i) { - that[i] = 0; - } - } - - return that; -} -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ - - -Buffer.allocUnsafe = function (size) { - return allocUnsafe(null, size); -}; -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ - - -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(null, size); -}; - -function fromString(that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8'; - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding'); - } - - var length = byteLength(string, encoding) | 0; - that = createBuffer(that, length); - var actual = that.write(string, encoding); - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - that = that.slice(0, actual); - } - - return that; -} - -function fromArrayLike(that, array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0; - that = createBuffer(that, length); - - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255; - } - - return that; -} - -function fromArrayBuffer(that, array, byteOffset, length) { - array.byteLength; // this throws if `array` is not a valid ArrayBuffer - - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('\'offset\' is out of bounds'); - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('\'length\' is out of bounds'); - } - - if (byteOffset === undefined && length === undefined) { - array = new Uint8Array(array); - } else if (length === undefined) { - array = new Uint8Array(array, byteOffset); - } else { - array = new Uint8Array(array, byteOffset, length); - } - - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = array; - that.__proto__ = Buffer.prototype; - } else { - // Fallback: Return an object instance of the Buffer class - that = fromArrayLike(that, array); - } - - return that; -} - -function fromObject(that, obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0; - that = createBuffer(that, len); - - if (that.length === 0) { - return that; - } - - obj.copy(that, 0, 0, len); - return that; - } - - if (obj) { - if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { - return createBuffer(that, 0); - } - - return fromArrayLike(that, obj); - } - - if (obj.type === 'Buffer' && isArray(obj.data)) { - return fromArrayLike(that, obj.data); - } - } - - throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.'); -} - -function checked(length) { - // Note: cannot use `length < kMaxLength()` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes'); - } - - return length | 0; -} - -function SlowBuffer(length) { - if (+length != length) { - // eslint-disable-line eqeqeq - length = 0; - } - - return Buffer.alloc(+length); -} - -Buffer.isBuffer = function isBuffer(b) { - return !!(b != null && b._isBuffer); -}; - -Buffer.compare = function compare(a, b) { - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError('Arguments must be Buffers'); - } - - if (a === b) return 0; - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break; - } - } - - if (x < y) return -1; - if (y < x) return 1; - return 0; -}; - -Buffer.isEncoding = function isEncoding(encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true; - - default: - return false; - } -}; - -Buffer.concat = function concat(list, length) { - if (!isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers'); - } - - if (list.length === 0) { - return Buffer.alloc(0); - } - - var i; - - if (length === undefined) { - length = 0; - - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - - var buffer = Buffer.allocUnsafe(length); - var pos = 0; - - for (i = 0; i < list.length; ++i) { - var buf = list[i]; - - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers'); - } - - buf.copy(buffer, pos); - pos += buf.length; - } - - return buffer; -}; - -function byteLength(string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length; - } - - if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { - return string.byteLength; - } - - if (typeof string !== 'string') { - string = '' + string; - } - - var len = string.length; - if (len === 0) return 0; // Use a for loop to avoid recursion - - var loweredCase = false; - - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len; - - case 'utf8': - case 'utf-8': - case undefined: - return utf8ToBytes(string).length; - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2; - - case 'hex': - return len >>> 1; - - case 'base64': - return base64ToBytes(string).length; - - default: - if (loweredCase) return utf8ToBytes(string).length; // assume utf8 - - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -} - -Buffer.byteLength = byteLength; - -function slowToString(encoding, start, end) { - var loweredCase = false; // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - - if (start === undefined || start < 0) { - start = 0; - } // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - - - if (start > this.length) { - return ''; - } - - if (end === undefined || end > this.length) { - end = this.length; - } - - if (end <= 0) { - return ''; - } // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - - - end >>>= 0; - start >>>= 0; - - if (end <= start) { - return ''; - } - - if (!encoding) encoding = 'utf8'; - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end); - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end); - - case 'ascii': - return asciiSlice(this, start, end); - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end); - - case 'base64': - return base64Slice(this, start, end); - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end); - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); - encoding = (encoding + '').toLowerCase(); - loweredCase = true; - } - } -} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect -// Buffer instances. - - -Buffer.prototype._isBuffer = true; - -function swap(b, n, m) { - var i = b[n]; - b[n] = b[m]; - b[m] = i; -} - -Buffer.prototype.swap16 = function swap16() { - var len = this.length; - - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits'); - } - - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - - return this; -}; - -Buffer.prototype.swap32 = function swap32() { - var len = this.length; - - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits'); - } - - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - - return this; -}; - -Buffer.prototype.swap64 = function swap64() { - var len = this.length; - - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits'); - } - - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - - return this; -}; - -Buffer.prototype.toString = function toString() { - var length = this.length | 0; - if (length === 0) return ''; - if (arguments.length === 0) return utf8Slice(this, 0, length); - return slowToString.apply(this, arguments); -}; - -Buffer.prototype.equals = function equals(b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer'); - if (this === b) return true; - return Buffer.compare(this, b) === 0; -}; - -Buffer.prototype.inspect = function inspect() { - var str = ''; - var max = exports.INSPECT_MAX_BYTES; - - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); - if (this.length > max) str += ' ... '; - } - - return ''; -}; - -Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { - if (!Buffer.isBuffer(target)) { - throw new TypeError('Argument must be a Buffer'); - } - - if (start === undefined) { - start = 0; - } - - if (end === undefined) { - end = target ? target.length : 0; - } - - if (thisStart === undefined) { - thisStart = 0; - } - - if (thisEnd === undefined) { - thisEnd = this.length; - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index'); - } - - if (thisStart >= thisEnd && start >= end) { - return 0; - } - - if (thisStart >= thisEnd) { - return -1; - } - - if (start >= end) { - return 1; - } - - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - if (this === target) return 0; - var x = thisEnd - thisStart; - var y = end - start; - var len = Math.min(x, y); - var thisCopy = this.slice(thisStart, thisEnd); - var targetCopy = target.slice(start, end); - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break; - } - } - - if (x < y) return -1; - if (y < x) return 1; - return 0; -}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf - - -function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1; // Normalize byteOffset - - if (typeof byteOffset === 'string') { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff; - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000; - } - - byteOffset = +byteOffset; // Coerce to Number. - - if (isNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : buffer.length - 1; - } // Normalize byteOffset: negative offsets start from the end of the buffer - - - if (byteOffset < 0) byteOffset = buffer.length + byteOffset; - - if (byteOffset >= buffer.length) { - if (dir) return -1;else byteOffset = buffer.length - 1; - } else if (byteOffset < 0) { - if (dir) byteOffset = 0;else return -1; - } // Normalize val - - - if (typeof val === 'string') { - val = Buffer.from(val, encoding); - } // Finally, search either indexOf (if dir is true) or lastIndexOf - - - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1; - } - - return arrayIndexOf(buffer, val, byteOffset, encoding, dir); - } else if (typeof val === 'number') { - val = val & 0xFF; // Search for a byte value [0-255] - - if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); - } - } - - return arrayIndexOf(buffer, [val], byteOffset, encoding, dir); - } - - throw new TypeError('val must be string, number or Buffer'); -} - -function arrayIndexOf(arr, val, byteOffset, encoding, dir) { - var indexSize = 1; - var arrLength = arr.length; - var valLength = val.length; - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase(); - - if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1; - } - - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - - function read(buf, i) { - if (indexSize === 1) { - return buf[i]; - } else { - return buf.readUInt16BE(i * indexSize); - } - } - - var i; - - if (dir) { - var foundIndex = -1; - - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i; - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize; - } else { - if (foundIndex !== -1) i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; - - for (i = byteOffset; i >= 0; i--) { - var found = true; - - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false; - break; - } - } - - if (found) return i; - } - } - - return -1; -} - -Buffer.prototype.includes = function includes(val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1; -}; - -Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true); -}; - -Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false); -}; - -function hexWrite(buf, string, offset, length) { - offset = Number(offset) || 0; - var remaining = buf.length - offset; - - if (!length) { - length = remaining; - } else { - length = Number(length); - - if (length > remaining) { - length = remaining; - } - } // must be an even number of digits - - - var strLen = string.length; - if (strLen % 2 !== 0) throw new TypeError('Invalid hex string'); - - if (length > strLen / 2) { - length = strLen / 2; - } - - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16); - if (isNaN(parsed)) return i; - buf[offset + i] = parsed; - } - - return i; -} - -function utf8Write(buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); -} - -function asciiWrite(buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length); -} - -function latin1Write(buf, string, offset, length) { - return asciiWrite(buf, string, offset, length); -} - -function base64Write(buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length); -} - -function ucs2Write(buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); -} - -Buffer.prototype.write = function write(string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8'; - length = this.length; - offset = 0; // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset; - length = this.length; - offset = 0; // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset | 0; - - if (isFinite(length)) { - length = length | 0; - if (encoding === undefined) encoding = 'utf8'; - } else { - encoding = length; - length = undefined; - } // legacy write(string, encoding, offset, length) - remove in v0.13 - - } else { - throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported'); - } - - var remaining = this.length - offset; - if (length === undefined || length > remaining) length = remaining; - - if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds'); - } - - if (!encoding) encoding = 'utf8'; - var loweredCase = false; - - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length); - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length); - - case 'ascii': - return asciiWrite(this, string, offset, length); - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length); - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length); - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length); - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -}; - -Buffer.prototype.toJSON = function toJSON() { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - }; -}; - -function base64Slice(buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf); - } else { - return base64.fromByteArray(buf.slice(start, end)); - } -} - -function utf8Slice(buf, start, end) { - end = Math.min(buf.length, end); - var res = []; - var i = start; - - while (i < end) { - var firstByte = buf[i]; - var codePoint = null; - var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1; - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint; - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte; - } - - break; - - case 2: - secondByte = buf[i + 1]; - - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F; - - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint; - } - } - - break; - - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F; - - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint; - } - } - - break; - - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F; - - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint; - } - } - - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD; - bytesPerSequence = 1; - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000; - res.push(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - - res.push(codePoint); - i += bytesPerSequence; - } - - return decodeCodePointsArray(res); -} // Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety - - -var MAX_ARGUMENTS_LENGTH = 0x1000; - -function decodeCodePointsArray(codePoints) { - var len = codePoints.length; - - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints); // avoid extra slice() - } // Decode in chunks to avoid "call stack size exceeded". - - - var res = ''; - var i = 0; - - while (i < len) { - res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)); - } - - return res; -} - -function asciiSlice(buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F); - } - - return ret; -} - -function latin1Slice(buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - - return ret; -} - -function hexSlice(buf, start, end) { - var len = buf.length; - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - var out = ''; - - for (var i = start; i < end; ++i) { - out += toHex(buf[i]); - } - - return out; -} - -function utf16leSlice(buf, start, end) { - var bytes = buf.slice(start, end); - var res = ''; - - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); - } - - return res; -} - -Buffer.prototype.slice = function slice(start, end) { - var len = this.length; - start = ~~start; - end = end === undefined ? len : ~~end; - - if (start < 0) { - start += len; - if (start < 0) start = 0; - } else if (start > len) { - start = len; - } - - if (end < 0) { - end += len; - if (end < 0) end = 0; - } else if (end > len) { - end = len; - } - - if (end < start) end = start; - var newBuf; - - if (Buffer.TYPED_ARRAY_SUPPORT) { - newBuf = this.subarray(start, end); - newBuf.__proto__ = Buffer.prototype; - } else { - var sliceLen = end - start; - newBuf = new Buffer(sliceLen, undefined); - - for (var i = 0; i < sliceLen; ++i) { - newBuf[i] = this[i + start]; - } - } - - return newBuf; -}; -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ - - -function checkOffset(offset, ext, length) { - if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint'); - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length'); -} - -Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - var val = this[offset]; - var mul = 1; - var i = 0; - - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - return val; -}; - -Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - - if (!noAssert) { - checkOffset(offset, byteLength, this.length); - } - - var val = this[offset + --byteLength]; - var mul = 1; - - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul; - } - - return val; -}; - -Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length); - return this[offset]; -}; - -Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] | this[offset + 1] << 8; -}; - -Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] << 8 | this[offset + 1]; -}; - -Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000; -}; - -Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); -}; - -Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - var val = this[offset]; - var mul = 1; - var i = 0; - - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - mul *= 0x80; - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - return val; -}; - -Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - var i = byteLength; - var mul = 1; - var val = this[offset + --i]; - - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul; - } - - mul *= 0x80; - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - return val; -}; - -Buffer.prototype.readInt8 = function readInt8(offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 0x80)) return this[offset]; - return (0xff - this[offset] + 1) * -1; -}; - -Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset] | this[offset + 1] << 8; - return val & 0x8000 ? val | 0xFFFF0000 : val; -}; - -Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset + 1] | this[offset] << 8; - return val & 0x8000 ? val | 0xFFFF0000 : val; -}; - -Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; -}; - -Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; -}; - -Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, true, 23, 4); -}; - -Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, false, 23, 4); -}; - -Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, true, 52, 8); -}; - -Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, false, 52, 8); -}; - -function checkInt(buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); - if (offset + ext > buf.length) throw new RangeError('Index out of range'); -} - -Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - byteLength = byteLength | 0; - - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var mul = 1; - var i = 0; - this[offset] = value & 0xFF; - - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = value / mul & 0xFF; - } - - return offset + byteLength; -}; - -Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - byteLength = byteLength | 0; - - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var i = byteLength - 1; - var mul = 1; - this[offset + i] = value & 0xFF; - - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = value / mul & 0xFF; - } - - return offset + byteLength; -}; - -Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); - this[offset] = value & 0xff; - return offset + 1; -}; - -function objectWriteUInt16(buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1; - - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { - buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8; - } -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value & 0xff; - this[offset + 1] = value >>> 8; - } else { - objectWriteUInt16(this, value, offset, true); - } - - return offset + 2; -}; - -Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value >>> 8; - this[offset + 1] = value & 0xff; - } else { - objectWriteUInt16(this, value, offset, false); - } - - return offset + 2; -}; - -function objectWriteUInt32(buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1; - - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { - buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff; - } -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = value >>> 24; - this[offset + 2] = value >>> 16; - this[offset + 1] = value >>> 8; - this[offset] = value & 0xff; - } else { - objectWriteUInt32(this, value, offset, true); - } - - return offset + 4; -}; - -Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value >>> 24; - this[offset + 1] = value >>> 16; - this[offset + 2] = value >>> 8; - this[offset + 3] = value & 0xff; - } else { - objectWriteUInt32(this, value, offset, false); - } - - return offset + 4; -}; - -Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = 0; - var mul = 1; - var sub = 0; - this[offset] = value & 0xFF; - - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - - this[offset + i] = (value / mul >> 0) - sub & 0xFF; - } - - return offset + byteLength; -}; - -Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = byteLength - 1; - var mul = 1; - var sub = 0; - this[offset + i] = value & 0xFF; - - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - - this[offset + i] = (value / mul >> 0) - sub & 0xFF; - } - - return offset + byteLength; -}; - -Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); - if (value < 0) value = 0xff + value + 1; - this[offset] = value & 0xff; - return offset + 1; -}; - -Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value & 0xff; - this[offset + 1] = value >>> 8; - } else { - objectWriteUInt16(this, value, offset, true); - } - - return offset + 2; -}; - -Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value >>> 8; - this[offset + 1] = value & 0xff; - } else { - objectWriteUInt16(this, value, offset, false); - } - - return offset + 2; -}; - -Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value & 0xff; - this[offset + 1] = value >>> 8; - this[offset + 2] = value >>> 16; - this[offset + 3] = value >>> 24; - } else { - objectWriteUInt32(this, value, offset, true); - } - - return offset + 4; -}; - -Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (value < 0) value = 0xffffffff + value + 1; - - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value >>> 24; - this[offset + 1] = value >>> 16; - this[offset + 2] = value >>> 8; - this[offset + 3] = value & 0xff; - } else { - objectWriteUInt32(this, value, offset, false); - } - - return offset + 4; -}; - -function checkIEEE754(buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range'); - if (offset < 0) throw new RangeError('Index out of range'); -} - -function writeFloat(buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38); - } - - ieee754.write(buf, value, offset, littleEndian, 23, 4); - return offset + 4; -} - -Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert); -}; - -Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert); -}; - -function writeDouble(buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308); - } - - ieee754.write(buf, value, offset, littleEndian, 52, 8); - return offset + 8; -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert); -}; - -Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert); -}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) - - -Buffer.prototype.copy = function copy(target, targetStart, start, end) { - if (!start) start = 0; - if (!end && end !== 0) end = this.length; - if (targetStart >= target.length) targetStart = target.length; - if (!targetStart) targetStart = 0; - if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done - - if (end === start) return 0; - if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions - - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds'); - } - - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds'); - if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob? - - if (end > this.length) end = this.length; - - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - - var len = end - start; - var i; - - if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start]; - } - } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { - // ascending copy from start - for (i = 0; i < len; ++i) { - target[i + targetStart] = this[i + start]; - } - } else { - Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart); - } - - return len; -}; // Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) - - -Buffer.prototype.fill = function fill(val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === 'string') { - encoding = end; - end = this.length; - } - - if (val.length === 1) { - var code = val.charCodeAt(0); - - if (code < 256) { - val = code; - } - } - - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string'); - } - - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding); - } - } else if (typeof val === 'number') { - val = val & 255; - } // Invalid ranges are not set to a default, so can range check early. - - - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index'); - } - - if (end <= start) { - return this; - } - - start = start >>> 0; - end = end === undefined ? this.length : end >>> 0; - if (!val) val = 0; - var i; - - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString()); - var len = bytes.length; - - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - - return this; -}; // HELPER FUNCTIONS -// ================ - - -var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; - -function base64clean(str) { - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to '' - - if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - - while (str.length % 4 !== 0) { - str = str + '='; - } - - return str; -} - -function stringtrim(str) { - if (str.trim) return str.trim(); - return str.replace(/^\s+|\s+$/g, ''); -} - -function toHex(n) { - if (n < 16) return '0' + n.toString(16); - return n.toString(16); -} - -function utf8ToBytes(string, units) { - units = units || Infinity; - var codePoint; - var length = string.length; - var leadSurrogate = null; - var bytes = []; - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); // is surrogate component - - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue; - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue; - } // valid lead - - - leadSurrogate = codePoint; - continue; - } // 2 leads in a row - - - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - leadSurrogate = codePoint; - continue; - } // valid surrogate pair - - - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - } - - leadSurrogate = null; // encode utf8 - - if (codePoint < 0x80) { - if ((units -= 1) < 0) break; - bytes.push(codePoint); - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break; - bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80); - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break; - bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break; - bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); - } else { - throw new Error('Invalid code point'); - } - } - - return bytes; -} - -function asciiToBytes(str) { - var byteArray = []; - - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF); - } - - return byteArray; -} - -function utf16leToBytes(str, units) { - var c, hi, lo; - var byteArray = []; - - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break; - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - - return byteArray; -} - -function base64ToBytes(str) { - return base64.toByteArray(base64clean(str)); -} - -function blitBuffer(src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if (i + offset >= dst.length || i >= src.length) break; - dst[i + offset] = src[i]; - } - - return i; -} - -function isnan(val) { - return val !== val; // eslint-disable-line no-self-compare -} -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "./node_modules/core-util-is/lib/util.js": -/*!***********************************************!*\ - !*** ./node_modules/core-util-is/lib/util.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - - return objectToString(arg) === '[object Array]'; -} - -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} - -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} - -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} - -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} - -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} - -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} - -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} - -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} - -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -exports.isObject = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} - -exports.isDate = isDate; - -function isError(e) { - return objectToString(e) === '[object Error]' || e instanceof Error; -} - -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} - -exports.isPrimitive = isPrimitive; -exports.isBuffer = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../buffer/index.js */ "./node_modules/buffer/index.js").Buffer)) - -/***/ }), - -/***/ "./node_modules/events/events.js": -/*!***************************************!*\ - !*** ./node_modules/events/events.js ***! - \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - - -var R = typeof Reflect === 'object' ? Reflect : null; -var ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); -}; -var ReflectOwnKeys; - -if (R && typeof R.ownKeys === 'function') { - ReflectOwnKeys = R.ownKeys; -} else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); - }; -} else { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target); - }; -} - -function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); -} - -var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { - return value !== value; -}; - -function EventEmitter() { - EventEmitter.init.call(this); -} - -module.exports = EventEmitter; // Backwards-compat with node 0.10.x - -EventEmitter.EventEmitter = EventEmitter; -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._eventsCount = 0; -EventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. - -var defaultMaxListeners = 10; -Object.defineProperty(EventEmitter, 'defaultMaxListeners', { - enumerable: true, - get: function () { - return defaultMaxListeners; - }, - set: function (arg) { - if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); - } - - defaultMaxListeners = arg; - } -}); - -EventEmitter.init = function () { - if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) { - this._events = Object.create(null); - this._eventsCount = 0; - } - - this._maxListeners = this._maxListeners || undefined; -}; // Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. - - -EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); - } - - this._maxListeners = n; - return this; -}; - -function $getMaxListeners(that) { - if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners; - return that._maxListeners; -} - -EventEmitter.prototype.getMaxListeners = function getMaxListeners() { - return $getMaxListeners(this); -}; - -EventEmitter.prototype.emit = function emit(type) { - var args = []; - - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - - var doError = type === 'error'; - var events = this._events; - if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false; // If there is no 'error' event listener then throw. - - if (doError) { - var er; - if (args.length > 0) er = args[0]; - - if (er instanceof Error) { - // Note: The comments on the `throw` lines are intentional, they show - // up in Node's output if this results in an unhandled exception. - throw er; // Unhandled 'error' event - } // At least give some kind of context to the user - - - var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); - err.context = er; - throw err; // Unhandled 'error' event - } - - var handler = events[type]; - if (handler === undefined) return false; - - if (typeof handler === 'function') { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - - for (var i = 0; i < len; ++i) ReflectApply(listeners[i], this, args); - } - - return true; -}; - -function _addListener(target, type, listener, prepend) { - var m; - var events; - var existing; - - if (typeof listener !== 'function') { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - - events = target._events; - - if (events === undefined) { - events = target._events = Object.create(null); - target._eventsCount = 0; - } else { - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (events.newListener !== undefined) { - target.emit('newListener', type, listener.listener ? listener.listener : listener); // Re-assign `events` because a newListener handler could have caused the - // this._events to be assigned to a new object - - events = target._events; - } - - existing = events[type]; - } - - if (existing === undefined) { - // Optimize the case of one listener. Don't need the extra array object. - existing = events[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === 'function') { - // Adding the second element, need to change to array. - existing = events[type] = prepend ? [listener, existing] : [existing, listener]; // If we've already got an array, just append. - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } // Check for listener leak - - - m = $getMaxListeners(target); - - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; // No error code for this since it is a Warning - // eslint-disable-next-line no-restricted-syntax - - var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit'); - w.name = 'MaxListenersExceededWarning'; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - - return target; -} - -EventEmitter.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); -}; - -function onceWrapper() { - var args = []; - - for (var i = 0; i < arguments.length; i++) args.push(arguments[i]); - - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - ReflectApply(this.listener, this.target, args); - } -} - -function _onceWrap(target, type, listener) { - var state = { - fired: false, - wrapFn: undefined, - target: target, - type: type, - listener: listener - }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; -} - -EventEmitter.prototype.once = function once(type, listener) { - if (typeof listener !== 'function') { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - - this.on(type, _onceWrap(this, type, listener)); - return this; -}; - -EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) { - if (typeof listener !== 'function') { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - - this.prependListener(type, _onceWrap(this, type, listener)); - return this; -}; // Emits a 'removeListener' event if and only if the listener was removed. - - -EventEmitter.prototype.removeListener = function removeListener(type, listener) { - var list, events, position, i, originalListener; - - if (typeof listener !== 'function') { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - - events = this._events; - if (events === undefined) return this; - list = events[type]; - if (list === undefined) return this; - - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) this._events = Object.create(null);else { - delete events[type]; - if (events.removeListener) this.emit('removeListener', type, list.listener || listener); - } - } else if (typeof list !== 'function') { - position = -1; - - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - - if (position < 0) return this; - if (position === 0) list.shift();else { - spliceOne(list, position); - } - if (list.length === 1) events[type] = list[0]; - if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener); - } - - return this; -}; - -EventEmitter.prototype.off = EventEmitter.prototype.removeListener; - -EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events, i; - events = this._events; - if (events === undefined) return this; // not listening for removeListener, no need to emit - - if (events.removeListener === undefined) { - if (arguments.length === 0) { - this._events = Object.create(null); - this._eventsCount = 0; - } else if (events[type] !== undefined) { - if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type]; - } - - return this; - } // emit removeListener for all listeners on all events - - - if (arguments.length === 0) { - var keys = Object.keys(events); - var key; - - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - - this.removeAllListeners('removeListener'); - this._events = Object.create(null); - this._eventsCount = 0; - return this; - } - - listeners = events[type]; - - if (typeof listeners === 'function') { - this.removeListener(type, listeners); - } else if (listeners !== undefined) { - // LIFO order - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - - return this; -}; - -function _listeners(target, type, unwrap) { - var events = target._events; - if (events === undefined) return []; - var evlistener = events[type]; - if (evlistener === undefined) return []; - if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); -} - -EventEmitter.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); -}; - -EventEmitter.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); -}; - -EventEmitter.listenerCount = function (emitter, type) { - if (typeof emitter.listenerCount === 'function') { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } -}; - -EventEmitter.prototype.listenerCount = listenerCount; - -function listenerCount(type) { - var events = this._events; - - if (events !== undefined) { - var evlistener = events[type]; - - if (typeof evlistener === 'function') { - return 1; - } else if (evlistener !== undefined) { - return evlistener.length; - } - } - - return 0; -} - -EventEmitter.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; -}; - -function arrayClone(arr, n) { - var copy = new Array(n); - - for (var i = 0; i < n; ++i) copy[i] = arr[i]; - - return copy; -} - -function spliceOne(list, index) { - for (; index + 1 < list.length; index++) list[index] = list[index + 1]; - - list.pop(); -} - -function unwrapListeners(arr) { - var ret = new Array(arr.length); - - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - - return ret; -} - -/***/ }), - -/***/ "./node_modules/fetch-readablestream/lib/defaultTransportFactory.js": -/*!**************************************************************************!*\ - !*** ./node_modules/fetch-readablestream/lib/defaultTransportFactory.js ***! - \**************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = defaultTransportFactory; - -var _fetch = __webpack_require__(/*! ./fetch */ "./node_modules/fetch-readablestream/lib/fetch.js"); - -var _fetch2 = _interopRequireDefault(_fetch); - -var _xhr = __webpack_require__(/*! ./xhr */ "./node_modules/fetch-readablestream/lib/xhr.js"); - -function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - default: obj - }; -} // selected is used to cache the detected transport. - - -var selected = null; // defaultTransportFactory selects the most appropriate transport based on the -// capabilities of the current environment. - -function defaultTransportFactory() { - if (!selected) { - selected = detectTransport(); - } - - return selected; -} - -function detectTransport() { - if (typeof Response !== 'undefined' && Response.prototype.hasOwnProperty("body")) { - // fetch with ReadableStream support. - return _fetch2.default; - } - - var mozChunked = 'moz-chunked-arraybuffer'; - - if (supportsXhrResponseType(mozChunked)) { - // Firefox, ArrayBuffer support. - return (0, _xhr.makeXhrTransport)({ - responseType: mozChunked, - responseParserFactory: function responseParserFactory() { - return function (response) { - return new Uint8Array(response); - }; - } - }); - } // Bog-standard, expensive, text concatenation with byte encoding :( - - - return (0, _xhr.makeXhrTransport)({ - responseType: 'text', - responseParserFactory: function responseParserFactory() { - var encoder = new TextEncoder(); - var offset = 0; - return function (response) { - var chunk = response.substr(offset); - offset = response.length; - return encoder.encode(chunk, { - stream: true - }); - }; - } - }); -} - -function supportsXhrResponseType(type) { - try { - var tmpXhr = new XMLHttpRequest(); - tmpXhr.responseType = type; - return tmpXhr.responseType === type; - } catch (e) { - /* IE throws on setting responseType to an unsupported value */ - } - - return false; -} - -/***/ }), - -/***/ "./node_modules/fetch-readablestream/lib/entry.js": -/*!********************************************************!*\ - !*** ./node_modules/fetch-readablestream/lib/entry.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! ./index */ "./node_modules/fetch-readablestream/lib/index.js").default; - -/***/ }), - -/***/ "./node_modules/fetch-readablestream/lib/fetch.js": -/*!********************************************************!*\ - !*** ./node_modules/fetch-readablestream/lib/fetch.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = fetchRequest; // thin wrapper around `fetch()` to ensure we only expose the properties provided by -// the XHR polyfil; / fetch-readablestream Response API. - -function fetchRequest(url, options) { - return fetch(url, options).then(function (r) { - return { - body: r.body, - headers: r.headers, - ok: r.ok, - status: r.status, - statusText: r.statusText, - url: r.url - }; - }); -} - -/***/ }), - -/***/ "./node_modules/fetch-readablestream/lib/index.js": -/*!********************************************************!*\ - !*** ./node_modules/fetch-readablestream/lib/index.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = fetchStream; - -var _defaultTransportFactory = __webpack_require__(/*! ./defaultTransportFactory */ "./node_modules/fetch-readablestream/lib/defaultTransportFactory.js"); - -var _defaultTransportFactory2 = _interopRequireDefault(_defaultTransportFactory); - -function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - default: obj - }; -} - -function fetchStream(url) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var transport = options.transport; - - if (!transport) { - transport = fetchStream.transportFactory(); - } - - return transport(url, options); -} // override this function to delegate to an alternative transport function selection -// strategy; useful when testing. - - -fetchStream.transportFactory = _defaultTransportFactory2.default; - -/***/ }), - -/***/ "./node_modules/fetch-readablestream/lib/polyfill/Headers.js": -/*!*******************************************************************!*\ - !*** ./node_modules/fetch-readablestream/lib/polyfill/Headers.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _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; - }; -}(); - -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} // Headers is a partial polyfill for the HTML5 Headers class. - - -var Headers = exports.Headers = function () { - function Headers() { - var _this = this; - - var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - _classCallCheck(this, Headers); - - this.h = {}; - - if (h instanceof Headers) { - h.forEach(function (value, key) { - return _this.append(key, value); - }); - } - - Object.getOwnPropertyNames(h).forEach(function (key) { - return _this.append(key, h[key]); - }); - } - - _createClass(Headers, [{ - key: "append", - value: function append(key, value) { - key = key.toLowerCase(); - - if (!Array.isArray(this.h[key])) { - this.h[key] = []; - } - - this.h[key].push(value); - } - }, { - key: "set", - value: function set(key, value) { - this.h[key.toLowerCase()] = [value]; - } - }, { - key: "has", - value: function has(key) { - return Array.isArray(this.h[key.toLowerCase()]); - } - }, { - key: "get", - value: function get(key) { - key = key.toLowerCase(); - - if (Array.isArray(this.h[key])) { - return this.h[key][0]; - } - } - }, { - key: "getAll", - value: function getAll(key) { - return this.h[key.toLowerCase()].concat(); - } - }, { - key: "entries", - value: function entries() { - var items = []; - this.forEach(function (value, key) { - items.push([key, value]); - }); - return makeIterator(items); - } // forEach is not part of the official spec. - - }, { - key: "forEach", - value: function forEach(callback, thisArg) { - var _this2 = this; - - Object.getOwnPropertyNames(this.h).forEach(function (key) { - _this2.h[key].forEach(function (value) { - return callback.call(thisArg, value, key, _this2); - }); - }, this); - } - }]); - - return Headers; -}(); - -function makeIterator(items) { - return _defineProperty({ - next: function next() { - var value = items.shift(); - return { - done: value === undefined, - value: value - }; - } - }, Symbol.iterator, function () { - return this; - }); -} - -/***/ }), - -/***/ "./node_modules/fetch-readablestream/lib/xhr.js": -/*!******************************************************!*\ - !*** ./node_modules/fetch-readablestream/lib/xhr.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.makeXhrTransport = makeXhrTransport; -exports.parseResposneHeaders = parseResposneHeaders; - -var _Headers = __webpack_require__(/*! ./polyfill/Headers */ "./node_modules/fetch-readablestream/lib/polyfill/Headers.js"); - -function createAbortError() { - // From https://github.com/mo/abortcontroller-polyfill/blob/master/src/abortableFetch.js#L56-L64 - try { - return new DOMException('Aborted', 'AbortError'); - } catch (err) { - // IE 11 does not support calling the DOMException constructor, use a - // regular error object on it instead. - var abortError = new Error('Aborted'); - abortError.name = 'AbortError'; - return abortError; - } -} - -function makeXhrTransport(_ref) { - var responseType = _ref.responseType, - responseParserFactory = _ref.responseParserFactory; - return function xhrTransport(url, options) { - var xhr = new XMLHttpRequest(); - var responseParser = responseParserFactory(); - var responseStreamController = void 0; - var cancelled = false; - var responseStream = new ReadableStream({ - start: function start(c) { - responseStreamController = c; - }, - cancel: function cancel() { - cancelled = true; - xhr.abort(); - } - }); - var _options$method = options.method, - method = _options$method === undefined ? 'GET' : _options$method, - signal = options.signal; - xhr.open(method, url); - xhr.responseType = responseType; - xhr.withCredentials = options.credentials !== 'omit'; - - if (options.headers) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = options.headers.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var pair = _step.value; - xhr.setRequestHeader(pair[0], pair[1]); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - } - - return new Promise(function (resolve, reject) { - if (options.body && (method === 'GET' || method === 'HEAD')) { - reject(new TypeError("Failed to execute 'fetchStream' on 'Window': Request with GET/HEAD method cannot have body")); - } - - if (signal) { - if (signal.aborted) { - // If already aborted, reject immediately & send nothing. - reject(createAbortError()); - return; - } else { - signal.addEventListener('abort', function () { - // If we abort later, kill the XHR & reject the promise if possible. - xhr.abort(); - - if (responseStreamController) { - responseStreamController.error(createAbortError()); - } - - reject(createAbortError()); - }, { - once: true - }); - } - } - - xhr.onreadystatechange = function () { - if (xhr.readyState === xhr.HEADERS_RECEIVED) { - return resolve({ - body: responseStream, - headers: parseResposneHeaders(xhr.getAllResponseHeaders()), - ok: xhr.status >= 200 && xhr.status < 300, - status: xhr.status, - statusText: xhr.statusText, - url: makeResponseUrl(xhr.responseURL, url) - }); - } - }; - - xhr.onerror = function () { - return reject(new TypeError('Network request failed')); - }; - - xhr.ontimeout = function () { - reject(new TypeError('Network request failed')); - }; - - xhr.onprogress = function () { - if (!cancelled) { - var bytes = responseParser(xhr.response); - responseStreamController.enqueue(bytes); - } - }; - - xhr.onload = function () { - responseStreamController.close(); - }; - - xhr.send(options.body); - }); - }; -} - -function makeHeaders() { - // Prefer the native method if provided by the browser. - if (typeof Headers !== 'undefined') { - return new Headers(); - } - - return new _Headers.Headers(); -} - -function makeResponseUrl(responseUrl, requestUrl) { - if (!responseUrl) { - // best guess; note this will not correctly handle redirects. - if (requestUrl.substring(0, 4) !== "http") { - return location.origin + requestUrl; - } - - return requestUrl; - } - - return responseUrl; -} - -function parseResposneHeaders(str) { - var hdrs = makeHeaders(); - - if (str) { - var pairs = str.split('\r\n'); - - for (var i = 0; i < pairs.length; i++) { - var p = pairs[i]; - var index = p.indexOf(': '); - - if (index > 0) { - var key = p.substring(0, index); - var value = p.substring(index + 2); - hdrs.append(key, value); - } - } - } - - return hdrs; -} - -/***/ }), - -/***/ "./node_modules/ieee754/index.js": -/*!***************************************!*\ - !*** ./node_modules/ieee754/index.js ***! - \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? nBytes - 1 : 0; - var d = isLE ? -1 : 1; - var s = buffer[offset + i]; - i += d; - e = s & (1 << -nBits) - 1; - s >>= -nBits; - nBits += eLen; - - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & (1 << -nBits) - 1; - e >>= -nBits; - nBits += mLen; - - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : (s ? -1 : 1) * Infinity; - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); -}; - -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; - var i = isLE ? 0 : nBytes - 1; - var d = isLE ? 1 : -1; - var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = e << mLen | m; - eLen += mLen; - - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; -}; - -/***/ }), - -/***/ "./node_modules/inherits/inherits_browser.js": -/*!***************************************************!*\ - !*** ./node_modules/inherits/inherits_browser.js ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - - var TempCtor = function () {}; - - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - }; -} - -/***/ }), - -/***/ "./node_modules/isarray/index.js": -/*!***************************************!*\ - !*** ./node_modules/isarray/index.js ***! - \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; - -/***/ }), - -/***/ "./node_modules/pako/index.js": -/*!************************************!*\ - !*** ./node_modules/pako/index.js ***! - \************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Top level file is just a mixin of submodules & constants - - -var assign = __webpack_require__(/*! ./lib/utils/common */ "./node_modules/pako/lib/utils/common.js").assign; - -var deflate = __webpack_require__(/*! ./lib/deflate */ "./node_modules/pako/lib/deflate.js"); - -var inflate = __webpack_require__(/*! ./lib/inflate */ "./node_modules/pako/lib/inflate.js"); - -var constants = __webpack_require__(/*! ./lib/zlib/constants */ "./node_modules/pako/lib/zlib/constants.js"); - -var pako = {}; -assign(pako, deflate, inflate, constants); -module.exports = pako; - -/***/ }), - -/***/ "./node_modules/pako/lib/deflate.js": -/*!******************************************!*\ - !*** ./node_modules/pako/lib/deflate.js ***! - \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var zlib_deflate = __webpack_require__(/*! ./zlib/deflate */ "./node_modules/pako/lib/zlib/deflate.js"); - -var utils = __webpack_require__(/*! ./utils/common */ "./node_modules/pako/lib/utils/common.js"); - -var strings = __webpack_require__(/*! ./utils/strings */ "./node_modules/pako/lib/utils/strings.js"); - -var msg = __webpack_require__(/*! ./zlib/messages */ "./node_modules/pako/lib/zlib/messages.js"); - -var ZStream = __webpack_require__(/*! ./zlib/zstream */ "./node_modules/pako/lib/zlib/zstream.js"); - -var toString = Object.prototype.toString; -/* Public constants ==========================================================*/ - -/* ===========================================================================*/ - -var Z_NO_FLUSH = 0; -var Z_FINISH = 4; -var Z_OK = 0; -var Z_STREAM_END = 1; -var Z_SYNC_FLUSH = 2; -var Z_DEFAULT_COMPRESSION = -1; -var Z_DEFAULT_STRATEGY = 0; -var Z_DEFLATED = 8; -/* ===========================================================================*/ - -/** - * class Deflate - * - * Generic JS-style wrapper for zlib calls. If you don't need - * streaming behaviour - use more simple functions: [[deflate]], - * [[deflateRaw]] and [[gzip]]. - **/ - -/* internal - * Deflate.chunks -> Array - * - * Chunks of output data, if [[Deflate#onData]] not overridden. - **/ - -/** - * Deflate.result -> Uint8Array|Array - * - * Compressed result, generated by default [[Deflate#onData]] - * and [[Deflate#onEnd]] handlers. Filled after you push last chunk - * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you - * push a chunk with explicit flush (call [[Deflate#push]] with - * `Z_SYNC_FLUSH` param). - **/ - -/** - * Deflate.err -> Number - * - * Error code after deflate finished. 0 (Z_OK) on success. - * You will not need it in real life, because deflate errors - * are possible only on wrong options or bad `onData` / `onEnd` - * custom handlers. - **/ - -/** - * Deflate.msg -> String - * - * Error message, if [[Deflate.err]] != 0 - **/ - -/** - * new Deflate(options) - * - options (Object): zlib deflate options. - * - * Creates new deflator instance with specified params. Throws exception - * on bad params. Supported options: - * - * - `level` - * - `windowBits` - * - `memLevel` - * - `strategy` - * - `dictionary` - * - * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) - * for more information on these. - * - * Additional options, for internal needs: - * - * - `chunkSize` - size of generated data chunks (16K by default) - * - `raw` (Boolean) - do raw deflate - * - `gzip` (Boolean) - create gzip wrapper - * - `to` (String) - if equal to 'string', then result will be "binary string" - * (each char code [0..255]) - * - `header` (Object) - custom header for gzip - * - `text` (Boolean) - true if compressed data believed to be text - * - `time` (Number) - modification time, unix timestamp - * - `os` (Number) - operation system code - * - `extra` (Array) - array of bytes with extra data (max 65536) - * - `name` (String) - file name (binary string) - * - `comment` (String) - comment (binary string) - * - `hcrc` (Boolean) - true if header crc should be added - * - * ##### Example: - * - * ```javascript - * var pako = require('pako') - * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9]) - * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]); - * - * var deflate = new pako.Deflate({ level: 3}); - * - * deflate.push(chunk1, false); - * deflate.push(chunk2, true); // true -> last chunk - * - * if (deflate.err) { throw new Error(deflate.err); } - * - * console.log(deflate.result); - * ``` - **/ - -function Deflate(options) { - if (!(this instanceof Deflate)) return new Deflate(options); - this.options = utils.assign({ - level: Z_DEFAULT_COMPRESSION, - method: Z_DEFLATED, - chunkSize: 16384, - windowBits: 15, - memLevel: 8, - strategy: Z_DEFAULT_STRATEGY, - to: '' - }, options || {}); - var opt = this.options; - - if (opt.raw && opt.windowBits > 0) { - opt.windowBits = -opt.windowBits; - } else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) { - opt.windowBits += 16; - } - - this.err = 0; // error code, if happens (0 = Z_OK) - - this.msg = ''; // error message - - this.ended = false; // used to avoid multiple onEnd() calls - - this.chunks = []; // chunks of compressed data - - this.strm = new ZStream(); - this.strm.avail_out = 0; - var status = zlib_deflate.deflateInit2(this.strm, opt.level, opt.method, opt.windowBits, opt.memLevel, opt.strategy); - - if (status !== Z_OK) { - throw new Error(msg[status]); - } - - if (opt.header) { - zlib_deflate.deflateSetHeader(this.strm, opt.header); - } - - if (opt.dictionary) { - var dict; // Convert data if needed - - if (typeof opt.dictionary === 'string') { - // If we need to compress text, change encoding to utf8. - dict = strings.string2buf(opt.dictionary); - } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') { - dict = new Uint8Array(opt.dictionary); - } else { - dict = opt.dictionary; - } - - status = zlib_deflate.deflateSetDictionary(this.strm, dict); - - if (status !== Z_OK) { - throw new Error(msg[status]); - } - - this._dict_set = true; - } -} -/** - * Deflate#push(data[, mode]) -> Boolean - * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be - * converted to utf8 byte sequence. - * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. - * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. - * - * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with - * new compressed chunks. Returns `true` on success. The last data block must have - * mode Z_FINISH (or `true`). That will flush internal pending buffers and call - * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you - * can use mode Z_SYNC_FLUSH, keeping the compression context. - * - * On fail call [[Deflate#onEnd]] with error code and return false. - * - * We strongly recommend to use `Uint8Array` on input for best speed (output - * array format is detected automatically). Also, don't skip last param and always - * use the same type in your code (boolean or number). That will improve JS speed. - * - * For regular `Array`-s make sure all elements are [0..255]. - * - * ##### Example - * - * ```javascript - * push(chunk, false); // push one of data chunks - * ... - * push(chunk, true); // push last chunk - * ``` - **/ - - -Deflate.prototype.push = function (data, mode) { - var strm = this.strm; - var chunkSize = this.options.chunkSize; - - var status, _mode; - - if (this.ended) { - return false; - } - - _mode = mode === ~~mode ? mode : mode === true ? Z_FINISH : Z_NO_FLUSH; // Convert data if needed - - if (typeof data === 'string') { - // If we need to compress text, change encoding to utf8. - strm.input = strings.string2buf(data); - } else if (toString.call(data) === '[object ArrayBuffer]') { - strm.input = new Uint8Array(data); - } else { - strm.input = data; - } - - strm.next_in = 0; - strm.avail_in = strm.input.length; - - do { - if (strm.avail_out === 0) { - strm.output = new utils.Buf8(chunkSize); - strm.next_out = 0; - strm.avail_out = chunkSize; - } - - status = zlib_deflate.deflate(strm, _mode); - /* no bad return value */ - - if (status !== Z_STREAM_END && status !== Z_OK) { - this.onEnd(status); - this.ended = true; - return false; - } - - if (strm.avail_out === 0 || strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH)) { - if (this.options.to === 'string') { - this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out))); - } else { - this.onData(utils.shrinkBuf(strm.output, strm.next_out)); - } - } - } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END); // Finalize on the last chunk. - - - if (_mode === Z_FINISH) { - status = zlib_deflate.deflateEnd(this.strm); - this.onEnd(status); - this.ended = true; - return status === Z_OK; - } // callback interim results if Z_SYNC_FLUSH. - - - if (_mode === Z_SYNC_FLUSH) { - this.onEnd(Z_OK); - strm.avail_out = 0; - return true; - } - - return true; -}; -/** - * Deflate#onData(chunk) -> Void - * - chunk (Uint8Array|Array|String): output data. Type of array depends - * on js engine support. When string output requested, each chunk - * will be string. - * - * By default, stores data blocks in `chunks[]` property and glue - * those in `onEnd`. Override this handler, if you need another behaviour. - **/ - - -Deflate.prototype.onData = function (chunk) { - this.chunks.push(chunk); -}; -/** - * Deflate#onEnd(status) -> Void - * - status (Number): deflate status. 0 (Z_OK) on success, - * other if not. - * - * Called once after you tell deflate that the input stream is - * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH) - * or if an error happened. By default - join collected chunks, - * free memory and fill `results` / `err` properties. - **/ - - -Deflate.prototype.onEnd = function (status) { - // On success - join - if (status === Z_OK) { - if (this.options.to === 'string') { - this.result = this.chunks.join(''); - } else { - this.result = utils.flattenChunks(this.chunks); - } - } - - this.chunks = []; - this.err = status; - this.msg = this.strm.msg; -}; -/** - * deflate(data[, options]) -> Uint8Array|Array|String - * - data (Uint8Array|Array|String): input data to compress. - * - options (Object): zlib deflate options. - * - * Compress `data` with deflate algorithm and `options`. - * - * Supported options are: - * - * - level - * - windowBits - * - memLevel - * - strategy - * - dictionary - * - * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) - * for more information on these. - * - * Sugar (options): - * - * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify - * negative windowBits implicitly. - * - `to` (String) - if equal to 'string', then result will be "binary string" - * (each char code [0..255]) - * - * ##### Example: - * - * ```javascript - * var pako = require('pako') - * , data = Uint8Array([1,2,3,4,5,6,7,8,9]); - * - * console.log(pako.deflate(data)); - * ``` - **/ - - -function deflate(input, options) { - var deflator = new Deflate(options); - deflator.push(input, true); // That will never happens, if you don't cheat with options :) - - if (deflator.err) { - throw deflator.msg || msg[deflator.err]; - } - - return deflator.result; -} -/** - * deflateRaw(data[, options]) -> Uint8Array|Array|String - * - data (Uint8Array|Array|String): input data to compress. - * - options (Object): zlib deflate options. - * - * The same as [[deflate]], but creates raw data, without wrapper - * (header and adler32 crc). - **/ - - -function deflateRaw(input, options) { - options = options || {}; - options.raw = true; - return deflate(input, options); -} -/** - * gzip(data[, options]) -> Uint8Array|Array|String - * - data (Uint8Array|Array|String): input data to compress. - * - options (Object): zlib deflate options. - * - * The same as [[deflate]], but create gzip wrapper instead of - * deflate one. - **/ - - -function gzip(input, options) { - options = options || {}; - options.gzip = true; - return deflate(input, options); -} - -exports.Deflate = Deflate; -exports.deflate = deflate; -exports.deflateRaw = deflateRaw; -exports.gzip = gzip; - -/***/ }), - -/***/ "./node_modules/pako/lib/inflate.js": -/*!******************************************!*\ - !*** ./node_modules/pako/lib/inflate.js ***! - \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var zlib_inflate = __webpack_require__(/*! ./zlib/inflate */ "./node_modules/pako/lib/zlib/inflate.js"); - -var utils = __webpack_require__(/*! ./utils/common */ "./node_modules/pako/lib/utils/common.js"); - -var strings = __webpack_require__(/*! ./utils/strings */ "./node_modules/pako/lib/utils/strings.js"); - -var c = __webpack_require__(/*! ./zlib/constants */ "./node_modules/pako/lib/zlib/constants.js"); - -var msg = __webpack_require__(/*! ./zlib/messages */ "./node_modules/pako/lib/zlib/messages.js"); - -var ZStream = __webpack_require__(/*! ./zlib/zstream */ "./node_modules/pako/lib/zlib/zstream.js"); - -var GZheader = __webpack_require__(/*! ./zlib/gzheader */ "./node_modules/pako/lib/zlib/gzheader.js"); - -var toString = Object.prototype.toString; -/** - * class Inflate - * - * Generic JS-style wrapper for zlib calls. If you don't need - * streaming behaviour - use more simple functions: [[inflate]] - * and [[inflateRaw]]. - **/ - -/* internal - * inflate.chunks -> Array - * - * Chunks of output data, if [[Inflate#onData]] not overridden. - **/ - -/** - * Inflate.result -> Uint8Array|Array|String - * - * Uncompressed result, generated by default [[Inflate#onData]] - * and [[Inflate#onEnd]] handlers. Filled after you push last chunk - * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you - * push a chunk with explicit flush (call [[Inflate#push]] with - * `Z_SYNC_FLUSH` param). - **/ - -/** - * Inflate.err -> Number - * - * Error code after inflate finished. 0 (Z_OK) on success. - * Should be checked if broken data possible. - **/ - -/** - * Inflate.msg -> String - * - * Error message, if [[Inflate.err]] != 0 - **/ - -/** - * new Inflate(options) - * - options (Object): zlib inflate options. - * - * Creates new inflator instance with specified params. Throws exception - * on bad params. Supported options: - * - * - `windowBits` - * - `dictionary` - * - * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) - * for more information on these. - * - * Additional options, for internal needs: - * - * - `chunkSize` - size of generated data chunks (16K by default) - * - `raw` (Boolean) - do raw inflate - * - `to` (String) - if equal to 'string', then result will be converted - * from utf8 to utf16 (javascript) string. When string output requested, - * chunk length can differ from `chunkSize`, depending on content. - * - * By default, when no options set, autodetect deflate/gzip data format via - * wrapper header. - * - * ##### Example: - * - * ```javascript - * var pako = require('pako') - * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9]) - * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]); - * - * var inflate = new pako.Inflate({ level: 3}); - * - * inflate.push(chunk1, false); - * inflate.push(chunk2, true); // true -> last chunk - * - * if (inflate.err) { throw new Error(inflate.err); } - * - * console.log(inflate.result); - * ``` - **/ - -function Inflate(options) { - if (!(this instanceof Inflate)) return new Inflate(options); - this.options = utils.assign({ - chunkSize: 16384, - windowBits: 0, - to: '' - }, options || {}); - var opt = this.options; // Force window size for `raw` data, if not set directly, - // because we have no header for autodetect. - - if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) { - opt.windowBits = -opt.windowBits; - - if (opt.windowBits === 0) { - opt.windowBits = -15; - } - } // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate - - - if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) { - opt.windowBits += 32; - } // Gzip header has no info about windows size, we can do autodetect only - // for deflate. So, if window size not set, force it to max when gzip possible - - - if (opt.windowBits > 15 && opt.windowBits < 48) { - // bit 3 (16) -> gzipped data - // bit 4 (32) -> autodetect gzip/deflate - if ((opt.windowBits & 15) === 0) { - opt.windowBits |= 15; - } - } - - this.err = 0; // error code, if happens (0 = Z_OK) - - this.msg = ''; // error message - - this.ended = false; // used to avoid multiple onEnd() calls - - this.chunks = []; // chunks of compressed data - - this.strm = new ZStream(); - this.strm.avail_out = 0; - var status = zlib_inflate.inflateInit2(this.strm, opt.windowBits); - - if (status !== c.Z_OK) { - throw new Error(msg[status]); - } - - this.header = new GZheader(); - zlib_inflate.inflateGetHeader(this.strm, this.header); // Setup dictionary - - if (opt.dictionary) { - // Convert data if needed - if (typeof opt.dictionary === 'string') { - opt.dictionary = strings.string2buf(opt.dictionary); - } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') { - opt.dictionary = new Uint8Array(opt.dictionary); - } - - if (opt.raw) { - //In raw mode we need to set the dictionary early - status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary); - - if (status !== c.Z_OK) { - throw new Error(msg[status]); - } - } - } -} -/** - * Inflate#push(data[, mode]) -> Boolean - * - data (Uint8Array|Array|ArrayBuffer|String): input data - * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. - * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. - * - * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with - * new output chunks. Returns `true` on success. The last data block must have - * mode Z_FINISH (or `true`). That will flush internal pending buffers and call - * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you - * can use mode Z_SYNC_FLUSH, keeping the decompression context. - * - * On fail call [[Inflate#onEnd]] with error code and return false. - * - * We strongly recommend to use `Uint8Array` on input for best speed (output - * format is detected automatically). Also, don't skip last param and always - * use the same type in your code (boolean or number). That will improve JS speed. - * - * For regular `Array`-s make sure all elements are [0..255]. - * - * ##### Example - * - * ```javascript - * push(chunk, false); // push one of data chunks - * ... - * push(chunk, true); // push last chunk - * ``` - **/ - - -Inflate.prototype.push = function (data, mode) { - var strm = this.strm; - var chunkSize = this.options.chunkSize; - var dictionary = this.options.dictionary; - - var status, _mode; - - var next_out_utf8, tail, utf8str; // Flag to properly process Z_BUF_ERROR on testing inflate call - // when we check that all output data was flushed. - - var allowBufError = false; - - if (this.ended) { - return false; - } - - _mode = mode === ~~mode ? mode : mode === true ? c.Z_FINISH : c.Z_NO_FLUSH; // Convert data if needed - - if (typeof data === 'string') { - // Only binary strings can be decompressed on practice - strm.input = strings.binstring2buf(data); - } else if (toString.call(data) === '[object ArrayBuffer]') { - strm.input = new Uint8Array(data); - } else { - strm.input = data; - } - - strm.next_in = 0; - strm.avail_in = strm.input.length; - - do { - if (strm.avail_out === 0) { - strm.output = new utils.Buf8(chunkSize); - strm.next_out = 0; - strm.avail_out = chunkSize; - } - - status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); - /* no bad return value */ - - if (status === c.Z_NEED_DICT && dictionary) { - status = zlib_inflate.inflateSetDictionary(this.strm, dictionary); - } - - if (status === c.Z_BUF_ERROR && allowBufError === true) { - status = c.Z_OK; - allowBufError = false; - } - - if (status !== c.Z_STREAM_END && status !== c.Z_OK) { - this.onEnd(status); - this.ended = true; - return false; - } - - if (strm.next_out) { - if (strm.avail_out === 0 || status === c.Z_STREAM_END || strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH)) { - if (this.options.to === 'string') { - next_out_utf8 = strings.utf8border(strm.output, strm.next_out); - tail = strm.next_out - next_out_utf8; - utf8str = strings.buf2string(strm.output, next_out_utf8); // move tail - - strm.next_out = tail; - strm.avail_out = chunkSize - tail; - - if (tail) { - utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); - } - - this.onData(utf8str); - } else { - this.onData(utils.shrinkBuf(strm.output, strm.next_out)); - } - } - } // When no more input data, we should check that internal inflate buffers - // are flushed. The only way to do it when avail_out = 0 - run one more - // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR. - // Here we set flag to process this error properly. - // - // NOTE. Deflate does not return error in this case and does not needs such - // logic. - - - if (strm.avail_in === 0 && strm.avail_out === 0) { - allowBufError = true; - } - } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END); - - if (status === c.Z_STREAM_END) { - _mode = c.Z_FINISH; - } // Finalize on the last chunk. - - - if (_mode === c.Z_FINISH) { - status = zlib_inflate.inflateEnd(this.strm); - this.onEnd(status); - this.ended = true; - return status === c.Z_OK; - } // callback interim results if Z_SYNC_FLUSH. - - - if (_mode === c.Z_SYNC_FLUSH) { - this.onEnd(c.Z_OK); - strm.avail_out = 0; - return true; - } - - return true; -}; -/** - * Inflate#onData(chunk) -> Void - * - chunk (Uint8Array|Array|String): output data. Type of array depends - * on js engine support. When string output requested, each chunk - * will be string. - * - * By default, stores data blocks in `chunks[]` property and glue - * those in `onEnd`. Override this handler, if you need another behaviour. - **/ - - -Inflate.prototype.onData = function (chunk) { - this.chunks.push(chunk); -}; -/** - * Inflate#onEnd(status) -> Void - * - status (Number): inflate status. 0 (Z_OK) on success, - * other if not. - * - * Called either after you tell inflate that the input stream is - * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH) - * or if an error happened. By default - join collected chunks, - * free memory and fill `results` / `err` properties. - **/ - - -Inflate.prototype.onEnd = function (status) { - // On success - join - if (status === c.Z_OK) { - if (this.options.to === 'string') { - // Glue & convert here, until we teach pako to send - // utf8 aligned strings to onData - this.result = this.chunks.join(''); - } else { - this.result = utils.flattenChunks(this.chunks); - } - } - - this.chunks = []; - this.err = status; - this.msg = this.strm.msg; -}; -/** - * inflate(data[, options]) -> Uint8Array|Array|String - * - data (Uint8Array|Array|String): input data to decompress. - * - options (Object): zlib inflate options. - * - * Decompress `data` with inflate/ungzip and `options`. Autodetect - * format via wrapper header by default. That's why we don't provide - * separate `ungzip` method. - * - * Supported options are: - * - * - windowBits - * - * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) - * for more information. - * - * Sugar (options): - * - * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify - * negative windowBits implicitly. - * - `to` (String) - if equal to 'string', then result will be converted - * from utf8 to utf16 (javascript) string. When string output requested, - * chunk length can differ from `chunkSize`, depending on content. - * - * - * ##### Example: - * - * ```javascript - * var pako = require('pako') - * , input = pako.deflate([1,2,3,4,5,6,7,8,9]) - * , output; - * - * try { - * output = pako.inflate(input); - * } catch (err) - * console.log(err); - * } - * ``` - **/ - - -function inflate(input, options) { - var inflator = new Inflate(options); - inflator.push(input, true); // That will never happens, if you don't cheat with options :) - - if (inflator.err) { - throw inflator.msg || msg[inflator.err]; - } - - return inflator.result; -} -/** - * inflateRaw(data[, options]) -> Uint8Array|Array|String - * - data (Uint8Array|Array|String): input data to decompress. - * - options (Object): zlib inflate options. - * - * The same as [[inflate]], but creates raw data, without wrapper - * (header and adler32 crc). - **/ - - -function inflateRaw(input, options) { - options = options || {}; - options.raw = true; - return inflate(input, options); -} -/** - * ungzip(data[, options]) -> Uint8Array|Array|String - * - data (Uint8Array|Array|String): input data to decompress. - * - options (Object): zlib inflate options. - * - * Just shortcut to [[inflate]], because it autodetects format - * by header.content. Done for convenience. - **/ - - -exports.Inflate = Inflate; -exports.inflate = inflate; -exports.inflateRaw = inflateRaw; -exports.ungzip = inflate; - -/***/ }), - -/***/ "./node_modules/pako/lib/utils/common.js": -/*!***********************************************!*\ - !*** ./node_modules/pako/lib/utils/common.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var TYPED_OK = typeof Uint8Array !== 'undefined' && typeof Uint16Array !== 'undefined' && typeof Int32Array !== 'undefined'; - -function _has(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - -exports.assign = function (obj -/*from1, from2, from3, ...*/ -) { - var sources = Array.prototype.slice.call(arguments, 1); - - while (sources.length) { - var source = sources.shift(); - - if (!source) { - continue; - } - - if (typeof source !== 'object') { - throw new TypeError(source + 'must be non-object'); - } - - for (var p in source) { - if (_has(source, p)) { - obj[p] = source[p]; - } - } - } - - return obj; -}; // reduce buffer size, avoiding mem copy - - -exports.shrinkBuf = function (buf, size) { - if (buf.length === size) { - return buf; - } - - if (buf.subarray) { - return buf.subarray(0, size); - } - - buf.length = size; - return buf; -}; - -var fnTyped = { - arraySet: function (dest, src, src_offs, len, dest_offs) { - if (src.subarray && dest.subarray) { - dest.set(src.subarray(src_offs, src_offs + len), dest_offs); - return; - } // Fallback to ordinary array - - - for (var i = 0; i < len; i++) { - dest[dest_offs + i] = src[src_offs + i]; - } - }, - // Join array of chunks to single array. - flattenChunks: function (chunks) { - var i, l, len, pos, chunk, result; // calculate data length - - len = 0; - - for (i = 0, l = chunks.length; i < l; i++) { - len += chunks[i].length; - } // join chunks - - - result = new Uint8Array(len); - pos = 0; - - for (i = 0, l = chunks.length; i < l; i++) { - chunk = chunks[i]; - result.set(chunk, pos); - pos += chunk.length; - } - - return result; - } -}; -var fnUntyped = { - arraySet: function (dest, src, src_offs, len, dest_offs) { - for (var i = 0; i < len; i++) { - dest[dest_offs + i] = src[src_offs + i]; - } - }, - // Join array of chunks to single array. - flattenChunks: function (chunks) { - return [].concat.apply([], chunks); - } -}; // Enable/Disable typed arrays use, for testing -// - -exports.setTyped = function (on) { - if (on) { - exports.Buf8 = Uint8Array; - exports.Buf16 = Uint16Array; - exports.Buf32 = Int32Array; - exports.assign(exports, fnTyped); - } else { - exports.Buf8 = Array; - exports.Buf16 = Array; - exports.Buf32 = Array; - exports.assign(exports, fnUntyped); - } -}; - -exports.setTyped(TYPED_OK); - -/***/ }), - -/***/ "./node_modules/pako/lib/utils/strings.js": -/*!************************************************!*\ - !*** ./node_modules/pako/lib/utils/strings.js ***! - \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// String encode/decode helpers - - -var utils = __webpack_require__(/*! ./common */ "./node_modules/pako/lib/utils/common.js"); // Quick check if we can use fast array to bin string conversion -// -// - apply(Array) can fail on Android 2.2 -// - apply(Uint8Array) can fail on iOS 5.1 Safari -// - - -var STR_APPLY_OK = true; -var STR_APPLY_UIA_OK = true; - -try { - String.fromCharCode.apply(null, [0]); -} catch (__) { - STR_APPLY_OK = false; -} - -try { - String.fromCharCode.apply(null, new Uint8Array(1)); -} catch (__) { - STR_APPLY_UIA_OK = false; -} // Table with utf8 lengths (calculated by first byte of sequence) -// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS, -// because max possible codepoint is 0x10ffff - - -var _utf8len = new utils.Buf8(256); - -for (var q = 0; q < 256; q++) { - _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1; -} - -_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start -// convert string to array (typed, when possible) - -exports.string2buf = function (str) { - var buf, - c, - c2, - m_pos, - i, - str_len = str.length, - buf_len = 0; // count binary size - - for (m_pos = 0; m_pos < str_len; m_pos++) { - c = str.charCodeAt(m_pos); - - if ((c & 0xfc00) === 0xd800 && m_pos + 1 < str_len) { - c2 = str.charCodeAt(m_pos + 1); - - if ((c2 & 0xfc00) === 0xdc00) { - c = 0x10000 + (c - 0xd800 << 10) + (c2 - 0xdc00); - m_pos++; - } - } - - buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4; - } // allocate buffer - - - buf = new utils.Buf8(buf_len); // convert - - for (i = 0, m_pos = 0; i < buf_len; m_pos++) { - c = str.charCodeAt(m_pos); - - if ((c & 0xfc00) === 0xd800 && m_pos + 1 < str_len) { - c2 = str.charCodeAt(m_pos + 1); - - if ((c2 & 0xfc00) === 0xdc00) { - c = 0x10000 + (c - 0xd800 << 10) + (c2 - 0xdc00); - m_pos++; - } - } - - if (c < 0x80) { - /* one byte */ - buf[i++] = c; - } else if (c < 0x800) { - /* two bytes */ - buf[i++] = 0xC0 | c >>> 6; - buf[i++] = 0x80 | c & 0x3f; - } else if (c < 0x10000) { - /* three bytes */ - buf[i++] = 0xE0 | c >>> 12; - buf[i++] = 0x80 | c >>> 6 & 0x3f; - buf[i++] = 0x80 | c & 0x3f; - } else { - /* four bytes */ - buf[i++] = 0xf0 | c >>> 18; - buf[i++] = 0x80 | c >>> 12 & 0x3f; - buf[i++] = 0x80 | c >>> 6 & 0x3f; - buf[i++] = 0x80 | c & 0x3f; - } - } - - return buf; -}; // Helper (used in 2 places) - - -function buf2binstring(buf, len) { - // On Chrome, the arguments in a function call that are allowed is `65534`. - // If the length of the buffer is smaller than that, we can use this optimization, - // otherwise we will take a slower path. - if (len < 65534) { - if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) { - return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len)); - } - } - - var result = ''; - - for (var i = 0; i < len; i++) { - result += String.fromCharCode(buf[i]); - } - - return result; -} // Convert byte array to binary string - - -exports.buf2binstring = function (buf) { - return buf2binstring(buf, buf.length); -}; // Convert binary string (typed, when possible) - - -exports.binstring2buf = function (str) { - var buf = new utils.Buf8(str.length); - - for (var i = 0, len = buf.length; i < len; i++) { - buf[i] = str.charCodeAt(i); - } - - return buf; -}; // convert array to string - - -exports.buf2string = function (buf, max) { - var i, out, c, c_len; - var len = max || buf.length; // Reserve max possible length (2 words per char) - // NB: by unknown reasons, Array is significantly faster for - // String.fromCharCode.apply than Uint16Array. - - var utf16buf = new Array(len * 2); - - for (out = 0, i = 0; i < len;) { - c = buf[i++]; // quick process ascii - - if (c < 0x80) { - utf16buf[out++] = c; - continue; - } - - c_len = _utf8len[c]; // skip 5 & 6 byte codes - - if (c_len > 4) { - utf16buf[out++] = 0xfffd; - i += c_len - 1; - continue; - } // apply mask on first byte - - - c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07; // join the rest - - while (c_len > 1 && i < len) { - c = c << 6 | buf[i++] & 0x3f; - c_len--; - } // terminated by end of string? - - - if (c_len > 1) { - utf16buf[out++] = 0xfffd; - continue; - } - - if (c < 0x10000) { - utf16buf[out++] = c; - } else { - c -= 0x10000; - utf16buf[out++] = 0xd800 | c >> 10 & 0x3ff; - utf16buf[out++] = 0xdc00 | c & 0x3ff; - } - } - - return buf2binstring(utf16buf, out); -}; // Calculate max possible position in utf8 buffer, -// that will not break sequence. If that's not possible -// - (very small limits) return max size as is. -// -// buf[] - utf8 bytes array -// max - length limit (mandatory); - - -exports.utf8border = function (buf, max) { - var pos; - max = max || buf.length; - - if (max > buf.length) { - max = buf.length; - } // go back from last position, until start of sequence found - - - pos = max - 1; - - while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { - pos--; - } // Very small and broken sequence, - // return max, because we should return something anyway. - - - if (pos < 0) { - return max; - } // If we came to start of buffer - that means buffer is too small, - // return max too. - - - if (pos === 0) { - return max; - } - - return pos + _utf8len[buf[pos]] > max ? pos : max; -}; - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/adler32.js": -/*!***********************************************!*\ - !*** ./node_modules/pako/lib/zlib/adler32.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // Note: adler32 takes 12% for level 0 and 2% for level 6. -// It isn't worth it to make additional optimizations as in original. -// Small size is preferable. -// (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -function adler32(adler, buf, len, pos) { - var s1 = adler & 0xffff | 0, - s2 = adler >>> 16 & 0xffff | 0, - n = 0; - - while (len !== 0) { - // Set limit ~ twice less than 5552, to keep - // s2 in 31-bits, because we force signed ints. - // in other case %= will fail. - n = len > 2000 ? 2000 : len; - len -= n; - - do { - s1 = s1 + buf[pos++] | 0; - s2 = s2 + s1 | 0; - } while (--n); - - s1 %= 65521; - s2 %= 65521; - } - - return s1 | s2 << 16 | 0; -} - -module.exports = adler32; - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/constants.js": -/*!*************************************************!*\ - !*** ./node_modules/pako/lib/zlib/constants.js ***! - \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -module.exports = { - /* Allowed flush values; see deflate() and inflate() below for details */ - Z_NO_FLUSH: 0, - Z_PARTIAL_FLUSH: 1, - Z_SYNC_FLUSH: 2, - Z_FULL_FLUSH: 3, - Z_FINISH: 4, - Z_BLOCK: 5, - Z_TREES: 6, - - /* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - Z_OK: 0, - Z_STREAM_END: 1, - Z_NEED_DICT: 2, - Z_ERRNO: -1, - Z_STREAM_ERROR: -2, - Z_DATA_ERROR: -3, - //Z_MEM_ERROR: -4, - Z_BUF_ERROR: -5, - //Z_VERSION_ERROR: -6, - - /* compression levels */ - Z_NO_COMPRESSION: 0, - Z_BEST_SPEED: 1, - Z_BEST_COMPRESSION: 9, - Z_DEFAULT_COMPRESSION: -1, - Z_FILTERED: 1, - Z_HUFFMAN_ONLY: 2, - Z_RLE: 3, - Z_FIXED: 4, - Z_DEFAULT_STRATEGY: 0, - - /* Possible values of the data_type field (though see inflate()) */ - Z_BINARY: 0, - Z_TEXT: 1, - //Z_ASCII: 1, // = Z_TEXT (deprecated) - Z_UNKNOWN: 2, - - /* The deflate compression method */ - Z_DEFLATED: 8 //Z_NULL: null // Use -1 or null inline, depending on var type - -}; - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/crc32.js": -/*!*********************************************!*\ - !*** ./node_modules/pako/lib/zlib/crc32.js ***! - \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // Note: we can't get significant speed boost here. -// So write code to minimize size - no pregenerated tables -// and array tools dependencies. -// (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. -// Use ordinary array, since untyped makes no boost here - -function makeTable() { - var c, - table = []; - - for (var n = 0; n < 256; n++) { - c = n; - - for (var k = 0; k < 8; k++) { - c = c & 1 ? 0xEDB88320 ^ c >>> 1 : c >>> 1; - } - - table[n] = c; - } - - return table; -} // Create table on load. Just 255 signed longs. Not a problem. - - -var crcTable = makeTable(); - -function crc32(crc, buf, len, pos) { - var t = crcTable, - end = pos + len; - crc ^= -1; - - for (var i = pos; i < end; i++) { - crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 0xFF]; - } - - return crc ^ -1; // >>> 0; -} - -module.exports = crc32; - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/deflate.js": -/*!***********************************************!*\ - !*** ./node_modules/pako/lib/zlib/deflate.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -var utils = __webpack_require__(/*! ../utils/common */ "./node_modules/pako/lib/utils/common.js"); - -var trees = __webpack_require__(/*! ./trees */ "./node_modules/pako/lib/zlib/trees.js"); - -var adler32 = __webpack_require__(/*! ./adler32 */ "./node_modules/pako/lib/zlib/adler32.js"); - -var crc32 = __webpack_require__(/*! ./crc32 */ "./node_modules/pako/lib/zlib/crc32.js"); - -var msg = __webpack_require__(/*! ./messages */ "./node_modules/pako/lib/zlib/messages.js"); -/* Public constants ==========================================================*/ - -/* ===========================================================================*/ - -/* Allowed flush values; see deflate() and inflate() below for details */ - - -var Z_NO_FLUSH = 0; -var Z_PARTIAL_FLUSH = 1; //var Z_SYNC_FLUSH = 2; - -var Z_FULL_FLUSH = 3; -var Z_FINISH = 4; -var Z_BLOCK = 5; //var Z_TREES = 6; - -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - -var Z_OK = 0; -var Z_STREAM_END = 1; //var Z_NEED_DICT = 2; -//var Z_ERRNO = -1; - -var Z_STREAM_ERROR = -2; -var Z_DATA_ERROR = -3; //var Z_MEM_ERROR = -4; - -var Z_BUF_ERROR = -5; //var Z_VERSION_ERROR = -6; - -/* compression levels */ -//var Z_NO_COMPRESSION = 0; -//var Z_BEST_SPEED = 1; -//var Z_BEST_COMPRESSION = 9; - -var Z_DEFAULT_COMPRESSION = -1; -var Z_FILTERED = 1; -var Z_HUFFMAN_ONLY = 2; -var Z_RLE = 3; -var Z_FIXED = 4; -var Z_DEFAULT_STRATEGY = 0; -/* Possible values of the data_type field (though see inflate()) */ -//var Z_BINARY = 0; -//var Z_TEXT = 1; -//var Z_ASCII = 1; // = Z_TEXT - -var Z_UNKNOWN = 2; -/* The deflate compression method */ - -var Z_DEFLATED = 8; -/*============================================================================*/ - -var MAX_MEM_LEVEL = 9; -/* Maximum value for memLevel in deflateInit2 */ - -var MAX_WBITS = 15; -/* 32K LZ77 window */ - -var DEF_MEM_LEVEL = 8; -var LENGTH_CODES = 29; -/* number of length codes, not counting the special END_BLOCK code */ - -var LITERALS = 256; -/* number of literal bytes 0..255 */ - -var L_CODES = LITERALS + 1 + LENGTH_CODES; -/* number of Literal or Length codes, including the END_BLOCK code */ - -var D_CODES = 30; -/* number of distance codes */ - -var BL_CODES = 19; -/* number of codes used to transfer the bit lengths */ - -var HEAP_SIZE = 2 * L_CODES + 1; -/* maximum heap size */ - -var MAX_BITS = 15; -/* All codes must not exceed MAX_BITS bits */ - -var MIN_MATCH = 3; -var MAX_MATCH = 258; -var MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1; -var PRESET_DICT = 0x20; -var INIT_STATE = 42; -var EXTRA_STATE = 69; -var NAME_STATE = 73; -var COMMENT_STATE = 91; -var HCRC_STATE = 103; -var BUSY_STATE = 113; -var FINISH_STATE = 666; -var BS_NEED_MORE = 1; -/* block not completed, need more input or more output */ - -var BS_BLOCK_DONE = 2; -/* block flush performed */ - -var BS_FINISH_STARTED = 3; -/* finish started, need only more output at next deflate */ - -var BS_FINISH_DONE = 4; -/* finish done, accept no more input or output */ - -var OS_CODE = 0x03; // Unix :) . Don't detect, use this default. - -function err(strm, errorCode) { - strm.msg = msg[errorCode]; - return errorCode; -} - -function rank(f) { - return (f << 1) - (f > 4 ? 9 : 0); -} - -function zero(buf) { - var len = buf.length; - - while (--len >= 0) { - buf[len] = 0; - } -} -/* ========================================================================= - * Flush as much pending output as possible. All deflate() output goes - * through this function so some applications may wish to modify it - * to avoid allocating a large strm->output buffer and copying into it. - * (See also read_buf()). - */ - - -function flush_pending(strm) { - var s = strm.state; //_tr_flush_bits(s); - - var len = s.pending; - - if (len > strm.avail_out) { - len = strm.avail_out; - } - - if (len === 0) { - return; - } - - utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out); - strm.next_out += len; - s.pending_out += len; - strm.total_out += len; - strm.avail_out -= len; - s.pending -= len; - - if (s.pending === 0) { - s.pending_out = 0; - } -} - -function flush_block_only(s, last) { - trees._tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last); - - s.block_start = s.strstart; - flush_pending(s.strm); -} - -function put_byte(s, b) { - s.pending_buf[s.pending++] = b; -} -/* ========================================================================= - * Put a short in the pending buffer. The 16-bit value is put in MSB order. - * IN assertion: the stream state is correct and there is enough room in - * pending_buf. - */ - - -function putShortMSB(s, b) { - // put_byte(s, (Byte)(b >> 8)); - // put_byte(s, (Byte)(b & 0xff)); - s.pending_buf[s.pending++] = b >>> 8 & 0xff; - s.pending_buf[s.pending++] = b & 0xff; -} -/* =========================================================================== - * Read a new buffer from the current input stream, update the adler32 - * and total number of bytes read. All deflate() input goes through - * this function so some applications may wish to modify it to avoid - * allocating a large strm->input buffer and copying from it. - * (See also flush_pending()). - */ - - -function read_buf(strm, buf, start, size) { - var len = strm.avail_in; - - if (len > size) { - len = size; - } - - if (len === 0) { - return 0; - } - - strm.avail_in -= len; // zmemcpy(buf, strm->next_in, len); - - utils.arraySet(buf, strm.input, strm.next_in, len, start); - - if (strm.state.wrap === 1) { - strm.adler = adler32(strm.adler, buf, len, start); - } else if (strm.state.wrap === 2) { - strm.adler = crc32(strm.adler, buf, len, start); - } - - strm.next_in += len; - strm.total_in += len; - return len; -} -/* =========================================================================== - * Set match_start to the longest match starting at the given string and - * return its length. Matches shorter or equal to prev_length are discarded, - * in which case the result is equal to prev_length and match_start is - * garbage. - * IN assertions: cur_match is the head of the hash chain for the current - * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 - * OUT assertion: the match length is not greater than s->lookahead. - */ - - -function longest_match(s, cur_match) { - var chain_length = s.max_chain_length; - /* max hash chain length */ - - var scan = s.strstart; - /* current string */ - - var match; - /* matched string */ - - var len; - /* length of current match */ - - var best_len = s.prev_length; - /* best match length so far */ - - var nice_match = s.nice_match; - /* stop if match long enough */ - - var limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0 - /*NIL*/ - ; - var _win = s.window; // shortcut - - var wmask = s.w_mask; - var prev = s.prev; - /* Stop when cur_match becomes <= limit. To simplify the code, - * we prevent matches with the string of window index 0. - */ - - var strend = s.strstart + MAX_MATCH; - var scan_end1 = _win[scan + best_len - 1]; - var scan_end = _win[scan + best_len]; - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - - /* Do not waste too much time if we already have a good match: */ - - if (s.prev_length >= s.good_match) { - chain_length >>= 2; - } - /* Do not look for matches beyond the end of the input. This is necessary - * to make deflate deterministic. - */ - - - if (nice_match > s.lookahead) { - nice_match = s.lookahead; - } // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); - - - do { - // Assert(cur_match < s->strstart, "no future"); - match = cur_match; - /* Skip to next match if the match length cannot increase - * or if the match length is less than 2. Note that the checks below - * for insufficient lookahead only occur occasionally for performance - * reasons. Therefore uninitialized memory will be accessed, and - * conditional jumps will be made that depend on those values. - * However the length of the match is limited to the lookahead, so - * the output of deflate is not affected by the uninitialized values. - */ - - if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) { - continue; - } - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - - - scan += 2; - match++; // Assert(*scan == *match, "match[2]?"); - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - - do { - /*jshint noempty:false*/ - } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend); // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - - - len = MAX_MATCH - (strend - scan); - scan = strend - MAX_MATCH; - - if (len > best_len) { - s.match_start = cur_match; - best_len = len; - - if (len >= nice_match) { - break; - } - - scan_end1 = _win[scan + best_len - 1]; - scan_end = _win[scan + best_len]; - } - } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); - - if (best_len <= s.lookahead) { - return best_len; - } - - return s.lookahead; -} -/* =========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead. - * - * IN assertion: lookahead < MIN_LOOKAHEAD - * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD - * At least one byte has been read, or avail_in == 0; reads are - * performed for at least two bytes (required for the zip translate_eol - * option -- not supported here). - */ - - -function fill_window(s) { - var _w_size = s.w_size; - var p, n, m, more, str; //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); - - do { - more = s.window_size - s.lookahead - s.strstart; // JS ints have 32 bit, block below not needed - - /* Deal with !@#$% 64K limit: */ - //if (sizeof(int) <= 2) { - // if (more == 0 && s->strstart == 0 && s->lookahead == 0) { - // more = wsize; - // - // } else if (more == (unsigned)(-1)) { - // /* Very unlikely, but possible on 16 bit machine if - // * strstart == 0 && lookahead == 1 (input done a byte at time) - // */ - // more--; - // } - //} - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - - if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { - utils.arraySet(s.window, s.window, _w_size, _w_size, 0); - s.match_start -= _w_size; - s.strstart -= _w_size; - /* we now have strstart >= MAX_DIST */ - - s.block_start -= _w_size; - /* Slide the hash table (could be avoided with 32 bit values - at the expense of memory usage). We slide even when level == 0 - to keep the hash table consistent if we switch back to level > 0 - later. (Using level 0 permanently is not an optimal usage of - zlib, so we don't care about this pathological case.) - */ - - n = s.hash_size; - p = n; - - do { - m = s.head[--p]; - s.head[p] = m >= _w_size ? m - _w_size : 0; - } while (--n); - - n = _w_size; - p = n; - - do { - m = s.prev[--p]; - s.prev[p] = m >= _w_size ? m - _w_size : 0; - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - } while (--n); - - more += _w_size; - } - - if (s.strm.avail_in === 0) { - break; - } - /* If there was no sliding: - * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && - * more == window_size - lookahead - strstart - * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) - * => more >= window_size - 2*WSIZE + 2 - * In the BIG_MEM or MMAP case (not yet supported), - * window_size == input_size + MIN_LOOKAHEAD && - * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. - * Otherwise, window_size == 2*WSIZE so more >= 2. - * If there was sliding, more >= WSIZE. So in all cases, more >= 2. - */ - //Assert(more >= 2, "more < 2"); - - - n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); - s.lookahead += n; - /* Initialize the hash value now that we have some input: */ - - if (s.lookahead + s.insert >= MIN_MATCH) { - str = s.strstart - s.insert; - s.ins_h = s.window[str]; - /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */ - - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + 1]) & s.hash_mask; //#if MIN_MATCH != 3 - // Call update_hash() MIN_MATCH-3 more times - //#endif - - while (s.insert) { - /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; - s.prev[str & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = str; - str++; - s.insert--; - - if (s.lookahead + s.insert < MIN_MATCH) { - break; - } - } - } - /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, - * but this is not important since only literal bytes will be emitted. - */ - - } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); - /* If the WIN_INIT bytes after the end of the current data have never been - * written, then zero those bytes in order to avoid memory check reports of - * the use of uninitialized (or uninitialised as Julian writes) bytes by - * the longest match routines. Update the high water mark for the next - * time through here. WIN_INIT is set to MAX_MATCH since the longest match - * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. - */ - // if (s.high_water < s.window_size) { - // var curr = s.strstart + s.lookahead; - // var init = 0; - // - // if (s.high_water < curr) { - // /* Previous high water mark below current data -- zero WIN_INIT - // * bytes or up to end of window, whichever is less. - // */ - // init = s.window_size - curr; - // if (init > WIN_INIT) - // init = WIN_INIT; - // zmemzero(s->window + curr, (unsigned)init); - // s->high_water = curr + init; - // } - // else if (s->high_water < (ulg)curr + WIN_INIT) { - // /* High water mark at or above current data, but below current data - // * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up - // * to end of window, whichever is less. - // */ - // init = (ulg)curr + WIN_INIT - s->high_water; - // if (init > s->window_size - s->high_water) - // init = s->window_size - s->high_water; - // zmemzero(s->window + s->high_water, (unsigned)init); - // s->high_water += init; - // } - // } - // - // Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, - // "not enough room for search"); - -} -/* =========================================================================== - * Copy without compression as much as possible from the input stream, return - * the current block state. - * This function does not insert new strings in the dictionary since - * uncompressible data is probably not useful. This function is used - * only for the level=0 compression option. - * NOTE: this function should be optimized to avoid extra copying from - * window to pending_buf. - */ - - -function deflate_stored(s, flush) { - /* Stored blocks are limited to 0xffff bytes, pending_buf is limited - * to pending_buf_size, and each stored block has a 5 byte header: - */ - var max_block_size = 0xffff; - - if (max_block_size > s.pending_buf_size - 5) { - max_block_size = s.pending_buf_size - 5; - } - /* Copy as much as possible from input to output: */ - - - for (;;) { - /* Fill the window as much as possible: */ - if (s.lookahead <= 1) { - //Assert(s->strstart < s->w_size+MAX_DIST(s) || - // s->block_start >= (long)s->w_size, "slide too late"); - // if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) || - // s.block_start >= s.w_size)) { - // throw new Error("slide too late"); - // } - fill_window(s); - - if (s.lookahead === 0 && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - - if (s.lookahead === 0) { - break; - } - /* flush the current block */ - - } //Assert(s->block_start >= 0L, "block gone"); - // if (s.block_start < 0) throw new Error("block gone"); - - - s.strstart += s.lookahead; - s.lookahead = 0; - /* Emit a stored block if pending_buf will be full: */ - - var max_start = s.block_start + max_block_size; - - if (s.strstart === 0 || s.strstart >= max_start) { - /* strstart == 0 is possible when wraparound on 16-bit machine */ - s.lookahead = s.strstart - max_start; - s.strstart = max_start; - /*** FLUSH_BLOCK(s, 0); ***/ - - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - /* Flush if we may have to slide, otherwise block_start may become - * negative and the data will be gone: - */ - - - if (s.strstart - s.block_start >= s.w_size - MIN_LOOKAHEAD) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - } - - s.insert = 0; - - if (flush === Z_FINISH) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - - - return BS_FINISH_DONE; - } - - if (s.strstart > s.block_start) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - - return BS_NEED_MORE; -} -/* =========================================================================== - * Compress as much as possible from the input stream, return the current - * block state. - * This function does not perform lazy evaluation of matches and inserts - * new strings in the dictionary only for unmatched strings or for short - * matches. It is used only for the fast compression options. - */ - - -function deflate_fast(s, flush) { - var hash_head; - /* head of the hash chain */ - - var bflush; - /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s.lookahead < MIN_LOOKAHEAD) { - fill_window(s); - - if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - - if (s.lookahead === 0) { - break; - /* flush the current block */ - } - } - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - - - hash_head = 0 - /*NIL*/ - ; - - if (s.lookahead >= MIN_MATCH) { - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - } - /* Find the longest match, discarding those <= prev_length. - * At this point we have always match_length < MIN_MATCH - */ - - - if (hash_head !== 0 - /*NIL*/ - && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s.match_length = longest_match(s, hash_head); - /* longest_match() sets match_start */ - } - - if (s.match_length >= MIN_MATCH) { - // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only - - /*** _tr_tally_dist(s, s.strstart - s.match_start, - s.match_length - MIN_MATCH, bflush); ***/ - bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); - s.lookahead -= s.match_length; - /* Insert new strings in the hash table only if the match length - * is not too large. This saves time but degrades compression. - */ - - if (s.match_length <= s.max_lazy_match - /*max_insert_length*/ - && s.lookahead >= MIN_MATCH) { - s.match_length--; - /* string at strstart already in table */ - - do { - s.strstart++; - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. - */ - } while (--s.match_length !== 0); - - s.strstart++; - } else { - s.strstart += s.match_length; - s.match_length = 0; - s.ins_h = s.window[s.strstart]; - /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */ - - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + 1]) & s.hash_mask; //#if MIN_MATCH != 3 - // Call UPDATE_HASH() MIN_MATCH-3 more times - //#endif - - /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not - * matter since it will be recomputed at next deflate call. - */ - } - } else { - /* No match, output a literal byte */ - //Tracevv((stderr,"%c", s.window[s.strstart])); - - /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - } - - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - } - - s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; - - if (flush === Z_FINISH) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - - - return BS_FINISH_DONE; - } - - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - - return BS_BLOCK_DONE; -} -/* =========================================================================== - * Same as above, but achieves better compression. We use a lazy - * evaluation for matches: a match is finally adopted only if there is - * no better match at the next window position. - */ - - -function deflate_slow(s, flush) { - var hash_head; - /* head of hash chain */ - - var bflush; - /* set if current block must be flushed */ - - var max_insert; - /* Process the input block. */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s.lookahead < MIN_LOOKAHEAD) { - fill_window(s); - - if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - - if (s.lookahead === 0) { - break; - } - /* flush the current block */ - - } - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - - - hash_head = 0 - /*NIL*/ - ; - - if (s.lookahead >= MIN_MATCH) { - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - } - /* Find the longest match, discarding those <= prev_length. - */ - - - s.prev_length = s.match_length; - s.prev_match = s.match_start; - s.match_length = MIN_MATCH - 1; - - if (hash_head !== 0 - /*NIL*/ - && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD - /*MAX_DIST(s)*/ - ) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s.match_length = longest_match(s, hash_head); - /* longest_match() sets match_start */ - - if (s.match_length <= 5 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096 - /*TOO_FAR*/ - )) { - /* If prev_match is also MIN_MATCH, match_start is garbage - * but we will ignore the current match anyway. - */ - s.match_length = MIN_MATCH - 1; - } - } - /* If there was a match at the previous step and the current - * match is not better, output the previous match: - */ - - - if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { - max_insert = s.strstart + s.lookahead - MIN_MATCH; - /* Do not insert strings in hash table beyond this. */ - //check_match(s, s.strstart-1, s.prev_match, s.prev_length); - - /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match, - s.prev_length - MIN_MATCH, bflush);***/ - - bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); - /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. If there is not - * enough lookahead, the last two strings are not inserted in - * the hash table. - */ - - s.lookahead -= s.prev_length - 1; - s.prev_length -= 2; - - do { - if (++s.strstart <= max_insert) { - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - } - } while (--s.prev_length !== 0); - - s.match_available = 0; - s.match_length = MIN_MATCH - 1; - s.strstart++; - - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - } else if (s.match_available) { - /* If there was no match at the previous position, output a - * single literal. If there was a match but the current match - * is longer, truncate the previous match to a single literal. - */ - //Tracevv((stderr,"%c", s->window[s->strstart-1])); - - /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ - bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); - - if (bflush) { - /*** FLUSH_BLOCK_ONLY(s, 0) ***/ - flush_block_only(s, false); - /***/ - } - - s.strstart++; - s.lookahead--; - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } else { - /* There is no previous match to compare with, wait for - * the next step to decide. - */ - s.match_available = 1; - s.strstart++; - s.lookahead--; - } - } //Assert (flush != Z_NO_FLUSH, "no flush?"); - - - if (s.match_available) { - //Tracevv((stderr,"%c", s->window[s->strstart-1])); - - /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ - bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); - s.match_available = 0; - } - - s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; - - if (flush === Z_FINISH) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - - - return BS_FINISH_DONE; - } - - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - - return BS_BLOCK_DONE; -} -/* =========================================================================== - * For Z_RLE, simply look for runs of bytes, generate matches only of distance - * one. Do not maintain a hash table. (It will be regenerated if this run of - * deflate switches away from Z_RLE.) - */ - - -function deflate_rle(s, flush) { - var bflush; - /* set if current block must be flushed */ - - var prev; - /* byte at distance one to match */ - - var scan, strend; - /* scan goes up to strend for length of run */ - - var _win = s.window; - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the longest run, plus one for the unrolled loop. - */ - if (s.lookahead <= MAX_MATCH) { - fill_window(s); - - if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - - if (s.lookahead === 0) { - break; - } - /* flush the current block */ - - } - /* See how many times the previous byte repeats */ - - - s.match_length = 0; - - if (s.lookahead >= MIN_MATCH && s.strstart > 0) { - scan = s.strstart - 1; - prev = _win[scan]; - - if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { - strend = s.strstart + MAX_MATCH; - - do { - /*jshint noempty:false*/ - } while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend); - - s.match_length = MAX_MATCH - (strend - scan); - - if (s.match_length > s.lookahead) { - s.match_length = s.lookahead; - } - } //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); - - } - /* Emit match if have run of MIN_MATCH or longer, else emit literal */ - - - if (s.match_length >= MIN_MATCH) { - //check_match(s, s.strstart, s.strstart - 1, s.match_length); - - /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/ - bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH); - s.lookahead -= s.match_length; - s.strstart += s.match_length; - s.match_length = 0; - } else { - /* No match, output a literal byte */ - //Tracevv((stderr,"%c", s->window[s->strstart])); - - /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - } - - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - } - - s.insert = 0; - - if (flush === Z_FINISH) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - - - return BS_FINISH_DONE; - } - - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - - return BS_BLOCK_DONE; -} -/* =========================================================================== - * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. - * (It will be regenerated if this run of deflate switches away from Huffman.) - */ - - -function deflate_huff(s, flush) { - var bflush; - /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we have a literal to write. */ - if (s.lookahead === 0) { - fill_window(s); - - if (s.lookahead === 0) { - if (flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - - break; - /* flush the current block */ - } - } - /* Output a literal byte */ - - - s.match_length = 0; //Tracevv((stderr,"%c", s->window[s->strstart])); - - /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ - - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - } - - s.insert = 0; - - if (flush === Z_FINISH) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - - - return BS_FINISH_DONE; - } - - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - } - - return BS_BLOCK_DONE; -} -/* Values for max_lazy_match, good_match and max_chain_length, depending on - * the desired pack level (0..9). The values given below have been tuned to - * exclude worst case performance for pathological files. Better values may be - * found for specific files. - */ - - -function Config(good_length, max_lazy, nice_length, max_chain, func) { - this.good_length = good_length; - this.max_lazy = max_lazy; - this.nice_length = nice_length; - this.max_chain = max_chain; - this.func = func; -} - -var configuration_table; -configuration_table = [ -/* good lazy nice chain */ -new Config(0, 0, 0, 0, deflate_stored), -/* 0 store only */ -new Config(4, 4, 8, 4, deflate_fast), -/* 1 max speed, no lazy matches */ -new Config(4, 5, 16, 8, deflate_fast), -/* 2 */ -new Config(4, 6, 32, 32, deflate_fast), -/* 3 */ -new Config(4, 4, 16, 16, deflate_slow), -/* 4 lazy matches */ -new Config(8, 16, 32, 32, deflate_slow), -/* 5 */ -new Config(8, 16, 128, 128, deflate_slow), -/* 6 */ -new Config(8, 32, 128, 256, deflate_slow), -/* 7 */ -new Config(32, 128, 258, 1024, deflate_slow), -/* 8 */ -new Config(32, 258, 258, 4096, deflate_slow) -/* 9 max compression */ -]; -/* =========================================================================== - * Initialize the "longest match" routines for a new zlib stream - */ - -function lm_init(s) { - s.window_size = 2 * s.w_size; - /*** CLEAR_HASH(s); ***/ - - zero(s.head); // Fill with NIL (= 0); - - /* Set the default configuration parameters: - */ - - s.max_lazy_match = configuration_table[s.level].max_lazy; - s.good_match = configuration_table[s.level].good_length; - s.nice_match = configuration_table[s.level].nice_length; - s.max_chain_length = configuration_table[s.level].max_chain; - s.strstart = 0; - s.block_start = 0; - s.lookahead = 0; - s.insert = 0; - s.match_length = s.prev_length = MIN_MATCH - 1; - s.match_available = 0; - s.ins_h = 0; -} - -function DeflateState() { - this.strm = null; - /* pointer back to this zlib stream */ - - this.status = 0; - /* as the name implies */ - - this.pending_buf = null; - /* output still pending */ - - this.pending_buf_size = 0; - /* size of pending_buf */ - - this.pending_out = 0; - /* next pending byte to output to the stream */ - - this.pending = 0; - /* nb of bytes in the pending buffer */ - - this.wrap = 0; - /* bit 0 true for zlib, bit 1 true for gzip */ - - this.gzhead = null; - /* gzip header information to write */ - - this.gzindex = 0; - /* where in extra, name, or comment */ - - this.method = Z_DEFLATED; - /* can only be DEFLATED */ - - this.last_flush = -1; - /* value of flush param for previous deflate call */ - - this.w_size = 0; - /* LZ77 window size (32K by default) */ - - this.w_bits = 0; - /* log2(w_size) (8..16) */ - - this.w_mask = 0; - /* w_size - 1 */ - - this.window = null; - /* Sliding window. Input bytes are read into the second half of the window, - * and move to the first half later to keep a dictionary of at least wSize - * bytes. With this organization, matches are limited to a distance of - * wSize-MAX_MATCH bytes, but this ensures that IO is always - * performed with a length multiple of the block size. - */ - - this.window_size = 0; - /* Actual size of window: 2*wSize, except when the user input buffer - * is directly used as sliding window. - */ - - this.prev = null; - /* Link to older string with same hash index. To limit the size of this - * array to 64K, this link is maintained only for the last 32K strings. - * An index in this array is thus a window index modulo 32K. - */ - - this.head = null; - /* Heads of the hash chains or NIL. */ - - this.ins_h = 0; - /* hash index of string to be inserted */ - - this.hash_size = 0; - /* number of elements in hash table */ - - this.hash_bits = 0; - /* log2(hash_size) */ - - this.hash_mask = 0; - /* hash_size-1 */ - - this.hash_shift = 0; - /* Number of bits by which ins_h must be shifted at each input - * step. It must be such that after MIN_MATCH steps, the oldest - * byte no longer takes part in the hash key, that is: - * hash_shift * MIN_MATCH >= hash_bits - */ - - this.block_start = 0; - /* Window position at the beginning of the current output block. Gets - * negative when the window is moved backwards. - */ - - this.match_length = 0; - /* length of best match */ - - this.prev_match = 0; - /* previous match */ - - this.match_available = 0; - /* set if previous match exists */ - - this.strstart = 0; - /* start of string to insert */ - - this.match_start = 0; - /* start of matching string */ - - this.lookahead = 0; - /* number of valid bytes ahead in window */ - - this.prev_length = 0; - /* Length of the best match at previous step. Matches not greater than this - * are discarded. This is used in the lazy match evaluation. - */ - - this.max_chain_length = 0; - /* To speed up deflation, hash chains are never searched beyond this - * length. A higher limit improves compression ratio but degrades the - * speed. - */ - - this.max_lazy_match = 0; - /* Attempt to find a better match only when the current match is strictly - * smaller than this value. This mechanism is used only for compression - * levels >= 4. - */ - // That's alias to max_lazy_match, don't use directly - //this.max_insert_length = 0; - - /* Insert new strings in the hash table only if the match length is not - * greater than this length. This saves time but degrades compression. - * max_insert_length is used only for compression levels <= 3. - */ - - this.level = 0; - /* compression level (1..9) */ - - this.strategy = 0; - /* favor or force Huffman coding*/ - - this.good_match = 0; - /* Use a faster search when the previous match is longer than this */ - - this.nice_match = 0; - /* Stop searching when current match exceeds this */ - - /* used by trees.c: */ - - /* Didn't use ct_data typedef below to suppress compiler warning */ - // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ - // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ - // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ - // Use flat array of DOUBLE size, with interleaved fata, - // because JS does not support effective - - this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2); - this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2); - this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2); - zero(this.dyn_ltree); - zero(this.dyn_dtree); - zero(this.bl_tree); - this.l_desc = null; - /* desc. for literal tree */ - - this.d_desc = null; - /* desc. for distance tree */ - - this.bl_desc = null; - /* desc. for bit length tree */ - //ush bl_count[MAX_BITS+1]; - - this.bl_count = new utils.Buf16(MAX_BITS + 1); - /* number of codes at each bit length for an optimal tree */ - //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ - - this.heap = new utils.Buf16(2 * L_CODES + 1); - /* heap used to build the Huffman trees */ - - zero(this.heap); - this.heap_len = 0; - /* number of elements in the heap */ - - this.heap_max = 0; - /* element of largest frequency */ - - /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. - * The same heap array is used to build all trees. - */ - - this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1]; - - zero(this.depth); - /* Depth of each subtree used as tie breaker for trees of equal frequency - */ - - this.l_buf = 0; - /* buffer index for literals or lengths */ - - this.lit_bufsize = 0; - /* Size of match buffer for literals/lengths. There are 4 reasons for - * limiting lit_bufsize to 64K: - * - frequencies can be kept in 16 bit counters - * - if compression is not successful for the first block, all input - * data is still in the window so we can still emit a stored block even - * when input comes from standard input. (This can also be done for - * all blocks if lit_bufsize is not greater than 32K.) - * - if compression is not successful for a file smaller than 64K, we can - * even emit a stored file instead of a stored block (saving 5 bytes). - * This is applicable only for zip (not gzip or zlib). - * - creating new Huffman trees less frequently may not provide fast - * adaptation to changes in the input data statistics. (Take for - * example a binary file with poorly compressible code followed by - * a highly compressible string table.) Smaller buffer sizes give - * fast adaptation but have of course the overhead of transmitting - * trees more frequently. - * - I can't count above 4 - */ - - this.last_lit = 0; - /* running index in l_buf */ - - this.d_buf = 0; - /* Buffer index for distances. To simplify the code, d_buf and l_buf have - * the same number of elements. To use different lengths, an extra flag - * array would be necessary. - */ - - this.opt_len = 0; - /* bit length of current block with optimal trees */ - - this.static_len = 0; - /* bit length of current block with static trees */ - - this.matches = 0; - /* number of string matches in current block */ - - this.insert = 0; - /* bytes at end of window left to insert */ - - this.bi_buf = 0; - /* Output buffer. bits are inserted starting at the bottom (least - * significant bits). - */ - - this.bi_valid = 0; - /* Number of valid bits in bi_buf. All bits above the last valid bit - * are always zero. - */ - // Used for window memory init. We safely ignore it for JS. That makes - // sense only for pointers and memory check tools. - //this.high_water = 0; - - /* High water mark offset in window for initialized bytes -- bytes above - * this are set to zero in order to avoid memory check warnings when - * longest match routines access bytes past the input. This is then - * updated to the new high water mark. - */ -} - -function deflateResetKeep(strm) { - var s; - - if (!strm || !strm.state) { - return err(strm, Z_STREAM_ERROR); - } - - strm.total_in = strm.total_out = 0; - strm.data_type = Z_UNKNOWN; - s = strm.state; - s.pending = 0; - s.pending_out = 0; - - if (s.wrap < 0) { - s.wrap = -s.wrap; - /* was made negative by deflate(..., Z_FINISH); */ - } - - s.status = s.wrap ? INIT_STATE : BUSY_STATE; - strm.adler = s.wrap === 2 ? 0 // crc32(0, Z_NULL, 0) - : 1; // adler32(0, Z_NULL, 0) - - s.last_flush = Z_NO_FLUSH; - - trees._tr_init(s); - - return Z_OK; -} - -function deflateReset(strm) { - var ret = deflateResetKeep(strm); - - if (ret === Z_OK) { - lm_init(strm.state); - } - - return ret; -} - -function deflateSetHeader(strm, head) { - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - - if (strm.state.wrap !== 2) { - return Z_STREAM_ERROR; - } - - strm.state.gzhead = head; - return Z_OK; -} - -function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { - if (!strm) { - // === Z_NULL - return Z_STREAM_ERROR; - } - - var wrap = 1; - - if (level === Z_DEFAULT_COMPRESSION) { - level = 6; - } - - if (windowBits < 0) { - /* suppress zlib wrapper */ - wrap = 0; - windowBits = -windowBits; - } else if (windowBits > 15) { - wrap = 2; - /* write gzip wrapper instead */ - - windowBits -= 16; - } - - if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) { - return err(strm, Z_STREAM_ERROR); - } - - if (windowBits === 8) { - windowBits = 9; - } - /* until 256-byte window bug fixed */ - - - var s = new DeflateState(); - strm.state = s; - s.strm = strm; - s.wrap = wrap; - s.gzhead = null; - s.w_bits = windowBits; - s.w_size = 1 << s.w_bits; - s.w_mask = s.w_size - 1; - s.hash_bits = memLevel + 7; - s.hash_size = 1 << s.hash_bits; - s.hash_mask = s.hash_size - 1; - s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); - s.window = new utils.Buf8(s.w_size * 2); - s.head = new utils.Buf16(s.hash_size); - s.prev = new utils.Buf16(s.w_size); // Don't need mem init magic for JS. - //s.high_water = 0; /* nothing written to s->window yet */ - - s.lit_bufsize = 1 << memLevel + 6; - /* 16K elements by default */ - - s.pending_buf_size = s.lit_bufsize * 4; //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); - //s->pending_buf = (uchf *) overlay; - - s.pending_buf = new utils.Buf8(s.pending_buf_size); // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`) - //s->d_buf = overlay + s->lit_bufsize/sizeof(ush); - - s.d_buf = 1 * s.lit_bufsize; //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; - - s.l_buf = (1 + 2) * s.lit_bufsize; - s.level = level; - s.strategy = strategy; - s.method = method; - return deflateReset(strm); -} - -function deflateInit(strm, level) { - return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); -} - -function deflate(strm, flush) { - var old_flush, s; - var beg, val; // for gzip header write only - - if (!strm || !strm.state || flush > Z_BLOCK || flush < 0) { - return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR; - } - - s = strm.state; - - if (!strm.output || !strm.input && strm.avail_in !== 0 || s.status === FINISH_STATE && flush !== Z_FINISH) { - return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR : Z_STREAM_ERROR); - } - - s.strm = strm; - /* just in case */ - - old_flush = s.last_flush; - s.last_flush = flush; - /* Write the header */ - - if (s.status === INIT_STATE) { - if (s.wrap === 2) { - // GZIP header - strm.adler = 0; //crc32(0L, Z_NULL, 0); - - put_byte(s, 31); - put_byte(s, 139); - put_byte(s, 8); - - if (!s.gzhead) { - // s->gzhead == Z_NULL - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); - put_byte(s, OS_CODE); - s.status = BUSY_STATE; - } else { - put_byte(s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16)); - put_byte(s, s.gzhead.time & 0xff); - put_byte(s, s.gzhead.time >> 8 & 0xff); - put_byte(s, s.gzhead.time >> 16 & 0xff); - put_byte(s, s.gzhead.time >> 24 & 0xff); - put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); - put_byte(s, s.gzhead.os & 0xff); - - if (s.gzhead.extra && s.gzhead.extra.length) { - put_byte(s, s.gzhead.extra.length & 0xff); - put_byte(s, s.gzhead.extra.length >> 8 & 0xff); - } - - if (s.gzhead.hcrc) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0); - } - - s.gzindex = 0; - s.status = EXTRA_STATE; - } - } else // DEFLATE header - { - var header = Z_DEFLATED + (s.w_bits - 8 << 4) << 8; - var level_flags = -1; - - if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { - level_flags = 0; - } else if (s.level < 6) { - level_flags = 1; - } else if (s.level === 6) { - level_flags = 2; - } else { - level_flags = 3; - } - - header |= level_flags << 6; - - if (s.strstart !== 0) { - header |= PRESET_DICT; - } - - header += 31 - header % 31; - s.status = BUSY_STATE; - putShortMSB(s, header); - /* Save the adler32 of the preset dictionary: */ - - if (s.strstart !== 0) { - putShortMSB(s, strm.adler >>> 16); - putShortMSB(s, strm.adler & 0xffff); - } - - strm.adler = 1; // adler32(0L, Z_NULL, 0); - } - } //#ifdef GZIP - - - if (s.status === EXTRA_STATE) { - if (s.gzhead.extra - /* != Z_NULL*/ - ) { - beg = s.pending; - /* start of bytes to update crc */ - - while (s.gzindex < (s.gzhead.extra.length & 0xffff)) { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - - flush_pending(strm); - beg = s.pending; - - if (s.pending === s.pending_buf_size) { - break; - } - } - - put_byte(s, s.gzhead.extra[s.gzindex] & 0xff); - s.gzindex++; - } - - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - - if (s.gzindex === s.gzhead.extra.length) { - s.gzindex = 0; - s.status = NAME_STATE; - } - } else { - s.status = NAME_STATE; - } - } - - if (s.status === NAME_STATE) { - if (s.gzhead.name - /* != Z_NULL*/ - ) { - beg = s.pending; - /* start of bytes to update crc */ - //int val; - - do { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - - flush_pending(strm); - beg = s.pending; - - if (s.pending === s.pending_buf_size) { - val = 1; - break; - } - } // JS specific: little magic to add zero terminator to end of string - - - if (s.gzindex < s.gzhead.name.length) { - val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff; - } else { - val = 0; - } - - put_byte(s, val); - } while (val !== 0); - - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - - if (val === 0) { - s.gzindex = 0; - s.status = COMMENT_STATE; - } - } else { - s.status = COMMENT_STATE; - } - } - - if (s.status === COMMENT_STATE) { - if (s.gzhead.comment - /* != Z_NULL*/ - ) { - beg = s.pending; - /* start of bytes to update crc */ - //int val; - - do { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - - flush_pending(strm); - beg = s.pending; - - if (s.pending === s.pending_buf_size) { - val = 1; - break; - } - } // JS specific: little magic to add zero terminator to end of string - - - if (s.gzindex < s.gzhead.comment.length) { - val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff; - } else { - val = 0; - } - - put_byte(s, val); - } while (val !== 0); - - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - - if (val === 0) { - s.status = HCRC_STATE; - } - } else { - s.status = HCRC_STATE; - } - } - - if (s.status === HCRC_STATE) { - if (s.gzhead.hcrc) { - if (s.pending + 2 > s.pending_buf_size) { - flush_pending(strm); - } - - if (s.pending + 2 <= s.pending_buf_size) { - put_byte(s, strm.adler & 0xff); - put_byte(s, strm.adler >> 8 & 0xff); - strm.adler = 0; //crc32(0L, Z_NULL, 0); - - s.status = BUSY_STATE; - } - } else { - s.status = BUSY_STATE; - } - } //#endif - - /* Flush as much pending output as possible */ - - - if (s.pending !== 0) { - flush_pending(strm); - - if (strm.avail_out === 0) { - /* Since avail_out is 0, deflate will be called again with - * more output space, but possibly with both pending and - * avail_in equal to zero. There won't be anything to do, - * but this is not an error situation so make sure we - * return OK instead of BUF_ERROR at next call of deflate: - */ - s.last_flush = -1; - return Z_OK; - } - /* Make sure there is something to do and avoid duplicate consecutive - * flushes. For repeated and useless calls with Z_FINISH, we keep - * returning Z_STREAM_END instead of Z_BUF_ERROR. - */ - - } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH) { - return err(strm, Z_BUF_ERROR); - } - /* User must not provide more input after the first FINISH: */ - - - if (s.status === FINISH_STATE && strm.avail_in !== 0) { - return err(strm, Z_BUF_ERROR); - } - /* Start a new block or continue the current one. - */ - - - if (strm.avail_in !== 0 || s.lookahead !== 0 || flush !== Z_NO_FLUSH && s.status !== FINISH_STATE) { - var bstate = s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : s.strategy === Z_RLE ? deflate_rle(s, flush) : configuration_table[s.level].func(s, flush); - - if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { - s.status = FINISH_STATE; - } - - if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { - if (strm.avail_out === 0) { - s.last_flush = -1; - /* avoid BUF_ERROR next call, see above */ - } - - return Z_OK; - /* If flush != Z_NO_FLUSH && avail_out == 0, the next call - * of deflate should use the same flush parameter to make sure - * that the flush is complete. So we don't have to output an - * empty block here, this will be done at next call. This also - * ensures that for a very small output buffer, we emit at most - * one empty block. - */ - } - - if (bstate === BS_BLOCK_DONE) { - if (flush === Z_PARTIAL_FLUSH) { - trees._tr_align(s); - } else if (flush !== Z_BLOCK) { - /* FULL_FLUSH or SYNC_FLUSH */ - trees._tr_stored_block(s, 0, 0, false); - /* For a full flush, this empty block will be recognized - * as a special marker by inflate_sync(). - */ - - - if (flush === Z_FULL_FLUSH) { - /*** CLEAR_HASH(s); ***/ - - /* forget history */ - zero(s.head); // Fill with NIL (= 0); - - if (s.lookahead === 0) { - s.strstart = 0; - s.block_start = 0; - s.insert = 0; - } - } - } - - flush_pending(strm); - - if (strm.avail_out === 0) { - s.last_flush = -1; - /* avoid BUF_ERROR at next call, see above */ - - return Z_OK; - } - } - } //Assert(strm->avail_out > 0, "bug2"); - //if (strm.avail_out <= 0) { throw new Error("bug2");} - - - if (flush !== Z_FINISH) { - return Z_OK; - } - - if (s.wrap <= 0) { - return Z_STREAM_END; - } - /* Write the trailer */ - - - if (s.wrap === 2) { - put_byte(s, strm.adler & 0xff); - put_byte(s, strm.adler >> 8 & 0xff); - put_byte(s, strm.adler >> 16 & 0xff); - put_byte(s, strm.adler >> 24 & 0xff); - put_byte(s, strm.total_in & 0xff); - put_byte(s, strm.total_in >> 8 & 0xff); - put_byte(s, strm.total_in >> 16 & 0xff); - put_byte(s, strm.total_in >> 24 & 0xff); - } else { - putShortMSB(s, strm.adler >>> 16); - putShortMSB(s, strm.adler & 0xffff); - } - - flush_pending(strm); - /* If avail_out is zero, the application will call deflate again - * to flush the rest. - */ - - if (s.wrap > 0) { - s.wrap = -s.wrap; - } - /* write the trailer only once! */ - - - return s.pending !== 0 ? Z_OK : Z_STREAM_END; -} - -function deflateEnd(strm) { - var status; - - if (!strm - /*== Z_NULL*/ - || !strm.state - /*== Z_NULL*/ - ) { - return Z_STREAM_ERROR; - } - - status = strm.state.status; - - if (status !== INIT_STATE && status !== EXTRA_STATE && status !== NAME_STATE && status !== COMMENT_STATE && status !== HCRC_STATE && status !== BUSY_STATE && status !== FINISH_STATE) { - return err(strm, Z_STREAM_ERROR); - } - - strm.state = null; - return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK; -} -/* ========================================================================= - * Initializes the compression dictionary from the given byte - * sequence without producing any compressed output. - */ - - -function deflateSetDictionary(strm, dictionary) { - var dictLength = dictionary.length; - var s; - var str, n; - var wrap; - var avail; - var next; - var input; - var tmpDict; - - if (!strm - /*== Z_NULL*/ - || !strm.state - /*== Z_NULL*/ - ) { - return Z_STREAM_ERROR; - } - - s = strm.state; - wrap = s.wrap; - - if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) { - return Z_STREAM_ERROR; - } - /* when using zlib wrappers, compute Adler-32 for provided dictionary */ - - - if (wrap === 1) { - /* adler32(strm->adler, dictionary, dictLength); */ - strm.adler = adler32(strm.adler, dictionary, dictLength, 0); - } - - s.wrap = 0; - /* avoid computing Adler-32 in read_buf */ - - /* if dictionary would fill window, just replace the history */ - - if (dictLength >= s.w_size) { - if (wrap === 0) { - /* already empty otherwise */ - - /*** CLEAR_HASH(s); ***/ - zero(s.head); // Fill with NIL (= 0); - - s.strstart = 0; - s.block_start = 0; - s.insert = 0; - } - /* use the tail */ - // dictionary = dictionary.slice(dictLength - s.w_size); - - - tmpDict = new utils.Buf8(s.w_size); - utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0); - dictionary = tmpDict; - dictLength = s.w_size; - } - /* insert dictionary into window and hash */ - - - avail = strm.avail_in; - next = strm.next_in; - input = strm.input; - strm.avail_in = dictLength; - strm.next_in = 0; - strm.input = dictionary; - fill_window(s); - - while (s.lookahead >= MIN_MATCH) { - str = s.strstart; - n = s.lookahead - (MIN_MATCH - 1); - - do { - /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ - s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; - s.prev[str & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = str; - str++; - } while (--n); - - s.strstart = str; - s.lookahead = MIN_MATCH - 1; - fill_window(s); - } - - s.strstart += s.lookahead; - s.block_start = s.strstart; - s.insert = s.lookahead; - s.lookahead = 0; - s.match_length = s.prev_length = MIN_MATCH - 1; - s.match_available = 0; - strm.next_in = next; - strm.input = input; - strm.avail_in = avail; - s.wrap = wrap; - return Z_OK; -} - -exports.deflateInit = deflateInit; -exports.deflateInit2 = deflateInit2; -exports.deflateReset = deflateReset; -exports.deflateResetKeep = deflateResetKeep; -exports.deflateSetHeader = deflateSetHeader; -exports.deflate = deflate; -exports.deflateEnd = deflateEnd; -exports.deflateSetDictionary = deflateSetDictionary; -exports.deflateInfo = 'pako deflate (from Nodeca project)'; -/* Not implemented -exports.deflateBound = deflateBound; -exports.deflateCopy = deflateCopy; -exports.deflateParams = deflateParams; -exports.deflatePending = deflatePending; -exports.deflatePrime = deflatePrime; -exports.deflateTune = deflateTune; -*/ - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/gzheader.js": -/*!************************************************!*\ - !*** ./node_modules/pako/lib/zlib/gzheader.js ***! - \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -function GZheader() { - /* true if compressed data believed to be text */ - this.text = 0; - /* modification time */ - - this.time = 0; - /* extra flags (not used when writing a gzip file) */ - - this.xflags = 0; - /* operating system */ - - this.os = 0; - /* pointer to extra field or Z_NULL if none */ - - this.extra = null; - /* extra field length (valid if extra != Z_NULL) */ - - this.extra_len = 0; // Actually, we don't need it in JS, - // but leave for few code modifications - // - // Setup limits is not necessary because in js we should not preallocate memory - // for inflate use constant limit in 65536 bytes - // - - /* space at extra (only when reading header) */ - // this.extra_max = 0; - - /* pointer to zero-terminated file name or Z_NULL */ - - this.name = ''; - /* space at name (only when reading header) */ - // this.name_max = 0; - - /* pointer to zero-terminated comment or Z_NULL */ - - this.comment = ''; - /* space at comment (only when reading header) */ - // this.comm_max = 0; - - /* true if there was or will be a header crc */ - - this.hcrc = 0; - /* true when done reading gzip header (not used when writing a gzip file) */ - - this.done = false; -} - -module.exports = GZheader; - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/inffast.js": -/*!***********************************************!*\ - !*** ./node_modules/pako/lib/zlib/inffast.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. -// See state defs from inflate.js - -var BAD = 30; -/* got a data error -- remain here until reset */ - -var TYPE = 12; -/* i: waiting for type bits, including last-flag bit */ - -/* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. - - Entry assumptions: - - state.mode === LEN - strm.avail_in >= 6 - strm.avail_out >= 258 - start >= strm.avail_out - state.bits < 8 - - On return, state.mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm.avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm.avail_out >= 258 for each loop to avoid checking for - output space. - */ - -module.exports = function inflate_fast(strm, start) { - var state; - - var _in; - /* local strm.input */ - - - var last; - /* have enough input while in < last */ - - var _out; - /* local strm.output */ - - - var beg; - /* inflate()'s initial strm.output */ - - var end; - /* while out < end, enough space available */ - //#ifdef INFLATE_STRICT - - var dmax; - /* maximum distance from zlib header */ - //#endif - - var wsize; - /* window size or zero if not using window */ - - var whave; - /* valid bytes in the window */ - - var wnext; - /* window write index */ - // Use `s_window` instead `window`, avoid conflict with instrumentation tools - - var s_window; - /* allocated sliding window, if wsize != 0 */ - - var hold; - /* local strm.hold */ - - var bits; - /* local strm.bits */ - - var lcode; - /* local strm.lencode */ - - var dcode; - /* local strm.distcode */ - - var lmask; - /* mask for first level of length codes */ - - var dmask; - /* mask for first level of distance codes */ - - var here; - /* retrieved table entry */ - - var op; - /* code bits, operation, extra bits, or */ - - /* window position, window bytes to copy */ - - var len; - /* match length, unused bytes */ - - var dist; - /* match distance */ - - var from; - /* where to copy match from */ - - var from_source; - var input, output; // JS specific, because we have no pointers - - /* copy state to local variables */ - - state = strm.state; //here = state.here; - - _in = strm.next_in; - input = strm.input; - last = _in + (strm.avail_in - 5); - _out = strm.next_out; - output = strm.output; - beg = _out - (start - strm.avail_out); - end = _out + (strm.avail_out - 257); //#ifdef INFLATE_STRICT - - dmax = state.dmax; //#endif - - wsize = state.wsize; - whave = state.whave; - wnext = state.wnext; - s_window = state.window; - hold = state.hold; - bits = state.bits; - lcode = state.lencode; - dcode = state.distcode; - lmask = (1 << state.lenbits) - 1; - dmask = (1 << state.distbits) - 1; - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - - top: do { - if (bits < 15) { - hold += input[_in++] << bits; - bits += 8; - hold += input[_in++] << bits; - bits += 8; - } - - here = lcode[hold & lmask]; - - dolen: for (;;) { - // Goto emulation - op = here >>> 24 - /*here.bits*/ - ; - hold >>>= op; - bits -= op; - op = here >>> 16 & 0xff - /*here.op*/ - ; - - if (op === 0) { - /* literal */ - //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - // "inflate: literal '%c'\n" : - // "inflate: literal 0x%02x\n", here.val)); - output[_out++] = here & 0xffff - /*here.val*/ - ; - } else if (op & 16) { - /* length base */ - len = here & 0xffff - /*here.val*/ - ; - op &= 15; - /* number of extra bits */ - - if (op) { - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - } - - len += hold & (1 << op) - 1; - hold >>>= op; - bits -= op; - } //Tracevv((stderr, "inflate: length %u\n", len)); - - - if (bits < 15) { - hold += input[_in++] << bits; - bits += 8; - hold += input[_in++] << bits; - bits += 8; - } - - here = dcode[hold & dmask]; - - dodist: for (;;) { - // goto emulation - op = here >>> 24 - /*here.bits*/ - ; - hold >>>= op; - bits -= op; - op = here >>> 16 & 0xff - /*here.op*/ - ; - - if (op & 16) { - /* distance base */ - dist = here & 0xffff - /*here.val*/ - ; - op &= 15; - /* number of extra bits */ - - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - } - } - - dist += hold & (1 << op) - 1; //#ifdef INFLATE_STRICT - - if (dist > dmax) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD; - break top; - } //#endif - - - hold >>>= op; - bits -= op; //Tracevv((stderr, "inflate: distance %u\n", dist)); - - op = _out - beg; - /* max distance in output */ - - if (dist > op) { - /* see if copy from window */ - op = dist - op; - /* distance back in window */ - - if (op > whave) { - if (state.sane) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD; - break top; - } // (!) This block is disabled in zlib defaults, - // don't enable it for binary compatibility - //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - // if (len <= op - whave) { - // do { - // output[_out++] = 0; - // } while (--len); - // continue top; - // } - // len -= op - whave; - // do { - // output[_out++] = 0; - // } while (--op > whave); - // if (op === 0) { - // from = _out - dist; - // do { - // output[_out++] = output[from++]; - // } while (--len); - // continue top; - // } - //#endif - - } - - from = 0; // window index - - from_source = s_window; - - if (wnext === 0) { - /* very common case */ - from += wsize - op; - - if (op < len) { - /* some from window */ - len -= op; - - do { - output[_out++] = s_window[from++]; - } while (--op); - - from = _out - dist; - /* rest from output */ - - from_source = output; - } - } else if (wnext < op) { - /* wrap around window */ - from += wsize + wnext - op; - op -= wnext; - - if (op < len) { - /* some from end of window */ - len -= op; - - do { - output[_out++] = s_window[from++]; - } while (--op); - - from = 0; - - if (wnext < len) { - /* some from start of window */ - op = wnext; - len -= op; - - do { - output[_out++] = s_window[from++]; - } while (--op); - - from = _out - dist; - /* rest from output */ - - from_source = output; - } - } - } else { - /* contiguous in window */ - from += wnext - op; - - if (op < len) { - /* some from window */ - len -= op; - - do { - output[_out++] = s_window[from++]; - } while (--op); - - from = _out - dist; - /* rest from output */ - - from_source = output; - } - } - - while (len > 2) { - output[_out++] = from_source[from++]; - output[_out++] = from_source[from++]; - output[_out++] = from_source[from++]; - len -= 3; - } - - if (len) { - output[_out++] = from_source[from++]; - - if (len > 1) { - output[_out++] = from_source[from++]; - } - } - } else { - from = _out - dist; - /* copy direct from output */ - - do { - /* minimum length is three */ - output[_out++] = output[from++]; - output[_out++] = output[from++]; - output[_out++] = output[from++]; - len -= 3; - } while (len > 2); - - if (len) { - output[_out++] = output[from++]; - - if (len > 1) { - output[_out++] = output[from++]; - } - } - } - } else if ((op & 64) === 0) { - /* 2nd level distance code */ - here = dcode[(here & 0xffff) + ( - /*here.val*/ - hold & (1 << op) - 1)]; - continue dodist; - } else { - strm.msg = 'invalid distance code'; - state.mode = BAD; - break top; - } - - break; // need to emulate goto via "continue" - } - } else if ((op & 64) === 0) { - /* 2nd level length code */ - here = lcode[(here & 0xffff) + ( - /*here.val*/ - hold & (1 << op) - 1)]; - continue dolen; - } else if (op & 32) { - /* end-of-block */ - //Tracevv((stderr, "inflate: end of block\n")); - state.mode = TYPE; - break top; - } else { - strm.msg = 'invalid literal/length code'; - state.mode = BAD; - break top; - } - - break; // need to emulate goto via "continue" - } - } while (_in < last && _out < end); - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - - - len = bits >> 3; - _in -= len; - bits -= len << 3; - hold &= (1 << bits) - 1; - /* update state and return */ - - strm.next_in = _in; - strm.next_out = _out; - strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last); - strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end); - state.hold = hold; - state.bits = bits; - return; -}; - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/inflate.js": -/*!***********************************************!*\ - !*** ./node_modules/pako/lib/zlib/inflate.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -var utils = __webpack_require__(/*! ../utils/common */ "./node_modules/pako/lib/utils/common.js"); - -var adler32 = __webpack_require__(/*! ./adler32 */ "./node_modules/pako/lib/zlib/adler32.js"); - -var crc32 = __webpack_require__(/*! ./crc32 */ "./node_modules/pako/lib/zlib/crc32.js"); - -var inflate_fast = __webpack_require__(/*! ./inffast */ "./node_modules/pako/lib/zlib/inffast.js"); - -var inflate_table = __webpack_require__(/*! ./inftrees */ "./node_modules/pako/lib/zlib/inftrees.js"); - -var CODES = 0; -var LENS = 1; -var DISTS = 2; -/* Public constants ==========================================================*/ - -/* ===========================================================================*/ - -/* Allowed flush values; see deflate() and inflate() below for details */ -//var Z_NO_FLUSH = 0; -//var Z_PARTIAL_FLUSH = 1; -//var Z_SYNC_FLUSH = 2; -//var Z_FULL_FLUSH = 3; - -var Z_FINISH = 4; -var Z_BLOCK = 5; -var Z_TREES = 6; -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - -var Z_OK = 0; -var Z_STREAM_END = 1; -var Z_NEED_DICT = 2; //var Z_ERRNO = -1; - -var Z_STREAM_ERROR = -2; -var Z_DATA_ERROR = -3; -var Z_MEM_ERROR = -4; -var Z_BUF_ERROR = -5; //var Z_VERSION_ERROR = -6; - -/* The deflate compression method */ - -var Z_DEFLATED = 8; -/* STATES ====================================================================*/ - -/* ===========================================================================*/ - -var HEAD = 1; -/* i: waiting for magic header */ - -var FLAGS = 2; -/* i: waiting for method and flags (gzip) */ - -var TIME = 3; -/* i: waiting for modification time (gzip) */ - -var OS = 4; -/* i: waiting for extra flags and operating system (gzip) */ - -var EXLEN = 5; -/* i: waiting for extra length (gzip) */ - -var EXTRA = 6; -/* i: waiting for extra bytes (gzip) */ - -var NAME = 7; -/* i: waiting for end of file name (gzip) */ - -var COMMENT = 8; -/* i: waiting for end of comment (gzip) */ - -var HCRC = 9; -/* i: waiting for header crc (gzip) */ - -var DICTID = 10; -/* i: waiting for dictionary check value */ - -var DICT = 11; -/* waiting for inflateSetDictionary() call */ - -var TYPE = 12; -/* i: waiting for type bits, including last-flag bit */ - -var TYPEDO = 13; -/* i: same, but skip check to exit inflate on new block */ - -var STORED = 14; -/* i: waiting for stored size (length and complement) */ - -var COPY_ = 15; -/* i/o: same as COPY below, but only first time in */ - -var COPY = 16; -/* i/o: waiting for input or output to copy stored block */ - -var TABLE = 17; -/* i: waiting for dynamic block table lengths */ - -var LENLENS = 18; -/* i: waiting for code length code lengths */ - -var CODELENS = 19; -/* i: waiting for length/lit and distance code lengths */ - -var LEN_ = 20; -/* i: same as LEN below, but only first time in */ - -var LEN = 21; -/* i: waiting for length/lit/eob code */ - -var LENEXT = 22; -/* i: waiting for length extra bits */ - -var DIST = 23; -/* i: waiting for distance code */ - -var DISTEXT = 24; -/* i: waiting for distance extra bits */ - -var MATCH = 25; -/* o: waiting for output space to copy string */ - -var LIT = 26; -/* o: waiting for output space to write literal */ - -var CHECK = 27; -/* i: waiting for 32-bit check value */ - -var LENGTH = 28; -/* i: waiting for 32-bit length (gzip) */ - -var DONE = 29; -/* finished check, done -- remain here until reset */ - -var BAD = 30; -/* got a data error -- remain here until reset */ - -var MEM = 31; -/* got an inflate() memory error -- remain here until reset */ - -var SYNC = 32; -/* looking for synchronization bytes to restart inflate() */ - -/* ===========================================================================*/ - -var ENOUGH_LENS = 852; -var ENOUGH_DISTS = 592; //var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); - -var MAX_WBITS = 15; -/* 32K LZ77 window */ - -var DEF_WBITS = MAX_WBITS; - -function zswap32(q) { - return (q >>> 24 & 0xff) + (q >>> 8 & 0xff00) + ((q & 0xff00) << 8) + ((q & 0xff) << 24); -} - -function InflateState() { - this.mode = 0; - /* current inflate mode */ - - this.last = false; - /* true if processing last block */ - - this.wrap = 0; - /* bit 0 true for zlib, bit 1 true for gzip */ - - this.havedict = false; - /* true if dictionary provided */ - - this.flags = 0; - /* gzip header method and flags (0 if zlib) */ - - this.dmax = 0; - /* zlib header max distance (INFLATE_STRICT) */ - - this.check = 0; - /* protected copy of check value */ - - this.total = 0; - /* protected copy of output count */ - // TODO: may be {} - - this.head = null; - /* where to save gzip header information */ - - /* sliding window */ - - this.wbits = 0; - /* log base 2 of requested window size */ - - this.wsize = 0; - /* window size or zero if not using window */ - - this.whave = 0; - /* valid bytes in the window */ - - this.wnext = 0; - /* window write index */ - - this.window = null; - /* allocated sliding window, if needed */ - - /* bit accumulator */ - - this.hold = 0; - /* input bit accumulator */ - - this.bits = 0; - /* number of bits in "in" */ - - /* for string and stored block copying */ - - this.length = 0; - /* literal or length of data to copy */ - - this.offset = 0; - /* distance back to copy string from */ - - /* for table and code decoding */ - - this.extra = 0; - /* extra bits needed */ - - /* fixed and dynamic code tables */ - - this.lencode = null; - /* starting table for length/literal codes */ - - this.distcode = null; - /* starting table for distance codes */ - - this.lenbits = 0; - /* index bits for lencode */ - - this.distbits = 0; - /* index bits for distcode */ - - /* dynamic table building */ - - this.ncode = 0; - /* number of code length code lengths */ - - this.nlen = 0; - /* number of length code lengths */ - - this.ndist = 0; - /* number of distance code lengths */ - - this.have = 0; - /* number of code lengths in lens[] */ - - this.next = null; - /* next available space in codes[] */ - - this.lens = new utils.Buf16(320); - /* temporary storage for code lengths */ - - this.work = new utils.Buf16(288); - /* work area for code table building */ - - /* - because we don't have pointers in js, we use lencode and distcode directly - as buffers so we don't need codes - */ - //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */ - - this.lendyn = null; - /* dynamic table for length/literal codes (JS specific) */ - - this.distdyn = null; - /* dynamic table for distance codes (JS specific) */ - - this.sane = 0; - /* if false, allow invalid distance too far */ - - this.back = 0; - /* bits back of last unprocessed length/lit */ - - this.was = 0; - /* initial length of match */ -} - -function inflateResetKeep(strm) { - var state; - - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - - state = strm.state; - strm.total_in = strm.total_out = state.total = 0; - strm.msg = ''; - /*Z_NULL*/ - - if (state.wrap) { - /* to support ill-conceived Java test suite */ - strm.adler = state.wrap & 1; - } - - state.mode = HEAD; - state.last = 0; - state.havedict = 0; - state.dmax = 32768; - state.head = null - /*Z_NULL*/ - ; - state.hold = 0; - state.bits = 0; //state.lencode = state.distcode = state.next = state.codes; - - state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS); - state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS); - state.sane = 1; - state.back = -1; //Tracev((stderr, "inflate: reset\n")); - - return Z_OK; -} - -function inflateReset(strm) { - var state; - - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - - state = strm.state; - state.wsize = 0; - state.whave = 0; - state.wnext = 0; - return inflateResetKeep(strm); -} - -function inflateReset2(strm, windowBits) { - var wrap; - var state; - /* get the state */ - - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - - state = strm.state; - /* extract wrap request from windowBits parameter */ - - if (windowBits < 0) { - wrap = 0; - windowBits = -windowBits; - } else { - wrap = (windowBits >> 4) + 1; - - if (windowBits < 48) { - windowBits &= 15; - } - } - /* set number of window bits, free window if different */ - - - if (windowBits && (windowBits < 8 || windowBits > 15)) { - return Z_STREAM_ERROR; - } - - if (state.window !== null && state.wbits !== windowBits) { - state.window = null; - } - /* update state and reset the rest of it */ - - - state.wrap = wrap; - state.wbits = windowBits; - return inflateReset(strm); -} - -function inflateInit2(strm, windowBits) { - var ret; - var state; - - if (!strm) { - return Z_STREAM_ERROR; - } //strm.msg = Z_NULL; /* in case we return an error */ - - - state = new InflateState(); //if (state === Z_NULL) return Z_MEM_ERROR; - //Tracev((stderr, "inflate: allocated\n")); - - strm.state = state; - state.window = null - /*Z_NULL*/ - ; - ret = inflateReset2(strm, windowBits); - - if (ret !== Z_OK) { - strm.state = null - /*Z_NULL*/ - ; - } - - return ret; -} - -function inflateInit(strm) { - return inflateInit2(strm, DEF_WBITS); -} -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ - - -var virgin = true; -var lenfix, distfix; // We have no pointers in JS, so keep tables separate - -function fixedtables(state) { - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - var sym; - lenfix = new utils.Buf32(512); - distfix = new utils.Buf32(32); - /* literal/length table */ - - sym = 0; - - while (sym < 144) { - state.lens[sym++] = 8; - } - - while (sym < 256) { - state.lens[sym++] = 9; - } - - while (sym < 280) { - state.lens[sym++] = 7; - } - - while (sym < 288) { - state.lens[sym++] = 8; - } - - inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { - bits: 9 - }); - /* distance table */ - - sym = 0; - - while (sym < 32) { - state.lens[sym++] = 5; - } - - inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { - bits: 5 - }); - /* do this just once */ - - virgin = false; - } - - state.lencode = lenfix; - state.lenbits = 9; - state.distcode = distfix; - state.distbits = 5; -} -/* - Update the window with the last wsize (normally 32K) bytes written before - returning. If window does not exist yet, create it. This is only called - when a window is already in use, or when output has been written during this - inflate call, but the end of the deflate stream has not been reached yet. - It is also called to create a window for dictionary data when a dictionary - is loaded. - - Providing output buffers larger than 32K to inflate() should provide a speed - advantage, since only the last 32K of output is copied to the sliding window - upon return from inflate(), and since all distances after the first 32K of - output will fall in the output data, making match copies simpler and faster. - The advantage may be dependent on the size of the processor's data caches. - */ - - -function updatewindow(strm, src, end, copy) { - var dist; - var state = strm.state; - /* if it hasn't been done already, allocate space for the window */ - - if (state.window === null) { - state.wsize = 1 << state.wbits; - state.wnext = 0; - state.whave = 0; - state.window = new utils.Buf8(state.wsize); - } - /* copy state->wsize or less output bytes into the circular window */ - - - if (copy >= state.wsize) { - utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0); - state.wnext = 0; - state.whave = state.wsize; - } else { - dist = state.wsize - state.wnext; - - if (dist > copy) { - dist = copy; - } //zmemcpy(state->window + state->wnext, end - copy, dist); - - - utils.arraySet(state.window, src, end - copy, dist, state.wnext); - copy -= dist; - - if (copy) { - //zmemcpy(state->window, end - copy, copy); - utils.arraySet(state.window, src, end - copy, copy, 0); - state.wnext = copy; - state.whave = state.wsize; - } else { - state.wnext += dist; - - if (state.wnext === state.wsize) { - state.wnext = 0; - } - - if (state.whave < state.wsize) { - state.whave += dist; - } - } - } - - return 0; -} - -function inflate(strm, flush) { - var state; - var input, output; // input/output buffers - - var next; - /* next input INDEX */ - - var put; - /* next output INDEX */ - - var have, left; - /* available input and output */ - - var hold; - /* bit buffer */ - - var bits; - /* bits in bit buffer */ - - var _in, _out; - /* save starting available input and output */ - - - var copy; - /* number of stored or match bytes to copy */ - - var from; - /* where to copy match bytes from */ - - var from_source; - var here = 0; - /* current decoding table entry */ - - var here_bits, here_op, here_val; // paked "here" denormalized (JS specific) - //var last; /* parent table entry */ - - var last_bits, last_op, last_val; // paked "last" denormalized (JS specific) - - var len; - /* length to copy for repeats, bits to drop */ - - var ret; - /* return code */ - - var hbuf = new utils.Buf8(4); - /* buffer for gzip header crc calculation */ - - var opts; - var n; // temporary var for NEED_BITS - - var order = - /* permutation of code lengths */ - [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - - if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) { - return Z_STREAM_ERROR; - } - - state = strm.state; - - if (state.mode === TYPE) { - state.mode = TYPEDO; - } - /* skip check */ - //--- LOAD() --- - - - put = strm.next_out; - output = strm.output; - left = strm.avail_out; - next = strm.next_in; - input = strm.input; - have = strm.avail_in; - hold = state.hold; - bits = state.bits; //--- - - _in = have; - _out = left; - ret = Z_OK; - - inf_leave: // goto emulation - for (;;) { - switch (state.mode) { - case HEAD: - if (state.wrap === 0) { - state.mode = TYPEDO; - break; - } //=== NEEDBITS(16); - - - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - if (state.wrap & 2 && hold === 0x8b1f) { - /* gzip header */ - state.check = 0 - /*crc32(0L, Z_NULL, 0)*/ - ; //=== CRC2(state.check, hold); - - hbuf[0] = hold & 0xff; - hbuf[1] = hold >>> 8 & 0xff; - state.check = crc32(state.check, hbuf, 2, 0); //===// - //=== INITBITS(); - - hold = 0; - bits = 0; //===// - - state.mode = FLAGS; - break; - } - - state.flags = 0; - /* expect zlib header */ - - if (state.head) { - state.head.done = false; - } - - if (!(state.wrap & 1) || - /* check if zlib header allowed */ - (((hold & 0xff) << - /*BITS(8)*/ - 8) + (hold >> 8)) % 31) { - strm.msg = 'incorrect header check'; - state.mode = BAD; - break; - } - - if ((hold & 0x0f) !== - /*BITS(4)*/ - Z_DEFLATED) { - strm.msg = 'unknown compression method'; - state.mode = BAD; - break; - } //--- DROPBITS(4) ---// - - - hold >>>= 4; - bits -= 4; //---// - - len = (hold & 0x0f) + - /*BITS(4)*/ - 8; - - if (state.wbits === 0) { - state.wbits = len; - } else if (len > state.wbits) { - strm.msg = 'invalid window size'; - state.mode = BAD; - break; - } - - state.dmax = 1 << len; //Tracev((stderr, "inflate: zlib header ok\n")); - - strm.adler = state.check = 1 - /*adler32(0L, Z_NULL, 0)*/ - ; - state.mode = hold & 0x200 ? DICTID : TYPE; //=== INITBITS(); - - hold = 0; - bits = 0; //===// - - break; - - case FLAGS: - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - state.flags = hold; - - if ((state.flags & 0xff) !== Z_DEFLATED) { - strm.msg = 'unknown compression method'; - state.mode = BAD; - break; - } - - if (state.flags & 0xe000) { - strm.msg = 'unknown header flags set'; - state.mode = BAD; - break; - } - - if (state.head) { - state.head.text = hold >> 8 & 1; - } - - if (state.flags & 0x0200) { - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = hold >>> 8 & 0xff; - state.check = crc32(state.check, hbuf, 2, 0); //===// - } //=== INITBITS(); - - - hold = 0; - bits = 0; //===// - - state.mode = TIME; - - /* falls through */ - - case TIME: - //=== NEEDBITS(32); */ - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - if (state.head) { - state.head.time = hold; - } - - if (state.flags & 0x0200) { - //=== CRC4(state.check, hold) - hbuf[0] = hold & 0xff; - hbuf[1] = hold >>> 8 & 0xff; - hbuf[2] = hold >>> 16 & 0xff; - hbuf[3] = hold >>> 24 & 0xff; - state.check = crc32(state.check, hbuf, 4, 0); //=== - } //=== INITBITS(); - - - hold = 0; - bits = 0; //===// - - state.mode = OS; - - /* falls through */ - - case OS: - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - if (state.head) { - state.head.xflags = hold & 0xff; - state.head.os = hold >> 8; - } - - if (state.flags & 0x0200) { - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = hold >>> 8 & 0xff; - state.check = crc32(state.check, hbuf, 2, 0); //===// - } //=== INITBITS(); - - - hold = 0; - bits = 0; //===// - - state.mode = EXLEN; - - /* falls through */ - - case EXLEN: - if (state.flags & 0x0400) { - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - state.length = hold; - - if (state.head) { - state.head.extra_len = hold; - } - - if (state.flags & 0x0200) { - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = hold >>> 8 & 0xff; - state.check = crc32(state.check, hbuf, 2, 0); //===// - } //=== INITBITS(); - - - hold = 0; - bits = 0; //===// - } else if (state.head) { - state.head.extra = null - /*Z_NULL*/ - ; - } - - state.mode = EXTRA; - - /* falls through */ - - case EXTRA: - if (state.flags & 0x0400) { - copy = state.length; - - if (copy > have) { - copy = have; - } - - if (copy) { - if (state.head) { - len = state.head.extra_len - state.length; - - if (!state.head.extra) { - // Use untyped array for more convenient processing later - state.head.extra = new Array(state.head.extra_len); - } - - utils.arraySet(state.head.extra, input, next, // extra field is limited to 65536 bytes - // - no need for additional size check - copy, - /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ - len); //zmemcpy(state.head.extra + len, next, - // len + copy > state.head.extra_max ? - // state.head.extra_max - len : copy); - } - - if (state.flags & 0x0200) { - state.check = crc32(state.check, input, copy, next); - } - - have -= copy; - next += copy; - state.length -= copy; - } - - if (state.length) { - break inf_leave; - } - } - - state.length = 0; - state.mode = NAME; - - /* falls through */ - - case NAME: - if (state.flags & 0x0800) { - if (have === 0) { - break inf_leave; - } - - copy = 0; - - do { - // TODO: 2 or 1 bytes? - len = input[next + copy++]; - /* use constant limit because in js we should not preallocate memory */ - - if (state.head && len && state.length < 65536 - /*state.head.name_max*/ - ) { - state.head.name += String.fromCharCode(len); - } - } while (len && copy < have); - - if (state.flags & 0x0200) { - state.check = crc32(state.check, input, copy, next); - } - - have -= copy; - next += copy; - - if (len) { - break inf_leave; - } - } else if (state.head) { - state.head.name = null; - } - - state.length = 0; - state.mode = COMMENT; - - /* falls through */ - - case COMMENT: - if (state.flags & 0x1000) { - if (have === 0) { - break inf_leave; - } - - copy = 0; - - do { - len = input[next + copy++]; - /* use constant limit because in js we should not preallocate memory */ - - if (state.head && len && state.length < 65536 - /*state.head.comm_max*/ - ) { - state.head.comment += String.fromCharCode(len); - } - } while (len && copy < have); - - if (state.flags & 0x0200) { - state.check = crc32(state.check, input, copy, next); - } - - have -= copy; - next += copy; - - if (len) { - break inf_leave; - } - } else if (state.head) { - state.head.comment = null; - } - - state.mode = HCRC; - - /* falls through */ - - case HCRC: - if (state.flags & 0x0200) { - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - if (hold !== (state.check & 0xffff)) { - strm.msg = 'header crc mismatch'; - state.mode = BAD; - break; - } //=== INITBITS(); - - - hold = 0; - bits = 0; //===// - } - - if (state.head) { - state.head.hcrc = state.flags >> 9 & 1; - state.head.done = true; - } - - strm.adler = state.check = 0; - state.mode = TYPE; - break; - - case DICTID: - //=== NEEDBITS(32); */ - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - strm.adler = state.check = zswap32(hold); //=== INITBITS(); - - hold = 0; - bits = 0; //===// - - state.mode = DICT; - - /* falls through */ - - case DICT: - if (state.havedict === 0) { - //--- RESTORE() --- - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; //--- - - return Z_NEED_DICT; - } - - strm.adler = state.check = 1 - /*adler32(0L, Z_NULL, 0)*/ - ; - state.mode = TYPE; - - /* falls through */ - - case TYPE: - if (flush === Z_BLOCK || flush === Z_TREES) { - break inf_leave; - } - - /* falls through */ - - case TYPEDO: - if (state.last) { - //--- BYTEBITS() ---// - hold >>>= bits & 7; - bits -= bits & 7; //---// - - state.mode = CHECK; - break; - } //=== NEEDBITS(3); */ - - - while (bits < 3) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - state.last = hold & 0x01 - /*BITS(1)*/ - ; //--- DROPBITS(1) ---// - - hold >>>= 1; - bits -= 1; //---// - - switch (hold & 0x03) { - /*BITS(2)*/ - case 0: - /* stored block */ - //Tracev((stderr, "inflate: stored block%s\n", - // state.last ? " (last)" : "")); - state.mode = STORED; - break; - - case 1: - /* fixed block */ - fixedtables(state); //Tracev((stderr, "inflate: fixed codes block%s\n", - // state.last ? " (last)" : "")); - - state.mode = LEN_; - /* decode codes */ - - if (flush === Z_TREES) { - //--- DROPBITS(2) ---// - hold >>>= 2; - bits -= 2; //---// - - break inf_leave; - } - - break; - - case 2: - /* dynamic block */ - //Tracev((stderr, "inflate: dynamic codes block%s\n", - // state.last ? " (last)" : "")); - state.mode = TABLE; - break; - - case 3: - strm.msg = 'invalid block type'; - state.mode = BAD; - } //--- DROPBITS(2) ---// - - - hold >>>= 2; - bits -= 2; //---// - - break; - - case STORED: - //--- BYTEBITS() ---// /* go to byte boundary */ - hold >>>= bits & 7; - bits -= bits & 7; //---// - //=== NEEDBITS(32); */ - - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - if ((hold & 0xffff) !== (hold >>> 16 ^ 0xffff)) { - strm.msg = 'invalid stored block lengths'; - state.mode = BAD; - break; - } - - state.length = hold & 0xffff; //Tracev((stderr, "inflate: stored length %u\n", - // state.length)); - //=== INITBITS(); - - hold = 0; - bits = 0; //===// - - state.mode = COPY_; - - if (flush === Z_TREES) { - break inf_leave; - } - - /* falls through */ - - case COPY_: - state.mode = COPY; - - /* falls through */ - - case COPY: - copy = state.length; - - if (copy) { - if (copy > have) { - copy = have; - } - - if (copy > left) { - copy = left; - } - - if (copy === 0) { - break inf_leave; - } //--- zmemcpy(put, next, copy); --- - - - utils.arraySet(output, input, next, copy, put); //---// - - have -= copy; - next += copy; - left -= copy; - put += copy; - state.length -= copy; - break; - } //Tracev((stderr, "inflate: stored end\n")); - - - state.mode = TYPE; - break; - - case TABLE: - //=== NEEDBITS(14); */ - while (bits < 14) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - state.nlen = (hold & 0x1f) + - /*BITS(5)*/ - 257; //--- DROPBITS(5) ---// - - hold >>>= 5; - bits -= 5; //---// - - state.ndist = (hold & 0x1f) + - /*BITS(5)*/ - 1; //--- DROPBITS(5) ---// - - hold >>>= 5; - bits -= 5; //---// - - state.ncode = (hold & 0x0f) + - /*BITS(4)*/ - 4; //--- DROPBITS(4) ---// - - hold >>>= 4; - bits -= 4; //---// - //#ifndef PKZIP_BUG_WORKAROUND - - if (state.nlen > 286 || state.ndist > 30) { - strm.msg = 'too many length or distance symbols'; - state.mode = BAD; - break; - } //#endif - //Tracev((stderr, "inflate: table sizes ok\n")); - - - state.have = 0; - state.mode = LENLENS; - - /* falls through */ - - case LENLENS: - while (state.have < state.ncode) { - //=== NEEDBITS(3); - while (bits < 3) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - state.lens[order[state.have++]] = hold & 0x07; //BITS(3); - //--- DROPBITS(3) ---// - - hold >>>= 3; - bits -= 3; //---// - } - - while (state.have < 19) { - state.lens[order[state.have++]] = 0; - } // We have separate tables & no pointers. 2 commented lines below not needed. - //state.next = state.codes; - //state.lencode = state.next; - // Switch to use dynamic table - - - state.lencode = state.lendyn; - state.lenbits = 7; - opts = { - bits: state.lenbits - }; - ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); - state.lenbits = opts.bits; - - if (ret) { - strm.msg = 'invalid code lengths set'; - state.mode = BAD; - break; - } //Tracev((stderr, "inflate: code lengths ok\n")); - - - state.have = 0; - state.mode = CODELENS; - - /* falls through */ - - case CODELENS: - while (state.have < state.nlen + state.ndist) { - for (;;) { - here = state.lencode[hold & (1 << state.lenbits) - 1]; - /*BITS(state.lenbits)*/ - - here_bits = here >>> 24; - here_op = here >>> 16 & 0xff; - here_val = here & 0xffff; - - if (here_bits <= bits) { - break; - } //--- PULLBYTE() ---// - - - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; //---// - } - - if (here_val < 16) { - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; //---// - - state.lens[state.have++] = here_val; - } else { - if (here_val === 16) { - //=== NEEDBITS(here.bits + 2); - n = here_bits + 2; - - while (bits < n) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - //--- DROPBITS(here.bits) ---// - - - hold >>>= here_bits; - bits -= here_bits; //---// - - if (state.have === 0) { - strm.msg = 'invalid bit length repeat'; - state.mode = BAD; - break; - } - - len = state.lens[state.have - 1]; - copy = 3 + (hold & 0x03); //BITS(2); - //--- DROPBITS(2) ---// - - hold >>>= 2; - bits -= 2; //---// - } else if (here_val === 17) { - //=== NEEDBITS(here.bits + 3); - n = here_bits + 3; - - while (bits < n) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - //--- DROPBITS(here.bits) ---// - - - hold >>>= here_bits; - bits -= here_bits; //---// - - len = 0; - copy = 3 + (hold & 0x07); //BITS(3); - //--- DROPBITS(3) ---// - - hold >>>= 3; - bits -= 3; //---// - } else { - //=== NEEDBITS(here.bits + 7); - n = here_bits + 7; - - while (bits < n) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - //--- DROPBITS(here.bits) ---// - - - hold >>>= here_bits; - bits -= here_bits; //---// - - len = 0; - copy = 11 + (hold & 0x7f); //BITS(7); - //--- DROPBITS(7) ---// - - hold >>>= 7; - bits -= 7; //---// - } - - if (state.have + copy > state.nlen + state.ndist) { - strm.msg = 'invalid bit length repeat'; - state.mode = BAD; - break; - } - - while (copy--) { - state.lens[state.have++] = len; - } - } - } - /* handle error breaks in while */ - - - if (state.mode === BAD) { - break; - } - /* check for end-of-block code (better have one) */ - - - if (state.lens[256] === 0) { - strm.msg = 'invalid code -- missing end-of-block'; - state.mode = BAD; - break; - } - /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h - concerning the ENOUGH constants, which depend on those values */ - - - state.lenbits = 9; - opts = { - bits: state.lenbits - }; - ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); // We have separate tables & no pointers. 2 commented lines below not needed. - // state.next_index = opts.table_index; - - state.lenbits = opts.bits; // state.lencode = state.next; - - if (ret) { - strm.msg = 'invalid literal/lengths set'; - state.mode = BAD; - break; - } - - state.distbits = 6; //state.distcode.copy(state.codes); - // Switch to use dynamic table - - state.distcode = state.distdyn; - opts = { - bits: state.distbits - }; - ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); // We have separate tables & no pointers. 2 commented lines below not needed. - // state.next_index = opts.table_index; - - state.distbits = opts.bits; // state.distcode = state.next; - - if (ret) { - strm.msg = 'invalid distances set'; - state.mode = BAD; - break; - } //Tracev((stderr, 'inflate: codes ok\n')); - - - state.mode = LEN_; - - if (flush === Z_TREES) { - break inf_leave; - } - - /* falls through */ - - case LEN_: - state.mode = LEN; - - /* falls through */ - - case LEN: - if (have >= 6 && left >= 258) { - //--- RESTORE() --- - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; //--- - - inflate_fast(strm, _out); //--- LOAD() --- - - put = strm.next_out; - output = strm.output; - left = strm.avail_out; - next = strm.next_in; - input = strm.input; - have = strm.avail_in; - hold = state.hold; - bits = state.bits; //--- - - if (state.mode === TYPE) { - state.back = -1; - } - - break; - } - - state.back = 0; - - for (;;) { - here = state.lencode[hold & (1 << state.lenbits) - 1]; - /*BITS(state.lenbits)*/ - - here_bits = here >>> 24; - here_op = here >>> 16 & 0xff; - here_val = here & 0xffff; - - if (here_bits <= bits) { - break; - } //--- PULLBYTE() ---// - - - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; //---// - } - - if (here_op && (here_op & 0xf0) === 0) { - last_bits = here_bits; - last_op = here_op; - last_val = here_val; - - for (;;) { - here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> - /*BITS(last.bits + last.op)*/ - last_bits)]; - here_bits = here >>> 24; - here_op = here >>> 16 & 0xff; - here_val = here & 0xffff; - - if (last_bits + here_bits <= bits) { - break; - } //--- PULLBYTE() ---// - - - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; //---// - } //--- DROPBITS(last.bits) ---// - - - hold >>>= last_bits; - bits -= last_bits; //---// - - state.back += last_bits; - } //--- DROPBITS(here.bits) ---// - - - hold >>>= here_bits; - bits -= here_bits; //---// - - state.back += here_bits; - state.length = here_val; - - if (here_op === 0) { - //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - // "inflate: literal '%c'\n" : - // "inflate: literal 0x%02x\n", here.val)); - state.mode = LIT; - break; - } - - if (here_op & 32) { - //Tracevv((stderr, "inflate: end of block\n")); - state.back = -1; - state.mode = TYPE; - break; - } - - if (here_op & 64) { - strm.msg = 'invalid literal/length code'; - state.mode = BAD; - break; - } - - state.extra = here_op & 15; - state.mode = LENEXT; - - /* falls through */ - - case LENEXT: - if (state.extra) { - //=== NEEDBITS(state.extra); - n = state.extra; - - while (bits < n) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - state.length += hold & (1 << state.extra) - 1 - /*BITS(state.extra)*/ - ; //--- DROPBITS(state.extra) ---// - - hold >>>= state.extra; - bits -= state.extra; //---// - - state.back += state.extra; - } //Tracevv((stderr, "inflate: length %u\n", state.length)); - - - state.was = state.length; - state.mode = DIST; - - /* falls through */ - - case DIST: - for (;;) { - here = state.distcode[hold & (1 << state.distbits) - 1]; - /*BITS(state.distbits)*/ - - here_bits = here >>> 24; - here_op = here >>> 16 & 0xff; - here_val = here & 0xffff; - - if (here_bits <= bits) { - break; - } //--- PULLBYTE() ---// - - - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; //---// - } - - if ((here_op & 0xf0) === 0) { - last_bits = here_bits; - last_op = here_op; - last_val = here_val; - - for (;;) { - here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> - /*BITS(last.bits + last.op)*/ - last_bits)]; - here_bits = here >>> 24; - here_op = here >>> 16 & 0xff; - here_val = here & 0xffff; - - if (last_bits + here_bits <= bits) { - break; - } //--- PULLBYTE() ---// - - - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; //---// - } //--- DROPBITS(last.bits) ---// - - - hold >>>= last_bits; - bits -= last_bits; //---// - - state.back += last_bits; - } //--- DROPBITS(here.bits) ---// - - - hold >>>= here_bits; - bits -= here_bits; //---// - - state.back += here_bits; - - if (here_op & 64) { - strm.msg = 'invalid distance code'; - state.mode = BAD; - break; - } - - state.offset = here_val; - state.extra = here_op & 15; - state.mode = DISTEXT; - - /* falls through */ - - case DISTEXT: - if (state.extra) { - //=== NEEDBITS(state.extra); - n = state.extra; - - while (bits < n) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - state.offset += hold & (1 << state.extra) - 1 - /*BITS(state.extra)*/ - ; //--- DROPBITS(state.extra) ---// - - hold >>>= state.extra; - bits -= state.extra; //---// - - state.back += state.extra; - } //#ifdef INFLATE_STRICT - - - if (state.offset > state.dmax) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD; - break; - } //#endif - //Tracevv((stderr, "inflate: distance %u\n", state.offset)); - - - state.mode = MATCH; - - /* falls through */ - - case MATCH: - if (left === 0) { - break inf_leave; - } - - copy = _out - left; - - if (state.offset > copy) { - /* copy from window */ - copy = state.offset - copy; - - if (copy > state.whave) { - if (state.sane) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD; - break; - } // (!) This block is disabled in zlib defaults, - // don't enable it for binary compatibility - //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - // Trace((stderr, "inflate.c too far\n")); - // copy -= state.whave; - // if (copy > state.length) { copy = state.length; } - // if (copy > left) { copy = left; } - // left -= copy; - // state.length -= copy; - // do { - // output[put++] = 0; - // } while (--copy); - // if (state.length === 0) { state.mode = LEN; } - // break; - //#endif - - } - - if (copy > state.wnext) { - copy -= state.wnext; - from = state.wsize - copy; - } else { - from = state.wnext - copy; - } - - if (copy > state.length) { - copy = state.length; - } - - from_source = state.window; - } else { - /* copy from output */ - from_source = output; - from = put - state.offset; - copy = state.length; - } - - if (copy > left) { - copy = left; - } - - left -= copy; - state.length -= copy; - - do { - output[put++] = from_source[from++]; - } while (--copy); - - if (state.length === 0) { - state.mode = LEN; - } - - break; - - case LIT: - if (left === 0) { - break inf_leave; - } - - output[put++] = state.length; - left--; - state.mode = LEN; - break; - - case CHECK: - if (state.wrap) { - //=== NEEDBITS(32); - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - - have--; // Use '|' instead of '+' to make sure that result is signed - - hold |= input[next++] << bits; - bits += 8; - } //===// - - - _out -= left; - strm.total_out += _out; - state.total += _out; - - if (_out) { - strm.adler = state.check = - /*UPDATE(state.check, put - _out, _out);*/ - state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out); - } - - _out = left; // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too - - if ((state.flags ? hold : zswap32(hold)) !== state.check) { - strm.msg = 'incorrect data check'; - state.mode = BAD; - break; - } //=== INITBITS(); - - - hold = 0; - bits = 0; //===// - //Tracev((stderr, "inflate: check matches trailer\n")); - } - - state.mode = LENGTH; - - /* falls through */ - - case LENGTH: - if (state.wrap && state.flags) { - //=== NEEDBITS(32); - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - - have--; - hold += input[next++] << bits; - bits += 8; - } //===// - - - if (hold !== (state.total & 0xffffffff)) { - strm.msg = 'incorrect length check'; - state.mode = BAD; - break; - } //=== INITBITS(); - - - hold = 0; - bits = 0; //===// - //Tracev((stderr, "inflate: length matches trailer\n")); - } - - state.mode = DONE; - - /* falls through */ - - case DONE: - ret = Z_STREAM_END; - break inf_leave; - - case BAD: - ret = Z_DATA_ERROR; - break inf_leave; - - case MEM: - return Z_MEM_ERROR; - - case SYNC: - /* falls through */ - - default: - return Z_STREAM_ERROR; - } - } // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave" - - /* - Return from inflate(), updating the total counts and the check value. - If there was no progress during the inflate() call, return a buffer - error. Call updatewindow() to create and/or update the window state. - Note: a memory error from inflate() is non-recoverable. - */ - //--- RESTORE() --- - - - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; //--- - - if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH)) { - if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) { - state.mode = MEM; - return Z_MEM_ERROR; - } - } - - _in -= strm.avail_in; - _out -= strm.avail_out; - strm.total_in += _in; - strm.total_out += _out; - state.total += _out; - - if (state.wrap && _out) { - strm.adler = state.check = - /*UPDATE(state.check, strm.next_out - _out, _out);*/ - state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out); - } - - strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); - - if ((_in === 0 && _out === 0 || flush === Z_FINISH) && ret === Z_OK) { - ret = Z_BUF_ERROR; - } - - return ret; -} - -function inflateEnd(strm) { - if (!strm || !strm.state - /*|| strm->zfree == (free_func)0*/ - ) { - return Z_STREAM_ERROR; - } - - var state = strm.state; - - if (state.window) { - state.window = null; - } - - strm.state = null; - return Z_OK; -} - -function inflateGetHeader(strm, head) { - var state; - /* check state */ - - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - - state = strm.state; - - if ((state.wrap & 2) === 0) { - return Z_STREAM_ERROR; - } - /* save header structure */ - - - state.head = head; - head.done = false; - return Z_OK; -} - -function inflateSetDictionary(strm, dictionary) { - var dictLength = dictionary.length; - var state; - var dictid; - var ret; - /* check state */ - - if (!strm - /* == Z_NULL */ - || !strm.state - /* == Z_NULL */ - ) { - return Z_STREAM_ERROR; - } - - state = strm.state; - - if (state.wrap !== 0 && state.mode !== DICT) { - return Z_STREAM_ERROR; - } - /* check for correct dictionary identifier */ - - - if (state.mode === DICT) { - dictid = 1; - /* adler32(0, null, 0)*/ - - /* dictid = adler32(dictid, dictionary, dictLength); */ - - dictid = adler32(dictid, dictionary, dictLength, 0); - - if (dictid !== state.check) { - return Z_DATA_ERROR; - } - } - /* copy dictionary to window using updatewindow(), which will amend the - existing dictionary if appropriate */ - - - ret = updatewindow(strm, dictionary, dictLength, dictLength); - - if (ret) { - state.mode = MEM; - return Z_MEM_ERROR; - } - - state.havedict = 1; // Tracev((stderr, "inflate: dictionary set\n")); - - return Z_OK; -} - -exports.inflateReset = inflateReset; -exports.inflateReset2 = inflateReset2; -exports.inflateResetKeep = inflateResetKeep; -exports.inflateInit = inflateInit; -exports.inflateInit2 = inflateInit2; -exports.inflate = inflate; -exports.inflateEnd = inflateEnd; -exports.inflateGetHeader = inflateGetHeader; -exports.inflateSetDictionary = inflateSetDictionary; -exports.inflateInfo = 'pako inflate (from Nodeca project)'; -/* Not implemented -exports.inflateCopy = inflateCopy; -exports.inflateGetDictionary = inflateGetDictionary; -exports.inflateMark = inflateMark; -exports.inflatePrime = inflatePrime; -exports.inflateSync = inflateSync; -exports.inflateSyncPoint = inflateSyncPoint; -exports.inflateUndermine = inflateUndermine; -*/ - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/inftrees.js": -/*!************************************************!*\ - !*** ./node_modules/pako/lib/zlib/inftrees.js ***! - \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -var utils = __webpack_require__(/*! ../utils/common */ "./node_modules/pako/lib/utils/common.js"); - -var MAXBITS = 15; -var ENOUGH_LENS = 852; -var ENOUGH_DISTS = 592; //var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); - -var CODES = 0; -var LENS = 1; -var DISTS = 2; -var lbase = [ -/* Length codes 257..285 base */ -3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]; -var lext = [ -/* Length codes 257..285 extra */ -16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78]; -var dbase = [ -/* Distance codes 0..29 base */ -1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0]; -var dext = [ -/* Distance codes 0..29 extra */ -16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; - -module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) { - var bits = opts.bits; //here = opts.here; /* table entry for duplication */ - - var len = 0; - /* a code's length in bits */ - - var sym = 0; - /* index of code symbols */ - - var min = 0, - max = 0; - /* minimum and maximum code lengths */ - - var root = 0; - /* number of index bits for root table */ - - var curr = 0; - /* number of index bits for current table */ - - var drop = 0; - /* code bits to drop for sub-table */ - - var left = 0; - /* number of prefix codes available */ - - var used = 0; - /* code entries in table used */ - - var huff = 0; - /* Huffman code */ - - var incr; - /* for incrementing code, index */ - - var fill; - /* index for replicating entries */ - - var low; - /* low bits for current root entry */ - - var mask; - /* mask for low root bits */ - - var next; - /* next available space in table */ - - var base = null; - /* base value table to use */ - - var base_index = 0; // var shoextra; /* extra bits table to use */ - - var end; - /* use base and extra for symbol > end */ - - var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */ - - var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */ - - var extra = null; - var extra_index = 0; - var here_bits, here_op, here_val; - /* - Process a set of code lengths to create a canonical Huffman code. The - code lengths are lens[0..codes-1]. Each length corresponds to the - symbols 0..codes-1. The Huffman code is generated by first sorting the - symbols by length from short to long, and retaining the symbol order - for codes with equal lengths. Then the code starts with all zero bits - for the first code of the shortest length, and the codes are integer - increments for the same length, and zeros are appended as the length - increases. For the deflate format, these bits are stored backwards - from their more natural integer increment ordering, and so when the - decoding tables are built in the large loop below, the integer codes - are incremented backwards. - This routine assumes, but does not check, that all of the entries in - lens[] are in the range 0..MAXBITS. The caller must assure this. - 1..MAXBITS is interpreted as that code length. zero means that that - symbol does not occur in this code. - The codes are sorted by computing a count of codes for each length, - creating from that a table of starting indices for each length in the - sorted table, and then entering the symbols in order in the sorted - table. The sorted table is work[], with that space being provided by - the caller. - The length counts are used for other purposes as well, i.e. finding - the minimum and maximum length codes, determining if there are any - codes at all, checking for a valid set of lengths, and looking ahead - at length counts to determine sub-table sizes when building the - decoding tables. - */ - - /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ - - for (len = 0; len <= MAXBITS; len++) { - count[len] = 0; - } - - for (sym = 0; sym < codes; sym++) { - count[lens[lens_index + sym]]++; - } - /* bound code lengths, force root to be within code lengths */ - - - root = bits; - - for (max = MAXBITS; max >= 1; max--) { - if (count[max] !== 0) { - break; - } - } - - if (root > max) { - root = max; - } - - if (max === 0) { - /* no symbols to code at all */ - //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */ - //table.bits[opts.table_index] = 1; //here.bits = (var char)1; - //table.val[opts.table_index++] = 0; //here.val = (var short)0; - table[table_index++] = 1 << 24 | 64 << 16 | 0; //table.op[opts.table_index] = 64; - //table.bits[opts.table_index] = 1; - //table.val[opts.table_index++] = 0; - - table[table_index++] = 1 << 24 | 64 << 16 | 0; - opts.bits = 1; - return 0; - /* no symbols, but wait for decoding to report error */ - } - - for (min = 1; min < max; min++) { - if (count[min] !== 0) { - break; - } - } - - if (root < min) { - root = min; - } - /* check for an over-subscribed or incomplete set of lengths */ - - - left = 1; - - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; - left -= count[len]; - - if (left < 0) { - return -1; - } - /* over-subscribed */ - - } - - if (left > 0 && (type === CODES || max !== 1)) { - return -1; - /* incomplete set */ - } - /* generate offsets into symbol table for each length for sorting */ - - - offs[1] = 0; - - for (len = 1; len < MAXBITS; len++) { - offs[len + 1] = offs[len] + count[len]; - } - /* sort symbols by length, by symbol order within each length */ - - - for (sym = 0; sym < codes; sym++) { - if (lens[lens_index + sym] !== 0) { - work[offs[lens[lens_index + sym]]++] = sym; - } - } - /* - Create and fill in decoding tables. In this loop, the table being - filled is at next and has curr index bits. The code being used is huff - with length len. That code is converted to an index by dropping drop - bits off of the bottom. For codes where len is less than drop + curr, - those top drop + curr - len bits are incremented through all values to - fill the table with replicated entries. - root is the number of index bits for the root table. When len exceeds - root, sub-tables are created pointed to by the root entry with an index - of the low root bits of huff. This is saved in low to check for when a - new sub-table should be started. drop is zero when the root table is - being filled, and drop is root when sub-tables are being filled. - When a new sub-table is needed, it is necessary to look ahead in the - code lengths to determine what size sub-table is needed. The length - counts are used for this, and so count[] is decremented as codes are - entered in the tables. - used keeps track of how many table entries have been allocated from the - provided *table space. It is checked for LENS and DIST tables against - the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in - the initial root table size constants. See the comments in inftrees.h - for more information. - sym increments through all symbols, and the loop terminates when - all codes of length max, i.e. all codes, have been processed. This - routine permits incomplete codes, so another loop after this one fills - in the rest of the decoding tables with invalid code markers. - */ - - /* set up for code type */ - // poor man optimization - use if-else instead of switch, - // to avoid deopts in old v8 - - - if (type === CODES) { - base = extra = work; - /* dummy value--not used */ - - end = 19; - } else if (type === LENS) { - base = lbase; - base_index -= 257; - extra = lext; - extra_index -= 257; - end = 256; - } else { - /* DISTS */ - base = dbase; - extra = dext; - end = -1; - } - /* initialize opts for loop */ - - - huff = 0; - /* starting code */ - - sym = 0; - /* starting code symbol */ - - len = min; - /* starting code length */ - - next = table_index; - /* current table to fill in */ - - curr = root; - /* current table index bits */ - - drop = 0; - /* current bits to drop from code for index */ - - low = -1; - /* trigger new sub-table when len > root */ - - used = 1 << root; - /* use root table entries */ - - mask = used - 1; - /* mask for comparing low */ - - /* check available table space */ - - if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { - return 1; - } - /* process all codes and make table entries */ - - - for (;;) { - /* create table entry */ - here_bits = len - drop; - - if (work[sym] < end) { - here_op = 0; - here_val = work[sym]; - } else if (work[sym] > end) { - here_op = extra[extra_index + work[sym]]; - here_val = base[base_index + work[sym]]; - } else { - here_op = 32 + 64; - /* end of block */ - - here_val = 0; - } - /* replicate for those indices with low len bits equal to huff */ - - - incr = 1 << len - drop; - fill = 1 << curr; - min = fill; - /* save offset to next table */ - - do { - fill -= incr; - table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0; - } while (fill !== 0); - /* backwards increment the len-bit code huff */ - - - incr = 1 << len - 1; - - while (huff & incr) { - incr >>= 1; - } - - if (incr !== 0) { - huff &= incr - 1; - huff += incr; - } else { - huff = 0; - } - /* go to next symbol, update count, len */ - - - sym++; - - if (--count[len] === 0) { - if (len === max) { - break; - } - - len = lens[lens_index + work[sym]]; - } - /* create new sub-table if needed */ - - - if (len > root && (huff & mask) !== low) { - /* if first time, transition to sub-tables */ - if (drop === 0) { - drop = root; - } - /* increment past last table */ - - - next += min; - /* here min is 1 << curr */ - - /* determine length of next table */ - - curr = len - drop; - left = 1 << curr; - - while (curr + drop < max) { - left -= count[curr + drop]; - - if (left <= 0) { - break; - } - - curr++; - left <<= 1; - } - /* check for enough space */ - - - used += 1 << curr; - - if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { - return 1; - } - /* point entry in root table to sub-table */ - - - low = huff & mask; - /*table.op[low] = curr; - table.bits[low] = root; - table.val[low] = next - opts.table_index;*/ - - table[low] = root << 24 | curr << 16 | next - table_index | 0; - } - } - /* fill in remaining table entry if code is incomplete (guaranteed to have - at most one remaining entry, since if the code is incomplete, the - maximum code length that was allowed to get this far is one bit) */ - - - if (huff !== 0) { - //table.op[next + huff] = 64; /* invalid code marker */ - //table.bits[next + huff] = len - drop; - //table.val[next + huff] = 0; - table[next + huff] = len - drop << 24 | 64 << 16 | 0; - } - /* set return parameters */ - //opts.table_index += used; - - - opts.bits = root; - return 0; -}; - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/messages.js": -/*!************************************************!*\ - !*** ./node_modules/pako/lib/zlib/messages.js ***! - \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -module.exports = { - 2: 'need dictionary', - - /* Z_NEED_DICT 2 */ - 1: 'stream end', - - /* Z_STREAM_END 1 */ - 0: '', - - /* Z_OK 0 */ - '-1': 'file error', - - /* Z_ERRNO (-1) */ - '-2': 'stream error', - - /* Z_STREAM_ERROR (-2) */ - '-3': 'data error', - - /* Z_DATA_ERROR (-3) */ - '-4': 'insufficient memory', - - /* Z_MEM_ERROR (-4) */ - '-5': 'buffer error', - - /* Z_BUF_ERROR (-5) */ - '-6': 'incompatible version' - /* Z_VERSION_ERROR (-6) */ - -}; - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/trees.js": -/*!*********************************************!*\ - !*** ./node_modules/pako/lib/zlib/trees.js ***! - \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -/* eslint-disable space-unary-ops */ - -var utils = __webpack_require__(/*! ../utils/common */ "./node_modules/pako/lib/utils/common.js"); -/* Public constants ==========================================================*/ - -/* ===========================================================================*/ -//var Z_FILTERED = 1; -//var Z_HUFFMAN_ONLY = 2; -//var Z_RLE = 3; - - -var Z_FIXED = 4; //var Z_DEFAULT_STRATEGY = 0; - -/* Possible values of the data_type field (though see inflate()) */ - -var Z_BINARY = 0; -var Z_TEXT = 1; //var Z_ASCII = 1; // = Z_TEXT - -var Z_UNKNOWN = 2; -/*============================================================================*/ - -function zero(buf) { - var len = buf.length; - - while (--len >= 0) { - buf[len] = 0; - } -} // From zutil.h - - -var STORED_BLOCK = 0; -var STATIC_TREES = 1; -var DYN_TREES = 2; -/* The three kinds of block type */ - -var MIN_MATCH = 3; -var MAX_MATCH = 258; -/* The minimum and maximum match lengths */ -// From deflate.h - -/* =========================================================================== - * Internal compression state. - */ - -var LENGTH_CODES = 29; -/* number of length codes, not counting the special END_BLOCK code */ - -var LITERALS = 256; -/* number of literal bytes 0..255 */ - -var L_CODES = LITERALS + 1 + LENGTH_CODES; -/* number of Literal or Length codes, including the END_BLOCK code */ - -var D_CODES = 30; -/* number of distance codes */ - -var BL_CODES = 19; -/* number of codes used to transfer the bit lengths */ - -var HEAP_SIZE = 2 * L_CODES + 1; -/* maximum heap size */ - -var MAX_BITS = 15; -/* All codes must not exceed MAX_BITS bits */ - -var Buf_size = 16; -/* size of bit buffer in bi_buf */ - -/* =========================================================================== - * Constants - */ - -var MAX_BL_BITS = 7; -/* Bit length codes must not exceed MAX_BL_BITS bits */ - -var END_BLOCK = 256; -/* end of block literal code */ - -var REP_3_6 = 16; -/* repeat previous bit length 3-6 times (2 bits of repeat count) */ - -var REPZ_3_10 = 17; -/* repeat a zero length 3-10 times (3 bits of repeat count) */ - -var REPZ_11_138 = 18; -/* repeat a zero length 11-138 times (7 bits of repeat count) */ - -/* eslint-disable comma-spacing,array-bracket-spacing */ - -var extra_lbits = -/* extra bits for each length code */ -[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]; -var extra_dbits = -/* extra bits for each distance code */ -[0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]; -var extra_blbits = -/* extra bits for each bit length code */ -[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]; -var bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; -/* eslint-enable comma-spacing,array-bracket-spacing */ - -/* The lengths of the bit length codes are sent in order of decreasing - * probability, to avoid transmitting the lengths for unused bit length codes. - */ - -/* =========================================================================== - * Local data. These are initialized only once. - */ -// We pre-fill arrays with 0 to avoid uninitialized gaps - -var DIST_CODE_LEN = 512; -/* see definition of array dist_code below */ -// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1 - -var static_ltree = new Array((L_CODES + 2) * 2); -zero(static_ltree); -/* The static literal tree. Since the bit lengths are imposed, there is no - * need for the L_CODES extra codes used during heap construction. However - * The codes 286 and 287 are needed to build a canonical tree (see _tr_init - * below). - */ - -var static_dtree = new Array(D_CODES * 2); -zero(static_dtree); -/* The static distance tree. (Actually a trivial tree since all codes use - * 5 bits.) - */ - -var _dist_code = new Array(DIST_CODE_LEN); - -zero(_dist_code); -/* Distance codes. The first 256 values correspond to the distances - * 3 .. 258, the last 256 values correspond to the top 8 bits of - * the 15 bit distances. - */ - -var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1); - -zero(_length_code); -/* length code for each normalized match length (0 == MIN_MATCH) */ - -var base_length = new Array(LENGTH_CODES); -zero(base_length); -/* First normalized length for each code (0 = MIN_MATCH) */ - -var base_dist = new Array(D_CODES); -zero(base_dist); -/* First normalized distance for each code (0 = distance of 1) */ - -function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { - this.static_tree = static_tree; - /* static tree or NULL */ - - this.extra_bits = extra_bits; - /* extra bits for each code or NULL */ - - this.extra_base = extra_base; - /* base index for extra_bits */ - - this.elems = elems; - /* max number of elements in the tree */ - - this.max_length = max_length; - /* max bit length for the codes */ - // show if `static_tree` has data or dummy - needed for monomorphic objects - - this.has_stree = static_tree && static_tree.length; -} - -var static_l_desc; -var static_d_desc; -var static_bl_desc; - -function TreeDesc(dyn_tree, stat_desc) { - this.dyn_tree = dyn_tree; - /* the dynamic tree */ - - this.max_code = 0; - /* largest code with non zero frequency */ - - this.stat_desc = stat_desc; - /* the corresponding static tree */ -} - -function d_code(dist) { - return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; -} -/* =========================================================================== - * Output a short LSB first on the stream. - * IN assertion: there is enough room in pendingBuf. - */ - - -function put_short(s, w) { - // put_byte(s, (uch)((w) & 0xff)); - // put_byte(s, (uch)((ush)(w) >> 8)); - s.pending_buf[s.pending++] = w & 0xff; - s.pending_buf[s.pending++] = w >>> 8 & 0xff; -} -/* =========================================================================== - * Send a value on a given number of bits. - * IN assertion: length <= 16 and value fits in length bits. - */ - - -function send_bits(s, value, length) { - if (s.bi_valid > Buf_size - length) { - s.bi_buf |= value << s.bi_valid & 0xffff; - put_short(s, s.bi_buf); - s.bi_buf = value >> Buf_size - s.bi_valid; - s.bi_valid += length - Buf_size; - } else { - s.bi_buf |= value << s.bi_valid & 0xffff; - s.bi_valid += length; - } -} - -function send_code(s, c, tree) { - send_bits(s, tree[c * 2] - /*.Code*/ - , tree[c * 2 + 1] - /*.Len*/ - ); -} -/* =========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ - - -function bi_reverse(code, len) { - var res = 0; - - do { - res |= code & 1; - code >>>= 1; - res <<= 1; - } while (--len > 0); - - return res >>> 1; -} -/* =========================================================================== - * Flush the bit buffer, keeping at most 7 bits in it. - */ - - -function bi_flush(s) { - if (s.bi_valid === 16) { - put_short(s, s.bi_buf); - s.bi_buf = 0; - s.bi_valid = 0; - } else if (s.bi_valid >= 8) { - s.pending_buf[s.pending++] = s.bi_buf & 0xff; - s.bi_buf >>= 8; - s.bi_valid -= 8; - } -} -/* =========================================================================== - * Compute the optimal bit lengths for a tree and update the total bit length - * for the current block. - * IN assertion: the fields freq and dad are set, heap[heap_max] and - * above are the tree nodes sorted by increasing frequency. - * OUT assertions: the field len is set to the optimal bit length, the - * array bl_count contains the frequencies for each bit length. - * The length opt_len is updated; static_len is also updated if stree is - * not null. - */ - - -function gen_bitlen(s, desc) // deflate_state *s; -// tree_desc *desc; /* the tree descriptor */ -{ - var tree = desc.dyn_tree; - var max_code = desc.max_code; - var stree = desc.stat_desc.static_tree; - var has_stree = desc.stat_desc.has_stree; - var extra = desc.stat_desc.extra_bits; - var base = desc.stat_desc.extra_base; - var max_length = desc.stat_desc.max_length; - var h; - /* heap index */ - - var n, m; - /* iterate over the tree elements */ - - var bits; - /* bit length */ - - var xbits; - /* extra bits */ - - var f; - /* frequency */ - - var overflow = 0; - /* number of elements with bit length too large */ - - for (bits = 0; bits <= MAX_BITS; bits++) { - s.bl_count[bits] = 0; - } - /* In a first pass, compute the optimal bit lengths (which may - * overflow in the case of the bit length tree). - */ - - - tree[s.heap[s.heap_max] * 2 + 1] - /*.Len*/ - = 0; - /* root of the heap */ - - for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { - n = s.heap[h]; - bits = tree[tree[n * 2 + 1] - /*.Dad*/ - * 2 + 1] - /*.Len*/ - + 1; - - if (bits > max_length) { - bits = max_length; - overflow++; - } - - tree[n * 2 + 1] - /*.Len*/ - = bits; - /* We overwrite tree[n].Dad which is no longer needed */ - - if (n > max_code) { - continue; - } - /* not a leaf node */ - - - s.bl_count[bits]++; - xbits = 0; - - if (n >= base) { - xbits = extra[n - base]; - } - - f = tree[n * 2] - /*.Freq*/ - ; - s.opt_len += f * (bits + xbits); - - if (has_stree) { - s.static_len += f * (stree[n * 2 + 1] - /*.Len*/ - + xbits); - } - } - - if (overflow === 0) { - return; - } // Trace((stderr,"\nbit length overflow\n")); - - /* This happens for example on obj2 and pic of the Calgary corpus */ - - /* Find the first bit length which could increase: */ - - - do { - bits = max_length - 1; - - while (s.bl_count[bits] === 0) { - bits--; - } - - s.bl_count[bits]--; - /* move one leaf down the tree */ - - s.bl_count[bits + 1] += 2; - /* move one overflow item as its brother */ - - s.bl_count[max_length]--; - /* The brother of the overflow item also moves one step up, - * but this does not affect bl_count[max_length] - */ - - overflow -= 2; - } while (overflow > 0); - /* Now recompute all bit lengths, scanning in increasing frequency. - * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all - * lengths instead of fixing only the wrong ones. This idea is taken - * from 'ar' written by Haruhiko Okumura.) - */ - - - for (bits = max_length; bits !== 0; bits--) { - n = s.bl_count[bits]; - - while (n !== 0) { - m = s.heap[--h]; - - if (m > max_code) { - continue; - } - - if (tree[m * 2 + 1] - /*.Len*/ - !== bits) { - // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); - s.opt_len += (bits - tree[m * 2 + 1] - /*.Len*/ - ) * tree[m * 2] - /*.Freq*/ - ; - tree[m * 2 + 1] - /*.Len*/ - = bits; - } - - n--; - } - } -} -/* =========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ - - -function gen_codes(tree, max_code, bl_count) // ct_data *tree; /* the tree to decorate */ -// int max_code; /* largest code with non zero frequency */ -// ushf *bl_count; /* number of codes at each bit length */ -{ - var next_code = new Array(MAX_BITS + 1); - /* next code value for each bit length */ - - var code = 0; - /* running code value */ - - var bits; - /* bit index */ - - var n; - /* code index */ - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - - for (bits = 1; bits <= MAX_BITS; bits++) { - next_code[bits] = code = code + bl_count[bits - 1] << 1; - } - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */ - - length = 0; - - for (code = 0; code < LENGTH_CODES - 1; code++) { - base_length[code] = length; - - for (n = 0; n < 1 << extra_lbits[code]; n++) { - _length_code[length++] = code; - } - } //Assert (length == 256, "tr_static_init: length != 256"); - - /* Note that the length 255 (match length 258) can be represented - * in two different ways: code 284 + 5 bits or code 285, so we - * overwrite length_code[255] to use the best encoding: - */ - - - _length_code[length - 1] = code; - /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ - - dist = 0; - - for (code = 0; code < 16; code++) { - base_dist[code] = dist; - - for (n = 0; n < 1 << extra_dbits[code]; n++) { - _dist_code[dist++] = code; - } - } //Assert (dist == 256, "tr_static_init: dist != 256"); - - - dist >>= 7; - /* from now on, all distances are divided by 128 */ - - for (; code < D_CODES; code++) { - base_dist[code] = dist << 7; - - for (n = 0; n < 1 << extra_dbits[code] - 7; n++) { - _dist_code[256 + dist++] = code; - } - } //Assert (dist == 256, "tr_static_init: 256+dist != 512"); - - /* Construct the codes of the static literal tree */ - - - for (bits = 0; bits <= MAX_BITS; bits++) { - bl_count[bits] = 0; - } - - n = 0; - - while (n <= 143) { - static_ltree[n * 2 + 1] - /*.Len*/ - = 8; - n++; - bl_count[8]++; - } - - while (n <= 255) { - static_ltree[n * 2 + 1] - /*.Len*/ - = 9; - n++; - bl_count[9]++; - } - - while (n <= 279) { - static_ltree[n * 2 + 1] - /*.Len*/ - = 7; - n++; - bl_count[7]++; - } - - while (n <= 287) { - static_ltree[n * 2 + 1] - /*.Len*/ - = 8; - n++; - bl_count[8]++; - } - /* Codes 286 and 287 do not exist, but we must include them in the - * tree construction to get a canonical Huffman tree (longest code - * all ones) - */ - - - gen_codes(static_ltree, L_CODES + 1, bl_count); - /* The static distance tree is trivial: */ - - for (n = 0; n < D_CODES; n++) { - static_dtree[n * 2 + 1] - /*.Len*/ - = 5; - static_dtree[n * 2] - /*.Code*/ - = bi_reverse(n, 5); - } // Now data ready and we can init static trees - - - static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); - static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS); - static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS); //static_init_done = true; -} -/* =========================================================================== - * Initialize a new block. - */ - - -function init_block(s) { - var n; - /* iterates over tree elements */ - - /* Initialize the trees. */ - - for (n = 0; n < L_CODES; n++) { - s.dyn_ltree[n * 2] - /*.Freq*/ - = 0; - } - - for (n = 0; n < D_CODES; n++) { - s.dyn_dtree[n * 2] - /*.Freq*/ - = 0; - } - - for (n = 0; n < BL_CODES; n++) { - s.bl_tree[n * 2] - /*.Freq*/ - = 0; - } - - s.dyn_ltree[END_BLOCK * 2] - /*.Freq*/ - = 1; - s.opt_len = s.static_len = 0; - s.last_lit = s.matches = 0; -} -/* =========================================================================== - * Flush the bit buffer and align the output on a byte boundary - */ - - -function bi_windup(s) { - if (s.bi_valid > 8) { - put_short(s, s.bi_buf); - } else if (s.bi_valid > 0) { - //put_byte(s, (Byte)s->bi_buf); - s.pending_buf[s.pending++] = s.bi_buf; - } - - s.bi_buf = 0; - s.bi_valid = 0; -} -/* =========================================================================== - * Copy a stored block, storing first the length and its - * one's complement if requested. - */ - - -function copy_block(s, buf, len, header) //DeflateState *s; -//charf *buf; /* the input data */ -//unsigned len; /* its length */ -//int header; /* true if block header must be written */ -{ - bi_windup(s); - /* align on byte boundary */ - - if (header) { - put_short(s, len); - put_short(s, ~len); - } // while (len--) { - // put_byte(s, *buf++); - // } - - - utils.arraySet(s.pending_buf, s.window, buf, len, s.pending); - s.pending += len; -} -/* =========================================================================== - * Compares to subtrees, using the tree depth as tie breaker when - * the subtrees have equal frequency. This minimizes the worst case length. - */ - - -function smaller(tree, n, m, depth) { - var _n2 = n * 2; - - var _m2 = m * 2; - - return tree[_n2] - /*.Freq*/ - < tree[_m2] - /*.Freq*/ - || tree[_n2] - /*.Freq*/ - === tree[_m2] - /*.Freq*/ - && depth[n] <= depth[m]; -} -/* =========================================================================== - * Restore the heap property by moving down the tree starting at node k, - * exchanging a node with the smallest of its two sons if necessary, stopping - * when the heap property is re-established (each father smaller than its - * two sons). - */ - - -function pqdownheap(s, tree, k) // deflate_state *s; -// ct_data *tree; /* the tree to restore */ -// int k; /* node to move down */ -{ - var v = s.heap[k]; - var j = k << 1; - /* left son of k */ - - while (j <= s.heap_len) { - /* Set j to the smallest of the two sons: */ - if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { - j++; - } - /* Exit if v is smaller than both sons */ - - - if (smaller(tree, v, s.heap[j], s.depth)) { - break; - } - /* Exchange v with the smallest son */ - - - s.heap[k] = s.heap[j]; - k = j; - /* And continue down the tree, setting j to the left son of k */ - - j <<= 1; - } - - s.heap[k] = v; -} // inlined manually -// var SMALLEST = 1; - -/* =========================================================================== - * Send the block data compressed using the given Huffman trees - */ - - -function compress_block(s, ltree, dtree) // deflate_state *s; -// const ct_data *ltree; /* literal tree */ -// const ct_data *dtree; /* distance tree */ -{ - var dist; - /* distance of matched string */ - - var lc; - /* match length or unmatched char (if dist == 0) */ - - var lx = 0; - /* running index in l_buf */ - - var code; - /* the code to send */ - - var extra; - /* number of extra bits to send */ - - if (s.last_lit !== 0) { - do { - dist = s.pending_buf[s.d_buf + lx * 2] << 8 | s.pending_buf[s.d_buf + lx * 2 + 1]; - lc = s.pending_buf[s.l_buf + lx]; - lx++; - - if (dist === 0) { - send_code(s, lc, ltree); - /* send a literal byte */ - //Tracecv(isgraph(lc), (stderr," '%c' ", lc)); - } else { - /* Here, lc is the match length - MIN_MATCH */ - code = _length_code[lc]; - send_code(s, code + LITERALS + 1, ltree); - /* send the length code */ - - extra = extra_lbits[code]; - - if (extra !== 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); - /* send the extra length bits */ - } - - dist--; - /* dist is now the match distance - 1 */ - - code = d_code(dist); //Assert (code < D_CODES, "bad d_code"); - - send_code(s, code, dtree); - /* send the distance code */ - - extra = extra_dbits[code]; - - if (extra !== 0) { - dist -= base_dist[code]; - send_bits(s, dist, extra); - /* send the extra distance bits */ - } - } - /* literal or match pair ? */ - - /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ - //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, - // "pendingBuf overflow"); - - } while (lx < s.last_lit); - } - - send_code(s, END_BLOCK, ltree); -} -/* =========================================================================== - * Construct one Huffman tree and assigns the code bit strings and lengths. - * Update the total bit length for the current block. - * IN assertion: the field freq is set for all tree elements. - * OUT assertions: the fields len and code are set to the optimal bit length - * and corresponding code. The length opt_len is updated; static_len is - * also updated if stree is not null. The field max_code is set. - */ - - -function build_tree(s, desc) // deflate_state *s; -// tree_desc *desc; /* the tree descriptor */ -{ - var tree = desc.dyn_tree; - var stree = desc.stat_desc.static_tree; - var has_stree = desc.stat_desc.has_stree; - var elems = desc.stat_desc.elems; - var n, m; - /* iterate over heap elements */ - - var max_code = -1; - /* largest code with non zero frequency */ - - var node; - /* new node being created */ - - /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. - * heap[0] is not used. - */ - - s.heap_len = 0; - s.heap_max = HEAP_SIZE; - - for (n = 0; n < elems; n++) { - if (tree[n * 2] - /*.Freq*/ - !== 0) { - s.heap[++s.heap_len] = max_code = n; - s.depth[n] = 0; - } else { - tree[n * 2 + 1] - /*.Len*/ - = 0; - } - } - /* The pkzip format requires that at least one distance code exists, - * and that at least one bit should be sent even if there is only one - * possible code. So to avoid special checks later on we force at least - * two codes of non zero frequency. - */ - - - while (s.heap_len < 2) { - node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0; - tree[node * 2] - /*.Freq*/ - = 1; - s.depth[node] = 0; - s.opt_len--; - - if (has_stree) { - s.static_len -= stree[node * 2 + 1] - /*.Len*/ - ; - } - /* node is 0 or 1 so it does not have extra bits */ - - } - - desc.max_code = max_code; - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, - * establish sub-heaps of increasing lengths: - */ - - for (n = s.heap_len >> 1 - /*int /2*/ - ; n >= 1; n--) { - pqdownheap(s, tree, n); - } - /* Construct the Huffman tree by repeatedly combining the least two - * frequent nodes. - */ - - - node = elems; - /* next internal node of the tree */ - - do { - //pqremove(s, tree, n); /* n = node of least frequency */ - - /*** pqremove ***/ - n = s.heap[1 - /*SMALLEST*/ - ]; - s.heap[1 - /*SMALLEST*/ - ] = s.heap[s.heap_len--]; - pqdownheap(s, tree, 1 - /*SMALLEST*/ - ); - /***/ - - m = s.heap[1 - /*SMALLEST*/ - ]; - /* m = node of next least frequency */ - - s.heap[--s.heap_max] = n; - /* keep the nodes sorted by frequency */ - - s.heap[--s.heap_max] = m; - /* Create a new node father of n and m */ - - tree[node * 2] - /*.Freq*/ - = tree[n * 2] - /*.Freq*/ - + tree[m * 2] - /*.Freq*/ - ; - s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; - tree[n * 2 + 1] - /*.Dad*/ - = tree[m * 2 + 1] - /*.Dad*/ - = node; - /* and insert the new node in the heap */ - - s.heap[1 - /*SMALLEST*/ - ] = node++; - pqdownheap(s, tree, 1 - /*SMALLEST*/ - ); - } while (s.heap_len >= 2); - - s.heap[--s.heap_max] = s.heap[1 - /*SMALLEST*/ - ]; - /* At this point, the fields freq and dad are set. We can now - * generate the bit lengths. - */ - - gen_bitlen(s, desc); - /* The field len is now set, we can generate the bit codes */ - - gen_codes(tree, max_code, s.bl_count); -} -/* =========================================================================== - * Scan a literal or distance tree to determine the frequencies of the codes - * in the bit length tree. - */ - - -function scan_tree(s, tree, max_code) // deflate_state *s; -// ct_data *tree; /* the tree to be scanned */ -// int max_code; /* and its largest code of non zero frequency */ -{ - var n; - /* iterates over all tree elements */ - - var prevlen = -1; - /* last emitted length */ - - var curlen; - /* length of current code */ - - var nextlen = tree[0 * 2 + 1] - /*.Len*/ - ; - /* length of next code */ - - var count = 0; - /* repeat count of the current code */ - - var max_count = 7; - /* max repeat count */ - - var min_count = 4; - /* min repeat count */ - - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - - tree[(max_code + 1) * 2 + 1] - /*.Len*/ - = 0xffff; - /* guard */ - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1] - /*.Len*/ - ; - - if (++count < max_count && curlen === nextlen) { - continue; - } else if (count < min_count) { - s.bl_tree[curlen * 2] - /*.Freq*/ - += count; - } else if (curlen !== 0) { - if (curlen !== prevlen) { - s.bl_tree[curlen * 2] /*.Freq*/++; - } - - s.bl_tree[REP_3_6 * 2] /*.Freq*/++; - } else if (count <= 10) { - s.bl_tree[REPZ_3_10 * 2] /*.Freq*/++; - } else { - s.bl_tree[REPZ_11_138 * 2] /*.Freq*/++; - } - - count = 0; - prevlen = curlen; - - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } else if (curlen === nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } -} -/* =========================================================================== - * Send a literal or distance tree in compressed form, using the codes in - * bl_tree. - */ - - -function send_tree(s, tree, max_code) // deflate_state *s; -// ct_data *tree; /* the tree to be scanned */ -// int max_code; /* and its largest code of non zero frequency */ -{ - var n; - /* iterates over all tree elements */ - - var prevlen = -1; - /* last emitted length */ - - var curlen; - /* length of current code */ - - var nextlen = tree[0 * 2 + 1] - /*.Len*/ - ; - /* length of next code */ - - var count = 0; - /* repeat count of the current code */ - - var max_count = 7; - /* max repeat count */ - - var min_count = 4; - /* min repeat count */ - - /* tree[max_code+1].Len = -1; */ - - /* guard already set */ - - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1] - /*.Len*/ - ; - - if (++count < max_count && curlen === nextlen) { - continue; - } else if (count < min_count) { - do { - send_code(s, curlen, s.bl_tree); - } while (--count !== 0); - } else if (curlen !== 0) { - if (curlen !== prevlen) { - send_code(s, curlen, s.bl_tree); - count--; - } //Assert(count >= 3 && count <= 6, " 3_6?"); - - - send_code(s, REP_3_6, s.bl_tree); - send_bits(s, count - 3, 2); - } else if (count <= 10) { - send_code(s, REPZ_3_10, s.bl_tree); - send_bits(s, count - 3, 3); - } else { - send_code(s, REPZ_11_138, s.bl_tree); - send_bits(s, count - 11, 7); - } - - count = 0; - prevlen = curlen; - - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } else if (curlen === nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } -} -/* =========================================================================== - * Construct the Huffman tree for the bit lengths and return the index in - * bl_order of the last bit length code to send. - */ - - -function build_bl_tree(s) { - var max_blindex; - /* index of last bit length code of non zero freq */ - - /* Determine the bit length frequencies for literal and distance trees */ - - scan_tree(s, s.dyn_ltree, s.l_desc.max_code); - scan_tree(s, s.dyn_dtree, s.d_desc.max_code); - /* Build the bit length tree: */ - - build_tree(s, s.bl_desc); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. - */ - - /* Determine the number of bit length codes to send. The pkzip format - * requires that at least 4 bit length codes be sent. (appnote.txt says - * 3 but the actual value used is 4.) - */ - - for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { - if (s.bl_tree[bl_order[max_blindex] * 2 + 1] - /*.Len*/ - !== 0) { - break; - } - } - /* Update opt_len to include the bit length tree and counts */ - - - s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", - // s->opt_len, s->static_len)); - - return max_blindex; -} -/* =========================================================================== - * Send the header for a block using dynamic Huffman trees: the counts, the - * lengths of the bit length codes, the literal tree and the distance tree. - * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. - */ - - -function send_all_trees(s, lcodes, dcodes, blcodes) // deflate_state *s; -// int lcodes, dcodes, blcodes; /* number of codes for each tree */ -{ - var rank; - /* index in bl_order */ - //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); - //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, - // "too many codes"); - //Tracev((stderr, "\nbl counts: ")); - - send_bits(s, lcodes - 257, 5); - /* not +255 as stated in appnote.txt */ - - send_bits(s, dcodes - 1, 5); - send_bits(s, blcodes - 4, 4); - /* not -3 as stated in appnote.txt */ - - for (rank = 0; rank < blcodes; rank++) { - //Tracev((stderr, "\nbl code %2d ", bl_order[rank])); - send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1] - /*.Len*/ - , 3); - } //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); - - - send_tree(s, s.dyn_ltree, lcodes - 1); - /* literal tree */ - //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); - - send_tree(s, s.dyn_dtree, dcodes - 1); - /* distance tree */ - //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); -} -/* =========================================================================== - * Check if the data type is TEXT or BINARY, using the following algorithm: - * - TEXT if the two conditions below are satisfied: - * a) There are no non-portable control characters belonging to the - * "black list" (0..6, 14..25, 28..31). - * b) There is at least one printable character belonging to the - * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). - * - BINARY otherwise. - * - The following partially-portable control characters form a - * "gray list" that is ignored in this detection algorithm: - * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). - * IN assertion: the fields Freq of dyn_ltree are set. - */ - - -function detect_data_type(s) { - /* black_mask is the bit mask of black-listed bytes - * set bits 0..6, 14..25, and 28..31 - * 0xf3ffc07f = binary 11110011111111111100000001111111 - */ - var black_mask = 0xf3ffc07f; - var n; - /* Check for non-textual ("black-listed") bytes. */ - - for (n = 0; n <= 31; n++, black_mask >>>= 1) { - if (black_mask & 1 && s.dyn_ltree[n * 2] - /*.Freq*/ - !== 0) { - return Z_BINARY; - } - } - /* Check for textual ("white-listed") bytes. */ - - - if (s.dyn_ltree[9 * 2] - /*.Freq*/ - !== 0 || s.dyn_ltree[10 * 2] - /*.Freq*/ - !== 0 || s.dyn_ltree[13 * 2] - /*.Freq*/ - !== 0) { - return Z_TEXT; - } - - for (n = 32; n < LITERALS; n++) { - if (s.dyn_ltree[n * 2] - /*.Freq*/ - !== 0) { - return Z_TEXT; - } - } - /* There are no "black-listed" or "white-listed" bytes: - * this stream either is empty or has tolerated ("gray-listed") bytes only. - */ - - - return Z_BINARY; -} - -var static_init_done = false; -/* =========================================================================== - * Initialize the tree data structures for a new zlib stream. - */ - -function _tr_init(s) { - if (!static_init_done) { - tr_static_init(); - static_init_done = true; - } - - s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); - s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); - s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); - s.bi_buf = 0; - s.bi_valid = 0; - /* Initialize the first block of the first file: */ - - init_block(s); -} -/* =========================================================================== - * Send a stored block - */ - - -function _tr_stored_block(s, buf, stored_len, last) //DeflateState *s; -//charf *buf; /* input block */ -//ulg stored_len; /* length of input block */ -//int last; /* one if this is the last block for a file */ -{ - send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); - /* send block type */ - - copy_block(s, buf, stored_len, true); - /* with header */ -} -/* =========================================================================== - * Send one empty static block to give enough lookahead for inflate. - * This takes 10 bits, of which 7 may remain in the bit buffer. - */ - - -function _tr_align(s) { - send_bits(s, STATIC_TREES << 1, 3); - send_code(s, END_BLOCK, static_ltree); - bi_flush(s); -} -/* =========================================================================== - * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and output the encoded block to the zip file. - */ - - -function _tr_flush_block(s, buf, stored_len, last) //DeflateState *s; -//charf *buf; /* input block, or NULL if too old */ -//ulg stored_len; /* length of input block */ -//int last; /* one if this is the last block for a file */ -{ - var opt_lenb, static_lenb; - /* opt_len and static_len in bytes */ - - var max_blindex = 0; - /* index of last bit length code of non zero freq */ - - /* Build the Huffman trees unless a stored block is forced */ - - if (s.level > 0) { - /* Check if the file is binary or text */ - if (s.strm.data_type === Z_UNKNOWN) { - s.strm.data_type = detect_data_type(s); - } - /* Construct the literal and distance trees */ - - - build_tree(s, s.l_desc); // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, - // s->static_len)); - - build_tree(s, s.d_desc); // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, - // s->static_len)); - - /* At this point, opt_len and static_len are the total bit lengths of - * the compressed block data, excluding the tree representations. - */ - - /* Build the bit length tree for the above two trees, and get the index - * in bl_order of the last bit length code to send. - */ - - max_blindex = build_bl_tree(s); - /* Determine the best encoding. Compute the block lengths in bytes. */ - - opt_lenb = s.opt_len + 3 + 7 >>> 3; - static_lenb = s.static_len + 3 + 7 >>> 3; // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", - // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, - // s->last_lit)); - - if (static_lenb <= opt_lenb) { - opt_lenb = static_lenb; - } - } else { - // Assert(buf != (char*)0, "lost buf"); - opt_lenb = static_lenb = stored_len + 5; - /* force a stored block */ - } - - if (stored_len + 4 <= opt_lenb && buf !== -1) { - /* 4: two words for the lengths */ - - /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. - * Otherwise we can't have processed more than WSIZE input bytes since - * the last block flush, because compression would have been - * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to - * transform a block into a stored block. - */ - _tr_stored_block(s, buf, stored_len, last); - } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) { - send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); - compress_block(s, static_ltree, static_dtree); - } else { - send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); - send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); - compress_block(s, s.dyn_ltree, s.dyn_dtree); - } // Assert (s->compressed_len == s->bits_sent, "bad compressed size"); - - /* The above check is made mod 2^32, for files larger than 512 MB - * and uLong implemented on 32 bits. - */ - - - init_block(s); - - if (last) { - bi_windup(s); - } // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, - // s->compressed_len-7*last)); - -} -/* =========================================================================== - * Save the match info and tally the frequency counts. Return true if - * the current block must be flushed. - */ - - -function _tr_tally(s, dist, lc) // deflate_state *s; -// unsigned dist; /* distance of matched string */ -// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ -{ - //var out_length, in_length, dcode; - s.pending_buf[s.d_buf + s.last_lit * 2] = dist >>> 8 & 0xff; - s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff; - s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff; - s.last_lit++; - - if (dist === 0) { - /* lc is the unmatched char */ - s.dyn_ltree[lc * 2] /*.Freq*/++; - } else { - s.matches++; - /* Here, lc is the match length - MIN_MATCH */ - - dist--; - /* dist = match distance - 1 */ - //Assert((ush)dist < (ush)MAX_DIST(s) && - // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && - // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - - s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2] /*.Freq*/++; - s.dyn_dtree[d_code(dist) * 2] /*.Freq*/++; - } // (!) This block is disabled in zlib defaults, - // don't enable it for binary compatibility - //#ifdef TRUNCATE_BLOCK - // /* Try to guess if it is profitable to stop the current block here */ - // if ((s.last_lit & 0x1fff) === 0 && s.level > 2) { - // /* Compute an upper bound for the compressed length */ - // out_length = s.last_lit*8; - // in_length = s.strstart - s.block_start; - // - // for (dcode = 0; dcode < D_CODES; dcode++) { - // out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]); - // } - // out_length >>>= 3; - // //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", - // // s->last_lit, in_length, out_length, - // // 100L - out_length*100L/in_length)); - // if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) { - // return true; - // } - // } - //#endif - - - return s.last_lit === s.lit_bufsize - 1; - /* We avoid equality with lit_bufsize because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. - */ -} - -exports._tr_init = _tr_init; -exports._tr_stored_block = _tr_stored_block; -exports._tr_flush_block = _tr_flush_block; -exports._tr_tally = _tr_tally; -exports._tr_align = _tr_align; - -/***/ }), - -/***/ "./node_modules/pako/lib/zlib/zstream.js": -/*!***********************************************!*\ - !*** ./node_modules/pako/lib/zlib/zstream.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // (C) 1995-2013 Jean-loup Gailly and Mark Adler -// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -function ZStream() { - /* next input byte */ - this.input = null; // JS specific, because we have no pointers - - this.next_in = 0; - /* number of bytes available at input */ - - this.avail_in = 0; - /* total number of input bytes read so far */ - - this.total_in = 0; - /* next output byte should be put there */ - - this.output = null; // JS specific, because we have no pointers - - this.next_out = 0; - /* remaining free space at output */ - - this.avail_out = 0; - /* total number of bytes output so far */ - - this.total_out = 0; - /* last error message, NULL if no error */ - - this.msg = '' - /*Z_NULL*/ - ; - /* not visible by applications */ - - this.state = null; - /* best guess about the data type: binary or text */ - - this.data_type = 2 - /*Z_UNKNOWN*/ - ; - /* adler32 value of the uncompressed data */ - - this.adler = 0; -} - -module.exports = ZStream; - -/***/ }), - -/***/ "./node_modules/process-nextick-args/index.js": -/*!****************************************************!*\ - !*** ./node_modules/process-nextick-args/index.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(process) { - -if (!process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { - module.exports = { - nextTick: nextTick - }; -} else { - module.exports = process; -} - -function nextTick(fn, arg1, arg2, arg3) { - if (typeof fn !== 'function') { - throw new TypeError('"callback" argument must be a function'); - } - - var len = arguments.length; - var args, i; - - switch (len) { - case 0: - case 1: - return process.nextTick(fn); - - case 2: - return process.nextTick(function afterTickOne() { - fn.call(null, arg1); - }); - - case 3: - return process.nextTick(function afterTickTwo() { - fn.call(null, arg1, arg2); - }); - - case 4: - return process.nextTick(function afterTickThree() { - fn.call(null, arg1, arg2, arg3); - }); - - default: - args = new Array(len - 1); - i = 0; - - while (i < args.length) { - args[i++] = arguments[i]; - } - - return process.nextTick(function afterTick() { - fn.apply(null, args); - }); - } -} -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ "./node_modules/process/browser.js"))) - -/***/ }), - -/***/ "./node_modules/process/browser.js": -/*!*****************************************!*\ - !*** ./node_modules/process/browser.js ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -// shim for using process in browser -var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} - -function defaultClearTimeout() { - throw new Error('clearTimeout has not been defined'); -} - -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -})(); - -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } // if setTimeout wasn't available but was latter defined - - - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch (e) { - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch (e) { - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } -} - -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } // if clearTimeout wasn't available but was latter defined - - - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e) { - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e) { - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } -} - -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - - draining = false; - - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - - var timeout = runTimeout(cleanUpNextTick); - draining = true; - var len = queue.length; - - while (len) { - currentQueue = queue; - queue = []; - - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - - queueIndex = -1; - len = queue.length; - } - - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - - queue.push(new Item(fun, args)); - - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; // v8 likes predictible objects - - -function Item(fun, array) { - this.fun = fun; - this.array = array; -} - -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; - -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues - -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { - return []; -}; - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { - return '/'; -}; - -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; - -process.umask = function () { - return 0; -}; - -/***/ }), - -/***/ "./node_modules/readable-stream/duplex-browser.js": -/*!********************************************************!*\ - !*** ./node_modules/readable-stream/duplex-browser.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! ./lib/_stream_duplex.js */ "./node_modules/readable-stream/lib/_stream_duplex.js"); - -/***/ }), - -/***/ "./node_modules/readable-stream/lib/_stream_duplex.js": -/*!************************************************************!*\ - !*** ./node_modules/readable-stream/lib/_stream_duplex.js ***! - \************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -/**/ - -var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); -/**/ - -/**/ - - -var objectKeys = Object.keys || function (obj) { - var keys = []; - - for (var key in obj) { - keys.push(key); - } - - return keys; -}; -/**/ - - -module.exports = Duplex; -/**/ - -var util = __webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js"); - -util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); -/**/ - -var Readable = __webpack_require__(/*! ./_stream_readable */ "./node_modules/readable-stream/lib/_stream_readable.js"); - -var Writable = __webpack_require__(/*! ./_stream_writable */ "./node_modules/readable-stream/lib/_stream_writable.js"); - -util.inherits(Duplex, Readable); -{ - // avoid scope creep, the keys array can then be collected - var keys = objectKeys(Writable.prototype); - - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - Readable.call(this, options); - Writable.call(this, options); - if (options && options.readable === false) this.readable = false; - if (options && options.writable === false) this.writable = false; - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - this.once('end', onend); -} - -Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); // the no-half-open enforcer - -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; // no more data can be written. - // But allow more writes to happen in this tick. - - pna.nextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -Object.defineProperty(Duplex.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined || this._writableState === undefined) { - return false; - } - - return this._readableState.destroyed && this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (this._readableState === undefined || this._writableState === undefined) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } -}); - -Duplex.prototype._destroy = function (err, cb) { - this.push(null); - this.end(); - pna.nextTick(cb, err); -}; - -/***/ }), - -/***/ "./node_modules/readable-stream/lib/_stream_passthrough.js": -/*!*****************************************************************!*\ - !*** ./node_modules/readable-stream/lib/_stream_passthrough.js ***! - \*****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - - -module.exports = PassThrough; - -var Transform = __webpack_require__(/*! ./_stream_transform */ "./node_modules/readable-stream/lib/_stream_transform.js"); -/**/ - - -var util = __webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js"); - -util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - Transform.call(this, options); -} - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; - -/***/ }), - -/***/ "./node_modules/readable-stream/lib/_stream_readable.js": -/*!**************************************************************!*\ - !*** ./node_modules/readable-stream/lib/_stream_readable.js ***! - \**************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -/**/ - -var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); -/**/ - - -module.exports = Readable; -/**/ - -var isArray = __webpack_require__(/*! isarray */ "./node_modules/isarray/index.js"); -/**/ - -/**/ - - -var Duplex; -/**/ - -Readable.ReadableState = ReadableState; -/**/ - -var EE = __webpack_require__(/*! events */ "./node_modules/events/events.js").EventEmitter; - -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -/**/ - - -var Stream = __webpack_require__(/*! ./internal/streams/stream */ "./node_modules/readable-stream/lib/internal/streams/stream-browser.js"); -/**/ - -/**/ - - -var Buffer = __webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer; - -var OurUint8Array = global.Uint8Array || function () {}; - -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} - -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} -/**/ - -/**/ - - -var util = __webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js"); - -util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); -/**/ - -/**/ - -var debugUtil = __webpack_require__(/*! util */ 0); - -var debug = void 0; - -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - - -var BufferList = __webpack_require__(/*! ./internal/streams/BufferList */ "./node_modules/readable-stream/lib/internal/streams/BufferList.js"); - -var destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ "./node_modules/readable-stream/lib/internal/streams/destroy.js"); - -var StringDecoder; -util.inherits(Readable, Stream); -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; - -function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; -} - -function ReadableState(options, stream) { - Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/readable-stream/lib/_stream_duplex.js"); - options = options || {}; // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - - var isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - - var hwm = options.highWaterMark; - var readableHwm = options.readableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; // cast to ints. - - this.highWaterMark = Math.floor(this.highWaterMark); // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. - - this.sync = true; // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; // has it been destroyed - - this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - - this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s - - this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled - - this.readingMore = false; - this.decoder = null; - this.encoding = null; - - if (options.encoding) { - if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ "./node_modules/string_decoder/lib/string_decoder.js").StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/readable-stream/lib/_stream_duplex.js"); - if (!(this instanceof Readable)) return new Readable(options); - this._readableState = new ReadableState(options, this); // legacy - - this.readable = true; - - if (options) { - if (typeof options.read === 'function') this._read = options.read; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - } - - Stream.call(this); -} - -Object.defineProperty(Readable.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined) { - return false; - } - - return this._readableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._readableState) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._readableState.destroyed = value; - } -}); -Readable.prototype.destroy = destroyImpl.destroy; -Readable.prototype._undestroy = destroyImpl.undestroy; - -Readable.prototype._destroy = function (err, cb) { - this.push(null); - cb(err); -}; // Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. - - -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - var skipChunkCheck; - - if (!state.objectMode) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - - if (encoding !== state.encoding) { - chunk = Buffer.from(chunk, encoding); - encoding = ''; - } - - skipChunkCheck = true; - } - } else { - skipChunkCheck = true; - } - - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; // Unshift should *always* be something directly out of read() - - -Readable.prototype.unshift = function (chunk) { - return readableAddChunk(this, chunk, null, true, false); -}; - -function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { - var state = stream._readableState; - - if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else { - var er; - if (!skipChunkCheck) er = chunkInvalid(state, chunk); - - if (er) { - stream.emit('error', er); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (addToFront) { - if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); - } else if (state.ended) { - stream.emit('error', new Error('stream.push() after EOF')); - } else { - state.reading = false; - - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); - } - } - } else if (!addToFront) { - state.reading = false; - } - } - - return needMoreData(state); -} - -function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - if (state.needReadable) emitReadable(stream); - } - - maybeReadMore(stream, state); -} - -function chunkInvalid(state, chunk) { - var er; - - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - - return er; -} // if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. - - -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); -} - -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; // backwards compatibility. - - -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ "./node_modules/string_decoder/lib/string_decoder.js").StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; // Don't raise the hwm > 8MB - - -var MAX_HWM = 0x800000; - -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - - return n; -} // This function is designed to be inlinable, so please take care when making -// changes to the function body. - - -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } // If we're asking for more than the current hwm, then raise the hwm. - - - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; // Don't have enough - - if (!state.ended) { - state.needReadable = true; - return 0; - } - - return state.length; -} // you can override either this method, or the async _read(n) below. - - -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. - - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - // if we need a readable event, then we need to do some reading. - - - var doRead = state.needReadable; - debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some - - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - - - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; // if the length is currently zero, then we *need* a readable event. - - if (state.length === 0) state.needReadable = true; // call internal read method - - this._read(state.highWaterMark); - - state.sync = false; // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - - if (!state.reading) n = howMuchToRead(nOrig, state); - } - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } else { - state.length -= n; - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. - - if (nOrig !== n && state.ended) endReadable(this); - } - - if (ret !== null) this.emit('data', ret); - return ret; -}; - -function onEofChunk(stream, state) { - if (state.ended) return; - - if (state.decoder) { - var chunk = state.decoder.end(); - - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - - state.ended = true; // emit 'readable' now to make sure it gets picked up. - - emitReadable(stream); -} // Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. - - -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); - } -} - -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} // at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. - - -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - pna.nextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) // didn't get any data, stop spinning. - break;else len = state.length; - } - - state.readingMore = false; -} // abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. - - -Readable.prototype._read = function (n) { - this.emit('error', new Error('_read() is not implemented')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - - case 1: - state.pipes = [state.pipes, dest]; - break; - - default: - state.pipes.push(dest); - break; - } - - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - var endFn = doEnd ? onend : unpipe; - if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); - dest.on('unpipe', onunpipe); - - function onunpipe(readable, unpipeInfo) { - debug('onunpipe'); - - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); - } - } - } - - function onend() { - debug('onend'); - dest.end(); - } // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - - - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - var cleanedUp = false; - - function cleanup() { - debug('cleanup'); // cleanup event handlers once the pipe is broken - - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', unpipe); - src.removeListener('data', ondata); - cleanedUp = true; // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - - - var increasedAwaitDrain = false; - src.on('data', ondata); - - function ondata(chunk) { - debug('ondata'); - increasedAwaitDrain = false; - var ret = dest.write(chunk); - - if (false === ret && !increasedAwaitDrain) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; - } - - src.pause(); - } - } // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - - - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } // Make sure our error handler is attached before userland ones. - - - prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. - - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - - dest.once('close', onclose); - - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } // tell the dest that it's being piped to - - - dest.emit('pipe', src); // start the flow if it hasn't been started already. - - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - var unpipeInfo = { - hasUnpiped: false - }; // if we're not piping anywhere, then do nothing. - - if (state.pipesCount === 0) return this; // just one destination. most common case. - - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - if (!dest) dest = state.pipes; // got a match. - - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this, unpipeInfo); - return this; - } // slow case. multiple pipe destinations. - - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, unpipeInfo); - } - - return this; - } // try to find the right one. - - - var index = indexOf(state.pipes, dest); - if (index === -1) return this; - state.pipes.splice(index, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - dest.emit('unpipe', this, unpipeInfo); - return this; -}; // set up data events if they are asked for -// Ensure readable listeners eventually get something - - -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); - } else if (ev === 'readable') { - var state = this._readableState; - - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.emittedReadable = false; - - if (!state.reading) { - pna.nextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this); - } - } - } - - return res; -}; - -Readable.prototype.addListener = Readable.prototype.on; - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} // pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. - - -Readable.prototype.resume = function () { - var state = this._readableState; - - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - pna.nextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } - - state.resumeScheduled = false; - state.awaitDrain = 0; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - - while (state.flowing && stream.read() !== null) {} -} // wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. - - -Readable.prototype.wrap = function (stream) { - var _this = this; - - var state = this._readableState; - var paused = false; - stream.on('end', function () { - debug('wrapped end'); - - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); - } - - _this.push(null); - }); - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode - - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = _this.push(chunk); - - if (!ret) { - paused = true; - stream.pause(); - } - }); // proxy all the other methods. - // important when wrapping filters and duplexes. - - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } // proxy certain important events. - - - for (var n = 0; n < kProxyEvents.length; n++) { - stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } // when we try to consume some more bytes, simply unpause the - // underlying stream. - - - this._read = function (n) { - debug('wrapped _read', n); - - if (paused) { - paused = false; - stream.resume(); - } - }; - - return this; -}; - -Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._readableState.highWaterMark; - } -}); // exposed for testing purposes only. - -Readable._fromList = fromList; // Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. - -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); - } - return ret; -} // Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. - - -function fromListPartial(n, list, hasStrings) { - var ret; - - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); - } - - return ret; -} // Copies a specified amount of characters from the list of buffered data -// chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. - - -function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - - break; - } - - ++c; - } - - list.length -= c; - return ret; -} // Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. - - -function copyFromBuffer(n, list) { - var ret = Buffer.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - - break; - } - - ++c; - } - - list.length -= c; - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - pna.nextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } -} - -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - - return -1; -} -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"), __webpack_require__(/*! ./../../process/browser.js */ "./node_modules/process/browser.js"))) - -/***/ }), - -/***/ "./node_modules/readable-stream/lib/_stream_transform.js": -/*!***************************************************************!*\ - !*** ./node_modules/readable-stream/lib/_stream_transform.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - - -module.exports = Transform; - -var Duplex = __webpack_require__(/*! ./_stream_duplex */ "./node_modules/readable-stream/lib/_stream_duplex.js"); -/**/ - - -var util = __webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js"); - -util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); -/**/ - -util.inherits(Transform, Duplex); - -function afterTransform(er, data) { - var ts = this._transformState; - ts.transforming = false; - var cb = ts.writecb; - - if (!cb) { - return this.emit('error', new Error('write callback called multiple times')); - } - - ts.writechunk = null; - ts.writecb = null; - if (data != null) // single equals check for both `null` and `undefined` - this.push(data); - cb(er); - var rs = this._readableState; - rs.reading = false; - - if (rs.needReadable || rs.length < rs.highWaterMark) { - this._read(rs.highWaterMark); - } -} - -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - Duplex.call(this, options); - this._transformState = { - afterTransform: afterTransform.bind(this), - needTransform: false, - transforming: false, - writecb: null, - writechunk: null, - writeencoding: null - }; // start out asking for a readable event once data is transformed. - - this._readableState.needReadable = true; // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - if (typeof options.flush === 'function') this._flush = options.flush; - } // When the writable side finishes, then flush out anything remaining. - - - this.on('prefinish', prefinish); -} - -function prefinish() { - var _this = this; - - if (typeof this._flush === 'function') { - this._flush(function (er, data) { - done(_this, er, data); - }); - } else { - done(this, null, null); - } -} - -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; // This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. - - -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('_transform() is not implemented'); -}; - -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; // Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. - - -Transform.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -Transform.prototype._destroy = function (err, cb) { - var _this2 = this; - - Duplex.prototype._destroy.call(this, err, function (err2) { - cb(err2); - - _this2.emit('close'); - }); -}; - -function done(stream, er, data) { - if (er) return stream.emit('error', er); - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - - if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); - if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); - return stream.push(null); -} - -/***/ }), - -/***/ "./node_modules/readable-stream/lib/_stream_writable.js": -/*!**************************************************************!*\ - !*** ./node_modules/readable-stream/lib/_stream_writable.js ***! - \**************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - -/**/ - -var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); -/**/ - - -module.exports = Writable; -/* */ - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} // It seems a linked list but it is not -// there will be only 2 of these for each stream - - -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - - this.finish = function () { - onCorkedFinish(_this, state); - }; -} -/* */ - -/**/ - - -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; -/**/ - -/**/ - -var Duplex; -/**/ - -Writable.WritableState = WritableState; -/**/ - -var util = __webpack_require__(/*! core-util-is */ "./node_modules/core-util-is/lib/util.js"); - -util.inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js"); -/**/ - -/**/ - -var internalUtil = { - deprecate: __webpack_require__(/*! util-deprecate */ "./node_modules/util-deprecate/browser.js") -}; -/**/ - -/**/ - -var Stream = __webpack_require__(/*! ./internal/streams/stream */ "./node_modules/readable-stream/lib/internal/streams/stream-browser.js"); -/**/ - -/**/ - - -var Buffer = __webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer; - -var OurUint8Array = global.Uint8Array || function () {}; - -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} - -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} -/**/ - - -var destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ "./node_modules/readable-stream/lib/internal/streams/destroy.js"); - -util.inherits(Writable, Stream); - -function nop() {} - -function WritableState(options, stream) { - Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/readable-stream/lib/_stream_duplex.js"); - options = options || {}; // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - - var isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream - // contains buffers or objects. - - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - - var hwm = options.highWaterMark; - var writableHwm = options.writableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; // cast to ints. - - this.highWaterMark = Math.floor(this.highWaterMark); // if _final has been called - - this.finalCalled = false; // drain event flag. - - this.needDrain = false; // at the start of calling end() - - this.ending = false; // when end() has been called, and returned - - this.ended = false; // when 'finish' is emitted - - this.finished = false; // has it been destroyed - - this.destroyed = false; // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - - this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - - this.length = 0; // a flag to see when we're in the middle of a write. - - this.writing = false; // when true all writes will be buffered until .uncork() call - - this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - - this.sync = true; // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - - this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) - - this.onwrite = function (er) { - onwrite(stream, er); - }; // the callback that the user supplies to write(chunk,encoding,cb) - - - this.writecb = null; // the amount that is being written when _write is called. - - this.writelen = 0; - this.bufferedRequest = null; - this.lastBufferedRequest = null; // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - - this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - - this.prefinished = false; // True if the error was already emitted and should not be thrown again - - this.errorEmitted = false; // count buffered requests - - this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - - this.corkedRequestsFree = new CorkedRequest(this); -} - -WritableState.prototype.getBuffer = function getBuffer() { - var current = this.bufferedRequest; - var out = []; - - while (current) { - out.push(current); - current = current.next; - } - - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') - }); - } catch (_) {} -})(); // Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. - - -var realHasInstance; - -if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { - realHasInstance = Function.prototype[Symbol.hasInstance]; - Object.defineProperty(Writable, Symbol.hasInstance, { - value: function (object) { - if (realHasInstance.call(this, object)) return true; - if (this !== Writable) return false; - return object && object._writableState instanceof WritableState; - } - }); -} else { - realHasInstance = function (object) { - return object instanceof this; - }; -} - -function Writable(options) { - Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ "./node_modules/readable-stream/lib/_stream_duplex.js"); // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - - if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { - return new Writable(options); - } - - this._writableState = new WritableState(options, this); // legacy. - - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - if (typeof options.writev === 'function') this._writev = options.writev; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - if (typeof options.final === 'function') this._final = options.final; - } - - Stream.call(this); -} // Otherwise people can pipe Writable streams, which is just wrong. - - -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); -}; - -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); // TODO: defer error events consistently everywhere, not just the cb - - stream.emit('error', er); - pna.nextTick(cb, er); -} // Checks that a user-supplied chunk is valid, especially for the particular -// mode the stream is in. Currently this means that `null` is never accepted -// and undefined/non-string values are only allowed in object mode. - - -function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; - - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - - if (er) { - stream.emit('error', er); - pna.nextTick(cb, er); - valid = false; - } - - return valid; -} - -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - var isBuf = !state.objectMode && _isUint8Array(chunk); - - if (isBuf && !Buffer.isBuffer(chunk)) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - if (typeof cb !== 'function') cb = nop; - if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); - } - return ret; -}; - -Writable.prototype.cork = function () { - var state = this._writableState; - state.corked++; -}; - -Writable.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; - return this; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = Buffer.from(chunk, encoding); - } - - return chunk; -} - -Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); // if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. - -function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { - if (!isBuf) { - var newChunk = decodeChunk(state, chunk, encoding); - - if (chunk !== newChunk) { - isBuf = true; - encoding = 'buffer'; - chunk = newChunk; - } - } - - var len = state.objectMode ? 1 : chunk.length; - state.length += len; - var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. - - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, - callback: cb, - next: null - }; - - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - - if (sync) { - // defer the callback if we are being called synchronously - // to avoid piling up things on the stack - pna.nextTick(cb, er); // this can emit finish, and it will always happen - // after error - - pna.nextTick(finishMaybe, stream, state); - stream._writableState.errorEmitted = true; - stream.emit('error', er); - } else { - // the caller expect this to happen before if - // it is async - cb(er); - stream._writableState.errorEmitted = true; - stream.emit('error', er); // this can emit finish, but finish must - // always follow error - - finishMaybe(stream, state); - } -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - onwriteStateUpdate(state); - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} // Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. - - -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} // if there's something in the buffer waiting, then process it - - -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - var count = 0; - var allBuffers = true; - - while (entry) { - buffer[count] = entry; - if (!entry.isBuf) allBuffers = false; - entry = entry.next; - count += 1; - } - - buffer.allBuffers = allBuffers; - doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - - state.pendingcb++; - state.lastBufferedRequest = null; - - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - - state.bufferedRequestCount = 0; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('_write() is not implemented')); -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks - - if (state.corked) { - state.corked = 1; - this.uncork(); - } // ignore unnecessary end() calls. - - - if (!state.ending && !state.finished) endWritable(this, state, cb); -}; - -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} - -function callFinal(stream, state) { - stream._final(function (err) { - state.pendingcb--; - - if (err) { - stream.emit('error', err); - } - - state.prefinished = true; - stream.emit('prefinish'); - finishMaybe(stream, state); - }); -} - -function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function') { - state.pendingcb++; - state.finalCalled = true; - pna.nextTick(callFinal, stream, state); - } else { - state.prefinished = true; - stream.emit('prefinish'); - } - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - - if (need) { - prefinish(stream, state); - - if (state.pendingcb === 0) { - state.finished = true; - stream.emit('finish'); - } - } - - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - - if (cb) { - if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); - } - - state.ended = true; - stream.writable = false; -} - -function onCorkedFinish(corkReq, state, err) { - var entry = corkReq.entry; - corkReq.entry = null; - - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = corkReq; - } else { - state.corkedRequestsFree = corkReq; - } -} - -Object.defineProperty(Writable.prototype, 'destroyed', { - get: function () { - if (this._writableState === undefined) { - return false; - } - - return this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._writableState) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._writableState.destroyed = value; - } -}); -Writable.prototype.destroy = destroyImpl.destroy; -Writable.prototype._undestroy = destroyImpl.undestroy; - -Writable.prototype._destroy = function (err, cb) { - this.end(); - cb(err); -}; -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../timers-browserify/main.js */ "./node_modules/timers-browserify/main.js").setImmediate, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "./node_modules/readable-stream/lib/internal/streams/BufferList.js": -/*!*************************************************************************!*\ - !*** ./node_modules/readable-stream/lib/internal/streams/BufferList.js ***! - \*************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -var Buffer = __webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer; - -var util = __webpack_require__(/*! util */ 1); - -function copyBuffer(src, target, offset) { - src.copy(target, offset); -} - -module.exports = function () { - function BufferList() { - _classCallCheck(this, BufferList); - - this.head = null; - this.tail = null; - this.length = 0; - } - - BufferList.prototype.push = function push(v) { - var entry = { - data: v, - next: null - }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - }; - - BufferList.prototype.unshift = function unshift(v) { - var entry = { - data: v, - next: this.head - }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - }; - - BufferList.prototype.shift = function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - }; - - BufferList.prototype.clear = function clear() { - this.head = this.tail = null; - this.length = 0; - }; - - BufferList.prototype.join = function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - - while (p = p.next) { - ret += s + p.data; - } - - return ret; - }; - - BufferList.prototype.concat = function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - if (this.length === 1) return this.head.data; - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - - return ret; - }; - - return BufferList; -}(); - -if (util && util.inspect && util.inspect.custom) { - module.exports.prototype[util.inspect.custom] = function () { - var obj = util.inspect({ - length: this.length - }); - return this.constructor.name + ' ' + obj; - }; -} - -/***/ }), - -/***/ "./node_modules/readable-stream/lib/internal/streams/destroy.js": -/*!**********************************************************************!*\ - !*** ./node_modules/readable-stream/lib/internal/streams/destroy.js ***! - \**********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/**/ - -var pna = __webpack_require__(/*! process-nextick-args */ "./node_modules/process-nextick-args/index.js"); -/**/ -// undocumented cb() API, needed for core, not for public API - - -function destroy(err, cb) { - var _this = this; - - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; - - if (readableDestroyed || writableDestroyed) { - if (cb) { - cb(err); - } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { - pna.nextTick(emitErrorNT, this, err); - } - - return this; - } // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks - - - if (this._readableState) { - this._readableState.destroyed = true; - } // if this is a duplex stream mark the writable part as destroyed as well - - - if (this._writableState) { - this._writableState.destroyed = true; - } - - this._destroy(err || null, function (err) { - if (!cb && err) { - pna.nextTick(emitErrorNT, _this, err); - - if (_this._writableState) { - _this._writableState.errorEmitted = true; - } - } else if (cb) { - cb(err); - } - }); - - return this; -} - -function undestroy() { - if (this._readableState) { - this._readableState.destroyed = false; - this._readableState.reading = false; - this._readableState.ended = false; - this._readableState.endEmitted = false; - } - - if (this._writableState) { - this._writableState.destroyed = false; - this._writableState.ended = false; - this._writableState.ending = false; - this._writableState.finished = false; - this._writableState.errorEmitted = false; - } -} - -function emitErrorNT(self, err) { - self.emit('error', err); -} - -module.exports = { - destroy: destroy, - undestroy: undestroy -}; - -/***/ }), - -/***/ "./node_modules/readable-stream/lib/internal/streams/stream-browser.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/readable-stream/lib/internal/streams/stream-browser.js ***! - \*****************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! events */ "./node_modules/events/events.js").EventEmitter; - -/***/ }), - -/***/ "./node_modules/readable-stream/passthrough.js": -/*!*****************************************************!*\ - !*** ./node_modules/readable-stream/passthrough.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! ./readable */ "./node_modules/readable-stream/readable-browser.js").PassThrough; - -/***/ }), - -/***/ "./node_modules/readable-stream/readable-browser.js": -/*!**********************************************************!*\ - !*** ./node_modules/readable-stream/readable-browser.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ "./node_modules/readable-stream/lib/_stream_readable.js"); -exports.Stream = exports; -exports.Readable = exports; -exports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ "./node_modules/readable-stream/lib/_stream_writable.js"); -exports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ "./node_modules/readable-stream/lib/_stream_duplex.js"); -exports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ "./node_modules/readable-stream/lib/_stream_transform.js"); -exports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ "./node_modules/readable-stream/lib/_stream_passthrough.js"); - -/***/ }), - -/***/ "./node_modules/readable-stream/transform.js": -/*!***************************************************!*\ - !*** ./node_modules/readable-stream/transform.js ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! ./readable */ "./node_modules/readable-stream/readable-browser.js").Transform; - -/***/ }), - -/***/ "./node_modules/readable-stream/writable-browser.js": -/*!**********************************************************!*\ - !*** ./node_modules/readable-stream/writable-browser.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! ./lib/_stream_writable.js */ "./node_modules/readable-stream/lib/_stream_writable.js"); - -/***/ }), - -/***/ "./node_modules/safe-buffer/index.js": -/*!*******************************************!*\ - !*** ./node_modules/safe-buffer/index.js ***! - \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js"); - -var Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers - -function copyProps(src, dst) { - for (var key in src) { - dst[key] = src[key]; - } -} - -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer; -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports); - exports.Buffer = SafeBuffer; -} - -function SafeBuffer(arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length); -} // Copy static methods from Buffer - - -copyProps(Buffer, SafeBuffer); - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number'); - } - - return Buffer(arg, encodingOrOffset, length); -}; - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - var buf = Buffer(size); - - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - - return buf; -}; - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - return Buffer(size); -}; - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number'); - } - - return buffer.SlowBuffer(size); -}; - -/***/ }), - -/***/ "./node_modules/setimmediate/setImmediate.js": -/*!***************************************************!*\ - !*** ./node_modules/setimmediate/setImmediate.js ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) { - "use strict"; - - if (global.setImmediate) { - return; - } - - var nextHandle = 1; // Spec says greater than zero - - var tasksByHandle = {}; - var currentlyRunningATask = false; - var doc = global.document; - var registerImmediate; - - function setImmediate(callback) { - // Callback can either be a function or a string - if (typeof callback !== "function") { - callback = new Function("" + callback); - } // Copy function arguments - - - var args = new Array(arguments.length - 1); - - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i + 1]; - } // Store and register the task - - - var task = { - callback: callback, - args: args - }; - tasksByHandle[nextHandle] = task; - registerImmediate(nextHandle); - return nextHandle++; - } - - function clearImmediate(handle) { - delete tasksByHandle[handle]; - } - - function run(task) { - var callback = task.callback; - var args = task.args; - - switch (args.length) { - case 0: - callback(); - break; - - case 1: - callback(args[0]); - break; - - case 2: - callback(args[0], args[1]); - break; - - case 3: - callback(args[0], args[1], args[2]); - break; - - default: - callback.apply(undefined, args); - break; - } - } - - function runIfPresent(handle) { - // From the spec: "Wait until any invocations of this algorithm started before this one have completed." - // So if we're currently running a task, we'll need to delay this invocation. - if (currentlyRunningATask) { - // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a - // "too much recursion" error. - setTimeout(runIfPresent, 0, handle); - } else { - var task = tasksByHandle[handle]; - - if (task) { - currentlyRunningATask = true; - - try { - run(task); - } finally { - clearImmediate(handle); - currentlyRunningATask = false; - } - } - } - } - - function installNextTickImplementation() { - registerImmediate = function (handle) { - process.nextTick(function () { - runIfPresent(handle); - }); - }; - } - - function canUsePostMessage() { - // The test against `importScripts` prevents this implementation from being installed inside a web worker, - // where `global.postMessage` means something completely different and can't be used for this purpose. - if (global.postMessage && !global.importScripts) { - var postMessageIsAsynchronous = true; - var oldOnMessage = global.onmessage; - - global.onmessage = function () { - postMessageIsAsynchronous = false; - }; - - global.postMessage("", "*"); - global.onmessage = oldOnMessage; - return postMessageIsAsynchronous; - } - } - - function installPostMessageImplementation() { - // Installs an event handler on `global` for the `message` event: see - // * https://developer.mozilla.org/en/DOM/window.postMessage - // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages - var messagePrefix = "setImmediate$" + Math.random() + "$"; - - var onGlobalMessage = function (event) { - if (event.source === global && typeof event.data === "string" && event.data.indexOf(messagePrefix) === 0) { - runIfPresent(+event.data.slice(messagePrefix.length)); - } - }; - - if (global.addEventListener) { - global.addEventListener("message", onGlobalMessage, false); - } else { - global.attachEvent("onmessage", onGlobalMessage); - } - - registerImmediate = function (handle) { - global.postMessage(messagePrefix + handle, "*"); - }; - } - - function installMessageChannelImplementation() { - var channel = new MessageChannel(); - - channel.port1.onmessage = function (event) { - var handle = event.data; - runIfPresent(handle); - }; - - registerImmediate = function (handle) { - channel.port2.postMessage(handle); - }; - } - - function installReadyStateChangeImplementation() { - var html = doc.documentElement; - - registerImmediate = function (handle) { - // Create a - +